Next.jsのJSSサンプルアプリにおける国際化

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Next.jsサンプルアプリを基に作成されたJSS Next.jsアプリケーションは、国際化を有効にするための設定(i18n)が事前に設定されています。

JSS Next.jsアプリケーションはサブパスルーティングを用いた 国際ルーティング をサポートしています。ドメインルーティングにはカスタム実装が必要です。

Next.js JSSアプリケーションのソースディレクトリには、アプリケーションがサポートするlocalesおよびdefaultLocaleの定義next.config.jsが含まれています:

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ライブラリを使用します。アプリコンポーネント(定義src/pages/_app.tsxファイル)では、JSS Next.jsアプリケーションがnext-localizationモジュールからi18nプロバイダーを取り込み、Next.jsが提供する値のプロパティpageProps.locale、dictionaryのプロパティを使って初期化します。これはSitecore辞書サービスのデータです。これらの物件にはページ・プロップス・ファクトリーがあります:

function App({ Component, pageProps }: AppProps): JSX.Element { const { dictionary, ...rest } = pageProps;

return ( <Component {...rest} /> ); }

動的ルートの場合、JSS Next.jsアプリはSitecoreSitemapFetcherクラスのインスタンスを用いて、localeフィールドの取得を処理し、経路の静的パスを準備する際に関数getStaticPathsを用います。

コンテンツの翻訳

ページの内容を翻訳するには、useI18nフックを使用できます。フックは翻訳機能tと現在の言語localeを提供します。

例えば:

import { useI18n } from 'next-localization';

const MultilingualComponent = (): JSX.Element => { const { t, locale } = useI18n();

return (

Translated text: {t('custom-key')}

The current language is: {locale()}

); };

export default MultilingualComponent;

この記事を改善するための提案がある場合は、 お知らせください!