-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),”这一行

好吧,我需要如果页面语言是英语,那么值是“更多结果”,如果是意大利语,那么值必须是“Mostra tutto”,等等。

语言代码可从名为 ICL_LANGUAGE_CODE 的常量中获得,因此如果 ICL_LANGUAGE_CODE==en 则“更多”的值应该是“显示更多,如果 ICL_LANGUAGE_CODE=it 值是等等等等。

我尝试在数组内部和外部都使用 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 回答