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