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