web-dev-qa-db-ja.com

変数を通して翻訳された文字列を取得する

Webサイトをさまざまな言語に翻訳していますが、次のような問題があります。

バックエンドを通して、ユーザーはドロップダウンで50のオプションのリストから値(テキスト文字列)を選択することができます。このドロップダウンはカスタムフィールドに保存されます(ところで、ACF PROで管理されています)。

ユーザーがサイトの翻訳版にアクセスしたときに、そのテキスト文字列の翻訳を表示したいと思います。

最初は使用していると思いました

$options_obj = get_field_object('user_options');
$options_value = get_field('user_options');
$options_label = $options_obj['choices'][$options_value];

echo __($options_label, 'my_text_domain');

そして私はpo/moファイルに50個のテキスト文字列の翻訳(すべての選択可能なオプションに対応する)を入れました、しかしこれはうまくいきません 。 Gettextは変数を翻訳しません。

翻訳された文字列を取得する方法あなたはなにか考えはありますか?ありがとうございました。

2
Capiedge

これがあなたが望むものであるかどうかは完全にはわかりませんが、オプションページが1つの言語の場合は、変数を使用しないようにgettext呼び出しをカスタムフィールド自体に入れるだけで済みます。管理者には、翻訳をスペイン語に強制します。

function wpse227983_force_language ( $locale ) {
    if ( is_admin() ) {
        return 'es_ES';
    }
    return $locale;
}
add_filter( 'locale', 'wpse227983_force_language' );

フロントエンドでは、メッセージは通常の方法で翻訳されます。あなたがページの言語が何であるかを決定するシステムが整っていると仮定します。作成者がその言語にカスタムフィールドを設定している場合は、上記のフィルタを別のifとともに使用して強制的に翻訳することができます。

1
cjbj