Мы локализуем текст пользовательского интерфейса для веб-приложения, работающего на Java 5, и имеем дилемму о том, как мы выводим сообщения, определенные в файлах свойств - тип, используемый java.util.Properties .
Некоторые сообщения содержат заполнитель, который будет заполнен с использованием java.text.MessageFormat . Например:
search.summary = Your search for {0} found {1} items.
MessageFormat раздражает, потому что одиночная кавычка является специальным символом, несмотря на то, что встречается в английском тексте. Вы должны ввести два для буквальной одинарной кавычки:
warning.item = This item''s {0} is not valid.
Однако три четверти из примерно 1000 сообщений приложения не содержат заполнителя. Это означает, что мы можем выводить их напрямую, избегая MessageFormat и оставляя одиночные кавычки в покое:
help.url = The web page's URL
Вопрос: следует ли нам использовать MessageFormat для всех сообщений, для согласованного синтаксиса или избегать MessageFormat там, где это возможно, поэтому большинству сообщений не нужно экранировать?
В любом случае, есть свои плюсы и минусы.
Обратите внимание, что документация API для MessageFormat признает проблему и предлагает решение:
Правила использования кавычек в
шаблоны формата сообщений, к сожалению,
показали, что несколько сбивает с толку.
В частности, это не всегда очевидно
локализаторам ли одинарные кавычки
нужно удвоить или нет. Удостовериться
информировать локализаторов о правилах,
и сказать им (например, с помощью
комментарии в ресурсном источнике
файлы) какие строки будут обработаны
по MessageFormat.