Next.js 用の JSS サンプル アプリでの国際化
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Next.js サンプル アプリに基づいて作成された JSS Next.js アプリケーションには、国際化 (i18n) を有効にするために必要な設定が事前設定されています。
JSS Next.js アプリケーションは、サブパス ルーティングを含む国際化ルーティングをサポートしています。 ドメイン ルーティングにはカスタム実装が必要です。
Next.js JSS アプリケーションのソース ディレクトリで、ファイル next.config.js
にはアプリケーションおよび defaultLocale
でサポートされている locales
に対する定義が含まれています。
i18n: {
locales: ['en', 'da-DK'],
defaultLocale: packageConfig.language,
}
-
locales
は、アプリケーションでサポートするすべての言語であり、Sitecore で定義されている言語と一致する (または少なくともそのサブセットである) 必要があります。Next.js 用のこの設定オプションには、いくつかの制限事項があります。 -
defaultLocale
は、ロケールにプレフィックスが付いていないパスにアクセスするときに使用するロケールです。値は、config.language
オプションに対してファイルpackage.json
で設定した値に設定されています。
Next.js は追加の i18n 機能を提供しておらず、どのコンテンツ翻訳ライブラリを使用する必要があるかについても固執しません。コンテンツのローカライゼーションを有効にするために、JSS Next.js アプリは next-localization library を使用します。src/pages/_app.tsx
ファイルで定義される App コンポーネントで、JSS Next.js アプリケーションは next-localization
モジュールから i18n プロバイダーをインポートし、Next.js によって提供される値を含むプロパティ pageProps.locale
および Sitecore ディクショナリ サービスからのデータを含む dictionary
を使用して初期化します。これらのプロパティは Page Props Factory によって入力されます。
function App({ Component, pageProps }: AppProps): JSX.Element {
const { dictionary, ...rest } = pageProps;
return (
<I18nProvider lngDict={dictionary} locale={pageProps.locale}>
<Component {...rest} />
</I18nProvider>
);
}
動的ルートの場合、関数 getStaticPaths
でルートの静的パスを準備するときに、JSS Next.js アプリは SitecoreSitemapFetcher
クラスのインスタンスを使用して、locale
フィールドの取得を処理します。
コンテンツの翻訳
ページのコンテンツを翻訳するには、useI18n
フックを使用できます。フックは翻訳機能 t
と現在の言語の locale
を提供します。
例:
import { useI18n } from 'next-localization';
const MultilingualComponent = (): JSX.Element => {
const { t, locale } = useI18n();
return (
<div>
<p>Translated text: {t('custom-key')}</p>
<p>The current language is: {locale()}</p>
</div>
);
};
export default MultilingualComponent;