Cycle de vie i18n
Les plugins utilisent ces cycles de vie pour charger les données liées à i18n.
getTranslationFiles({content})
Les plugins déclarent les fichiers de traduction JSON qu'ils veulent utiliser.
Returns translation files {path: string, content: ChromeI18nJSON}
:
path
: relative to the plugin localized folderi18n/[locale]/[pluginName]
. Extension.json
should be omitted to remain generic.content
: using the Chrome i18n JSON format.
These files will be written by the write-translations
CLI to the plugin i18n subfolder, and will be read in the appropriate locale before calling translateContent()
and translateThemeConfig()
Exemple :
module.exports = 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})
Traduit le contenu du plugin, en utilisant les fichiers de traduction localisés.
Retourne le contenu du plugin localisé.
The contentLoaded()
lifecycle will be called with the localized plugin content returned by translateContent()
.
Exemple :
module.exports = 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})
Translate the site themeConfig
labels, using the localized translation files.
Returns the localized themeConfig
.
Exemple :
module.exports = 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()
Themes using the <Translate>
API can provide default code translation messages.
It should return messages in Record<string, string>
, where keys are translation IDs and values are messages (without the description) localized using the site's current locale.
Exemple :
module.exports = function (context, options) {
return {
name: 'my-theme',
async getDefaultCodeTranslationMessages() {
return readJsonFile(`${context.i18n.currentLocale}.json`);
},
};
};