Ignore:
Timestamp:
2012/12/28 22:39:21 (11 years ago)
Author:
Seasoft
Message:

#1988 (国際化テンプレート:エスケープ処理) 現状コミット。

  • ja.po は、data/Smarty/templates/admin/ownersstore/plugin.tpl に対応する部分のみ、局所的に変更しています。
    • data/Smarty/templates/admin/ownersstore/plugin.tpl にコメントを記載している「案1」及び「案2」の方向性については協議中。
  • 上記以外では、po ファイルの改修が終わるまで、HTML エスケープが過剰に行なわれます。(主に、入力必須マークの出力が正しく行なわれないといった状況が生じます。)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-multilang/data/class/helper/SC_Helper_Locale.php

    r22099 r22186  
    7070        } 
    7171 
     72        $return = $string; 
    7273        // Get string list of specified language. 
    73         if ($lang_code == 'en') { 
    74             return $string; 
    75         } else { 
     74        if ($lang_code != 'en') { 
    7675            $translations = SC_Helper_Locale_Ex::$_instance->get_translations($lang_code, $device_type_id); 
    7776            // Whether a string which corresponding with alias is exist. 
    78             if (isset($translations[$string])) { 
    79                 return $translations[$string]; 
    80             } 
    81             else { 
    82                 return $string; 
    83             } 
    84         } 
     77            if (isset($translations[$return])) { 
     78                $return = $translations[$return]; 
     79            } 
     80        } 
     81 
     82        $esc_types = $options['escape']; 
     83        if (is_null($esc_types) && $string[0] !== '<') { 
     84            $esc_types = 'h'; 
     85        } 
     86        foreach (explode(',', $esc_types) as $esc_type) { 
     87            switch ($esc_type) { 
     88                case 'h': 
     89                case 'html': 
     90                    $return = htmlspecialchars($return, ENT_QUOTES); 
     91                    break; 
     92 
     93                case 'j': 
     94                case 'javascript': 
     95                    // escape quotes and backslashes, newlines, etc. 
     96                    $return = strtr($return, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/')); 
     97                    break; 
     98 
     99                case 'nl2br': 
     100                    $return = nl2br($return, true); 
     101                    break; 
     102 
     103                case '': 
     104                case 'none': 
     105                    break; 
     106 
     107                case 'htmlall': 
     108                    $return = htmlentities($return, ENT_QUOTES); 
     109                    break; 
     110 
     111                case 'u': 
     112                case 'url': 
     113                    $return = rawurlencode($return); 
     114                    break; 
     115 
     116                case 'urlpathinfo': 
     117                    $return = str_replace('%2F','/',rawurlencode($return)); 
     118                    break; 
     119 
     120                case 'quotes': 
     121                    // escape unescaped single quotes 
     122                    $return = preg_replace("%(?<!\\\\)'%", "\\'", $return); 
     123                    break; 
     124 
     125                case 'hex': 
     126                    // escape every character into hex 
     127                    $text = ''; 
     128                    for ($x=0; $x < strlen($return); $x++) { 
     129                        $text .= '%' . bin2hex($return[$x]); 
     130                    } 
     131                    $return = $text; 
     132                    break; 
     133 
     134                case 'hexentity': 
     135                    $text = ''; 
     136                    for ($x=0; $x < strlen($return); $x++) { 
     137                        $text .= '&#x' . bin2hex($return[$x]) . ';'; 
     138                    } 
     139                    $return = $text; 
     140                    break; 
     141 
     142                case 'decentity': 
     143                    $text = ''; 
     144                    for ($x=0; $x < strlen($return); $x++) { 
     145                        $text .= '&#' . ord($return[$x]) . ';'; 
     146                    } 
     147                    $return = $text; 
     148                    break; 
     149 
     150                case 'mail': 
     151                    // safe way to display e-mail address on a web page 
     152                    $return = str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $return); 
     153                    break; 
     154 
     155                case 'nonstd': 
     156                   // escape non-standard chars, such as ms document quotes 
     157                   $_res = ''; 
     158                   for($_i = 0, $_len = strlen($return); $_i < $_len; $_i++) { 
     159                       $_ord = ord(substr($return, $_i, 1)); 
     160                       // non-standard char, escape it 
     161                       if($_ord >= 126){ 
     162                           $_res .= '&#' . $_ord . ';'; 
     163                       } 
     164                       else { 
     165                           $_res .= substr($return, $_i, 1); 
     166                       } 
     167                   } 
     168                   $return = $_res; 
     169                    break; 
     170 
     171                default: 
     172                    trigger_error('unknown escape type. ' . var_export(func_get_args(), true), E_USER_WARNING); 
     173                    break; 
     174            } 
     175        } 
     176 
     177        return $return; 
    85178    } 
    86179 
Note: See TracChangeset for help on using the changeset viewer.