Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Вниз

Как проще всего поддерживать проект на разных языках?   Найти похожие ветки 

 
YuN   (2004-01-02 04:38) [0]

Возникла необходимость делать русские и английские версии одного проекта. Ну, всякие диагностические сообщения я в отдельный файл скину и циклом в массив считаю, а с надписями на форме что делать? Не писать же длинную простыню траляляN.caption:=titleN?


 
Sergey_Masloff   (2004-01-02 08:58) [1]

почитай в справке про Resource DLL wizard


 
DDA   (2004-01-02 14:02) [2]

Я дак делаю так
ставлю например у формы Tag=1000
У кнопок там всяких Tag=1001 и т.д

потом при создании формы в TForm1.FormCreate
открываю INI файл например такой

[Caption]
1000=Моя прога
1001=Кнопка
.
.
1099=Другая кнопка

потом перебераю все компоненты на форме и ищу те у которых Tag>1000 и у этого компонента в Caption или например Hint
вписываю значение из INI файла



inif:=TIniFile.Create("c:\dda.ini");

//------label caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TLabel then
With TLabel(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
Caption:=inif.ReadString("caption",inttostr(jy),"error");
end;
End;
//------Radoigroup caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TRadioGroup then
With TRadioGroup(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
Caption:=inif.ReadString("caption",inttostr(jy),"error");
end;
End;
//------GroupBox caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TGroupBox then
With TGroupBox(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
Caption:=inif.ReadString("caption",inttostr(jy),"error");
end;
End;
//------CheckBox caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TCheckBox then
With TCheckBox(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
Caption:=inif.ReadString("caption",inttostr(jy),"error");
end;
End;
//------Hint --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TControl then
With TControl(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
Hint:=inif.ReadString("hint",inttostr(jy),"error");
end;
end;
//------Speedbutton caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TSpeedButton then
With TSpeedButton(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
caption:=inif.ReadString("caption",inttostr(jy),"");
end;
end;
//------Popupmenu caption --------

for Ij := 0 to ComponentCount -1 do
if Components[Ij] is TMenuItem then
With TMenuItem(Components[Ij]) Do
Begin
jy:=Tag;
if (jy>1000) then
begin
caption:=inif.ReadString("caption",inttostr(jy),"error");
end;
end;


 
хз   (2004-01-02 17:56) [3]

2 DDA

А если форма не одна, а, к примеру, их более 20. А еще если на каждой форме куча компонентов? Вы будете каждой кнопке, каждому лэйблу или GroupBox"у устанавливать нужный Tag?


 
DDA   (2004-01-02 18:52) [4]

хз © (02.01.04 17:56) [3]
Буду


 
DDA   (2004-01-02 18:53) [5]

хз © (02.01.04 17:56) [3]
Есть другие варианты -> предложи


 
Sergey_Masloff   (2004-01-02 19:09) [6]

DDA © (02.01.04 18:53) [5]
Я предложил. Или стандартные методы - не для настоящих хакеров? ;-)


 
хз   (2004-01-02 19:16) [7]

2 DDA

Есть.

1 - см. Sergey_Masloff (02.01.04 19:09) [6].
2 - если хочется через ini-файлы, то можно написать функцию, которая будет проходиться (в цикле) по нужным компонентам на форме, и по их именам извлекать Caption и Hint. Работы - 2 минуты.


 
Tahion2   (2004-01-02 20:25) [8]

Используй компонент для локалиации программ.
Сделаешь своей программе новый язык за 120 минут.

www.torry.net, однако......


 
YuN   (2004-01-02 23:56) [9]

Посмотрел Resource DLL wizard. Там в файл скидываются только сообщения ф-ций стандартных библиотек, а надписи на форме все равно надо редактировать прямо в dfm. Так что это не то.
А за 120 минут (на самом деле заметно быстрее) я и тупым поиском/заменой в исходнике все поменять могу. Про ф-цию, которая скидывает в файл все caption, уже думал. Если нет более стандартного ср-ва, так и сделаю.


 
Юрий Зотов   (2004-01-03 01:48) [10]

> YuN (02.01.04 23:56) [9]
> а надписи на форме все равно надо редактировать прямо в dfm

А кто мешает скинуть их в ресурс DLL и грузить через LoadStr, как это обычно и делается? Тогда язык можно менять хоть вообще прямо "на ходу".


 
YuN   (2004-01-04 02:32) [11]

А как автоматически скинуть-то?



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

Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
14-49722
MVova
2003-12-24 15:57
2004.01.16
Вирус в чистом проэкте


4-49811
turonix
2003-11-12 17:44
2004.01.16
Дискрипторы окон


3-49410
Mordsit
2003-12-19 11:34
2004.01.16
SQL-запрос


4-49807
Tol-123
2003-10-29 16:57
2004.01.16
Remote Administrator


14-49751
ashnurov
2003-12-24 14:06
2004.01.16
поиск слова в заголовке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский