0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelで多言語サイトを効率的に作る:Bladeから自動でロケールJSONを生成&翻訳する方法

Posted at
Laravelで多言語対応のWebサイトやアプリを作るとき、resources/lang にロケールJSONファイルを作成する作業が意外と面倒だと感じたことはありませんか?
  • Bladeファイルからテキストを抜き出すのが大変
  • ページが複数あると翻訳対象が膨大
  • 翻訳を複数言語で揃えるのも手間

そんな課題を一気に解決できるのが、CLIでテキストを抽出して一括翻訳するパッケージです。

例: Bladeファイル内の翻訳対象テキスト

welcome.blade.php
<p>{{ __("Laravel has an incredibly rich ecosystem. We suggest starting with the following.") }}</p>

このような __() 関数の中のテキストを自動で抽出し、複数言語のJSONファイルに変換します。

Locale Generatorとは?

Locale Generator は、

  • Bladeファイルから翻訳テキストを自動抽出
  • 複数ロケールのJSONファイルを自動生成
  • Google Translate または DeepL API を使って即翻訳
    ができる便利なCLIツールです。

インストール手順

1. インストール

composer install eii/locale-generator

2. 設定ファイルを公開

php artisan vendor:publish --tag=config

3. resources/lang フォルダを作成

(既に存在する場合はスキップ)

mkdir resources/lang

Google Translate APIの設定方法

Google Translateを使うには、Google Cloud Consoleでサービスアカウントを作成し、APIキーを取得します。

手順

  1. Google Cloud Consoleへアクセス
    https://console.cloud.google.com/
    Googleアカウントでログインします。

  2. 新しいプロジェクトを作成

    • 上部のプロジェクトセレクタから「新しいプロジェクト」を選択
    • 名前を入力し、組織を選択(必要な場合)
  3. 翻訳APIを有効化

    • ナビゲーションメニュー → 「APIとサービス」 → 「ライブラリ」
    • Cloud Translation API を検索して有効化します
  4. サービスアカウントを作成

    • 「IAMと管理」 → 「サービスアカウント」
    • 「サービスアカウントを作成」をクリック
    • 名前・説明を入力し「作成」
    • ロールは プロジェクト > 編集者 または Cloud Translation API ユーザー を選択
    • 作成後「完了」
  5. 認証キー(JSON)を作成

    • 作成したサービスアカウントをクリック
    • キー」タブ → 「鍵を追加」 → 「新しい鍵を作成」
    • JSON形式を選択しダウンロード
    • このファイルを storage/app/google-credentials.json に保存
  6. .envに設定を追加

    GOOGLE_TRANSLATE_KEY_FILE=storage/app/google-credentials.json
    GOOGLE_PROJECT_ID=your-project-id
    

your-project-id はGoogle CloudのプロジェクトIDと一致させてください。

DeepL APIの設定方法

DeepLを使う場合は、公式サイトからAPIキーを取得します。

手順

  1. DeepL公式サイト にアクセス
    無料または有料のアカウントを作成します。
  2. ログイン後、アカウントページへ移動
    「アカウント」 → 「API Keys & Limits」へ
  3. 「APIキーを生成」ボタンをクリックし、発行されたキーをコピー
  4. .env に設定を追加
DEEPL_API_KEY=your-deepl-api-key

使い方

翻訳したいBladeファイルを含むページ名を指定してコマンドを実行します。
例:welcome ビュー内のテキストを日本語・スペイン語・ドイツ語に翻訳

php artisan lang:extract welcome --locales=ja,es,de --translate=deepl
  • --locales: 生成する言語コード(カンマ区切り)
  • --translate: 使用する翻訳サービス(deepl または google

実行後、resources/lang に以下のファイルが生成されます:

ja.json
es.json
de.json

各ファイルには翻訳済みのテキストが含まれます。

対応言語コード例

  • ja: 日本語
  • en: 英語
  • es: スペイン語
  • de: ドイツ語
  • fr: フランス語

まとめ

このCLIツールを使えば、

  • Bladeからのテキスト抽出
  • 複数ロケールのJSON生成
  • 翻訳サービスによる自動翻訳
    がすべて1コマンドで完了します。
    大規模な多言語サイト開発の初期翻訳作業が圧倒的に楽になります。

ヒント: 自動翻訳後は必ずネイティブチェックを行うことをおすすめします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?