Based on current browser locale the Dashboard can be displayed in one of the supported languages listed below. In case it does not work, make sure that your browser's locale is identified with correct language code. In more details, Dashboard determines requested language based on HTTP Accept-Language
header from browser. We can check which language codes are requested by browser on Network
tab in developer tool of browser.
Language | Code | Remarks |
---|---|---|
English (default) | en | - |
Spanish | es | - |
French | fr | - |
German | de | - |
Japanese | ja | - |
Korean | ko | - |
Simplified Chinese | zh-Hans | - |
Traditional Chinese | zh-Hant | - |
Traditional Chinese (Hong Kong) | zh-Hant-HK | - |
To show localized dashboard, you need to build dashboard binary before.
To build dashboard binary, run npm run build
. Or to build and run localized dashboard immediately, run npm run start:prod
.
To build and run Kubernetes Dashboard easily and kubernetes cluster created with kind
, see Getting started
Note: Building localized dashboard takes time, so development environment, e.g. npm start
, does not compile localized versions.
All translation data is stored in modules/web/i18n/
directory in project's root. It includes locale_conf.json
configuration file, translation source file messages.xlf
and translation files for each language, e.g. i18n/fr/messages.fr.xlf
or i18n/ja/messages.ja.xlf
.
Localization is handled by Angular.
Add i18n
attribute into tag surrounding new text in Angular template html files.
- Move current directory to
modules/web/
. - Run
yarn fix:i18n
. It will executexliffmerge
and updatei18n/messages.xlf
andi18n/[locale]/messages.[locale].xlf
files.
xliffmerge
would copy new localizable texts from <source>
element to <target>
element with state="new"
attribute in your translation file, i.e. i18n/[locale]/messages.[locale].xlf
.
Find new localizable texts in i18n/[locale]/messages.[locale].xlf
file and translate text in the <target>
element.
Since dashboard team can not review translation files in your language, so dashboard team transfers authority to review and approve for updating your translation file. At first, you need to organize translation team for your language that manages dashboard translation file.
- Create your locale directory under
i18n
directory, e.g.i18n/fr
ori18n/ja
. - Add your locale file, e.g.
fr/messages.fr.xlf
orja/messages.ja.xlf
, into"targetFiles"
array of"extract-i18n-merge"."options"
inpackage.json
file. - Run
yarn fix:i18n
. Then translation file for your language, e.g.i18n/fr/messages.fr.xlf
, would be generated in your locale directory. - Open your translation file and translate texts in
<target>
element into your language, and removestate="new"
to mark it as translated. - Extend the
modules/web/src/index.config.ts
with the new language.
const supportedLanguages: LanguageConfig[] = [
{
label: 'German',
value: 'de',
},
{
label: 'Japanese',
value: 'ja'
}
];
- To build dashboard for your language, add your locale into
locales
inmodules/web/angular.json
like follow:
"ja": {
"translation": "i18n/ja/messages.ja.xlf",
"baseHref": ""
},
If you want to add only locale using an existing translation file, specify existing translation file to "translation"
.
After preparation of new translation file, configure i18n/locale_conf.json
file to support translated dashboard as follows:
{"translations": [ "en", "fr", "ko", "zh" ]}
To add Japanese translation file, add "ja"
into "translations"
array in alphabetical order.
{"translations": [ "en", "fr", "ja", "ko", "zh" ]}
Then you can build your localized dashboard with make build
.
Before submit Pull Request, add i18n/[locale]/OWNERS
file for your translation team like below:
approvers:
- [your github account]
- [and more approvers' github account]
labels:
- language/[your locale]
By changes for html files, workflow for i18n on Kubernetes Dashboard updates your translation file. To ease watching updates for your translation file in the future, set labels
in your OWNERS
file like above. It would allow you watching updates for your translation file with watching PRs having this label in kubernetes/dashboard
repository like this.
At last, please create Pull Request and submit it to kubernetes/dashboard
.
Copyright 2019 The Kubernetes Dashboard Authors