2015-07-28 3 views
-1

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

Структура папок папки ресурсов является: (язык по умолчанию, в значениях папка ан-ГБ)

res/ 
    values/ 
     /file1.xml 
     /file2.xml 
     /file3.xml 
    /values-us/ 
     /file2.xml (containing just the few lines that differ from /value/file2.xml 
    /values-dk/ 
     file1.xml 
     file2.xml 
     file3.xml 

Таким образом, в основном ЛИНТЕР является правильным, большинство файлов отсутствуют в values-us. Однако в одном локали содержится около 20 файлов с примерно 100 + строками каждый, а разница между стандартным и US - это, вероятно, 5 строк, представляется нецелесообразным поддерживать все значения для обеих локалей. Чтобы быть ясным, я абсолютно хочу, чтобы цель релиза завершилась неудачей, когда значения-dk/или values-de/отсутствуют переводы, я просто хочу отметить локаль США как расширение по умолчанию. Это возможно?

+2

Установите атрибут 'translatable =" false "' на строки, которые не должны быть переведены (в 'en-GB'). То же самое касается ваших (возможных) строковых массивов. –

+0

спасибо за ввод, но мне бы хотелось, чтобы linter запускался там, где это имеет смысл, f.x. в любых не английских папках значений. Я добавил дополнительную информацию к исходному вопросу – vruum

+0

... ну, это уже так. В неанглийских папках Линт жалуется на нетранслируемые строки. Но, если строки отмечены как «непереводимые» (в английской папке), они больше не будут жаловаться на такие слова. –

ответ

0

Так получилось, что это на самом деле довольно просто. Все, что мне нужно было сделать, это переименовать значения-us/folder в значения-en-rUS /, и это работает.

0

Я думаю, что Линт нашел несколько строк, которые не находятся в res/values, но в res/values- {language}. В этом случае, если код пытается использовать одну из этих строк, и выбор строки падает до значения по умолчанию (телефон настроен на язык, на котором вы не предоставляете переводы), приложение выйдет из строя.

Ошибка должна сообщить вам, какая строка не переведена. Я бы начал с проверки языков, определяющих его, и убедиться, что он также по умолчанию.

+0

Фактически, это наоборот, по умолчанию значения имеют значения, которые отсутствуют в локализации. Извините, если вопрос был сформулирован плохо. Я попытался добавить к нему немного больше информации, которая, надеюсь, должна сделать ее немного менее двусмысленной – vruum

Смежные вопросы