DR
dronezzzko/go-multilang-api
An example of how to deal with multi-language support in your API
go-multilang-api
Description
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.
Prerequisites
Make sure that gotext is installed:
go install golang.org/x/text/cmd/gotext@latest
How-to
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
Workflow
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).
On this page
Languages
Go97.9%Makefile2.1%
Contributors
MIT License
Created January 31, 2023
Updated November 30, 2023