메인 컨텐츠로 이동
버전: Canary 🚧

I18n 수명 주기

플러그인은 i18n 관련 데이터를 로드하기 위해 이런 수명 주기를 사용합니다.

getTranslationFiles({content})

플러그인에서 사용할 JSON 번역 파일을 설정합니다.

{path: string, content: ChromeI18nJSON}: 형태로 번역 파일을 반환합니다.

  • path: i18n/[locale]/[pluginName] 형식으로 로케일 디렉터리의 상대 경로를 설정합니다. 확장자 .json은 붙이지 않습니다.
  • content: 크롬 i18n JSON 형식을 사용합니다.

파일은 write-translations 명령행 인터페이스에 의해 플러그인 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})

번역 파일을 사용해 플러그인 콘텐츠를 번역합니다.

로케일에 해당하는 플러그인 콘텐츠를 반환합니다.

contentLoaded()translateContent()에서 반환하는 로케일에 해당하는 플러그인 콘텐츠를 인자로 호출됩니다.

예:

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를 사용하는 테마는 기본 코드 번역 메시지를 제공할 수 있습니다.

Record<string, string>에 메시지를 반환해주어야 합니다. key는 번역 ID값이고 values는 현재 로케일에 해당하는 메시지(설명은 없는)입니다.

예:

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