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

Revision 22150, 2.0 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_plural($variable, $counter = 1, $single = '', $plural = '')
21{
22    // 多言語対応用の関数が無い、あるいはエイリアスが無ければ変数をそのまま出力
23    if (!function_exists('t_plural') || empty($single) || empty($plural)) {
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) > 4) {
37            array_shift($args); // $variable
38            array_shift($args); // $counter
39            array_shift($args); // $sigle
40            array_shift($args); // $plural
41
42            // 引数をパラメーターに変換
43            $max = floor(count($args)/2);
44            for ($i = 0; $i < $max; $i++) {
45                $key = $i * 2;
46                $params[$args[$key]] = $args[$key+1];
47            }
48
49            // 言語コードの指定があればオプションにセット
50            if (!empty($params['lang_code'])) {
51                $options['lang_code'] = $params['lang_code'];
52                unset($params['lang_code']);
53            }
54            // 機種の指定があればオプションにセット
55            if (!empty($params['device_type_id'])) {
56                $options['device_type_id'] = $params['device_type_id'];
57                unset($params['device_type_id']);
58            }
59        }
60
61        return t_plural($counter, $single, $plural, $params, $options);
62    } else {
63        return $variable;
64    }
65}
Note: See TracBrowser for help on using the repository browser.