Какова цель CHAR_LIMIT в строках. xml? - PullRequest
0 голосов
/ 17 июня 2020

Почему некоторые проекты Android указывают "CHAR_LIMIT" в комментариях над каждой строкой в ​​строках. xml? Например, из https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/strings.xml:

<!-- [CHAR LIMIT=25] String for confirmation button to enable a feature gated by the battery saver warning-->
<string name="confirm_battery_saver">OK</string>
<!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. -->
<string name="battery_saver_description_with_learn_more">To extend battery life, Battery Saver:\n&#183;Turns on Dark theme\n&#183;Turns off or restricts background activity, some visual effects, and other features like \u201cHey Google\u201d\n\n<annotation id="url">Learn more</annotation></string>

Поиск в Google приводит еще несколько примеров, но без объяснения. Я не верю, что документация Android охватывает это. И в отличие от таких тегов, как <xliff:g>, это не похоже на официальный функциональный компонент Android. Я предполагаю, что это соглашение, которое используют некоторые проекты, чтобы указать, «когда вы переводите это, убедитесь, что переведенная версия не содержит более X символов, иначе это нарушит пользовательский интерфейс!» Или, возможно, наоборот: «если вы используете эту строку, убедитесь, что пользовательский интерфейс по-прежнему выглядит хорошо с длиной строки X символов»

Я считаю, что пользовательский интерфейс всегда должен быть таким гибким, как разумно, учитывая возможность переводов разной длины и возможность текста разного размера. Кроме того, переводчики должны стремиться к тому, чтобы перевод был более или менее того же размера, что и исходный текст, вместо того, чтобы при переводе переходить, скажем, с 10 символов на 50. Поэтому я думаю, что этот "CHAR_LIMIT" будет совершенно ненужным и его можно будет отбросить. (Я спрашиваю, потому что я исправляю старый проект с открытым исходным кодом, который использует это.)

Правильно ли я понимаю «CHAR_LIMIT» или для чего он нужен, и нужно ли его использовать?

1 Ответ

1 голос
/ 18 июня 2020

при переводе убедитесь, что в переведенной версии не более X символов, иначе пользовательский интерфейс нарушится! «Или, возможно, наоборот», если вы используете эту строку, убедитесь, что пользовательский интерфейс по-прежнему выглядит хорошо с длинной строкой X символов

Это в значительной степени мое понимание этого.

Я немного искал, где используется эта подсказка, и нашел только одно место: stringslint.py . Это сценарий lint, который, кажется, используется для файлов strings.xml. Может быть, проект, о котором вы говорите, использовал этот скрипт? Документы файла говорят:

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

Использование: stringslint.py strings.xml
Использование: stringslint.py strings.xml old_strings.xml

Обычно:

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

Итак, это соответствует тому, что вы говорили. Это подсказка для переводчиков, но ее также можно использовать для проверки линта, отсюда легко разбираемый синтаксис. где-то упоминалось. Но не похоже, что сообщество может внести свой собственный перевод, поэтому я не нашел такой страницы.

Обратите внимание, что есть также BACKUP_MESSAGE_ID, объявленный таким же образом для некоторых строковые ресурсы. Кажется, это связано с приложением системных настроек, но я не знаю больше, чем.

РЕДАКТИРОВАТЬ: Я нашел другой скрипт, использующий его: https://chromium.googlesource.com/chromium/src/+/master/tools/grit/grit/tool/android2grd.py, хотя на этот раз это CHAR-LIMIT.

...