Вопрос о локализации Android

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

Я попробовал создать папку с именем values-nb, для норвежского Bokmål. Я изменил локаль на своих телефонах в Норвегию. Это работало на моем Sony Ericson Xperia 8, но не на Samsung Galaxy Tab.

Затем я попробовал переименовать папку в значения – нет. Теперь он работает на вкладке галактики, но не на xperia. Я создаю обе папки, и она работает. Но тогда я должен поместить тот же файл в каждую папку!

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

На мой вопрос мой вопрос: как мне заставить это работать? Могу ли я сделать все эти папки, а затем заставить их ссылаться на значения – нет? Пожалуйста помоги 🙂

Solutions Collecting From Web of "Вопрос о локализации Android"

В существующих правилах поиска нет возможности просто локализовать для определенной страны и иметь возможность искать все языки. По крайней мере, я понимаю, что читаю страницы по адресу http://developer.android.com/guide/topics/resources/localization.html. Вам нужно будет создавать значения -nn-rNO, values-nb-rNO и значения-no -rNO и иметь дубликаты строк.xml.

Я не пробовал это, но заглядываю в строковые псевдонимы на http://developer.android.com/guide/topics/resources/providing-resources.html#AliasResources

Я знаю, что это старый, но вот трюк, чтобы совместить no, nb и nn как нет:

Locale locale = getResources().getConfiguration().locale; if (locale.getLanguage().equals("no") || locale.getLanguage().equals("nb") || locale.getLanguage().equals("nn")){ locale = new Locale("no","NO"); Configuration config = new Configuration(); config.locale = locale; Resources res = getBaseContext().getResources(); res.updateConfiguration(config, res.getDisplayMetrics()); } 

Не ответ на исходный вопрос, а решение для соответствующей проблемы, и это вероятный пункт назначения, если вы ищете решение для этой проблемы (это было для меня).

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

Проблема заключалась в поддержке Androids для генерации ресурсов псевдолокализации. В старых версиях Android вы сделали это с помощью этой магии в файле build.gradle:

 android.applicationVariants.all { variant -> // see http://blog.danlew.net/2014/04/16/android-localization-tips/ if (variant.buildType.isDebuggable()) { variant.mergedFlavor.addResourceConfiguration("zz_ZZ") } } 

Это изменилось в более поздних версиях Android, и если вы его используете, то вы не получите никакой локализации. Новый способ:

 buildTypes { debug { pseudoLocalesEnabled true } }