Выпускаем игру под Android, но вопрос общий по локализации и usability.
В игре есть перевод текстов на несколько языков (5 европейских языков, включая русский), реализовано все через values-XX... В GooglePlay игра доступна для всех стран. Язык по умолчанию En.
Допустим есть пользователь, например, в Белоруссии или Украине, у которого в системе выбран соответствующий язык. В этом случае игра для пользователя будет все показывать на En, т.к. переводов на целевой язык в игре нет.
Также предполагается, что в последующих версиях в игру добавятся новые языки.
А на данный момент работает следующая схема:
- Если при первоначальном запуске (после установки приложения) пользовательского языка нет в списке поддерживаемых, то показываем меню выбора языка;
- Выбранный язык сохраняем в настройках (которые не изменяются при обновлении версии игры);
- При последующих запусках игры меню выбора языка автоматически не отображаем.
- В настройках игры всегда можно поменять язык.
Вопрос, как лучше доработать эту схему, учитывая, следующее:
1) Последующие версии игры, вероятно, будут поддерживать целевой язык;
2) Целевой язык можно легко поменять в системных настройка ОС.
Если можно с примерами реализаций в реальных проектах.
Заранее благодарен.
Дмитрий: Да-да, Ваш пример про Поляков + Немецкий язык, абсолютно такой же по сути как и мой про Украинцев, Белорусов + Русский язык.
В самом приложении в меню Настроек естественно в любой момент можно сменить язык. Это не вопрос.
Но вопрос в том, нужно ли каждый раз после смены языка в системных настройках ОС, в самом приложении автоматически выводить меню выбора языка?
Вариант с удалением какого-то языка в новой версии не рассматриваем. Т.е. языки могут только увеличиваться.
если в настройках игры нет явно выбранного языка, предлагать язык в соответствии с выбором в настройках ОС, если такого нет - английский
.
Рассмотрим 2 варианта:
1) В приложении сейчас 4 языка: Англ. (язык по умолчанию), Франц., Немецкий, Испанский. Юзер Поляк, его язык Польский, которого нет в приложении. Если без всяких схем, то ему автоматически установится язык по умолчанию (Англ.). Но Немецкий был бы лучше, так что нужно бы выводить меню выбора языка при запуске аппы.
Итак, показали меню выбора при запуске аппы; Поляк выбрал Немецкий; запомнили его выбор.
Далее выходит новая версия аппы, где добавилась поддержка Польского языка.
Что делать?:
а) Вновь показывать юзеру меню выбора языка?
б) Ничего не делать, т.е. выбранный язык в аппе не менять, меню не показывать?
в) Меню не показывать и автоматически установить Польский?
2) В приложении сейчас 3 языка: Англ. (язык по умолчанию), Франц., Испанский. Юзер все тот же Поляк.
Как и в предыдущем примере показали ему меню выбора языка. Польского и Немецкого нет. Юзер выбрал предлагаемый по умолчанию Англ.
Выходит новая версия аппы, где есть Немецкий язык.
Что делать?:
а) Вновь показывать юзеру меню выбора языка?
б) Ничего не делать, т.е выбранный язык в аппе (Англ.) не менять, меню не показывать?
Психанул и снес свои ответы не отмечающим решения…
Новая версия должна знать, какие конкретно языки в ней добавились, и если вновь добавленный язык является системным у пользователя, выводить окно выбора языка при первом запуске обновленной версии с дополнительным объяснением:
У нас добавился язык %LanguageName%, не хотите ли его выбрать?
1) А как уведомлять пользователя из примера, Украинца или Белоруса, если в новой версии добавили Ru?
2) И как быть если у пользователя версия #1. Его системный язык был добавлен в версии #2. А он обновился только с выходом версии #3, где добавлен был, например Корейский язык?.. Хотя для этого случая видится решение: обновленная версия (версия #3) должна знать какие языки были на предыдущей установленной версии (версии #1) и с ними сравнить при запуске список своих языков.
На второй вопрос вы сами ответили, а для первого придется создавать региональные профили, как было в Opera 12, где региональные предпочтения влияли на умолчательные ссылки и speed-dial новых профилей.
создавать региональные профили, как было в Opera 12
Да уж, это уже совсем не просто, т.к. выходит за рамки реализации какой-либо универсальной схемы поведения без сложной БД предпочтений.
Ведь создатели такой схемы в Opera не из своей головы брали все эти связи предпочтений, а составили ее по своей многолетней и многомиллионной базе поведения юзеров.
Мы не Opera, такой базы не имеем. Нужно какой-то более простое, но и не кривое решение.
Не знаю, что вы имеете в виду, но я говорю о файле region.ini размером 1,5 КБ из дистрибутива Opera 12. В мире всего-то 5-6 макрорегионов. Добавьте еще страны с несколькими государственными языками, и будет вам многомиллионная база.
Многомиллионная база - я имел в виду, что нужна статистика из огромной выборки по предпочтениям пользователей в выборе языка, если софт не поддерживает их родной язык.
За файлик спасибо, он натолкнул меня на мысль, что многомиллионная база не нужна)), нужно лишь экспертиза хорошего лингвиста.
Но файлик, как я понял немного не о том, не о соответствии языковых предпочтений.
Опять-таки мое личное мнение, что все это очень не простая задача, крепчает.
К примеру, взять Украину. Допустим, в аппе имеется поддержка EN и PL. UA и RU не поддерживаются. Я не знаю наверняка, но насколько представляю жители западных областей предпочли бы язык PL вместо EN. А жители восточных областей скорее выбрали EN нежели PL. Ну, это я только лишь для примера, и, вероятно, не самого лучшего. Но смысл такой, что задача весьма не проста и лучше будет так глубоко в нее не погружаться.
Это все касается автовыбора предпочтительного языка - велик риск ошибиться так, что пользователь не поймет где в настройках можно изменить язык. Т.о. автовыбор годится лишь при полном соответствии языка в системе и поддерживаемого языка.
Итог: нужна более простая схема, отвечающая когда следует отображать меню выбора языка, когда не нужно.
Допустим есть пользователь, например, в Белоруссии или Украине, у которого в системе выбран соответствующий язык. В этом случае игра для пользователя будет все показывать на En,
правильно показывать ближайший к этим языкам , тоесть ру.
А как быть с другими странами и другими наборами поддерживаемых языков?
Интересует законченная универсальная схема поведения, а не данный конкретный случай, ответ на который для нас, конечно же, очевиден.
мы разрабатывали похожую схему для сайта. в каких странах какие языки используются и понимают..... прям готовых сервисов на данную тему не нашли (2 года назад), но собрать информацию не составило труда. 1-2 дня. и пару часов на программирование алгоритма.