Ошибка «переведена здесь, но не найдена в локали по умолчанию» в файле strings.xml с translatable = «false»


98

Вот мои значения \ strings.xml (файл по умолчанию), и все говорит само за себя: введите описание изображения здесь

Мои вопросы):

  1. Как он может быть «не найден в локали по умолчанию», если я редактирую локаль по умолчанию (values ​​\ strings.xml)?
  2. Как это может быть ошибка перевода линта, если я ставил translatable="false"? В папках values-pl \ strings.xml (а также values-ru, values-iw) строки даже не существуют? в любом случае не должно.
  3. Я не могу понять, почему я не получаю ошибку для русской строки.

(Я бы показал здесь values-ru \ string.xml или values-pl \ string.xml, но там нет ничего интересного, так как строки все равно отсутствуют ...)


2
Если такое случается время от времени, просто выполните обычную очистку (очистите / восстановите или аннулируйте кеши / перезапустите ASTUDIO и т. Д.) Если, конечно, ошибка «настоящая». ;) Я хочу сказать, что с Android Studio 3.2 (beta atm) это происходит случайно, хорошие строки подчеркиваются, вы что-то касаетесь, и ошибка исчезает. Это глючит. ¯_ (ツ) _ / ¯
Мартин Маркончини

1
Попробуйте этот метод: stackoverflow.com/a/53780805/7831470
Сагар Гири

На данный момент работает Android Studio 3.3.2. Иногда такое случается со мной, если я дублирую имя строки в файле strings.xml (например, при копировании-вставке). Это немного расстраивает, но очистка и перезапуск, похоже, исправляют.
Джон Риггс

Это происходит очень часто, если вы перемещаете ресурс из одного файла в другой файл в другом модуле. Мне приходится каждый раз аннулировать кеш, очистка / сборка не имеют никакого эффекта. Кажется, проблема с индексацией.
3c71 01

Запуск приложения у меня
сработал

Ответы:


82

это случилось и со мной

Я делаю 2 вещи:

  • Проверьте весь файл, чтобы увидеть, что другой перевод не выполнен (у меня есть в файле en, ​​но в pt-br)
  • Очистите, обновите gradle, выйдите и перезапустите Android Studio.

8
Просто очистите проект и перезапустите Android Studio. И это сработало;)
Ektos974

19
Если очистка проекта и перезапуск Android Studio не работают, попробуйте запустить Invalidate Caches / Restart.
makuno

2
Очищенные и недействительные кеши / перезагрузка. У меня тоже сработало! :)
Ришаб Ранджан

2
❗ Попробуйте удалить линию и снова добавить ее, прежде чем сделать это. Жизнь коротка.
Нолан Эми

Я думаю , что и должны сделать дополнение к ответу, а именно команда: Invalidate Caches / Restart. Чтобы не искать в комментариях, как я например сделал.
Морозов

68

Восстановление может занять много времени. YMMV, но ...

Просто удалите оскорбительную строку и снова добавьте ее.

Работал у меня. Очень быстро.


3
Пришлось сделать еще меньше. Я переименовал строку, а затем вернул ее обратно.
Мэтт

1
Вот это да! это супер быстро.
userAbhi 08

3
Выберите строку, вызывающую нарушение, ctrl-X, ctrl-V. Выполнено. Сработало у меня!
ONE

1
Выберите нарушающую строку, удалите, отмените (команда / управление z). Выполнено. Сработало у меня!
HendraWD

1
Более быстрые решения
Мохадви

22

В моем случае мне это помогло:

  1. Выберите строки, вызывающие ошибку.
  2. Разрежьте их.
  3. Вставьте их снова

Если это не сработает, попробуйте добавить те же строки в strings.xml(v21)файл.


10

Нажмите Invalidate Caches / Restart ..., чтобы перезапустить студию Android. У меня это сработало. На самом деле это произошло, когда я скопировал файлы с другого компьютера и вставил их через проводник.


5

У меня было такое же сообщение об ошибке, только с той странной проблемой, что оно было выброшено в самой локали по умолчанию и во всех переводах. Оказывается, вы не должны использовать точки в своем имени (например, name = "bla.blub"), потому что оно будет внутренне преобразовано в "bla_blub", а затем не сможет совпадать с "bla.blub", отсюда и ошибка. Мне нужно было только заменить точки на подчеркивание в локали по умолчанию, а затем все другие ошибки в других переводах (включая точки в имени) также исчезли.

Но имейте в виду, что другие инструменты сборки по-прежнему могут создавать проблемы, поэтому замените все точки подчеркиванием!


4

Выход из Android Studio и перезапуск исправили это для меня.


У меня тоже работает, это намного менее болезненно, чем отключение кеша и перезапуск.
3c71

4

Я решил эту проблему, выполнив следующие шаги:

  1. очистка моего проекта

  2. восстанавливая это

  3. и, наконец, нажав недопустимые кеши / перезапустить в меню файла


2

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

https://github.com/gubatron/android-missing-strings

Чтобы очистить все остатки на других языках, вызовите вот так

./ams --cleanleftovers -o all.txt

Это очистит оставшиеся строки и выведет отчет об отсутствующих строках для всех языков в файл all.txt.


2

Вам просто нужно скопировать строку с нарушением (или только одну из нескольких строк с нарушением), удалить ее и снова вставить. Это устранило проблему для меня.


Хотя это может помочь OP, лучше добавить больше деталей, объяснений, примеров и т. Д. Пожалуйста, предоставьте ответы, которые не требуют пояснений от спрашивающего.
Tiw

1

Просто убедитесь, что у вас есть одинаковые соглашения об именах для всех строковых файлов, включая одинаковые заглавные буквы. скажем, если у вас есть «sign_in» в strings.xml и «sign_In» в вашем fr / string.xml, поэтому он выдаст вам ошибку на fr / strings.xml, например, «переведено здесь, но не найдено в локали по умолчанию». Итак, когда вы редактируете "sign_in". Ошибка удалим.


0

Копирование и вставка у меня не работали.

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

Я попытался закрыть открытый файл strings.xml и редактор переводов , а затем перезапустить.

файл strings.xml и редактор переводов

Это подходит для меня.


0

У меня была эта проблема для всех строк в моем XML-файле.

Дело в том, что по умолчанию у вас strings.xmlне должно быть tools:localeатрибута, как у других переведенных файлов. Если это так, то всякий раз, когда я компилирую приложение в режиме выпуска, оно обрабатывает его как еще один переведенный файл.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.