kubectl: move translations to i18n package to kubectl staging directory

Go 1.16's embed directive doesn't allow embeding files from parent
directories. Hence, moving the translations data to inside the i18n package.

Logically speaking as well, kubectl related artifacts should be inside
the kubectl package.

Signed-off-by: Nabarun Pal <pal.nabarun95@gmail.com>
This commit is contained in:
Nabarun Pal 2021-03-04 09:55:12 +05:30
parent 1151dc1ee5
commit 5ece28b77a
No known key found for this signature in database
GPG Key ID: 611D5079D826B150
30 changed files with 7 additions and 8 deletions

View File

@ -21,6 +21,7 @@
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${KUBE_ROOT}/hack/lib/util.sh" source "${KUBE_ROOT}/hack/lib/util.sh"
TRANSLATIONS="staging/src/k8s.io/kubectl/pkg/util/i18n/translations"
KUBECTL_FILES="pkg/kubectl/cmd/*.go pkg/kubectl/cmd/*/*.go" KUBECTL_FILES="pkg/kubectl/cmd/*.go pkg/kubectl/cmd/*/*.go"
generate_pot="false" generate_pot="false"
@ -71,7 +72,7 @@ if [[ "${generate_pot}" == "true" ]]; then
perl -pi -e 's/\\\)/\\\\\)/g' tmp.pot perl -pi -e 's/\\\)/\\\\\)/g' tmp.pot
kube::util::ensure-temp-dir kube::util::ensure-temp-dir
if msgcat -s tmp.pot > "${KUBE_TEMP}/template.pot"; then if msgcat -s tmp.pot > "${KUBE_TEMP}/template.pot"; then
mv "${KUBE_TEMP}/template.pot" translations/kubectl/template.pot mv "${KUBE_TEMP}/template.pot" "${TRANSLATIONS}/kubectl/template.pot"
rm tmp.pot rm tmp.pot
else else
echo "Failed to update template.pot" echo "Failed to update template.pot"
@ -81,12 +82,10 @@ fi
if [[ "${generate_mo}" == "true" ]]; then if [[ "${generate_mo}" == "true" ]]; then
echo "Generating .po and .mo files" echo "Generating .po and .mo files"
for x in translations/*/*/*/*.po; do for x in "${TRANSLATIONS}"/*/*/*/*.po; do
msgcat -s "${x}" > tmp.po msgcat -s "${x}" > tmp.po
mv tmp.po "${x}" mv tmp.po "${x}"
echo "generating .mo file for: ${x}" echo "generating .mo file for: ${x}"
msgfmt "${x}" -o "$(dirname "${x}")/$(basename "${x}" .po).mo" msgfmt "${x}" -o "$(dirname "${x}")/$(basename "${x}" .po).mo"
done done
fi fi
./hack/generate-bindata.sh

View File

@ -5,7 +5,7 @@ This is a basic sketch of the workflow needed to add translations:
# Adding/Updating Translations # Adding/Updating Translations
## New languages ## New languages
Create `translations/kubectl/<language>/LC_MESSAGES/k8s.po`. There's Create `staging/src/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/<language>/LC_MESSAGES/k8s.po`. There's
no need to update `translations/test/...` which is only used for unit tests. 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. There is an example [PR here](https://github.com/kubernetes/kubernetes/pull/40645) which adds support for French.
@ -14,7 +14,7 @@ Once you've added a new language, you'll need to register it in
`staging/src/k8s.io/kubectl/pkg/util/i18n/i18n.go` by adding it to the `knownTranslations` map. `staging/src/k8s.io/kubectl/pkg/util/i18n/i18n.go` by adding it to the `knownTranslations` map.
## Wrapping strings ## Wrapping strings
There is a simple script in `translations/extract.py` that performs There is a simple script in `staging/src/k8s.io/kubectl/pkg/util/i18n/translations/extract.py` that performs
simple regular expression based wrapping of strings. It can always simple regular expression based wrapping of strings. It can always
use improvements to understand additional strings. use improvements to understand additional strings.
@ -31,7 +31,7 @@ will extract and sort any new strings.
## Adding new translations ## Adding new translations
Edit the appropriate `k8s.po` file, `poedit` is a popular open source tool Edit the appropriate `k8s.po` file, `poedit` is a popular open source tool
for translations. You can load the `translations/kubectl/template.pot` file for translations. You can load the `staging/src/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/template.pot` file
to find messages that might be missing. to find messages that might be missing.
Once you are done with your `k8s.po` file, generate the corresponding `k8s.mo` Once you are done with your `k8s.po` file, generate the corresponding `k8s.mo`
@ -55,7 +55,7 @@ binaries.
## Extracting strings ## Extracting strings
There is a script in `translations/extract.py` that knows how to do some There is a script in `staging/src/k8s.io/kubectl/pkg/util/i18n/translations/extract.py` that knows how to do some
simple extraction. It needs a lot of work. simple extraction. It needs a lot of work.
# Using translations # Using translations