Вниз
Скачать: CL | DM;

Локализация программы в отдельных файлах   Найти похожие ветки 

← →
Smok_er   (2002-09-23 19:48) [0]

Уважаемые мастера!
подскажите пожалуйста, как сделать локализацию программы с выносом всего перевода в отдельный ini файл со следующей структурой:
[Form1]
Button1.Caption = Жми здесь
Button2.Caption = Не Жми здесь

[Form2]
Button1.Caption = Жми здесь
Button2.Caption = Не Жми здесь

и т.д.

Заранее благодарен!


← →
Кадастр и ты   (2002-09-23 21:35) [1]

В OnCreate читай ини и работай :)

Есть же TForm.Components, RTTI, так чего еще?!


← →
Rouse_ ©   (2002-09-24 00:44) [2]

сам ини

[form1]
lang1=Жми здесь
lang2=Не Жми здесь

В программе

uses IniFiles

procedure LoadLanguage(Value:String);
var r:TIniFile;
r:=TIniFile.Create(Имя файла);
Button1.Caption := r.ReadString("form1","lang1","Жми здесь");
end;
и т.д.

Желаю успехов


← →
Кадастрат удивился   (2002-09-24 00:48) [3]

2 Rouse_

И ты ему предлагаешь делать это твое "и т.д" для каждого контрола отдельно? Ну-ну, советчик.....


← →
Rouse_ ©   (2002-09-24 00:58) [4]

А почему бы и нет? Я недавно закончил коммерческую программу, так вот в ней локализация реализована именно этим способом, а что именно вы предлагаете?

Желаю успехов


← →
Кадастрат удивился   (2002-09-24 02:01) [5]

2 Rouse_
Тебе успехов в коммерции

Разжевываю вариант, который привел выше.

В OnCreate формы или даже в конструкторе (если задача так стоит) читать ини.

Парсировать ключи, соответствующие твое форме, привести их к виду:
имя компонента (CompName), свойство (CompProp).

Пробежаться по всем компонентам на форме.

Сравнить с именем CompName, если совпадает, то использовать RTTI (TypInfo.pas, в справке нет) функцию SetStrProp (Объект, Имя_Свойста, Значение).

Все в виде ОДНОЙ УНИВЕРСАЛЬНОЙ ПРОЦЕДУРЫ, которую потом только вставлять в ОнКриейт.

А не писать для каждой формы (у каждой свой набор кнопок, лэйблов и прочего дерьма) свою процедуру.

Вот и все.

П.С.
procedure SetStrProp(Instance: TObject; const PropName: string;
const Value: string);



← →
kex86 ©   (2002-09-24 02:08) [6]

>Кадастрат
хотя так и короче писать и легче понимать, но так медленнее, потому что для каждого компонента надо проверять соответствие названия, а потом давать Caption


← →
Кадастрат   (2002-09-24 02:18) [7]

Оно может быть и медленнее, зато как представишь, сколько времени потом займет переписывание и дописывания кода в твой вариант в случае изменения интерфейса, добавления новых контролов и т.п. -- так пусть лучше у конечного пользователья прога грузится на 0.3 сек. дольше :)

А если серьезно, то времени эта вся лабуда требует для загрузки и отработки не очень много. НЕЗНАЧИТЕЛЬНА разница.

А если скорость критична, то лучше делать через Делфовские стандартные средства локализации, т.е., все локальные ресурсы выносятся в ДЛЛ -- тогда и быстро и удобно и проч.
Но вопрос стоял именно об текстовых ини файлах.
Удачи.


← →
kex86 ©   (2002-09-24 02:22) [8]

Зато пока набираешь весь код повысится скорость набора текста :о)


← →
Smok_er   (2002-09-24 19:35) [9]

Большое всем спасибо за советы!
Дело в том, что у меня изначально был вариант, предложенный Rouse_.
Недостатков в этом методе очень много, и поэтому я решил от него отказаться.
Придется рыться в RTTI.
Кстати, с со свойствами But1.Caption я к примеру разберусь. А что посоветуете, к примеру, с ListView1.Items[1].Caption и другим, сосотоящих из 5-ти, а то и 6-ти свойств?


← →
Rouse_ ©   (2002-09-25 21:22) [10]

Кадастрат, я знаю тебя как весьма опытного программиста, ссорится не будем (тем более что мы оба правы) приведу выдержку из кода

(********************************************************)
{ }
{


← →
Rouse_ ©   (2002-09-25 21:27) [11]

Кстати, если кто может дать пример получше (без шуток) приведите его плз этой конфе



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
14-21221
Оголодавший тип
2002-09-11 10:15
2002.10.07
А кто что ест ????????


1-21116
andrew113
2002-09-25 14:00
2002.10.07
Окно создаётся не того размера!


3-20875
RDA
2002-09-14 10:10
2002.10.07
Ошибка удаления


14-21246
Сатир
2002-09-11 13:10
2002.10.07
Заманчивое предложение


1-21065
Оля
2002-09-27 16:47
2002.10.07
Chart1 на вкладке Additional Как с этим чудом работать?




   Наверх