子テーマに必要なテキストドメインです


8

noobの質問でごめんなさい。

子テーマにテキストドメインは必要ですか?テキストドメインが宣言されていない単純な子テーマを構築しています。したがって、翻訳する文字列を使用する場合は、親テーマのテキストドメインを使用する必要があります(親テーマにはテキストドメインが読み込まれ、.mo / .poファイルも含まれます)。

たとえば、子のテーマテンプレートにこの行を追加する

<?php __('Some String', 'parent-text-domain');> 

上記の文字列は翻訳されますか?

前もって感謝します

回答:


7

TL; DR:親テーマにある文字列を使用する場合は、親テーマでの使用方法を除いて、子テーマにテキストドメインを設定する必要はありません。

ただし、親テーマで使用されていない文字列を使用して翻訳できるようにするには、関連する翻訳(.mo)ファイルを含む別のテキストドメインが必要になります。


翻訳ワークフロー

WordPressが翻訳関数で文字列を検出すると、次のようになります。

  1. 必要なテキストドメインの翻訳がロードされているかどうかを確認します(load_plugin_textdomainまたはload_theme_textdomainまたはを介して)。ロードされているload_textdomain場合は、ポイント3に進みます。
  2. 翻訳フォルダ(デフォルトではwp-content/languages)に一致するtextdomainファイルが含まれているかどうかを確認します。一致するtextdomainファイルは"{$domain}-{$locale}.mo"$domainは翻訳する文字列のテキストドメインであり$locale、Webサイトの現在のロケールです。そのファイルが見つからない場合、元の文字列が返されます。それ以外の場合は読み込まれ、WPは次のポイントに転送します。
  3. テキストドメインが読み込まれると、WPは必要な文字列がそのファイルに含まれているかどうかを調べ、元の文字列が返されない場合はそれを返し、そうでない場合は次のポイントに転送します。
  4. 見つかった翻訳文字列が単数形または複数形の解決を必要とする場合(たとえばを使用する場合_n())、それらは行われます。それ以外の場合、WPは次のポイントに転送します。
  5. フィルターフックが翻訳された文字列に適用され(https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hookを参照)、最後に結果が返されます。

そう?

子テーマの翻訳機能で親テーマのテキストドメインを使用する場合(親テーマが出荷され、textdomainファイルが読み込まれるか、translationsフォルダーに翻訳ファイルがある場合)、WordPressは上記のリストのポイント3に到達します文字列はファイルで使用できます(親テーマで使用されるため)。翻訳される場合、翻訳されません。

つまり、親テーマのカスタム文字列には独自の翻訳ファイルが必要です。

理論的には、WordPressは同じテキストドメインを何度もロードして「マージ」できるため、別の翻訳ファイルで親テキストドメインを使用することは可能ですが"{$domain}-{$locale}.mo"、翻訳フォルダーの形式で存在できるファイルは1つだけであるため、問題があります(上記のリストのポイント2を参照してください)。

したがって、結論として、子テーマに翻訳可能にする唯一の実行可能な方法は、親テーマで使用されていない文字列が含まれている場合、独自のテキストドメインと独自の翻訳ファイルを使用することです。


正解です。もう1つの質問-親テーマにこの文字列「背景色」があり、子にもこの文字列が存在するとします。したがって、この場合、親テーマのテキストドメインを安全に使用できますか?__( 'background-color'、 'parent-text-domain')?
2016

はい@Ayanize親テーマがある__('background-color', 'parent-text-domain')場合、子テーマで同じを使用できます。翻訳するために他に何もする必要はありません。
gmazzap

0

子テーマに親テーマとは異なる文字列が含まれている場合。

子テーマで別のテキストドメインを使用する適切な方法は、load_child_theme_textdomain()関数です。他のload _..._ textdomain関数と同じように使用できます。

注意してください!

プラグイン言語ファイルとは異なり、my_child_theme-de_DE.moのような名前は機能しません。プラグイン言語ファイルではファイル名にテキストドメインを指定できますが、これはテーマと子テーマでは機能しません。テーマの言語ファイルには、言語ショートカットのみを含める必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.