メインコンテンツへスキップ
バージョン: 3.5.2

I18nライフサイクル

プラグインはこれらのライフサイクルを使用して、i18n関連のデータを読み込みます。

getTranslationFiles({content})

プラグインは、使用するJSON翻訳ファイルを宣言します。

翻訳ファイル{path: string, content: ChromeI18nJSON}を返します。

  • path: プラグインのローカライズされたフォルダi18n/[locale]/[pluginName]を基準とした相対パス。拡張子.jsonは省略して汎用的にします。
  • content: Chrome i18n JSON形式を使用します。

これらのファイルは、write-translations CLIによってプラグインのi18nサブフォルダに書き込まれ、translateContent()translateThemeConfig()を呼び出す前に、適切なロケールで読み込まれます。

my-plugin.js
export default function (context, options) {
return {
name: 'my-plugin',
async getTranslationFiles({content}) {
return [
{
path: 'sidebar-labels',
content: {
someSidebarLabel: {
message: 'Some Sidebar Label',
description: 'A label used in my plugin in the sidebar',
},
someLabelFromContent: content.myLabel,
},
},
];
},
};
}

translateContent({content,translationFiles})

ローカライズされた翻訳ファイルを使用して、プラグインのコンテンツを翻訳します。

ローカライズされたプラグインコンテンツを返します。

translateContent()によって返されたローカライズされたプラグインコンテンツを使用して、contentLoaded()ライフサイクルが呼び出されます。

my-plugin.js
export default function (context, options) {
return {
name: 'my-plugin',
translateContent({content, translationFiles}) {
const myTranslationFile = translationFiles.find(
(f) => f.path === 'myTranslationFile',
);
return {
...content,
someContentLabel: myTranslationFile.someContentLabel.message,
};
},
};
}

translateThemeConfig({themeConfig,translationFiles})

ローカライズされた翻訳ファイルを使用して、サイトのthemeConfigラベルを翻訳します。

ローカライズされたthemeConfigを返します。

my-plugin.js
export default function (context, options) {
return {
name: 'my-theme',
translateThemeConfig({themeConfig, translationFiles}) {
const myTranslationFile = translationFiles.find(
(f) => f.path === 'myTranslationFile',
);
return {
...themeConfig,
someThemeConfigLabel: myTranslationFile.someThemeConfigLabel.message,
};
},
};
}

async getDefaultCodeTranslationMessages()

<Translate> APIを使用するテーマは、デフォルトのコード翻訳メッセージを提供できます。

キーが翻訳ID、値がメッセージ(説明なし)で、サイトの現在のロケールを使用してローカライズされたRecord<string, string>でメッセージを返す必要があります。

my-plugin.js
export default function (context, options) {
return {
name: 'my-theme',
async getDefaultCodeTranslationMessages() {
return readJsonFile(`${context.i18n.currentLocale}.json`);
},
};
}