2016-10-04 8 views
0

多言語のWebサイトで小さな天気予報を作成しようとしています。私はPHPのカールを使用しており、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'を渡していません。これは実際にあなたに "Undefined variable"エラーを与えるはずです。エラー報告はありますか?そうでない場合は、それをオンにして、事が奇妙に動作する場合に備えてログを常にチェックしてください。 –

+0

$ atts ['language']はWordPressから、ショートコード属性: – 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>