Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сделать мультиязычный интерфейс и где хранить переводы?

53K
01 декабря 2010 года
FunTime
16 / / 23.06.2010
Как сделать мультиязычный интерфейс и где хранить переводы? я знаю что используют ini файлы и xml. Но какая структура будет у этих файлов?

Хочу разобраться с этим и написать программу для удобного редактирования таких файлов, где хранятся переводы.

Если есть киньте ссылки по этой теме + примеры структуры файлов с переводами.
33K
02 декабря 2010 года
hivewarrior
205 / / 16.11.2010
Ini имеет вид
 
Код:
[Section1]
Param1=Value
Param2=Value
[Section2]
Param1=Value
Param2=Value

Структура XML файла такая же, как и любого HTML, с тем лишь различием, что теги у второго строго заданы стандартом, а у первого нет.

Но мультиязычность достигается не с помощью этих приблуд, а путем создания нескольких библиотек dll, которые хранят unicode-символы для твоих сообщений.
В зависимости от галочки в пункте "Языки", программа использует ту, или иную функцию вывода (или берет разные параметры из массива ответов). Хотя можно обойтись и без dll библиотеки, но это усложнит код основной программы слишком сильно.
Кстати, поздние версии builder'а работают именно на unicod'ах, поэтому проблем не возникнет.

Алсо:
Немного о решениях этой проблемы
399
02 декабря 2010 года
KIV
432 / / 20.01.2009
Можно использовать возможности ресурсов Windows. Делаете ресурсы таблицы строк с одинаковым идентификатором, но разным языком. Затем все строки получаете с помощью LoadString. При этом система вернёт тут строку, которая соответствует текущей локали системы. Этот метод правда не позволяет сменить язык приложения на отличный от системного, но это как правило и не нужно, а такой способ мне представляется наиболее правильным. К тому же можно так хранить не только локализованные строки, но значки, меню, bitmap, диалоги (те которые вызываются с помощью DialogBoxParam) и просто произвольные двоичные данные. При загрузке, если есть несколько ресурсов с совпадающим именем, но разным кодом языка будет загружен с правильным языком.
33K
02 декабря 2010 года
hivewarrior
205 / / 16.11.2010
Цитата:
Этот метод правда не позволяет сменить язык приложения на отличный от системного, но это как правило и не нужно


У меня английский дистрибутив Windows, например.

И еще маленький нюансик, в ресурсах хранятся ASCII строки, а для нормальной локализации лучше использовать Unicode, например. Да и если мне память не изменяет, ограничение в 256 строк есть.
Проблема предвидется с последующей долокализацией, ибо потребует полной перекомпиляции приложения (а оно будет весить ой как не мало), а автору всего лишь хотелось то добавить еще 1 язык.

1
02 декабря 2010 года
kot_
7.3K / / 20.01.2000
а разве в ресурсах нельзя хранить юникод? Я имею ввиду версии билдера 2007-2010?
Конечно вариант с локализацией в ресурсах - отнюдь не самый лучший.
53K
02 декабря 2010 года
FunTime
16 / / 23.06.2010
 
Код:
[Section1]
Param1=Value
Param2=Value
[Section2]
Param1=Value
Param2=Value


Я поискал и понял, что на каждый язык будет отдельный ini файл.
например:

Russian.ini
 
Код:
[MainForm]
Button1.Caption=Кнопка
Label1.Caption=Лэйбл


English.ini
 
Код:
[MainForm]
Button1.Caption=Button
Label1.Caption=Label


Это так?
10
02 декабря 2010 года
Freeman
3.2K / / 06.03.2004
Цитата: hivewarrior
в ресурсах хранятся ASCII строки


В ресурсах всегда хранится Unicode, даже в Win 9x. Если речь именно про строки в ресурсах, а не поля форм в DFM.

6
02 декабря 2010 года
George
4.1K / / 05.01.2007
А нельзя как-то ли GetText заюзать? Хорошая проверенная система.
8.2K
03 декабря 2010 года
bagie2
299 / / 26.10.2008
Цитата:
Проблема предвидется с последующей долокализацией, ибо потребует полной перекомпиляции приложения


Наверное имеются ввиду ресурсы не в самом приложении, а в дллке, а далее приложение в зависимости от настроек грузит нужную дллку и хоба - посмотрите как сделано в CCleaner, например. Еще вариант локализации - как в EVEREST\AIDA64 или Total Commander и тут похожее уже писали.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог