选择语言 :

 Core_I18n::setup

null Core_I18n::setup( )
File: ./core/classes/i18n.class.php
public static function setup()
{
    # 增加回调
    Core::import_library_add_callback('I18n::import_lib_callback');

    # 获取用户语言
    $accept_language = I18n::accept_language();

    $lang_key = implode('_', $accept_language);

    # 根据类库加载信息获取key
    $libs_key = array();
    foreach (array_reverse(Core::$include_path) as $nslib=>$libs)
    {
        $libs = array_reverse($libs);
        foreach ($libs as $k=>$path)
        {
            $libs_key[] = $libs.'.'.$k;
        }
    }
    $libs_key = md5(implode(',', $libs_key));

    $key = 'lang_cache_by_' . $libs_key . '_for_' . $lang_key;

    # 获取缓存数据
    $lang = Cache::instance(I18n::$cache_config)->get($key);

    if ($lang)
    {
        I18n::$lang[Core::$project]     = $lang;
        I18n::$is_setup[Core::$project] = true;
        return;
    }

    # 逆向排序,调整优先级
    $accept_language = array_reverse($accept_language);

    # 记录各个类库的解析后的内容
    static $static_lib_array = array();

    # 获取语言文件
    $lang = array();

    foreach (array_reverse(Core::$include_path) as $ns=>$libs)
    {
        $libs = array_reverse($libs);
        foreach ($libs as $lib=>$path)
        {
            $nslib = $ns.'.'.$lib;
            foreach($accept_language as $l)
            {
                if (isset($static_lib_array[$nslib][$l]))
                {
                    $lang = array_merge($lang, $static_lib_array[$nslib][$l]);
                }
                else
                {
                    $file = $path . 'i18n' . DS . $l . '.lang';

                    if (is_file($file))
                    {
                        $static_lib_array[$nslib][$l] = (array)@parse_ini_file($file);
                    }
                    else
                    {
                        $static_lib_array[$nslib][$l] = array();
                    }

                    # 合并语言包
                    if ($static_lib_array[$nslib][$l])
                    {
                        $lang = array_merge($lang, $static_lib_array[$nslib][$l]);
                    }
                }
            }
        }
    }

    I18n::$lang[Core::$project]     = $lang;
    I18n::$is_setup[Core::$project] = true;

    # 写缓存
    Cache::instance(I18n::$cache_config)->set($key, $lang, '86400~172800,1/1000', Cache::TYPE_ADV_AGE);
}