2016-10-04 6 views
0

Я пытаюсь создать небольшой прогноз погоды на многоязычном веб-сайте. Я использую PHP curl, и API на английском языке.Вывод оператора PHP и значения ключа массива

У меня возникли проблемы с переводом дней недели.

$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() всегда возвращает значение переключателя оператора (итальянский) по умолчанию.

Как мы можем настроить вышеуказанную функцию для возврата значений ключа на основе значения $ language?

Надеюсь, я правильно объяснил! Любой вход был бы очень оценен.

+3

Где этот ** $ language = $ atts ['language']; ** происходит от? – Dez

+7

Вы не передаете '$ atts' вашей функции. Это должно фактически дать вам ошибку «Неопределенная переменная». У вас есть отчеты об ошибках? Если нет, включите его и всегда проверяйте журналы в случае, если что-то ведет себя странно. –

+0

$ atts ['language'] из WordPress, shortcode attribute :) – William

ответ

0

Благодарим вас за все ваши комментарии.

Как уже упоминалось, в комментариях проблема была с переменной $ 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; 

} 

Pass $ Ланг в качестве аргумента.

<div class="day"> 
<?php 
$lang = $atts['language']; 
$dw = date("D", strtotime($day['date'])); 
echo get_translated_text($dw, $lang); 
?> 
</div>