Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.07;
Скачать: 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 вся ветка

Текущий архив: 2002.10.07;
Скачать: CL | DM;

Наверх




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


1-20956
qube
2002-09-26 10:48
2002.10.07
Чем принципиально отличается Collection от ObjectList?


1-20960
vladimir_sv
2002-09-26 10:46
2002.10.07
Помагите начинающему.


3-20874
Aleksandr
2002-09-16 12:29
2002.10.07
Коллеги, напомните, где у Paradox могут храниться сетевые пути...


1-20996
Демонов Е.В.
2002-09-25 14:13
2002.10.07
Вопрос Про TComponent