Noobの質問ですみません。
テキストドメインは子供のテーマに必要ですか?私はテキストドメインが宣言されていない単純な子テーマを作成しています。したがって、翻訳対象の文字列を使用するときは、親テーマのtext-domainを使用する必要があります(はい、親テーマにはtext-domainがロードされ、.mo/.poファイルもあります)。
例えば、私の子供のテーマテンプレートにこの行を追加する
<?php __('Some String', 'parent-text-domain');>
文字列の上は翻訳されますか?
前もって感謝します
TL; DR: 親テーマに含まれる文字列を親テーマでどのように使用するかについては、子テーマにテキストドメインを設定する必要はありません。
ただし、親テーマで使用されていない文字列を翻訳可能にするには、関連する翻訳(.mo
)ファイルを含む別のテキストドメインが必要になります。
WordPressが翻訳機能の中で文字列を見つけた場合:
load_plugin_textdomain
または load_theme_textdomain
または load_textdomain
を介して)ロードされているかどうかをチェックし、もしそうであれば3.に行きますwp-content/languages
)に、一致するtextdomainファイルが含まれているかどうかを確認します。対応するtextdomainファイルは"{$domain}-{$locale}.mo"
です。ここで、$domain
は翻訳する文字列のテキストドメイン、$locale
はWebサイトの現在のロケールです。そのファイルが見つからない場合は元の文字列が返され、それ以外の場合はロードされてWPが次のポイントに進みます。_n()
を使用する場合)、それらは行われます。そうでなければWPは次の点に進む。親テーマのテキストドメインを子テーマからの翻訳機能で使用する場合(親テーマがtextdomainファイルを出荷してロードする、またはそれがtranslationsフォルダに翻訳ファイルを持っていると仮定して)、WordPressはの中のポイント3.に到着します文字列がファイル内で利用可能な場合(親テーマで使用されているため)、それ以外の場合はそうなりません。
つまり、親テーマのカスタム文字列には独自の翻訳ファイルが必要です。
理論的には、WordPressは同じテキストドメインを何度もロードして「マージ」できるため、別の翻訳ファイルで親のテキストドメインを使用することは可能ですが、翻訳フォルダーに"{$domain}-{$locale}.mo"
の形式で存在するファイルは1つだけなので問題があります(上記の一覧のポイント2.を参照)。
したがって、結論として、子テーマを翻訳可能にする唯一の実行可能な方法は、親テーマで使用されていない文字列が含まれている場合、独自のテキストドメインと独自の翻訳ファイルを使用することです。
あなたの子供のテーマが親のテーマとは異なる文字列を含む場合。
子テーマで異なるテキストドメインを使用する適切な方法は、load_child_theme_textdomain()
関数です。他のload _..._ textdomain関数と同じように使うことができます。
用心しなさい!
プラグイン言語ファイルとは異なり、my_child_theme-de_DE.moのような名前は機能しません。プラグイン言語ファイルではファイル名にテキストドメインを指定できますが、これはテーマや子テーマでは機能しません。テーマの言語ファイル には言語ショートカットのみを含める必要があります 。