«Социальная» интернационализация в Android-приложении - динамическая загрузка ресурсов - PullRequest
4 голосов
/ 24 июня 2011

У меня есть идея, чтобы пользователи могли переводить мое приложение на свои языки. Я представляю это так:

Если приложение не переведено на системный язык пользователя, Английская версия пользовательского интерфейса отображается и пользователя просят о помощи в переводе (это очевидно) Далее пользователя просят перевести некоторые фразы с английского на его родной язык. И попросил проверить некоторые другие переводы. (это немного работы, но ничего сложного) Трудная часть моей идеи: Пользователь нажимает «обновить перевод», и текстовые ресурсы для этого приложения обновляются до последних выпусков. Конечно, можно делать частые обновления, но у этого подхода есть некоторые недостатки: 1. Я должен делать все эти обновления часто, и не все пользователи будут довольны этим. 2 Даже если обновления будут производиться еженедельно, время, затраченное на получение результатов, будет слишком большим для большинства пользователей, и, вероятно, ответ будет не таким хорошим, как мог бы.

Вы знаете, как загружать переводы "онлайн"?

Ответы [ 3 ]

1 голос
/ 07 июля 2011

Я сделал несколько интернационализаций используя:

Сначала я проверю, есть ли у них какой-нибудь API.Если API не существует, я бы проверил Java-реализацию gettext и обработал с ней переводы.

1 голос
/ 12 июля 2011

Android в настоящее время не поддерживает это. Чтобы выполнить то, что вы хотите, вам нужно вставить свой собственный код обработки ресурсов, чтобы возвращать строки везде, где они используются в вашем пользовательском интерфейсе. Это означает, что вы не можете позволить структуре загружать строки самостоятельно (например, не использовать android: text = "@ string / кое-что" в ваших макетах) и вызывать свою собственную функцию для извлечения строки, которая упаковывает Resources.getString () / GetText ().

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

Итак, вы смотрите на что-то совершенно нетривиальное.

0 голосов
/ 24 июня 2011

Вы можете кэшировать любой из переводов текущего пользователя в файл на SD / хранилище и показать его этому конкретному пользователю. Затем, когда он получает свое еженедельное обновление, удалите кэшированный файл и начните снова?

...