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