ローカライズ
mdui はデフォルトで英語を使用します。他の言語を使用する場合は、ローカライズ設定を行う必要があります。
使用方法
mdui はローカライズ機能を実現するために 3 つの関数を提供しています:
loadLocale:言語パックをロードします。パラメーターは関数で、言語コードを受け取り、Promise を返します。言語パックのロードが完了すると、Promise は対応する言語パックで解決されます。プロジェクトのエントリーファイルでこの関数を呼び出してください。setLocale:指定された言語に切り替えます。パラメーターは新しい言語コードで、Promise を返します。新しい言語パックのロードが完了すると resolve されます。getLocale:現在の言語コードを取得します。
使用例は次のとおりです:
import { loadLocale } from 'mdui/functions/loadLocale.js';
import { setLocale } from 'mdui/functions/setLocale.js';
import { getLocale } from 'mdui/functions/getLocale.js';
// プロジェクトのエントリーポイントで loadLocale を呼び出し言語パックをロード
loadLocale((locale) => import(`../node_modules/mdui/locales/${locale}.js`));
// 言語を切り替える必要があるときにこの関数を呼び出します。Promise が resolve された後、言語の切り替えが成功します
setLocale('zh-cn').then(() => {
// getLocale を呼び出すと現在の言語コードを取得できます
console.log(getLocale()); // zh-cn
});
状態イベント
言語切り替えの開始時、終了時、失敗時に、window オブジェクトで mdui-localize-status イベントが発火します。このイベントをリッスンして、例えば言語切り替え成功後に言語コードを Cookie に書き込むなどのカスタム操作を実行できます。
イベントの detail.status プロパティは、どのような状態の変更が発生したかを表します。取り得る値は loading、ready、error です:
detail.status |
説明 |
|---|---|
loading |
新しい言語パックのロードを開始します。
|
ready |
新しい言語パックのロードが成功しました。
|
error |
新しい言語パックのロードが失敗しました。
|
使用例は次のとおりです:
window.addEventListener('mdui-localize-status', (event) => {
if (event.detail.status === 'loading') {
console.log(
`新しい言語パックのロードを開始:${event.detail.loadingLocale}`,
);
} else if (event.detail.status === 'ready') {
console.log(`新しい言語パック ${event.detail.readyLocale} のロードに成功`);
} else if (event.detail.status === 'error') {
console.error(
`新しい言語パック ${event.detail.errorLocale} のロードに失敗:${event.detail.errorMessage}`,
);
}
});
言語パックのロード方法
遅延ロード(Lazy Load)
動的インポート を使用すると、対応する言語に切り替えたときにのみ、対応する言語パックがダウンロードされます。これが最も推奨される方法です。
import { loadLocale } from 'mdui/functions/loadLocale.js';
loadLocale((locale) => import(`../node_modules/mdui/locales/${locale}.js`));
プリロード
ページ読み込み時に、必要なすべての言語パックを事前にダウンロードします。これにより、言語切り替え時に再度ダウンロードする必要がなくなり、言語切り替えがより速くなります。
import { loadLocale } from 'mdui/functions/loadLocale.js';
const localizedTemplates = new Map([
['zh-cn', import(`../node_modules/mdui/locales/zh-cn.js`)],
['zh-tw', import(`../node_modules/mdui/locales/zh-tw.js`)],
]);
loadLocale(async (locale) => localizedTemplates.get(locale));
静的インポート
この方法を使用すると、必要なすべての言語パックをプロジェクトのコードと同じファイルにバンドルでき、言語パックを個別にダウンロードする必要がなくなります。
import { loadLocale } from 'mdui/functions/loadLocale.js';
import * as locale_zh_cn from 'mdui/locales/zh-cn.js';
import * as locale_zh_tw from 'mdui/locales/zh-tw.js';
const localizedTemplates = new Map([
['zh-cn', locale_zh_cn],
['zh-tw', locale_zh_tw],
]);
loadLocale(async (locale) => localizedTemplates.get(locale));
CDN からの言語パックのロード
CDN で mdui を使用している場合は、CDN から直接言語パックをロードできます。使用例は次のとおりです:
<script src="https://unpkg.com/mdui@2/mdui.global.js"></script>
<script>
mdui.loadLocale(
(locale) => import(`https://unpkg.com/mdui@2/locales/${locale}.js`),
);
mdui.setLocale('zh-cn');
</script>
サポートされている言語
現在、mdui は以下の言語をサポートしています:
| 言語 | 言語コード |
|---|---|
| アラビア語 | ar-eg |
| アゼルバイジャン語 | az-az |
| ブルガリア語 | bg-bg |
| ベンガル語(バングラデシュ) | bn-bd |
| ベラルーシ語 | be-by |
| カタルーニャ語 | ca-es |
| チェコ語 | cs-cz |
| デンマーク語 | da-dk |
| ドイツ語 | de-de |
| ギリシャ語 | el-gr |
| 英語 | en-gb |
| 英語(アメリカ) | en-us |
| スペイン語 | es-es |
| エストニア語 | et-ee |
| ペルシア語 | fa-ir |
| フィンランド語 | fi-fi |
| フランス語(ベルギー) | fr-be |
| フランス語(カナダ) | fr-ca |
| フランス語(フランス) | fr-fr |
| アイルランド語 | ga-ie |
| ガリシア語(スペイン) | gl-es |
| ヘブライ語 | he-il |
| ヒンディー語 | hi-in |
| クロアチア語 | hr-hr |
| ハンガリー語 | hu-hu |
| アルメニア語 | hy-am |
| インドネシア語 | id-id |
| イタリア語 | it-it |
| アイスランド語 | is-is |
| 日本語 | ja-jp |
| グルジア語 | ka-ge |
| クメール語 | km-kh |
| クルド語(北) | kmr-iq |
| カンナダ語 | kn-in |
| カザフ語 | kk-kz |
| 韓国語 | ko-kr |
| リトアニア語 | lt-lt |
| ラトビア語 | lv-lv |
| マケドニア語 | mk-mk |
| マラヤーラム語 | ml-in |
| モンゴル語 | mn-mn |
| マレー語(マレーシア) | ms-my |
| ノルウェー語 | nb-no |
| ネパール語 | ne-np |
| オランダ語(ベルギー) | nl-be |
| オランダ語 | nl-nl |
| ポーランド語 | pl-pl |
| ポルトガル語(ブラジル) | pt-br |
| ポルトガル語 | pt-pt |
| ルーマニア語 | ro-ro |
| ロシア語 | ru-ru |
| スロバキア語 | sk-sk |
| セルビア語 | sr-rs |
| スロベニア語 | sl-si |
| スウェーデン語 | sv-se |
| タミル語 | ta-in |
| タイ語 | th-th |
| トルコ語 | tr-tr |
| ウルドゥー語(パキスタン) | ur-pk |
| ウクライナ語 | uk-ua |
| ベトナム語 | vi-vn |
| 簡体字中国語 | zh-cn |
| 繁体字中国語(香港) | zh-hk |
| 繁体字中国語(台湾) | zh-tw |
新しい翻訳の提供
新しい翻訳を提供したり、既存の翻訳を改善したりするには、Github で Pull Request を作成してください。言語パックは packages/mdui/src/xliff にあります。Github 上で直接編集できます。