Перейти к содержанию
Fire Monkey от А до Я
  • 0

Мультиязычность в андроиде


Kitty

Вопрос

Подскажите, пожалуйста, ссылку на справочную систему, как в андроиде создать мультиязычное приложение? Если телефон на английском, грузим английские строки, если на русском - грузим в интерфейс русские строки...

Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

В общем я тупо вырезал часть из своего проекта. И создал маленький демо-проект.

Работает везде!

Хоть на Винде, хоть на Маке, хоть на Андроиде.

Думаю - разберетесь. Тем-более, что там все очень просто.

В демке сделал только два языка (в моем проекте их 11).

Все в Ini-файлах, работает очень быстро.

P.S. Все желающие могут использовать как хотят. Можете что-то добавлять, исправлять и т.д. Ну и не забываем делиться с другими...

P.P.S. Позже выложу приложение (GUI) для редактирования файлов языков. С автоматическим переводчиком и прочими мелочами, упрощающими редактирование.

Test_Translator.zip

Ссылка на комментарий
  • 0

Как обещал - приложение для создания, редактирования, автоматического перевода и сохранения Ini-файлов с переводами для локализации своих приложений. Для примера есть два файлики (Lang.en и Lang.ru) и другие файлы, содержание которых всем будет понятно)

Все, вроде, просто)

P.S. Все желающие могут использовать как хотят. Можете что-то добавлять, исправлять и т.д. Ну и не забываем делиться с другими...))

P.P.S. - делалось уже давно, под XE7. Кто захочет под XE10 - думаю все будет крайне просто переделать.

SLLanguage.zip

Ссылка на комментарий
  • 0

И еще, друзья! Делалось это все для себя, для личного пользования, а не для "распространения")

Так-что не обессудьте - если где "говнокод") Сами поправите кому как нравится)

Заодно может поделитесь интересными мыслями и идеями.

Если кому что не понятно - подскажу.

Ссылка на комментарий
  • 0
5 минут назад, chaplin.u@gmail.com сказал:

в книжке "Д. Л. Осипов. - Delphi. Программирование для Windows, OS X, iOS и Android (Профессиональное программирование) - 2014" есть глава про TLang.

 

Есть. И?

Вы пользовались TLang? Полноценно, или так... "поиграться"?

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

Ссылка на комментарий
  • 0

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

только вот BiDiMode не срабатывает.

Ссылка на комментарий
  • 0

У меня вопрос к Алексу. Я попробовал тест пример, все работает, попробовал второй проект с редактором, немного странно, но тоже работает. Я не понял, как можно новый язык добавить в ресурсы? (может и глупый вопрос, но простите).
А еще у меня общий вопрос, все переводит , но это все простые компоненты, например в тест примере не работает, если я ListBox делаю с деталями, детали остаются не переведенными. И вообще не ясно как переводить с данным инструментом тексты, которые не прикреплены к компонентам?

Ссылка на комментарий
  • 0

"новый язык добавить в ресурсы?" - из возможных? просто пропишите его аналогично в RC файлик (в демо-примере все есть)

Что касается всего, что является "не простым компонентом" или просто нужным текстом - переводите используя GetValue, которая использует перевод из файла, с соответствующим индексом.

Ссылка на комментарий
  • 0

Если честно, то не очень понятно. В RC прописал, перевод сделал (кстати очень странно, так и не понял окончательно как делаются переводы СВОИХ файлов), в тексте программы тоже внес изменения. Появился мой язык, но почему то испортился русский. А насчет "непростых компонент" я имел в виду сложный текст. Данный переводчик работает с четкой привязкой. Текст----> Перевод, а если текст состоит из нескольких кусков каждый из которых должен бытъ переведен отдельно???? Например :
Страна: Россия
Страна: Англия
Соответственно :
Country: Russia
Country: England
 

Изменено пользователем janovskis
Ссылка на комментарий
  • 0

я исходил из проверенного факта, что если косяки в нативе есть , то их не исправить, а время уйдет, сделал полностью свой банальный словарик
каждая форма при старте вызывает процедуру localize() где я меняю все что нужно
на всю работу ушло дня 3 в мобильном приложении ~15 форм / 30 модулей.

Cтрана: Россия 
разбивать на две строки ессно

Ссылка на комментарий
  • 0

[janovskis] "а если текст состоит из нескольких кусков каждый из которых должен бытъ переведен отдельно?"

ну так просто создайте в файлах перевода строки (типа):

в lang.ru

1000=Страна:

1001=Россия

1002=Англия

в lang.en

1000=Country:

1001=Russia

1002=England

а в программе пишите (допустим компонент на который надо вывести надпись label1 = TLabel):

label1 := Format('%s %s', [GetValue(1000, 'Страна:'), GetValue(1001, 'Россия')]); // ну или другой код страны ...

// ну можно чуть проще)) label1 := Format('%s %s', [GetValue(1000), GetValue(1001)]);

и все...

З.Ы. и никакой "четкой привязки"... любые тексты, выводить можно куда угодно и как угодно...

Изменено пользователем AlexG
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...