MDUI文件
複製 llms.txt 連結複製 llms-full.txt 連結以 Markdown 格式檢視此頁與 ChatGPT 討論此頁內容與 ChatGPT 討論專案完整文件
預設顏色
自選顏色
從桌布擷取顏色
請選擇一張桌布
開發指南
概述 安裝 快速入門 TypeScript 支援 IDE 支援 在地化 常見問題
AI 輔助開發
樣式
與框架整合
元件
函式
獨立程式庫

在地化

mdui 內部預設使用英文,如果要使用其他語言,則需要進行多語言設定。

使用方法

mdui 提供三個函式來實作多語言功能:

  • loadLocale:載入語言包。參數為一個函式,接收一個語言代碼作為參數,回傳 Promise,語言包載入完成時會 resolve 為對應的語言包。請確保在專案進入點呼叫該函式。
  • 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 屬性描述了目前發生何種狀態的變更,可能的值包括:loadingreadyerror

detail.status 描述
loading

開始載入新的語言包。

detail 物件包含:

  • loadingLocale:新載入語言的語言代碼。
ready

新的語言包載入成功。

detail 物件包含:

  • readyLocale:新載入語言的語言代碼。
error

新的語言包載入失敗。

detail 物件包含:

  • errorLocale:載入失敗的語言的語言代碼。
  • errorMessage:載入失敗的錯誤資訊。

範例如下:

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}`,
    );
  }
});

語言包載入方式

延遲載入

使用動態引入可以在切換到對應語言時,才下載對應的語言包。這是最為推薦的方法。

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 上進行編輯。

本頁目錄