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

Revision 22151, 2.1 KB checked in by pineray, 10 years ago (diff)

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

変数を翻訳する修飾子を追加.
default_t_plural 修飾子のコメントを修正.

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