| name | glotpress-translate |
| description | GlotPress(translate.wordpress.org)からWordPressプラグイン/テーマのPOファイルをダウンロードし、未翻訳文字列をAIで翻訳してインポート用POを出力する。 |
| allowed-tools | WebFetch, Bash(curl *), Bash(mkdir *), Read, Write, AskUserQuestion |
GlotPress Translation Skill
WordPress.org の GlotPress から PO ファイルをダウンロードし、未翻訳部分を AI で翻訳するスキル。
使い方
/glotpress-translate <plugin-slug> [language-code] [output-dir]
例:
/glotpress-translate - カレントディレクトリ名をスラッグとして日本語に翻訳
/glotpress-translate ja ~/Downloads - 出力先を指定
/glotpress-translate de - ドイツ語に翻訳
/glotpress-translate ja ./languages other-plugin - 別のプラグインを指定
引数
$0 - 言語コード(省略時: ja)
$1 - 出力ディレクトリ(省略時: ./languages)
$2 - プラグインスラッグ(省略時: カレントディレクトリ名)
前提条件
- プラグインのメインファイルに
Text Domain と Domain Path ヘッダーが記述されていること。
plugins_loaded フックで load_plugin_textdomain() が呼び出されていること。
- これらが未設定の場合、先に
wp-i18n-setup スキルを実行して翻訳インフラを構成してください。
実行手順
Step 1: 引数の確認
以下の変数を決定する:
| 変数 | 決定方法 |
|---|
{SLUG} | $2 があればそれを使用、なければ basename $(pwd) |
{LANG} | $0 があればそれを使用、なければ ja |
{OUTPUT_DIR} | $1 があればそれを使用、なければ ./languages |
前提
- カレントディレクトリがプラグインのローカルリポジトリであること。
- languagesを使う場合、そのディレクトリが
.gitignore に含まれていること。
Step 2: PO ファイルのダウンロード
エクスポート URL:
| 種類 | URL |
|---|
| Dev (コード) | https://translate.wordpress.org/projects/wp-plugins/{SLUG}/dev/{LANG}/default/export-translations/?format=po |
| Dev (README) | https://translate.wordpress.org/projects/wp-plugins/{SLUG}/dev-readme/{LANG}/default/export-translations/?format=po |
- 出力ディレクトリを作成
- curl で PO ファイルをダウンロード
- ユーザーにコード翻訳・README翻訳のどちらを行うか確認
※ dev への翻訳は stable にも反映される
Step 3: 未翻訳文字列の抽出
PO ファイルを解析し、msgstr "" が空の項目(未翻訳)を抽出。
#: path/to/file.php:123
msgid "Original English text"
msgstr ""
複数形(plural)の場合:
msgid "One item"
msgid_plural "%d items"
msgstr[0] ""
msgstr[1] ""
Step 4: AI 翻訳
未翻訳の各 msgid に対して翻訳を提案。
翻訳ルール:
%s, %d, %1$s などのプレースホルダーはそのまま保持
- HTML タグ (
<a>, <strong> など) は保持
- WordPress 公式用語に従う(Settings → 設定、Posts → 投稿)
- 複数形は日本語では通常同じ訳(
msgstr[0] と msgstr[1] が同一)
- 文脈が不明な場合は AskUserQuestion で確認
Step 5: 翻訳のレビュー
翻訳結果を一覧表示:
[1] msgid: "Original text"
訳: "翻訳テキスト"
✓ OK
[2] msgid: "Ambiguous text"
訳: "あいまいなテキスト"
→ 確認が必要
修正が必要な場合は番号で指定してもらう。
Step 6: PO ファイルの更新
翻訳が確定したら、元の PO ファイルを更新して保存:
{OUTPUT_DIR}/{SLUG}-{LANG}.po (コード翻訳)
{OUTPUT_DIR}/{SLUG}-{LANG}-readme.po (README 翻訳)
例: ./languages/anyway-feedback-ja.po
Step 7: インポート URL の提示
インポート URL(PTE 権限が必要):
コード:
https://translate.wordpress.org/projects/wp-plugins/{SLUG}/dev/{LANG}/default/import-translations/
README:
https://translate.wordpress.org/projects/wp-plugins/{SLUG}/dev-readme/{LANG}/default/import-translations/
※ dev への翻訳は stable にも自動反映される
ユーザーに以下を案内:
- 上記 URL にアクセス(WordPress.org にログイン済みであること)
- 翻訳済み PO ファイルをアップロード
- インポート設定を確認して実行
WordPress 翻訳用語集(日本語)
よく使う用語の公式訳:
| English | 日本語 |
|---|
| Settings | 設定 |
| Posts | 投稿 |
| Pages | 固定ページ |
| Comments | コメント |
| Dashboard | ダッシュボード |
| Plugins | プラグイン |
| Themes | テーマ |
| Users | ユーザー |
| Media | メディア |
| Permalink | パーマリンク |
| Excerpt | 抜粋 |
| Featured Image | アイキャッチ画像 |
| Widget | ウィジェット |
| Shortcode | ショートコード |
| Taxonomy | タクソノミー |
| Term | タームまたは項目 |
| Slug | スラッグ |
| Meta | メタ |
| Hook | フック |
| Filter | フィルター |
| Action | アクション |
| Capability | 権限 |
| Role | 権限グループ |
| Nonce | ノンス |
| Transient | トランジェント |
不明な用語は https://translate.wordpress.org/locale/ja/default/glossary/ を参照。