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

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

Using Localize() function to translate a key:

appName, err := localizerService.Localize(bucketKey, "app_name")
if err !nil {
  // handle error
}
1
2
3
4

Loading translation pairs from local file:

localizerService.LoadBucketFromFile(
  bucketKey,
  "locales/greet.en.json",
  append,
)
1
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

Push translations to external source:

err := localizerService.PushBucketToSource(bucketKey)
if err != nil {
  // handle error
}
1
2
3
4