Предупреждение: я не хакер Java, так что YMMV, но ...
Проблема с использованием списка «свойств» заключается в том, что вам нужно много дисциплины. Каждый раз, когда вы добавляете строку, которая должна быть выведена для пользователя, вам нужно будет открыть файл свойств, посмотреть, есть ли эта строка (или что-то примерно эквивалентное ей) уже в файле, а затем перейти и добавить новое свойство если это не так. Кроме того, вам следует надеяться, что файл свойств будет достаточно удобочитаемым / редактируемым человеком, если вы захотите передать его внешней команде переводчиков.
Подход, основанный на базе данных, полезен для всего контента, основанного на базе данных. В идеале вы хотите, чтобы было легко связать фрагменты контента с их переводами. Это действительно только для всех мест, где вы можете захотеть вывести что-то, что не из базы данных (сообщения об ошибках и т. Д.).
Одна довольно старая технология, которая, на наш взгляд, до сих пор работает очень хорошо, - это использование gettext. Gettext или другой вариант, кажется, доступен для большинства языков и платформ. Основная предпосылка заключается в том, что вы заключаете свой вывод в специальный вызов функции следующим образом:
echo _("Please do not press this button again");
Затем запуск инструментов gettext над вашим исходным кодом извлечет все экземпляры, упакованные таким образом, в файл «po». Это будет содержать записи, такие как:
#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr ""
И вы можете добавить свой перевод в соответствующее место:
#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr "s’il vous plaît ne pas appuyer sur le bouton ci-dessous à nouveau"
Последующие запуски инструментов gettext просто обновляют ваши po-файлы. Вам даже не нужно извлекать po-файл из вашего источника. Если вы знаете, что может захотеть перевести ваш сайт в линию, тогда вы можете просто использовать формат, показанный выше (подчеркнутая функция), со всеми своими результатами. Если вы не предоставите po-файл, он просто вернет все, что вы указали в кавычках. gettext предназначен для работы с локалями, поэтому локаль пользователей используется для получения соответствующего po-файла. Это позволяет легко добавлять новые переводы.
Gettext Pros
- Не мешает при кодировании
- Очень легко добавлять переводы
- PO файлы могут быть скомпилированы для скорости
- Существуют библиотеки, доступные для большинства языков / платформ
- Есть хорошие кроссплатформенные инструменты для работы с переводами. На самом деле можно настроить вашу команду переводчиков с помощью такого инструмента, как poEdit , чтобы им было очень легко управлять проектами перевода
Gettext Минусы
- Удовлетворяет потребности вашего сайта в "мебели", но обычно вам все же нужен подход на основе базы данных для контента, управляемого базой данных
Для получения дополнительной информации о gettext см. эту страницу википедии