@Ezekiel4
Сын маминой подруги

Как лучше всего организовать поддержку нескольких языков?

Сейчас мой проект поддерживает несколько языков с помощью гигантского синглтона с единственным публичным методом:
public String getMessage(String ietfCode, String target) {
	if (!verifyLangTarget(target))
		throw new IllegalArgumentException("Invalid target \"" + target + "\"");
	switch (ietfCode) {
	case "ru" -> ruList.get(target);
	case "ua" -> uaList.get(target);
	case "be" -> beList.get(target);
	case "pl" -> plList.get(target);
	default -> enList.get(target);
	}
}

Здесь ruList, uaList и т.д. - это экземпляры HashMap, которые я заполняю при запуске программы из приватных функций типа initRu(){}, initUa(){} и т.д., вызываемых при создании класса.

Работать-то оно работает, но я хотел бы сделать возможность подключения новых и изменения существующих языков без редактирования кода и вообще вынести все строки из кода.

В данный момент я обдумываю такой вариант: создать публичный репозиторий в GitHub, в котором будет папка с файлом конфигурации (какие языки есть) и с папкой, где содержатся все языки в виде json файлов (ua.json, pl.json и т.д.). JSON формат сам по себе легко читать и менять + любой желающий сможет сделать вклад в виде улучшения перевода или добавления нового языка.
Так как моя программа работает в интернете, то всегда сможет прочитать содержимое этого репозитория. Сначала она читает файл конфигурации, а затем подгружает языковые файлы.

Насколько такое решение хорошее? Может быть, есть вариант получше?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы