我需要在数组中添加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'应该值“显示更多,如果ICL_LANGUAGE_CODE =它的值是等等。
我尝试在数组内使用IF ELSE,但也没有结果。
你能帮我解决这个问题吗? 我真的很感激。
答案 0 :(得分:0)
为所有语言创建所有已翻译邮件的地图,并使用查找而不是if
语句:
$messages = array()
$messages['more_results'] = array('en'=>'More results', 'it' => 'Mostra tutto');
而不是'More Results'
,您将拥有类似$messages['more_results'][$ICL_LANGUAGE_CODE]
答案 1 :(得分:0)
最简单的解决方案是使用ternary运算符:
$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"),
);
答案 2 :(得分:-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
希望我帮助你,让我知道;) (p.s.抱歉英语不好)