Automatic merge from submit-queue (batch tested with PRs 46235, 44786, 46833, 46756, 46669) Add Japanese translation for kubectl **What this PR does / why we need it**: I messed up the original PR(#45562) which was already been reviewed and approved. This PR provides first attempt to translate kubectl in Japanese (related to #40645 and #40591). **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # No issues **Special notes for your reviewer**: Should be reviewed by member of Japanese k8s community (I stayed in Japan for 4 years, but my language is not as good as native Japanese)
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 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:
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 .po
file, generate the corresponding k8s.mo
file. poedit
does this automatically on save, but you can also use
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:
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")