リソースコード変数(%s、HTML)を壊さずに.poファイルを翻訳する方法

コード変数(%s、HTML)を壊さずに.poファイルを翻訳する方法

SimplePoTranslateチーム2025年11月25日

簡単なタスクから始まります。WordPressテーマをスペイン語に翻訳します。.moファイルをアップロードし、サイトを更新すると...

致命的なエラー: Uncaught ArgumentCountError: Too few arguments to function sprintf()...

あるいは、サイトは読み込まれますが、閉じタグ</div></ div>に翻訳されたためにレイアウトが崩れているかもしれません。

これは、ローカライズに取り組むすべての開発者にとって一番の恐怖です。技術的な.poファイルで一般的な翻訳ツール(Google翻訳や基本的なAIラッパーなど)を使用する場合、それらはコードをテキストと区別しません。それらは変数を「翻訳」しようとし、その過程でウェブサイトを壊します。

このガイドでは、これがなぜ起こるのか、そして自動翻訳で100%のコード安全性を確保する方法を正確に説明します。

災害の解剖学:なぜ%sがサイトを壊すのか

WordPressはGettextシステムとsprintf()のようなPHP関数を使用して動的テキストを処理します。

たとえば、次のような文字列があるとします。 msgid "Search results for %s"

%sは、PHPがユーザーの検索クエリを挿入するプレースホルダー変数です。

一般的なAIが間違える方法

この文字列を標準の大規模言語モデル(LLM)または翻訳APIに入力すると、%sは単なる奇妙な単語として認識されます。その周りの文法や句読点を修正しようとするかもしれません。

最も一般的な構文エラーは次のとおりです。

  1. 追加されたスペース:

    • 原文: Hello %s
    • 悪い翻訳: Hola % s
    • 結果: PHPは%sを探しますが、% sを見つけます。変数の読み込みに失敗し、多くの場合、致命的なエラーが発生します。
  2. HTMLの幻覚:

    • 原文: Click <strong>here</strong> to login.
    • 悪い翻訳: Haga clic <strong>aquí</ strong> para iniciar sesión.
    • 結果: AIが閉じタグ</ strong>の中にスペースを追加しました。CSSが壊れ、ページの残りの部分が太字になります。
  3. 引数の交換:

    • 原文: Page %1$s of %2$s
    • 悪い翻訳: Página %2$s de %1$s
    • 結果: AIは、数字を入れ替えた方が文章の聞こえが良いと判断しました。今、ページネーションには「Page 10 of 1」と表示されています。

「手動修正」の罠

ほとんどの開発者は、ファイルを手動で確認してこれを解決しようとします。50個の文字列を持つ小さなプラグインがあれば、それで十分です。しかし、5,000個の文字列を持つWooCommerceストアを翻訳する場合はどうでしょうか?

たった1つのセミコロンの欠落や%s変数内の余分なスペースを探して5,000行のコードをスキャンすることは不可能です。何時間もかかり、人間の目は必然的に何かを見逃してしまいます。

正規表現(Regex)スクリプトは存在を確認するのに役立ちますが、コンテキスト固有の並べ替えの問題や微妙なHTML属性の破損を検出することはめったにありません。

解決策:「構文ロック(Syntax Locking)」

.poファイルを安全に翻訳する唯一の方法は、そもそもAIがコードに触れないようにすることです。これには、構文ロックと呼ばれるプロセスが必要です。

これがSimplePoTranslateの背後にあるコアテクノロジーです。

一般的なツールとは異なり、テキストをAIにダンプするだけではありません。最初にGettext構造を解析します。「セーフモード」の仕組みは次のとおりです。

  1. 分析: .poファイルをスキャンし、すべての変数(%s%d)、すべての位置引数(%1$s)、およびすべてのHTMLタグ(<br/><span>)を特定します。
  2. 抽出とロック: これらの要素を文字列から一時的に削除し、不変のトークンに置き換えます。
    • 入力: Hello <strong>%s</strong>
    • AIが見るもの: Hello [TOKEN_1][TOKEN_2]
  3. 翻訳: AIはテキスト「Hello」を「Hola」に翻訳しますが、ロックされているため、[TOKEN_1]または[TOKEN_2]を物理的に変更することはできません。
  4. 再構築: 元のコードを、翻訳された文字列の正確な場所に再挿入します。

結果:壊れたサイトゼロ

AIは実際の%sまたはHTML文字と対話することはないため、翻訳エンジンが変数内にスペースを追加したり、タグを破損したりすることは数学的に不可能です。

ロシア語やポーランド語のような言語の複雑な複数形ルール(msgid_plural)も処理し、正しいカウントに正しい変数が使用されるようにします。

コードでギャンブルをするのをやめる

言語ファイルをアップロードするたびに指を交差させる必要はありません。ローカリゼーションは、PHPエラーのデバッグではなく、新しい顧客へのリーチに関するものであるべきです。

SimplePoTranslateは、コードの整合性を気にする開発者にとって最も安全で高度なクラウドベースのツールです。

  • クラウドベース: インストールするプラグインはありません。
  • コンテキスト認識: 自然な言い回しのためにGemini/GPT-4クラスのAIを使用します。
  • 構文ロック: 変数の保護を保証します。

頭痛の種なしに翻訳する準備はできましたか? SimplePoTranslate.comで無料で始めましょう