2016-10-04 2 views
0

다국어 웹 사이트에서 작은 일기 예보를 작성하려고합니다. 나는 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 '를 넘겨주지 않습니다. 이렇게하면 실제로 "정의되지 않은 변수"오류가 발생합니다. 에 대한 오류보고가 있습니까? 그렇지 않다면 이상하게 행동 할 경우를 대비하여 켜고 항상 로그를 확인하십시오. –

+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>