Ограничения на имя ресурса или как сделать общую интернационализацию - PullRequest
1 голос
/ 05 октября 2010

В настоящее время портируем приложение для iPhone на Android. Я столкнулся с проблемой, которую не смог преодолеть.

На iPhone перевод вашего текста тривиален. Поместите все ваши строки / текст в Localizable.strings в формате: "предложение переводить" = "предложение переведено"

Исходная строка может содержать любые символы любого типа.

Пытаясь воспроизвести нечто похожее на Android, в strings.xml я добавил все ключи, например: предложение переведено

Тогда я надеялся сделать что-то вроде:
int resID = getResources().getIdentifier(tmp, "strings", "com.name.app_name"); где tmp содержит строку. Получив resID, я могу получить переведенную строку с помощью findresourcebyId.

К сожалению, выяснилось, что это не так просто. Имя строки не может содержать пробел, не может начинаться с цифры и т. Д.

Eclipse ничего мне не показывает, но при попытке запустить код я просто получаю «В вашем проекте есть ошибки. Пожалуйста, исправьте их перед запуском приложения» и все. Ничего не вижу в журнале ошибок и т.д ..

Итак, каковы ограничения в названии ресурса на Android. Или есть способ обойти это и легко заменить одну строку другой. Я хотел бы сохранить исходный словарь текста, который я использовал на iPhone, чтобы все было просто и не возникало лишних ошибок.

Спасибо

1 Ответ

1 голос
/ 05 октября 2010

Вы просто создаете новый каталог values для каждого языка, который хотите поддерживать, используя следующую схему именования values-en для английской локализации и так далее.Он использует двухбуквенный стандарт ISO 639-1.

Теперь в каждом каталоге языковых значений у вас есть strings.xml.В этом XML-файле каждая строка имеет свой собственный идентификатор и свое значение (переведенная строка).Идентификаторы одинаковы в каждом strings.xml в разных языковых каталогах, отличается только содержимое строки.

Для более подробного прочтения, я рекомендую статью Localization на сайте разработчиков Android.

РЕДАКТИРОВАТЬ: В качестве строкового идентификатора можно использовать только прописные, строчные буквы, цифры и подчеркивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...