Что означает атрибут translatable
, например translatable="false"
?
Какова цель использования переводимых в Android-строк?
Ответ 1
Этот атрибут указывает, что этот атрибут будет одинаковым для всех локалей. Почему это полезно?
- Файлы локализации более читабельны для человека и экономят время.
- Он сообщает инструменту Lint, что все в порядке и что Android не нужно искать этот перевод ресурсов.
Полное объяснение: http://tools.android.com/recent/non-translatablestrings
Итак, в общем случае это означает, что если вы не поместите этот атрибут, вы всегда должны локализовать этот ресурс, иначе сообщите людям и компилятору, что это уникально для всех локалей, указав этот атрибут.
P.S. Поверьте мне, когда ваш проект станет большим, он очень большой, это очень полезно. Например, я сейчас работаю над проектом с клавиатурой, и это экономит много времени.
Ответ 2
Если вы поддерживаете несколько языков, и есть некоторые строки, которые не должны быть переведены (что значит одинаково на всех языках), вы можете использовать translatable = "false"
Для ex: Numbers <string name="account_setup_imap" translatable="false">IMAP</string>
Ответ 3
Я никогда не слышал об этом атрибуте, но, видимо, (теперь) есть причина для его использования: см. этот пост от ADT-Dev google group.
Кстати, я просто попробовал, и он работает в исправлении ошибок Android Lint.
Ответ 4
Это просто непроверенное предположение: это может также помочь компилятору Android генерировать более эффективный код для частей, в которых используется эта строка, поскольку он потенциально может оптимизировать все идентификаторы ресурсов этой строки (и ее динамический поиск в ресурсе xmls) и просто введите его значение.
Ответ 5
Я не вижу ссылки на официальные документы, однако, вероятно, это всего лишь показатель для людей, которые смотрят на файл, что этот конкретный строковый объект не должен быть переведен.
Если у вас есть приложение для Android, которое вы хотите интернационализировать, общая тактика заключается в том, чтобы просто отправить файл strings.xml переводчикам. Так что атрибут будет для них просто флагом.