Я пытаюсь создать небольшой прогноз погоды на многоязычном веб-сайте. Я использую PHP curl, и API на английском языке.
У меня проблемы с переводом дней недели.
$atts = shortcode_atts(array(
'language' => ''
), $atts );
/**
* Get translated string for given key
*/
function get_translated_text( $key='' ){$language = $atts['language']; // de, fr, it
switch ( $language ) {
case 'fr':
$arr = array(
'Sun' => 'Dim',
'Mon' => 'Lun',
'Tue' => 'Mar',
'Wed' => 'Mer',
'Thu' => 'Jeu',
'Fri' => 'Ven',
'Sat' => 'Sam',
'Today' => 'Auj',
);
break;
case 'de':
$arr = array(
'Sun' => 'So',
'Mon' => 'Mo',
'Tue' => 'Di',
'Wed' => 'Mi',
'Thu' => 'Do',
'Fri' => 'Fr',
'Sat' => 'Sa',
'Today' => 'Heute',
);
break;
default :
$arr = array(
'Sun' => 'Dom',
'Mon' => 'Lun',
'Tue' => 'Mar',
'Wed' => 'Mer',
'Thu' => 'Gio',
'Fri' => 'Ven',
'Sat' => 'Sab',
'Today' => 'Oggi',
);
break;
}
$output = '';
if ( ! empty( $key ) && isset( $arr[ $key ] ) ) {
$output = $arr[ $key ];
}
return $output;
}
Вот что я использую для получения дня недели:
<div class="day">
<?php
$dw = date("D", strtotime($day['date']));
echo get_translated_text( $dw );
?>
</div>
Таким образом, get_translated_text () всегда возвращает значение по умолчанию оператора switch (итальянский).
Как мы можем настроить вышеупомянутую функцию, чтобы она возвращала значения ключей на основе значения $ language?
Надеюсь, я правильно объяснила! Любой вклад будет очень ценится.
Спасибо вам за все ваши комментарии.
Как уже упоминалось в комментариях, проблема была с переменной $ atts.
Обновленная функция:
/*
** Shortcode Arguments
*/
$atts = shortcode_atts(array(
'language' => ''
), $atts );/**
* Get translated string for given key
*/
function get_translated_text( $key='' , $lang ){switch ( $lang ) {
case 'fr':
$arr = array(
'Sun' => 'Dim',
'Mon' => 'Lun',
'Tue' => 'Mar',
'Wed' => 'Mer',
'Thu' => 'Jeu',
'Fri' => 'Ven',
'Sat' => 'Sam',
'Today' => 'Auj',
);
break;
case 'de':
$arr = array(
'Sun' => 'So',
'Mon' => 'Mo',
'Tue' => 'Di',
'Wed' => 'Mi',
'Thu' => 'Do',
'Fri' => 'Fr',
'Sat' => 'Sa',
'Today' => 'Heute',
);
break;
case 'ru':
$arr = array(
'Sun' => 'Вс',
'Mon' => 'Пн',
'Tue' => 'Вт',
'Wed' => 'Ср',
'Thu' => 'Чт',
'Fri' => 'Пт',
'Sat' => 'Сб',
'Today' => 'Сегодня',
);
break;
default :
$arr = array(
'Sun' => 'Dom',
'Mon' => 'Lun',
'Tue' => 'Mar',
'Wed' => 'Mer',
'Thu' => 'Gio',
'Fri' => 'Ven',
'Sat' => 'Sab',
'Today' => 'Oggi',
);
break;
}
$output = '';
if ( ! empty( $key ) && isset( $arr[ $key ] ) ) {
$output = $arr[ $key ];
}
return $output;
}
Передайте $ lang в качестве аргумента.
<div class="day">
<?php
$lang = $atts['language'];
$dw = date("D", strtotime($day['date']));
echo get_translated_text( $dw, $lang );
?>
</div>
Других решений пока нет …