Localizer service
Localizer provides you a simple translation service that can pull and push translation pairs from local (file) and external sources (online services).
Currently localizer supports only POEditoropen in new window online source.
Localizer using a bucket key to separate and manage translation parts of your app.
First you need these in your app config:
translation:
poeditor:
api_key: ENV[POEDITOR_API_KEY]
project_id: ENV[POEDITOR_PROJECT_ID]
language: ENV[POEDITOR_LANGUAGE]
1
2
3
4
5
2
3
4
5
Register the service into your main.go
file:
registry.ServiceProviderLocalizer("") //for param you can provide env var as key(not as value!) in case you want to have sub folder in locale folder
1
Access the service:
service.DI().LocalizerService()
1
Loading translation pairs from map:
bucketKey := "greet-service"
append := false // append or replace?
pairs := map[string]string{
"app_name": "My App Name",
"loading_text": "Loading ...",
}
localizerService.LoadBucketFromMap(
bucketKey,
pairs,
append,
)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Using Localize()
function to translate a key:
appName, err := localizerService.Localize(bucketKey, "app_name")
if err !nil {
// handle error
}
1
2
3
4
2
3
4
Loading translation pairs from local file:
localizerService.LoadBucketFromFile(
bucketKey,
"locales/greet.en.json",
append,
)
1
2
3
4
5
2
3
4
5
Pull the translations from external source:
err := localizerService.PullBucketFromSource(bucketKey, append)
if err != nil {
log.Fatal(err)
}
1
2
3
4
2
3
4
Push translations to external source:
err := localizerService.PushBucketToSource(bucketKey)
if err != nil {
// handle error
}
1
2
3
4
2
3
4