テーマ、知りたいこと
Webサイトの多言語対応の最適解は何だと思いますか?
個人的に思いつく限りを以下にまとめてみました。
個人的には方法1が良さそうという気がしています。
想定しているアプリケーションなどによって色々と最適解は変わると思いますが、みなさんの意見を聞いてみたいです。
みなさんの開発運用経験をもとにした「この方法は長年運用したが困ったこと無い」や「この方法は採用したが良くなかった」などといった意見から、新しいメリット、デメリットの発見ができる事を期待しています。
方法1. URLのパスに言語タグを挿入する
実例
メリット
- 主流WebフレームワークであるNext.jsが推奨している方式。流行りや長いものには巻かれろの考え方だとメリットになる。
- Next.jsのキャッシュ等の最適化の仕組みとも親和性が高い
- https://nextjs.org/docs/app/guides/internationalization
- 検索エンジンがURLから言語を判定してSEO対策のメリットが有りそう
- 本当に意味があるかはわかりません
- URLを第三者と共有したときに言語が統一できる。
- MSDNの日本語は機械翻訳されているので大本の英語版のURLを意図的に共有する事があります。
デメリット
- URLのパスの見た目が悪くなる
- 個人の主観によってデメリットとは思わない場合もあるとは思います
- 個人的にはドキュメント系であればデメリットにならず、SNSなどではデメリットだと思います
- SNS で、もし以下のようなURLが存在した場合は違和感があります。URLから日本に何らかの関係がある人物としてイーロンマスク氏が存在するかのような意味合いを感じてしまいます。
- https://x.com/ja/ElonMusk
方法2. サブドメインに言語タグを挿入する
実例
メリット
- URLのパスに言語タグが挿入されない
- 意図的に特定言語のページを共有する事ができる
デメリット
- 言語ごとにDNS設定など、インフラ関係の設定が必要になる
- インフラ起因の障害対策も考慮する必要が出てくる
方法3. サーバー側のセッションに言語の状態を保持する
実例省略
メリット
- URLに言語タグが挿入されない
- 同一ユーザーであればログイン中の全てのデバイスで言語設定を共有出来る
デメリット
- 意図的に特定言語のページを共有する事ができない
- 言語によってコンテンツが動的に変化するので、キャッシュなどの最適化技術との親和性が低い
- Redis などの外部ストレージにアクセスする必要があるのでレスポンス速度が低下する
- 最近のWebサイトはCloudflare WorkerやAWS Lambdaのようなサーバーレスでホストされる事を考えると外部ストアが必須になる