GLOBE CHATを6言語対応へ。今日は「世界向け」の土台をかなり作った
GLOBE CHATの画面を日本語・英語だけでなく6言語へ対応し、Journalにも言語別URLや翻訳記事の紐づけ、hreflang、sitemap対応を追加しました。今日進めた多言語化の作業をまとめます。
今日はGLOBE CHATの多言語対応をかなり進めた日でした。
もともとは日本語と英語の2言語対応から始めていましたが、世界中の人が使うサービスを目指すなら、もう少し広く対応したい。
そこで現在は、次の6言語を基本に進めています。
- 日本語
- English
- Español
- Português
- 한국어
- 简体中文
まずはサービス画面を6言語対応
最初に、GLOBE CHAT本体のUIを6言語へ広げました。
トップページやトーク画面だけでなく、
- 設定
- お問い合わせ
- コミュニティガイドライン
- 利用規約
- 自動翻訳について
- 安全に利用するために
- よくある質問
- 使い方
- GLOBE CHATについて
- プライバシーポリシー
など、公開ページも少しずつ6言語対応にしました。
途中でTypeScriptの型エラーが大量に出たり、Server ComponentとClient Componentの扱いで引っかかったりしましたが、ひとつずつ修正して、最終的にはビルドも通るところまで進められました。
実際の本番画面でも6言語の切り替えを確認して、レイアウトが崩れていないことも確認できました。
Journalも多言語化の土台を作った
次に進めたのが、GLOBE CHAT Journalです。
通常の画面は言語を切り替えるだけでもいいのですが、Journalは検索エンジンから読まれることも考えたい。
そのため、記事は言語ごとに別URLを持てる構成にしました。
たとえば、
/journal/en/journal/es/journal/pt-br/journal/ko/journal/zh-cn/journal
という形です。
記事ページも同じように、それぞれの言語ごとに独立したURLを持てるようにしました。
同じ記事の翻訳版をつなげられるようにした
データベースには新しく、
translation_group_id
という仕組みを追加しました。
これは、日本語版・英語版・スペイン語版などが同じ内容の記事であることを判別するためのIDです。
たとえば1つの記事に、
- 日本語版
- 英語版
- スペイン語版
- ポルトガル語版
- 韓国語版
- 中国語版
があった場合、それらを同じグループとして扱えるようになります。
既存の記事についても、内容やURLを壊さずにこのIDを付けました。
管理画面も6言語対応
Journal管理画面も変更しました。
記事の言語として6言語を選べるようにし、さらにどの記事の翻訳版なのかを指定できるようにしました。
これで、日本語の記事を元に英語版の記事を作ったときも、別々の記事としてバラバラになるのではなく、同じ記事の翻訳版として管理できます。
SEO向けの対応も追加
Journalの言語別ページには、検索エンジン向けの対応も追加しました。
同じ記事の別言語版が存在する場合は、hreflang を使って検索エンジンへ関連を伝えられる構成にしています。
sitemapにも、
- 日本語Journal
- 英語Journal
- スペイン語Journal
- ポルトガル語Journal
- 韓国語Journal
- 中国語Journal
と、各言語の記事URLを載せられるようにしました。
さらにsitemapは1時間ごとに更新できる設定に変更しました。
今日できたこと
今日だけでも、GLOBE CHATはかなり「世界向け」の形に近づいた気がします。
ただ翻訳ボタンを付けるだけではなく、
サービスのUI、記事、URL、データベース、SEOまで多言語を前提にする。
ここまで考えると作業量はかなり増えますが、GLOBE CHATが目指している「言葉を越えて世界の人とつながれる場所」には必要な部分だと思っています。
次にやりたいこと
今のJournalは、翻訳版の記事を作れるところまでは完成しました。
ただし、現時点では記事本文の翻訳自体は手動です。
次は、
日本語の記事を1本書いたら、ボタンひとつで残り5言語の下書きを自動生成する機能
を作りたいと思っています。
自動でそのまま公開するのではなく、一度下書きとして作って、内容を確認してから公開できる形にする予定です。
少しずつですが、GLOBE CHATを本当に世界中の人が使えるサービスへ近づけていきます。
🌍 GLOBE CHAT
https://globe-chat.com