WordPressでRTL言語(アラビア語、ヘブライ語、ペルシア語)を翻訳する方法

WordPressテーマのアラビア語への翻訳が完了しました。.moファイルをアップロードし、サイトの言語を切り替えると、判読不能な結果になります。テキストが左にオーバーフローし、ボタンが重なり、注意深く設計されたレイアウトが紙シュレッダーにかけられたかのようです。
右から左(RTL)言語の世界へようこそ。ここでは、翻訳は戦いの半分に過ぎません。
アラビア語、ヘブライ語、ペルシア語(ペルシャ語)は、地球上で最も広く話されている言語の1つです。アラビア語だけでも4億人以上のネイティブスピーカーがいます。WordPressサイトがこれらのオーディエンスを無視している場合、大きな収益を逃していることになります。しかし、彼らにサービスを提供するには、英語をアラビア語に置き換えるだけでは不十分です。レイアウトの方向性全体を再考する必要があります。
このガイドでは、RTLがWordPressでどのように機能するか、CSSを修正する方法、RTL文字列を含む.poファイルを処理する方法、および最も一般的な落とし穴を回避する方法など、知っておくべきすべてのことを網羅しています。
WordPressでのRTLの仕組み
WordPressにはRTLサポートが組み込まれています。サイトの言語をアラビア語(ar)、ヘブライ語(he)、またはペルシア語(fa)に設定すると、WordPressは自動的にdir="rtl"を<html>タグに追加し、テーマにrtl.cssスタイルシートが用意されている場合はそれを読み込みます。
これは理論上の話です。実際には、ほとんどのテーマには最小限または破損したRTLサポートしかありません。
実際に何が変わるのか
RTLモードが有効になると、ブラウザはページレイアウト全体をミラーリングします。
- テキストは右から左に流れます。
- サイドバーが左右入れ替わります。
- ナビゲーションメニューの順序が逆になります。
- パディングとマージンの値が反転します(左が右になります)。
- 方向性を示すアイコン(矢印、シェブロン)をミラーリングする必要があります。
テーマのCSSがLTR用にのみ記述されている場合、margin-left、padding-right、float: left、およびtext-align: leftのすべての宣言が、ブラウザのRTLエンジンと競合するようになります。
RTL用にCSSを修正する:実践的なガイド
最もクリーンなアプローチは、ドキュメントの書き込み方向に自動的に適応するCSS論理プロパティを使用することです。leftとrightの代わりに、inline-startとinline-endを使用します。
変更前:物理プロパティ(RTLで破損)
/* LTR-only CSS -- breaks in Arabic */
.sidebar {
float: left;
margin-right: 20px;
}
.nav-arrow {
padding-left: 10px;
text-align: left;
}
.card {
border-left: 3px solid #0073aa;
}
変更後:論理プロパティ(両方向で動作)
/* Direction-agnostic CSS -- works in both LTR and RTL */
.sidebar {
float: inline-start;
margin-inline-end: 20px;
}
.nav-arrow {
padding-inline-start: 10px;
text-align: start;
}
.card {
border-inline-start: 3px solid #0073aa;
}
論理プロパティを使用すると、CSSを一度記述するだけで、オーバーライドなしで英語とアラビア語の両方で正しく動作します。
[dir="rtl"]オーバーライドメソッド
スタイルシート全体をリファクタリングできない場合は、属性セレクターを使用してRTLを特にターゲットにすることができます。
[dir="rtl"] .sidebar {
float: right;
margin-left: 20px;
margin-right: 0;
}
[dir="rtl"] .nav-arrow {
padding-left: 0;
padding-right: 10px;
text-align: right;
}
これは機能しますが、メンテナンスの負担が2倍になります。LTRスタイルを更新するたびに、RTLオーバーライドも更新する必要があります。
RTL文字列を含むPOファイルを翻訳する
翻訳自体も、レイアウトを超える課題をもたらします。RTL言語には、ほとんどの自動化ツールを混乱させる独自の特徴があります。
POファイルの双方向テキスト(Bidi)
実際の複雑さは、RTLテキストとLTRテキストが1つの文字列に混在する場合に発生します。この一般的なWordPressパターンを考えてみましょう。
msgid "Powered by %s"
msgstr "مدعوم بواسطة %s"
%sプレースホルダーは、「WooCommerce」のような英語の製品名に置き換えられます。レンダリングされた出力では、ブラウザはアラビア語のテキストを右から左に表示し、次に英語の単語の場合は左から右に切り替え、次に潜在的に元に戻す必要があります。
これは双方向テキスト(または「bidi」)と呼ばれ、Unicode双方向アルゴリズムによって処理されます。ほとんどの場合、これは自動的に機能します。ただし、複数のプレースホルダーまたは数字がRTLテキストに隣接している場合、視覚的な順序が予測できなくなる可能性があります。
よくある翻訳の間違い
一般的な翻訳ツールは、RTL固有のいくつかのエラーを発生させます。
-
プレースホルダーの順序が逆になる。
%1$s out of %2$sのような文字列は、AIがアラビア語の文法に合わせて順序を変更するため、プレースホルダーが入れ替えられる可能性があります。これにより、「Page out of 10」ではなく「10 out of Page」のような不正な出力が生成されます。翻訳中にコード変数を保護する方法の詳細をご覧ください。 -
HTMLの方向性が壊れる。 文字列に
<span dir="ltr">のようなインラインHTMLが含まれている場合、単純な翻訳者はdir属性を削除または翻訳する可能性があります。 -
複数形がない。 アラビア語には6つの複数形(ゼロ、1つ、2つ、少数、多数、その他)があります。これは、WordPressがサポートするどの言語よりも複雑な複数形システムです。2つの形式(英語の単数形/複数形など)しか生成しないツールは、アラビア語の
.poファイルを破損したままにします。Gettext複数形の仕組みの詳細については、WordPressでの複雑な複数形の詳細に関するガイドをご覧ください。
以下は、正しく翻訳されたアラビア語の複数形文字列が.poファイルでどのように見えるかです。
# Arabic: nplurals=6
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "لا تعليقات"
msgstr[1] "تعليق واحد"
msgstr[2] "تعليقان"
msgstr[3] "%d تعليقات"
msgstr[4] "%d تعليقًا"
msgstr[5] "%d تعليق"
これらの6つの形式のいずれかが空であるか、正しくない場合、WordPressはその特定のカウントに対して英語の文字列にフォールバックします。ユーザーには、完全にアラビア語のインターフェイス全体に「5 comments」が英語で散在して表示されます。
RTL実装のテスト
CSSの翻訳と修正だけでは十分ではありません。実際の結果をブラウザで確認する必要があります。
簡単なテストチェックリスト
- WordPressの言語を切り替える:設定 > 一般でアラビア語に設定します。
dir="rtl"を手動で追加するだけでなく、実際の言語設定を使用して、WordPressが独自のRTLオーバーライドを読み込むようにします。 - ナビゲーションメニューを確認する。 ミラーリングされていますか?ドロップダウンは正しい方向に開きますか?
- フォームフィールドを検査する。 入力テキストは右から左に流れる必要があります。プレースホルダーテキストは右揃えにする必要があります。
- 混合方向のコンテンツを確認する。 アラビア語と英語の両方を含む文字列(ブランド名やURLなど)は、正しい視覚的な順序でレンダリングされる必要があります。
- モバイルでテストする。 RTLレイアウトのバグは、配置エラーの余地が少ない小さな画面でより深刻になることがよくあります。
翻訳が表示されない場合、問題はRTLとは関係がない可能性があります。最初に.moファイルのコンパイルとファイルパスを確認してください。
ブラウザ開発者ツールのトリック
Chrome DevToolsでは、WordPressの設定を変更せずに、任意のページでRTLを一時的に強制できます。
/* Paste in DevTools console as: document.documentElement.dir = 'rtl' */
html {
direction: rtl;
}
これにより、翻訳を開始する前に、テーマがRTLをどのように処理するかを簡単にプレビューできます。
RTL翻訳を正しく自動化する
RTL言語の手動翻訳は費用がかかり、時間がかかります。プロのアラビア語翻訳者はプレミアム料金を請求し、言語とWordPress固有のGettext構文の両方を理解している人を見つけるのは困難です。
SimplePoTranslateは、RTL固有の課題をネイティブに理解するコンテキスト対応AIエンジンでこれを解決します。
- 6つのアラビア語の複数形すべてが自動的に生成されます。当社のエンジンは、
.poファイルのPlural-Formsヘッダーを読み取り、ターゲット言語に必要な数の形式を正確に生成します。空のmsgstrスロットも、英語のフォールバックもありません。 - プレースホルダーの安全性。
%s、%d、%1$sのような変数は、翻訳中にロックされます。AIは、アラビア語の文法が異なる単語順を示唆する場合でも、それらを並べ替えたり、削除したり、破損させたりすることはできません。構文ロックがコードを保護する方法の詳細をご覧ください。 - 双方向コンテキスト。 AIは、混合方向の文字列には特別な処理が必要であることを理解し、HTMLの方向性属性を保持します。
ヘブライ語のオーディエンス向けのブログテーマをローカライズする場合でも、完全なWooCommerceストアをペルシア語に翻訳する場合でも、プロセスは同じです。.poファイルをアップロードし、ターゲット言語を選択して、翻訳されたファイルをダウンロードします。ワークフロー全体に数日ではなく、数分しかかかりません。
WordPressローカライズプロセスの完全なチュートリアルについては、WordPressローカライズの究極のガイドをご覧ください。
RTLを後回しにするのをやめましょう
右から左への言語は、10億人以上の潜在的なユーザーを表しています。アラビア語は、世界で5番目に多く話されている言語です。ヘブライ語とペルシア語は、中東および中央アジアの重要な市場にサービスを提供しています。
WordPressサイトが、洗練されたネイティブな感覚のエクスペリエンスでこれらのユーザーにサービスを提供できない場合、彼らはできる競合他社を見つけるでしょう。
良いニュース:WordPressにはすでにインフラストラクチャがあります。テーマに必要なのは適切なCSSだけであり、.poファイルにはRTL言語の複雑さを尊重する翻訳ツールが必要です。
WordPressサイトをアラビア語、ヘブライ語、またはペルシア語に翻訳する準備はできましたか?SimplePoTranslate.comで無料で開始してください