コンテンツにスキップ

国際化(i18n)

アプリに多言語サポートを追加しましょう。編集コンテンツのローカライズには Proyecta Content API を使い、UI の i18n フレームワーク連携は AI に依頼できます。

Proyecta では、構築するアプリを国際化するための、互いを補完する 2 つのアプローチをサポートしています。

  1. Proyecta Content API によるコンテンツローカライズ — ブログ記事、FAQ、マーケティングコピーなど、複数言語への翻訳が必要な編集コンテンツ向け
  2. 翻訳フレームワークによるコードレベルの i18n — UI 文字列、日付、通貨、実行時のロケール切り替え向け

どちらも現在利用可能です。どちらが必要かは、何を翻訳するかによって異なります。

builder としての Proyecta 自体は 24 のロケールに対応しており、プロダクトとして i18n に精通しています。その中で構築するアプリにも、同じパターンが適用できます。

オプション 1: コンテンツローカライズ(Proyecta Content API)

Section titled “オプション 1: コンテンツローカライズ(Proyecta Content API)”

ブログ、ナレッジベース、マーケティングページ、商品カタログなど、コンテンツが中心のサイトを構築する場合は、Content API のビルトインロケールサポートを使いましょう。

// Create the locales you support
await proyecta.content.locales.create({
/* code: 'en', name: 'English' */
});
await proyecta.content.locales.create({
/* code: 'es', name: 'Español' */
});
await proyecta.content.locales.create({
/* code: 'fr', name: 'Français' */
});
// Then create entries that exist in multiple locales — fetch the right
// translation per request based on the user's locale.

このアプローチが適しているのは以下のケースです。

  • コードを書かない編集者がコンテンツを翻訳する必要がある場合
  • 翻訳をバージョン管理したい場合
  • ロケールごとの公開設定が必要な場合(スケジュール公開は近日対応予定 — 現在のエントリは API 経由での手動公開が必要です)

Content API の詳細はコンテンツ管理をご覧ください。

オプション 2: コードレベルの i18n フレームワーク

Section titled “オプション 2: コードレベルの i18n フレームワーク”

ラベル、ボタン、エラーメッセージ、日付、通貨などの UI 文字列については、AI にプロジェクトへの i18n フレームワーク組み込みを依頼できます。

Add internationalization to my app.
Support English, Spanish, French, and Arabic.
Add message catalogs in src/locales/.
Add a language switcher in the header.
Use locale-prefixed URLs like /en/about and /es/about.
Make sure RTL layout works correctly for Arabic.

AI は以下を実行します。

  1. フレームワークの選定i18nextreact-i18next(Proyecta の標準)を使用
  2. カタログファイルの作成src/locales/ に言語ごとの JSON を生成
  3. テキストのラップ — react-i18next の useTranslation フックの t() 呼び出しで文字列を包む
  4. 言語切り替えコンポーネントの追加
  5. ロケールプレフィックス付き URL ルーティングの設定
  6. RTL レイアウト(アラビア語、ヘブライ語など向けの dir="rtl")の対応
  7. ロケールに応じた数値・日付・通貨のフォーマット

基本言語が揃ったら、AI を使って他のカタログファイルを効率よく作成できます。

  • "Translate every string in src/locales/en.json into Spanish, French, German, and Japanese. Use natural, idiomatic phrasing — don't translate brand names."
  • "My app is fully built in English. Add Spanish translations for everything and an es/ route prefix."

法律文書、医療、金融など重要度の高いコンテンツは、リリース前に翻訳者による人力レビューを行いましょう。

実際のアプリの多くは両方を使います。ボタン・エラー・ナビゲーションなどの UI まわりにはコードレベルの i18n を、記事・商品説明などの編集コンテンツには Content API を使う形です。2 つはクリーンに共存できます — i18n フレームワークはビルド時にカタログファイルを処理し、Content API は実行時にローカライズされたエントリを返します。

  1. まずベース言語を決め、コピーを確定させる。 変わり続けるテキストを翻訳するのは非常に手間がかかります。
  2. 翻訳はまとめて行う。 都度翻訳せず、機能が安定してからまとめて翻訳しましょう。
  3. アラビア語やヘブライ語をサポートするなら RTL を早めにテストする。 RTL のバグは実際に確認するまで気づきにくいものです。
  4. <html>langdir を含める。 ブラウザやスクリーンリーダーはこれらに依存しています。
  5. フォーマットには Intl を使う。 日付や通貨のフォーマットを自前で実装せず、Intl.DateTimeFormatIntl.NumberFormat を使いましょう。
  • builder 内のロケール管理 UI — Proyecta を離れずにロケールの選択、翻訳カバレッジの確認、カタログの編集が可能に
  • 新規文字列の保存時自動翻訳
  • フレームワーク設定済みの i18n 対応プロジェクトテンプレート