mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-26 08:10:20 +00:00
74 lines
2.3 KiB
Markdown
74 lines
2.3 KiB
Markdown
|
# Translations README
|
||
|
|
||
|
This is a basic sketch of the workflow needed to add translations:
|
||
|
|
||
|
# Adding/Updating Translations
|
||
|
|
||
|
## New languages
|
||
|
Create `translations/kubectl/<language>/LC_MESSAGES/k8s.po`. There's
|
||
|
no need to update `translations/test/...` which is only used for unit tests.
|
||
|
|
||
|
There is an example [PR here](https://github.com/kubernetes/kubernetes/pull/40645) which adds support for French.
|
||
|
|
||
|
Once you've added a new language, you'll need to register it in
|
||
|
`pkg/util/i18n/i18n.go` by adding it to the `knownTranslations` map.
|
||
|
|
||
|
## Wrapping strings
|
||
|
There is a simple script in `translations/extract.py` that performs
|
||
|
simple regular expression based wrapping of strings. It can always
|
||
|
use improvements to understand additional strings.
|
||
|
|
||
|
## Extracting strings
|
||
|
Once the strings are wrapped, you can extract strings from go files using
|
||
|
the `go-xgettext` command which can be installed with:
|
||
|
|
||
|
```console
|
||
|
go get github.com/gosexy/gettext/go-xgettext
|
||
|
```
|
||
|
|
||
|
Once that's installed you can run `./hack/update-translations.sh`, which
|
||
|
will extract and sort any new strings.
|
||
|
|
||
|
## Adding new translations
|
||
|
Edit the appropriate `k8s.po` file, `poedit` is a popular open source tool
|
||
|
for translations. You can load the `translations/kubectl/template.pot` file
|
||
|
to find messages that might be missing.
|
||
|
|
||
|
Once you are done with your `k8s.po` file, generate the corresponding `k8s.mo`
|
||
|
file. `poedit` does this automatically on save, but you can also run
|
||
|
`./hack/update-translations.sh` to perform the `po` to `mo` translation.
|
||
|
|
||
|
We use the English translation as the `msgid`.
|
||
|
|
||
|
## Regenerating the bindata file
|
||
|
Run `./hack/generate-bindata.sh`, this will turn the translation files
|
||
|
into generated code which will in turn be packaged into the Kubernetes
|
||
|
binaries.
|
||
|
|
||
|
## Extracting strings
|
||
|
|
||
|
There is a script in `translations/extract.py` that knows how to do some
|
||
|
simple extraction. It needs a lot of work.
|
||
|
|
||
|
# Using translations
|
||
|
|
||
|
To use translations, you simply need to add:
|
||
|
```go
|
||
|
import pkg/i18n
|
||
|
...
|
||
|
// Get a translated string
|
||
|
translated := i18n.T("Your message in english here")
|
||
|
|
||
|
// Get a translated plural string
|
||
|
translated := i18n.T("You had % items", items)
|
||
|
|
||
|
// Translated error
|
||
|
return i18n.Error("Something bad happened")
|
||
|
|
||
|
// Translated plural error
|
||
|
return i18n.Error("%d bad things happened")
|
||
|
```
|
||
|
|
||
|
|
||
|
[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/translations/README.md?pixel)]()
|