Мультиязычность с Firemonkey (Delphi)
Я ищу решение для изменения языка во время выполнения. (Firemonkey / Delphi)
TLang работает, но я получаю странные строки в пустом проекте. (например, Samsung Galaxy Nexus и другие мобильные устройства) И я предпочитаю другое решение, а не замену строк, как TLang.
К сожалению, ресурсная строка не работает. Я попытался перевести строки ресурсов с помощью "эксперта по ресурсам" (IDE RAD Studio XE5). И пример приложения " RichEdit" также не работает.
Любая идея?
2 ответа
Хорошо, я нашел проблему, почему она не работает. У инструмента есть некоторые ошибки. Путь к Project.exe не может содержать пробелы.
Другое решение является Stringtable, как это:
// default.rc file
#define firstString 1
#define secondString 2
STRINGTABLE
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
firstString , "Neutral String 1"
secondString , "Neutral String 2"
END
// english.rc file
#define firstString 1
#define secondString 2
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
BEGIN
firstString , "First String"
secondString , "Second String"
END
А затем {$R default.res default.rc} {$R english.res english.rc} в файл *.pas. Чтобы использовать перевод: LoadStr(2)
С помощью редактора ресурсов я вижу два языка. Но как я могу изменить по умолчанию / нейтральный на другой язык во время выполнения. Есть ли какая-то функция "SetLanguage" в Delphi?
Для простых проектов TLang отлично работает, но включенный "Language Designer" (двойной щелчок на компоненте TLang) не очень интересен.
Если вы хотите перевести и обработать ваши внешние строки, вы можете импортировать только файлы внешних языков один за другим и импортировать все заново, если некоторые тексты изменятся.
Я написал небольшой инструмент для обработки внешних текстов в электронной таблице и преобразования этих текстов в формат СПГ: см. Конвертер TLang
Для больших проектов вы также можете проверить некоторые коммерческие продукты для перевода / локализации проектов Delphi FMX, такие как:
http://www.sisulizer.de/
http://www.tsilang.com/
http://www.regulace.org/