-1

配列内に IF ELSE を追加する必要がありますが、正しい構文を取得するのに問題があります。

元のスニペットは次のとおりです。

function init(){
    // I18n
    load_plugin_textdomain($this->text_domain, false, dirname(plugin_basename(__FILE__)) . '/../languages/');
    $this->javascriptVariables = array(
                                'more'  => __('More Results', $this->text_domain),
                                'empty' => __('0 results', $this->text_domain),
                                'char_number' => get_option('search_in_place_minimum_char_number'),
                                'root'   => get_site_url(),
                                'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                        );

} // End init

必要なものは比較的単純です。「'more' => __('More Results', $this->text_domain),」という行が表示されます。

ページの言語が英語の場合、値は「More Results」、イタリア語の場合、値は「Mostra tutto」などにする必要があります。

言語コードは、ICL_LANGUAGE_CODE という定数から取得できます。したがって、ICL_LANGUAGE_CODE==en の場合、「more」には値「Show More」が必要です。ICL_LANGUAGE_CODE=it の場合、値は etc です。

配列内と外の両方で IF ELSE を使用しようとしましたが、結果はありませんでした。

これで私を助けてもらえますか?ほんとうにありがとう。

4

3 に答える 3

0

すべての言語のすべての翻訳済みメッセージのマップを作成し、ifステートメントの代わりにルックアップを使用します。

$messages = array()
$messages['more_results'] = array('en'=>'More results', 'it' => 'Mostra tutto');

あなたの代わりに次の'More Results'ようなものがあります$messages['more_results'][$ICL_LANGUAGE_CODE]

于 2013-07-11T21:35:51.943 に答える
0

最も簡単な解決策は、三項演算子を使用することです。

  $this->javascriptVariables = array(
                                'more'  => __(($ICL_LANGUAGE_CODE == "it") ? 'Mostra tutto' : 'More results',, $this->text_domain),
                                'empty' => __('0 results', $this->text_domain),
                                'char_number' => get_option('search_in_place_minimum_char_number'),
                                'root'   => get_site_url(),
                                'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                        );

代替ソリューション:

最初に言語を確認してから、それを配列で使用できます。

if($ICL_LANGUAGE_CODE == "Italian"){ //pseudo code
$word = "Mostra tutto";
}
else{
$word = "More Results";
}

そして、次のように、その変数を配列で使用します。

$this->javascriptVariables = array(
                            'more'  => __($word, $this->text_domain),                              
                            'empty' => __('0 results', $this->text_domain),
                            'char_number' => get_option('search_in_place_minimum_char_number'),
                            'root'   => get_site_url(),
                            'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                    );
于 2013-07-11T21:36:07.507 に答える
-1

より良い方法は、配列への挿入の前にこれを行うことだったと思います。元:

function init(){
    // I18n
    load_plugin_textdomain($this->text_domain, false, dirname(plugin_basename(__FILE__)) . '/../languages/');

    if(ICL_LANGUAGE_CODE='it')
        $world = 'Mostra Tutto';
    elseif(ICL_LANGUAGE_CODE='en')
        $world = 'More Results';
    // etc.
    $this->javascriptVariables = array(
                            'more'  => __($world, $this->text_domain),
                            'empty' => __('0 results', $this->text_domain),
                            'char_number' => get_option('search_in_place_minimum_char_number'),
                            'root'   => get_site_url(),
                            'home' => trim( get_settings('home')+ICL_LANGUAGE_CODE, "0"),
                    );

} // End init

お役に立てれば幸いです。お知らせください ;) (下手な英語で申し訳ありません)

于 2013-07-11T21:41:47.967 に答える