Ignore:
Timestamp:
2012/06/12 20:58:43 (12 years ago)
Author:
pineray
Message:

#163 国際化対応

再度適用.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/util/SC_Utils.php

    r21867 r21916  
    17361736    } 
    17371737 
    1738  
     1738    /** 
     1739     * メッセージエイリアスを翻訳する. 
     1740     * 
     1741     * @param string $string メッセージエイリアス 
     1742     * @param array $args 置換用のパラメーター 
     1743     * @param array $options オプション 
     1744     * @return string 表示するメッセージ 
     1745     */ 
     1746    function t($string, $args = array(), $options = array()) { 
     1747        // 言語コードが指定されていなければ、サイトの言語コードを使用する 
     1748        if (empty($options['lang_code'])) { 
     1749            $options['lang_code'] = LANG_CODE; 
     1750        } 
     1751        // 機種IDが指定されていなければ、機種を判別する 
     1752        if (empty($options['device_type_id'])) { 
     1753            $options['device_type_id'] = SC_Display_Ex::detectDevice(); 
     1754        } 
     1755 
     1756        // メッセージエイリアスに対応する、指定言語の文字列を取得 
     1757        $translated = SC_Helper_Locale_Ex::get_locale($string, $options['lang_code'], $options['device_type_id']); 
     1758 
     1759        // パラメーターが指定されていれば、メッセージを置換する 
     1760        if (empty($args)) { 
     1761          return $translated; 
     1762        } 
     1763        else { 
     1764          return strtr($translated, $args); 
     1765        } 
     1766    } 
     1767 
     1768    /** 
     1769     * メッセージエイリアス翻訳の複数形対応. 
     1770     * 
     1771     * @param integer $count 表示する数値 
     1772     * @param string $single メッセージエイリアス(単数) 
     1773     * @param string $plural メッセージエイリアス(複数) 
     1774     * @param array $args 置換用のパラメーター 
     1775     * @param array $options オプション 
     1776     * @return string 表示するメッセージ 
     1777     */ 
     1778    function t_plural($count, $single, $plural, $args = array(), $options = array()) { 
     1779        // 置換用のパラメーターに数値を追加 
     1780        $args[':count'] = number_format($count); 
     1781 
     1782        // 言語コードが指定されていなければ、サイトの言語コードを使用する 
     1783        if (empty($options['lang_code'])) { 
     1784            $options['lang_code'] = LANG_CODE; 
     1785        } 
     1786        // 機種IDが指定されていなければ、機種を判別する 
     1787        if (empty($options['device_type_id'])) { 
     1788            $options['device_type_id'] = SC_Display_Ex::detectDevice(); 
     1789        } 
     1790 
     1791        // 適切な複数形の書式を判定 
     1792        $index = SC_Helper_Locale_Ex::get_plural_index($count, $options['lang_code']); 
     1793 
     1794        // pluralの文字列はnull文字で結合されている 
     1795        $key = $single . chr(0) . $plural; 
     1796        // メッセージエイリアスに対応する、指定言語の文字列を取得 
     1797        $translated = SC_Helper_Locale_Ex::get_locale($key, $options['lang_code'], $options['device_type_id']); 
     1798        // null文字で分割 
     1799        $list = explode(chr(0), $translated); 
     1800 
     1801        return strtr($list[$index], $args); 
     1802    } 
    17391803} 
Note: See TracChangeset for help on using the changeset viewer.