source: branches/version-2_12-multilang/data/smarty_extends/modifier.default_t.php @ 22150

Revision 22150, 1.9 KB checked in by pineray, 10 years ago (diff)

#163 テキスト出力多言語対応

Smarty の default 修飾子を多言語対応にしたものを追加.

Line 
1<?php
2/**
3 * Smarty plugin
4 * @package Smarty
5 * @subpackage plugins
6 */
7
8
9/**
10 * Smarty default_t modifier plugin
11 *
12 * Type:     modifier<br>
13 * Name:     default_t<br>
14 * Purpose:  designate translatable default value for empty variables
15 * @author   pineray 松田光貴 <matsudaterutaka at gmail dot com>
16 * @param string
17 * @param string
18 * @return string
19 */
20function smarty_modifier_default_t($variable, $string = '')
21{
22    // 多言語対応用の関数が無い、あるいはエイリアスが無ければ変数をそのまま出力
23    if (!function_exists('t') || empty($string)) {
24        return $variable;
25    }
26
27    if (!isset($variable) || $variable === '') {
28        // パラメーター用の配列
29        $params = array();
30        // オプション用の配列
31        $options = array();
32
33        // 引数を取得
34        $args = func_get_args();
35        // パラメーターの引数があればセットする
36        if (count($args) > 2) {
37            array_shift($args); // $variable
38            array_shift($args); // $string
39
40            // 引数をパラメーターに変換
41            $max = floor(count($args)/2);
42            for ($i = 0; $i < $max; $i++) {
43                $key = $i * 2;
44                $params[$args[$key]] = $args[$key+1];
45            }
46
47            // 言語コードの指定があればオプションにセット
48            if (!empty($params['lang_code'])) {
49                $options['lang_code'] = $params['lang_code'];
50                unset($params['lang_code']);
51            }
52            // 機種の指定があればオプションにセット
53            if (!empty($params['device_type_id'])) {
54                $options['device_type_id'] = $params['device_type_id'];
55                unset($params['device_type_id']);
56            }
57        }
58
59        return t($string, $params, $options);
60    } else {
61        return $variable;
62    }
63}
Note: See TracBrowser for help on using the repository browser.