/ja/ または ロケールなし の場合は 日本語
/en/ の場合は 英語
とするには以下のように記述します
next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
i18n: {
locales: ["en", "ja"],
defaultLocale: "ja",
},
};
module.exports = nextConfig;
これで
http://localhost:3000/login の場合は日本語
http://localhost:3000/ja/login の場合は日本語
http://localhost:3000/en/login の場合は英語
となります。
import { usePathname } from 'next/navigation';
const getLocale = (path: string): string => {
if (path.match(/^\/en/)) return 'en';
return 'ja';
};
const pathname = usePathname();
const locale = getLocale(pathname);
i18nにおけるロケールの表は、主にISO 639言語コードとISO 3166国コードに基づいて決定されます。
ISO 639言語コードは、言語を識別するための2〜3文字のコードです。たとえば、英語のISO 639コードは "en" であり、日本語のISO 639コードは "ja" です。
一方、ISO 3166国コードは、国または地域を識別するための2文字または3文字のコードです。たとえば、アメリカ合衆国のISO 3166コードは "US" であり、日本のISO 3166コードは "JP" です。
これらのコードを組み合わせることで、i18nのロケールコードが形成されます。たとえば、英語を話すアメリカ人のためのロケールは、"en_US"と表記されます。同様に、日本語を話す日本人のためのロケールは、"ja_JP"と表記されます。
ただし、ISO規格以外のロケールコードも存在する場合があります。それらは、一般的な業界規格、アプリケーション固有の規則、あるいは地域の文化的および言語的な違いに基づくものがあります。