[Svn-src-all:3249] [version-2_12-multilang 22150] #163 テキスト出力多言語対応

pineray admin @ mail.ec-cube.net
2012年 12月 20日 (木) 12:28:44 JST


Subversion committed to /home/svn/open 22150
http://svn.ec-cube.net/open_trac/changeset/22150
┌────────────────────────────┐
│更新者 :  pineray                                      │
│更新日時:  2012-12-20 12:28:43 +0900 (木, 20 12月 2012)│
└────────────────────────────┘

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

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

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
A   branches/version-2_12-multilang/data/smarty_extends/modifier.default_t.php
A   branches/version-2_12-multilang/data/smarty_extends/modifier.default_t_plural.php

追加: branches/version-2_12-multilang/data/smarty_extends/modifier.default_t.php
===================================================================
--- branches/version-2_12-multilang/data/smarty_extends/modifier.default_t.php	                        (rev 0)
+++ branches/version-2_12-multilang/data/smarty_extends/modifier.default_t.php	2012-12-20 03:28:43 UTC (rev 22150)
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty default_t modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     default_t<br>
+ * Purpose:  designate translatable default value for empty variables
+ * @author   pineray 松田光貴 <matsudaterutaka at gmail dot com>
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_default_t($variable, $string = '')
+{
+    // 多言語対応用の関数が無い、あるいはエイリアスが無ければ変数をそのまま出力
+    if (!function_exists('t') || empty($string)) {
+        return $variable;
+    }
+
+    if (!isset($variable) || $variable === '') {
+        // パラメーター用の配列
+        $params = array();
+        // オプション用の配列
+        $options = array();
+
+        // 引数を取得
+        $args = func_get_args();
+        // パラメーターの引数があればセットする
+        if (count($args) > 2) {
+            array_shift($args); // $variable
+            array_shift($args); // $string
+
+            // 引数をパラメーターに変換
+            $max = floor(count($args)/2);
+            for ($i = 0; $i < $max; $i++) {
+                $key = $i * 2;
+                $params[$args[$key]] = $args[$key+1];
+            }
+
+            // 言語コードの指定があればオプションにセット
+            if (!empty($params['lang_code'])) {
+                $options['lang_code'] = $params['lang_code'];
+                unset($params['lang_code']);
+            }
+            // 機種の指定があればオプションにセット
+            if (!empty($params['device_type_id'])) {
+                $options['device_type_id'] = $params['device_type_id'];
+                unset($params['device_type_id']);
+            }
+        }
+
+        return t($string, $params, $options);
+    } else {
+        return $variable;
+    }
+}

追加: branches/version-2_12-multilang/data/smarty_extends/modifier.default_t_plural.php
===================================================================
--- branches/version-2_12-multilang/data/smarty_extends/modifier.default_t_plural.php	                        (rev 0)
+++ branches/version-2_12-multilang/data/smarty_extends/modifier.default_t_plural.php	2012-12-20 03:28:43 UTC (rev 22150)
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty default_t modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     default_t<br>
+ * Purpose:  designate translatable default value for empty variables
+ * @author   pineray 松田光貴 <matsudaterutaka at gmail dot com>
+ * @param string
+ * @param string
+ * @return string
+ */
+function smarty_modifier_default_t_plural($variable, $counter = 1, $single = '', $plural = '')
+{
+    // 多言語対応用の関数が無い、あるいはエイリアスが無ければ変数をそのまま出力
+    if (!function_exists('t_plural') || empty($single) || empty($plural)) {
+        return $variable;
+    }
+
+    if (!isset($variable) || $variable === '') {
+        // パラメーター用の配列
+        $params = array();
+        // オプション用の配列
+        $options = array();
+
+        // 引数を取得
+        $args = func_get_args();
+        // パラメーターの引数があればセットする
+        if (count($args) > 4) {
+            array_shift($args); // $variable
+            array_shift($args); // $counter
+            array_shift($args); // $sigle
+            array_shift($args); // $plural
+
+            // 引数をパラメーターに変換
+            $max = floor(count($args)/2);
+            for ($i = 0; $i < $max; $i++) {
+                $key = $i * 2;
+                $params[$args[$key]] = $args[$key+1];
+            }
+
+            // 言語コードの指定があればオプションにセット
+            if (!empty($params['lang_code'])) {
+                $options['lang_code'] = $params['lang_code'];
+                unset($params['lang_code']);
+            }
+            // 機種の指定があればオプションにセット
+            if (!empty($params['device_type_id'])) {
+                $options['device_type_id'] = $params['device_type_id'];
+                unset($params['device_type_id']);
+            }
+        }
+
+        return t_plural($counter, $single, $plural, $params, $options);
+    } else {
+        return $variable;
+    }
+}




Svn-src-all メーリングリストの案内