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.
Retournee les fichiers de traduction {path: string, content: ChromeI18nJSON}
:
path
: relatif au dossier du plugin localiséi18n/[locale]/[pluginName]
. L'extension.json
doit être omise pour rester générique.content
: utilisation du format JSON pour Chrome i18n.
Ces fichiers seront écrits par le CLI write-translations
dans le sous-dossier du plugin i18n, et sera lu dans la locale appropriée avant d'appeler translateContent()
et 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é.
Le cycle de vie de contentLoaded()
sera appelé avec le contenu du plugin localisé retourné par 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})
Traduit les libellés de themeConfig
du site en utilisant les fichiers de traduction localisés.
Renvoie le themeConfig
localisé.
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()
Les thèmes utilisant l'API <Translate>
peuvent fournir des messages de traduction de code par défaut.
Il devrait retourner des messages dans Record<string, string>
, où les clés sont les ID de traduction et les valeurs sont des messages (sans la description) localisés en utilisant la locale courante du site.
Exemple :
module.exports = function (context, options) {
return {
name: 'my-theme',
async getDefaultCodeTranslationMessages() {
return readJsonFile(`${context.i18n.currentLocale}.json`);
},
};
};