{"id":19623817,"url":"https://github.com/appleple/acms-google-translate","last_synced_at":"2026-01-23T05:38:57.999Z","repository":{"id":37515041,"uuid":"176839112","full_name":"appleple/acms-google-translate","owner":"appleple","description":"Google Translation for a-blog cms","archived":false,"fork":false,"pushed_at":"2025-05-21T03:33:24.000Z","size":215584,"stargazers_count":3,"open_issues_count":6,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-21T04:31:02.244Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appleple.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-03-21T00:37:10.000Z","updated_at":"2025-05-21T03:33:26.000Z","dependencies_parsed_at":"2024-11-11T11:37:54.848Z","dependency_job_id":"1922ef33-cde7-4c84-b15d-94cdb51c3feb","html_url":"https://github.com/appleple/acms-google-translate","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/appleple/acms-google-translate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-google-translate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-google-translate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-google-translate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-google-translate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appleple","download_url":"https://codeload.github.com/appleple/acms-google-translate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appleple%2Facms-google-translate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28681046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T04:33:33.518Z","status":"ssl_error","status_checked_at":"2026-01-23T04:33:30.433Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T11:35:36.883Z","updated_at":"2026-01-23T05:38:57.993Z","avatar_url":"https://github.com/appleple.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# acms-google-translate\n\na-blog cms のための「Google Translation API」連携拡張アプリになります。この拡張アプリを使用すると、\nエントリー（記事）の多言語化を簡単に行うことができるようになります。\n\n## 動作条件\n\n* php: 8.1 – 8.4 (8.5+ not tested yet)\n* a-blog cms for Professional or Enterprise のみ（現状スタンダードライセンスでの利用はライセンス違反となります）\n* a-blog cms: \u003e= Ver. 3.2.11 (3.3+ not tested yet)\n\n## ダウンロード\n\n[Google Translate for a-blog cms](https://github.com/appleple/acms-google-translate/raw/master/build/GoogleTranslate.zip)\n\n## 事前準備\n\n### サービスアカウントの設定と JSON 取得（Cloud Translation API）\n\n#### 1. プロジェクト作成\n\n- G[Google Cloud Console](https://console.developers.google.com/) にログイン\n- 新規プロジェクトを作成\n- プロジェクト ID（Project ID）をメモ\n\n#### 2. Cloud Translation API を有効化\n\n- 作成したプロジェクトを選択\n- 「API とサービス」→「ライブラリ」\n- Cloud Translation API を検索して 有効化\n\n```\n※ ここで課金が必要になる場合があります。GCP 側で 請求先アカウント（Billing） が未設定だと API 利用で弾かれることがあります（権限/有効化はできても実行時に失敗するケースがあるため、必要なら Billing も確認）。\n```\n\n#### 3. サービスアカウント作成\n\n- 「IAM と管理」→「サービスアカウント」\n- サービスアカウントを作成\n\n#### 4. 権限（ロール）を付与\n\n- 対象プロジェクトで、作成したサービスアカウントにロールを付与\n- ロール: **Cloud Translation API ユーザー** を付与\n\n#### 5. JSON キー発行（秘密鍵）\n\n- サービスアカウント詳細 →「鍵」タブ\n- 「鍵を追加」→「新しい鍵を作成」→ JSON\n- ダウンロードした JSON を サーバーに設置\n- Web 公開ディレクトリ外に配置（例: /var/app/credentials/translate-sa.json）\n- 権限は最小限（例: chmod 600、所有者を実行ユーザーに）\n\n### a-blog cms の設計\n\nサイトを多言語化するにあたり、各言語をブログを切って設計します。\n\n例:\n```\n日本語サイト\n  ┗ 日本語ブログ\n  ┗ 英語サイト\n    ┗英語ブログ\n```\n\n## インストール\n\n1. [Google Translate for a-blog cms](https://github.com/appleple/acms-google-translate/raw/master/build/GoogleTranslate.zip) から\nzipファイルをダウンロードし、解凍したディレクトリ（GoogleTranslate）を **extension/plugins/** に設置する。\n\n1. 管理者で a-blog cms にログインし、 拡張アプリに移動し、「GoogleTranslate」をインストールします。\n\n1. 多言語管理するブログ全てで、「GoogleTranslate」拡張アプリを有効にします。\n\n## 設定\n\n拡張アプリをインストールすると、拡張メニューに「Google Translate」が増えます。ベースとなる言語ブログのみで設定を行なっていきます。\n\n|設定項目|説明|\n|:---|:---|\n|ベース言語|翻訳元となる言語を設定します|\n|プロジェクトID|事前準備で用意した **プロジェクトID** を設定します|\n|サービスアカウントJSONパス|事前準備で用紙したJSONのパスを絶対パスで設定します|\n|カテゴリー作成|翻訳先の記事を作成するときに、カテゴリーも自動で複製するか設定します|\n|ベース言語（このブログ）と関連づける他言語ブログを設定|ベース言語のブログと翻訳先のブログの関連を設定します|\n|訳対象のフィールドを設定します|翻訳対象のカスタムフィールド名を指定します|\n|eidを指定するカスタムフィールドを設定します|eidを設定するようなフィールドを指定します|\n|bidを指定するカスタムフィールドを設定します|bidを設定するようなフィールドを指定します|\n|cidを指定するカスタムフィールドを設定します|cidを設定するようなフィールドを指定します|\n\n## Google帰属表示\n\n参照: [https://cloud.google.com/translate/attribution](https://cloud.google.com/translate/attribution)\n\n### ロゴ表示\n\nCloud Translation API を使用する際には、Googleへの帰属表示が必須になります。ロゴ画像をつかってリンクを表示するようにしてください。\n\n![Google Translation Logo](https://cloud.google.com/translate/images/text-attribution.png)\n\n\n詳細は [帰属表示の要件](https://cloud.google.com/translate/attribution) を確認してください。\n\n### Translation API マークアップ\n\n変更されていない Cloud Translation API の結果をウェブ上で公開し、検索できるようにする場合、\n翻訳されるテキストを機械翻訳されたコンテンツとして指定する必要があります。\n\nフォーマット\n\n```html\n\u003cテキストの翻訳先言語の言語コード\u003e-x-mtfrom-\u003c原文の言語の言語コード\u003e\n```\n\n#### HTML ドキュメント内の短いスニペットまたはセクションの場合\n\n```html\n\u003cdiv lang=\"en-x-mtfrom-ja\"\u003eHello World.\u003c/div\u003e\nor\n\u003cspan lang=\"en-x-mtfrom-ja\"\u003eHello World.\u003c/span\u003e\n```\n\n#### ドキュメント全体またはウェブページ全体の場合\n\nページ全体の場合、翻訳元のドキュメントをオンラインで入手できるときは、次のように、HTML ドキュメントの ```\u003chead\u003e``` に ```\u003clink\u003e``` 要素を指定し、\n```rel=\"\"``` 属性を \"alternate machine-translated-from\" に、```hreflang=\"\"``` 属性を翻訳元の言語コードに、```href=\"\"``` を翻訳元のページに設定します。\n\n```html\n\u003chtml lang=\"en-x-mtfrom-ja\"\u003e\n\u003chead\u003e\n    \u003clink rel=\"alternate machine-translated-from\" hreflang=\"ja\" href=\"http://ja.example.com/hello.html\"\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n...\n```\n\n### 動的にTranslation API マークアップを実装する\n\n**Translation API マークアップ** を行うのに便利なグローバル変数とモジュールが用意されていますので用いましょう。\n\n|変数|説明|例|\n|:---|:---|:---|\n|%{TRANSLATION_LANG_BASE_CODE}|翻訳元の言語コード|ja|\n|%{TRANSLATION_LANG_CODE}|現在いるページの言語コード|en, en-x-mtfrom-ja|\n|%{TRANSLATED_BY_GOOGLE}|機械翻訳されたページのみ「yes」を出力|yes|\n|%{TRANSLATION_ORIGIN_URL}|翻訳元記事のURL|http://ja.example.com/hello.html|\n\n**%{TRANSLATION_LANG_CODE}** 変数は、人力翻訳、機械翻訳を判断して、**Translation API マークアップ** にあった コードを出力します。\n\nこのグローバル変数を使って、**Translation API マークアップ** は次のようにかけます。\n\n```html\n\u003chtml lang=\"%{TRANSLATION_LANG_CODE}\"\u003e\n\u003chead\u003e\n    \u003c!-- BEGIN_MODULE GoogleTranslate_EntryList --\u003e\n    \u003c!-- BEGIN_IF [%{TRANSLATED_BY_GOOGLE}/eq/yes] --\u003e\n    \u003clink rel=\"alternate machine-translated-from\" href=\"%{TRANSLATION_ORIGIN_URL}\" hreflang=\"%{TRANSLATION_LANG_BASE_CODE}\"\u003e\n    \u003c!-- END_IF --\u003e\n    \u003c!-- BEGIN lang:loop --\u003e\n    \u003c!-- BEGIN_IF [{base_bid}/neq/{relation_bid}/_and_/%{BID}/neq/{relation_bid}] --\u003e\n    \u003clink rel=\"alternate\" href=\"{url}\" hreflang=\"{lang_code}\"\u003e\n    \u003c!-- END_IF --\u003e\n    \u003c!-- END lang:loop --\u003e\n    \u003c!-- END_MODULE GoogleTranslate_EntryList --\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappleple%2Facms-google-translate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappleple%2Facms-google-translate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappleple%2Facms-google-translate/lists"}