PHP Switch语句和数组键值

时间:2016-10-04 14:00:31

标签: php curl switch-statement translation days

我正在尝试在多语种网站上建立一个小天气预报。我使用的是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的值返回键值?

希望,我正确地解释了自己!任何意见都将非常感激。

1 个答案:

答案 0 :(得分: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>