Модуль Perl Locale :: XGettext позволяет вам написать свой вариант xgettext практически для любого текстового формата. Вам нужно только предоставить синтаксический анализатор для языка / формата, который способен извлекать строки.
Можно написать синтаксический анализатор в Java с минимальным шаблонным кодом Perl вокруг него. Я описал этот процесс в своем блоге Расширение Xgettext с помощью Locale :: XGettext . Пример экстрактора в Java доступен по адресу https://github.com/gflohr/Locale-XGettext/tree/master/samples/Java
Отказ от ответственности: я являюсь автором всего вышеупомянутого программного обеспечения и документов!
Если взаимодействие с Perl кодом звучит слишком сложно, вы также можете просто написать синтаксический анализатор для Scala на выбранном вами языке, запустить его до xgettext и вывести все переводимые строки в формат, который соответствует вашей версии. xgettext
понимает, например, C:
gettext("Hello, world!");
gettext("Another string.");
И затем вы просто используете сгенерированный фиктивный исходный файл в качестве ввода для xgettext
вместе с другими исходными файлами внутри вашей сборки.
Возможно, стоит отметить, что xgettext
всегда будет распознавать .po
и .pot
файлы в качестве входных данных, даже если вы вызывали его с --language=java
. Это означает, что файлы .po
или .pot
лучше всего подходят для выгрузки переводимых строк из файла Scala, при условии, что вы найдете способ создания файлов .po
/ .pot
.
Наконец, источники инструментов gettext разработаны для расширения. Вы можете добавить язык Scala, если вы можете написать для него экстрактор строк и средство форматирования в C. Однако вы не можете добавить поддержку другого языка во время выполнения, но вы должны скомпилировать свою собственную версию xgettext
или добавить свой экстрактор в проект gettext GNU.