A simple API that demonstrates how to manage multiple languages in your service. The project also shows how to deal with pluralization.
Built using gotext.
There are two supported languages in the repo: en-US, fr-FR.
Make sure that gotext is installed:
go install golang.org/x/text/cmd/gotext@latest
To run service using default port 8080:
make run
Make a request using different languages
curl -H "Accept-Language: en-US" localhost:8080
curl -H "Accept-Language: fr-FR" localhost:8080
A typical workflow when working with gotext:
Do not edit automatically generated
out.gotext.jsonfiles. All changes should be made inmessages.gotext.json(make a copy fromout.gotext.jsonif it's missing).
- Extract new strings from project to translate:
make gen - Edit
internal/translation/localesto add translations. make gento re-build message catalog (internal/translation/catalog.go).
When new languages need to be added:
- Add a new language in translation pkg:
internal/translation/generate.go - Extract the new language strings from project to translate:
make gen - Create messages to translate by copying output from the prev step (
de-DEas an example):cp internal/translation/locales/de-DE/out.gotext.json internal/translation/locales/de-DE/messages.gotext.json - Edit
internal/translation/localesto add translations. make gento re-build message catalog (internal/translation/catalog.go).