Рекомендации по локализации Java

У меня есть приложение Java с сервером и клиентом Swing. Теперь мне нужно локализовать пользовательский интерфейс и, возможно, некоторые данные должны быть привязаны к конкретной локали. Есть несколько конкретных вещей, о которых я хотел бы услышать ваше мнение.

  1. Как распределить локализованные строки для пользовательского интерфейса в файлы свойств? В моем приложении есть несколько видов, и у каждого есть несколько панелей. Должен ли я иметь один файл локализации на язык для каждой панели или представления или я должен хранить все переводы для одного языка в одном файле? В настоящее время я склоняюсь к одному файлу для каждого вида и языка, но я не уверен, как мне следует обрабатывать некоторые специфичные для домена термины, которые появляются во многих местах. Один и тот же перевод для нескольких файлов звучит не слишком хорошо.
  2. Сервер выдает некоторые исключения, содержащие сообщение, которое должно отображаться пользователю. Я мог бы получить выбранную локаль из сеанса и обработать локализацию на сервере, но я чувствую, что было бы более элегантно хранить все файлы локализации на клиенте. Я думал об отправке только ключа локализации с сервера с какими-то местозаполнителями для информации об ошибке, которая будет отправлена ​​за исключением. Затем клиент может создать сообщение на основе ключа локализации и заменить заполнители информацией об ошибке. Это звучит как хороший способ справиться с этим, или есть другие варианты? Обычно мои сообщения об исключениях содержат некоторую дополнительную информацию, которая изменяется для каждого случая. Например, « Пользователь с именем пользователя Khilon уже существует », и в этом случае строка в файле свойств будет выглядеть примерно так: « Пользователь с именем пользователя {0} уже существует «
  3. Локализация данных - это та область, которая мне наиболее неясна. Поскольку я не уверен, будет ли это когда-либо необходимо, я пока что не очень планировал это. Часть базы данных звучит достаточно просто, вам просто нужна дополнительная таблица для строк и столбец, чтобы указать, для какой локали используется строка. Хотя я не уверен, что было бы лучше иметь таблицу локализации для каждой таблицы данных (например, Product и Product_names), или я мог бы использовать одну таблицу для строк локализации для всех таблиц данных. Действительно сложная часть заключается в том, как обрабатывать пользовательский интерфейс, поскольку в некоторой степени пользователю потребуется вводить текст для объекта на нескольких языках. На практике это может означать, например, что работник в Финляндии будет давать объекту имя на финском и английском языках, а затем работник в другой стране сможет перевести его на свой родной язык. Если кто-то из вас сделал нечто подобное, я был бы рад услышать, как вы это сделали.

Я очень благодарен всем, кто может поделиться со мной своим опытом.

PS Если вы знаете какие-либо исключительно хорошие веб-сайты или книги на эту тему, я был бы рад услышать о них. Я, конечно, немного погуглил и прочитал несколько статей о локализации, но пока ничего не сногсшибательно.

18
задан Carlos 2 September 2010 в 19:51
поделиться