WPMLを使用して、プラグインやテーマのショートコード、および独自に開発したショートコードを翻訳する方法を説明します。
WPMLでは、テキストベースとIDベースの両方のショートコードを翻訳できます。テキストベースのショートコードは、以下のようにテキストを出力します。
[goodmorning name="Dear client"]
一方、IDベースのショートコードは、ID番号を使用して要素を出力します。
[myslider id="1"] [myslider id="2"]
ここでは、各ショートコードが異なるスライダーを出力しています。たとえば、1つは英語のスライダーを出力し、もう1つはスペイン語のスライダーを出力します。
ショートコードを翻訳するには、一方のスライダーのIDをもう一方のIDに置き換えます(例:1 → 2)。
互換性のあるプラグインとテーマのショートコードの翻訳
互換性のあるプラグインとテーマのショートコードを翻訳するには、WPML → 翻訳ダッシュボードに移動し、ショートコードを含むページを翻訳に送信します。ショートコードは、ページの他のコンテンツとともに高度な翻訳エディタに表示されます。
たとえば、以下のショートコードはエディタで次のように表示されます。
[goodmorning name="Dear client"]

ショートコードにリンク(URL)属性が含まれている場合は、検索バーを使用して検索します。WPMLはデフォルトでショートコード内のリンクを非表示にします。

互換性のないプラグインとテーマのショートコードの翻訳
互換性のないプラグインやテーマのショートコードを翻訳するには、まずWPMLのカスタム XML 設定ファイルにそれらを登録する必要があります。
2つのショートコードを含む以下の例を考えてみましょう。
[fanpage link="https://example.com"]Some content[/fanpage] [goodmorning name="dear client" type="official"]
これらのショートコードをWPMLに登録するには、以下の設定コードを使用します。
<wpml-config>
<shortcodes>
<shortcode>
<tag>goodmorning</tag>
<attributes>
<attribute>name</attribute>
<attribute>type</attribute>
</attributes>
</shortcode>
<shortcode>
<tag label="Fanpage shortcode">fanpage</tag>
<attributes>
<attribute>link</attribute>
</attributes>
</shortcode>
</shortcodes>
</wpml-config>
WPMLでの設定の仕組みは以下のとおりです。
- すべてのショートコードを<shortcodes>内に配置します。
- 個々のショートコード設定を<shortcode>で囲みます。
- <tag>でショートコード名を定義し、必要に応じてカスタムラベルを含めます。これらのラベルは、高度な翻訳エディタでテキストの横に表示されます。
- <attribute>で各属性のタイトルを定義します。
- すべての属性を<attributes>で囲みます。
ショートコードを登録すると、WPML → 翻訳ダッシュボードからページの他のコンテンツと一緒に翻訳できるようになります。
カスタムショートコードの翻訳
独自に開発したカスタムショートコードを翻訳するには、まずWPMLに登録する必要があります。完了すると、ページの他のコンテンツと一緒に翻訳できるようになります。
ショートコード内のハードコードされたテキストの翻訳
デフォルトでは、ハードコードされたテキストはWPMLで翻訳できません。これらを翻訳可能にするには、Gettextフレームワークを使用できます。「Good morning」がハードコードされたテキストである以下の例を考えてみましょう。
function goodmorning_att($atts) {
$default = array(
'name' => 'there',
);
$a = shortcode_atts($default, $atts);
return 'Good morning, '.$a['name'];
}
add_shortcode('goodmorning', 'goodmorning_att');
「Good morning」を翻訳可能にするには、Gettextを使用するようにコードを調整します。
function goodmorning_att($atts) {
$default = array(
'name' => 'there',
);
$a = shortcode_atts($default, $atts);
return __('Good morning, ', 'default').$a['name'];
}
add_shortcode('goodmorning', 'goodmorning_att');
これにより、「Good morning」というテキストが翻訳可能になり、文字列翻訳に登録されます。
追加リソース
wpml-config.xmlファイルの詳細については、言語設定ファイルのガイドをご覧ください。WPMLの他の要素の設定については、以下の追加ガイドを参照してください。