При использовании пользовательской локали в android имена каталогов будут, например,
res/drawable-en-rUS
res/values-fr-rCA
, где -r указывает регион (страну), в которой говорят на этом языке.
А что насчет того, когда также указывает региональный вариант? Мой клиент попросил, чтобы мы поддерживали английский, китайский и три (3) варианта японского языка. (*)
Я установил языковой стандарт с помощью настраиваемого класса приложения и запрограммировал что-то вроде этого:
locale = new Locale(lang, country);
Locale.setDefault(locale);
config.locale = locale;
mContext.getResources().updateConfiguration(config,mContext.getResources().getDisplayMetrics());
и использую каталоги ресурсов с таким названием:
/res/drawable-en
/res/drawable-cx
/res/drawable-ja
/res/drawable-ja-rHI
/res/drawable-ja-rFU
Хотя этот работает ; две нижние записи - это хаки. Я использую вымышленные названия стран в качестве регионов, когда мне действительно нужно, чтобы они были чем-то вроде
/res/drawable-ja-rJP-vHI
/res/drawable-ja-rJP-vFU
, чтобы указать вариант в Японии.
Есть еще один конструктор Locale ()
, а именно
] Locale (язык строки, страна строки, вариант строки);
Если я использую это как
locale = new Locale ("ja", "JP", "hi");
Как указать каталоги ресурсов, включая язык, регион и вариант ?
Лучший ресурс, который я нашел на Предоставление альтернативных ресурсов приложения , не показывает, как это сделать.
( *) они запросили следующие варианты на японском языке: