Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

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

 
Kozhanov ©   (2002-04-15 11:24) [0]

Господа, я уже задавал этот вопрос, но вразумительных ответов,
к сожалению, не получил. Задаю его ещё раз :

Просьба поделиться опытом в области поддержки
программой нескольких языков,которые можно переключать в
runtime. Как лучше это организовать и где лучше всего
хранить данные ?


 
gek ©   (2002-04-15 11:31) [1]

Да опиши все в файле ресурсов и потом смотри какой язык необходим


 
Kozhanov ©   (2002-04-15 11:39) [2]

> gek
Спасибо за быстрый отклик.
Вот только у меня нет опыта в создании строковых ресурсов.
Опишите (в двух словах) как это делается и как при таком подходе
нужно организовывать переключение языков.


 
Anatoly Podgoretsky ©   (2002-04-15 11:42) [3]

Лучше купить готовый локализатор, это будет действительно просто и удобно.


 
Виктор Щербаков ©   (2002-04-15 11:45) [4]


> Вот только у меня нет опыта в создании строковых ресурсов.

Самый простой способ - с помощью ключевого слова ResourceString


 
Kozhanov ©   (2002-04-15 11:46) [5]

> Anatoly Podgoretsky
Дайте, пожалуйста, ссылки.


 
Andrews ©   (2002-04-15 11:53) [6]

Ну организовать можно посредством работы с INI-файлами, меняешь имя файла в run-time, весь остальной код остается неизменным, создать такой файл можно в любом TXT-редакторе, а как работать с INI-файлами смотри в хелпе все очень просто...


 
Kozhanov ©   (2002-04-15 11:53) [7]

> Виктор Щербаков
Про ResourceString я знаю. Мне не понятна вот какая вещь :
Скажем есть простая форма (для простоты - модальная), там есть две кнопки "сохранить" и "отмена" и нужно поддержать 2 языка
наш великий и могучий и английский, так вот

если
использовать ResourceString, то видимо нужно будет написать

ResourceString

SEngSaveCaption = "Save" ;
SEngCancelCaption = "Cancel" ;

SRusSaveCaption = "Сохранить" ;
SRusCancelCaption = "Отмена" ;

И как в таком случае переключаться, наверное, только с помощью
if или case или можно как-то хитрее ?




 
Anatoly Podgoretsky ©   (2002-04-15 11:55) [8]

Kozhanov © (15.04.02 11:46)
Сходи на Торри


 
Kozhanov ©   (2002-04-15 11:58) [9]

> Andrews
Спасибо !
Ваша идея пока самая достойная, хотя и простая (я серьёзно).

А какие могут быть ещё варианты ?


 
Kozhanov ©   (2002-04-15 12:00) [10]

> Anatoly Podgoretsky
И что там следует искать.
Вы имели ввиду какой-то конкретный soft или как ?


 
Виктор Щербаков ©   (2002-04-15 12:00) [11]

Если бы не требование переключения языков в RunTime, то можно было бы воспользоваться стандартным средством ITE. Создание ресурсов в нём автоматизировано.


 
Kozhanov ©   (2002-04-15 12:05) [12]

> Виктор Щербаков
Ха !
В том то всё и дело что нужно всё делать в RunTime, иначе я
бы не мучил Вас распросами.
А что Вы думаете про идею Andrews ?


 
Andrews ©   (2002-04-15 12:07) [13]

var
Lang : TIniFile;
Interface : Boolean;
begin
...
if Interface then
Lang := TIniFile.Create(ExtractFileDir(ParamStr(0)) + "\Rus.ini")
else Lang := TIniFile.Create(ExtractFileDir(ParamStr(0)) + "\Eng.ini")
...
SSaveCaption := CDBEditorIni.ReadString("Main", "SSaveCaption","Save");
SCancelCaption := CDBEditorIni.ReadString("Main", "SCancelCaption","Cancel");
...




 
Виктор Щербаков ©   (2002-04-15 12:26) [14]


> А что Вы думаете про идею Andrews ?

Если других вариантов нет, то можно и так. Но могут появиться сложности. Если число элементов управления фиксированно, то всё ОК, а если они создаются динамически? В случае смены языка нужно будет найти ВСЕ объекты, нуждающиеся в смене значения определенных свойств (Caption, Text etc). Кроме этого, при добавлении каждого элемента управления (в дизайне) нужно будет добавлять код чтения из ini-файла.


 
ION T ©   (2002-04-15 12:50) [15]

Когда-то писал тестовый проект для кого-то:
http://iont.virtualave.net/pub/delphi/translator.zip

Там просто используется текстовик со строками типа
Form1.Label1.Caption=HrenZnaetShto

Простое применение RTTI. Вообще что-то подобное я использовал в моем UPX Shell-e, только там ещё есть обработка сообшений (ну, чтоб на таскбаре писать например)


 
Anatoly Podgoretsky ©   (2002-04-15 12:58) [16]

Kozhanov © (15.04.02 12:00)
Конкретные компоненты для локализации программ, точного раздела не подскажу


 
lipskiy ©   (2002-04-15 12:59) [17]

Есть точно компоненты для поддержки многоязычного интерфейса. Кажется, видел их описание в почтовой рассылке этого сайта. Если очень надо - отмыль, посмотрю дома, может даже я качал себе. А так вообще поищи в сети, есть они точно, что нибудь типа multilanguage..., хотя не уверен в таком названии.


 
Anatoly Podgoretsky ©   (2002-04-15 13:10) [18]

Один из лучших от Сергея Коржа


 
Kozhanov ©   (2002-04-15 13:26) [19]

Господа, всем ОГРОМНОЕ СПАСИБО за помощь !
Особенно сэру Andrews :)

> lipskiy
Если найдёте компоненты, то скинте мне на мыло, адрес в моей
анкете



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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
4-73447
Danila
2002-03-21 23:06
2002.05.23
Как получить Handle нужного мне окна


4-73474
cok
2002-03-20 18:11
2002.05.23
Отмена удаления


7-73410
Dmitry V. Averuanov
2002-02-25 18:47
2002.05.23
Как выключить ATX под DOS-ом ?


3-73010
YPS
2002-04-17 16:15
2002.05.23
Упаковка базы Ассеss 2000


1-73308
Durak
2002-05-12 06:33
2002.05.23
StringGrid