Добрый день. Хочется поинтересоваться, какие ппакеты сейчас принято использовать для локализации приложения на go. в частности вэб сайтов. На глаза попались следующие проэкты



  1. официальные xtext golang.org/x/text/language golang.org/x/text/message

  2. go-i18n https://github.com/nicksnyder/go-i18n/

  3. gotext https://github.com/leonelquinteros/gotext


Первый я потыкал, остальные 2 только доки посмотрел. Что я хочу от пакета для локализации




  1. не сильно монструозный синтаксис




  2. Автоматическое выдерание строк для перевода из исходников go, и из шаблонов html.
    По большому счету все.




Начнем по порядку


официальные xtext синтаксис вполне себе ок, заменяете


fmt.Printf(«hello world»)


на


p := message.NewPrinter(language.Greek) 
p.Printf(«Hello world!»)


при помощи команды go generate и коментария в файле


//go:generate gotext -srclang=en update -out=catalog.go -lang=en,el


генерирует вам json файлы в которых можно осуществлять перевод, а так же генерирует файл catalog.py в котором хранит этот перевод в своем формате.
Есть пара НО




  1. Не выдерает строки для перевода из шаблонов go




  2. Не понял как переводить например даты time.Now().Weekday()




  3. Иногда странно себя ведет.




    1. Например метод p.Printf(«Hello world!» выдает перевод на нужный язык, а метод p.Println(«Hello world!» (выдает оригинал), хотя по идеи должен.




    2. Если вызвать метод p.Printf(«Hello world!» для строки которая не зарегестрирована в файле переводов соответствующего языка, то на печать выйдет перевод самой первой строки в словаре. Я б ожидал что на печать выйдет оригинал без перевода.






Например:
Файл переводов


{
"language": "el",
"messages": [
{
"id": "Hello world!",
"message": "Hello world!",
"translation": "