国際化
インターフェースの言語
locale はメニュー、ツールチップ、ダイアログなどの UI の言語パックを選択します。locales は言語パックを登録しますが、言語は選択しません。この設定は Univer インスタンス内の各ユニットで共有されます。LocaleType.EN_US などの LocaleType 値を使ってください。
- 全製品:UI:
localeはメニュー、ツールチップ、ダイアログ、プラグインのラベルを翻訳します。ユーザーの内容や既存ユニット名は変更しません。 - Sheets:セル書式と数式:数値/日付の表示は、数値書式の locale 上書き値、ワークブックスナップショットの
locale、インスタンスのlocaleの順で選択されます。regionはこれらを置き換えません。DOLLARや財務関数の結果の通貨書式、中日韓入力の正規化は引き続きlocaleを使います。 - Docs:統計:
localeは単語分割と単語数の計算に使われます。
実行時の言語の切り替え
言語を切り替える前に、導入済みのプラグインやプリセットの言語パックをすべて読み込んでください。loadLocales() は翻訳をマージしますが言語は切り替えません。setLocale() は言語を選択しますがダウンロードは行いません。翻訳がない場合はキーが表示されます。以下は共通 UI パックの例です。他の導入済みプラグインの対象言語パックも同じ呼び出しでマージしてください。
import { LocaleType, mergeLocales } from '@univerjs/core'import UIEnUS from '@univerjs/ui/locale/en-US'univerAPI.loadLocales(LocaleType.EN_US, mergeLocales(UIEnUS))univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentLocale()) // enUSプラグインモードでの言語パックの登録
プラグインモードで言語パックを登録するには、それらを提供するプラグインから対応する言語パックをインポートし、それらをマージして Univer インスタンスに渡す単一のオブジェクトにする必要があります。以下はその例です。
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import DesignJaJP from '@univerjs/design/locale/ja-JP'import SheetsUIJaJP from '@univerjs/sheets-ui/locale/ja-JP'import UIJaJP from '@univerjs/ui/locale/ja-JP'const univer = new Univer({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( DesignJaJP, UIJaJP, SheetsUIJaJP, ), },})注意事項
すべてのプラグインに言語パックが含まれているわけではありません。各機能のドキュメント内で、その有無を明記します。
プリセットモードでの言語パックの登録
プリセットパッケージには、対応するプラグインの言語パックがすでに含まれているため、プリセットからインポートするだけで済みます。
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreJaJP from '@univerjs/preset-sheets-core/locales/ja-JP'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'const { univerAPI } = createUniver({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: mergeLocales( UniverPresetSheetsCoreJaJP, ), }, presets: [ UniverSheetsCorePreset(), ],})言語パックのマージ
mergeLocales メソッドは、複数のプラグインやプリセットの言語パックを1つの完全な言語パックオブジェクトに統合するために使用します。使い方は以下の通りです。
import { mergeLocales } from '@univerjs/core'// 複数の言語パックオブジェクトを引数で渡してマージできますconst locales = mergeLocales( plugin1Locales, plugin2Locales, presetLocales,)// 配列としてまとめて渡すことも可能ですconst locales = mergeLocales([ plugin1Locales, plugin2Locales, presetLocales,])import { mergeLocales } from '@univerjs/presets'// 複数の言語パックオブジェクトを引数で渡してマージできますconst locales = mergeLocales( plugin1Locales, plugin2Locales, presetLocales,)// 配列としてまとめて渡すことも可能ですconst locales = mergeLocales([ plugin1Locales, plugin2Locales, presetLocales,])カスタム言語パック
Univer はカスタム言語パックにも対応しています。必要に応じて言語パックオブジェクトを組み立て、Univer インスタンスに渡すことができます。プリセットの言語パックは通常、<rootDir>/packages/<PLUGIN_NAME>/locale ディレクトリに保存されています。
import { LocaleType, Univer } from '@univerjs/core'const univer = new Univer({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: { ui: { shortcut: { undo: '元に戻す', redo: 'やり直す', }, }, }, },})翻訳への貢献
Univer には、現在以下の組み込み言語パックが用意されています:
zh-CN: 中国語(簡体字)en-US: 英語zh-TW: 中国語(繁体字)zh-HK: 中国語(繁体字・香港)ru-RU: ロシア語vi-VN: ベトナム語fa-IR: ペルシャ語fr-FR: フランス語ja-JP: 日本語ko-KR: 韓国語es-ES: スペイン語ca-ES: カタルーニャ語sk-SK: スロバキア語ar-SA: アラビア語de-DE: ドイツ語id-ID: インドネシア語it-IT: イタリア語pl-PL: ポーランド語pt-BR: ポルトガル語(ブラジル)
Univer は多様性にあふれるオープンソースプロジェクトであり、世界中の開発者によるロケール追加や改善を歓迎しています。
地域設定
region は地域に依存する機能で使う地域の慣習を指定します。この設定は Univer インスタンス内の各ユニットで共有されます。
どちらにも LocaleType を使ってください。例えば LocaleType.EN_US の値は enUS で、en-US は言語パックのファイル名 / BCP 47 タグです。region に US や SG などの国コードを渡さないでください。UI が別の言語を使う場合、地域に対応する言語パックの追加読み込みは不要です。
region を明示しない場合は locale に追従し、後から setLocale() を呼んでも更新されます。初期化時に region を指定するか setRegion() を呼ぶと追従が止まり、その後の言語変更でも地域は維持されます。追従に戻す公開 API はありません。同時に変更したい場合は両方を設定してください。
createUniver() または new Univer() の locale の横に region: LocaleType.DE_DE を追加すると、UI 言語を維持したままドイツの地域慣習を使えます。
import { LocaleType } from '@univerjs/core'univerAPI.setRegion(LocaleType.DE_DE)univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentRegion()) // deDEこの例では UI が英語になり、地域はドイツのままです。getCurrentLocale() と getCurrentRegion() は現在の識別子を返します。両方を切り替えるには、同じ LocaleType 値で両方の setter を呼びます。
- Sheets:通貨操作:
regionは通貨ツールバーアイコン、通貨/会計書式の選択肢とプレビュー、通貨コマンドで適用する書式を決めます。既存セルの書式や金額の換算は行いません。 - Docs:統計:
regionは統計ダイアログとステータスバーの数値表示(桁区切りなど)に使われ、計算規則は変えません。 - スレッドコメントを有効にした場合:
regionは日時の表示形式を決め、24 時間表記とラテン数字を使います。localeはコメント UI の翻訳に使われます。保存済みタイムスタンプは変わりません。regionはタイムゾーン設定ではありません。 - Boards、Slides、Bases、PDFs:
localeは UI の翻訳を制御します。regionは統合したスレッドコメントなどの共通機能で使えますが、ボード/スライドのテキスト、Base のフィールド、PDF の内容を自動で再書式設定しません。
右から左へのレイアウト
注意
現在、RTL は UI レイヤーのみでサポートされています。レンダリングレイヤーでは RTL をサポートしていません。
レイアウト方向は独立しています。初期化時の direction または univerAPI.setDirection('rtl') / setDirection('ltr') で指定します。locale や region の変更だけでは方向は切り替わりません。
univerAPI.setDirection('rtl')このガイドはいかがですか?