2016-10-04 84 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()總是返回switch語句(意大利)的默認值。

如何調整上述函數以基於$ language的值返回鍵值?

希望,我正確地解釋了我自己!任何輸入將非常感激。

+3

這裏** $ language = $ atts ['language']; **來自哪裏? – Dez

+7

你沒有將'$ atts'傳遞給你的函數。這實際上應該給你一個「未定義的變量」錯誤。你有錯誤報告嗎?如果沒有,請打開它並始終檢查日誌以防萬一出現異常情況。 –

+0

$ atts ['language']來自WordPress,shortcode屬性:) – 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; 

} 

通$ LANG作爲參數。

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