午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

多語言

ThinkPHP內置通過\think\Lang類(lei)提供多(duo)語言(yan)支持(chi),如果你的(de)應用(yong)涉及到國際化的(de)支持(chi),那么可以定義相關的(de)語言(yan)包文件。任何(he)字符(fu)串形式的(de)輸出,都可以定義語言(yan)常量。

開啟和加載語言包

默認情況下,系統載入的是配置的默認語言包,并且不會自動偵測當前系統的語言。
默認語言由default_lang配置(zhi)參數設(she)置(zhi),系統默認(ren)設(she)置(zhi)為(wei):

// 默認(ren)語言
'default_lang'           => 'zh-cn',

要啟用(yong)語(yu)言自(zi)動偵測(ce)和多語(yu)言自(zi)動切換,需(xu)要開啟多語(yu)言切換,在應(ying)用(yong)的公共(gong)配置文件添加:

// 開啟語言切換
'lang_switch_on' => true,   

開啟(qi)后,系統會(hui)自動檢(jian)(jian)測當前語言(主要是指(zhi)瀏(liu)覽器(qi)訪(fang)問的情況下(xia))會(hui)對兩(liang)種情況進行檢(jian)(jian)測:

  • 是否有$_GET['lang']
  • 識別$_SERVER['HTTP_ACCEPT_LANGUAGE']中的第一個語言
  • 檢測到任何一種情況下采用Cookie緩存
  • 如果檢測到的語言在允許的語言列表內認為有效,否則使用默認設置的語言

如果不希望瀏覽器自動偵測語言,請關閉lang_switch_on后設置默認語言。

如果在自動偵(zhen)測語言的(de)時候,希望(wang)設置允許(xu)的(de)語言列表,不在列表范圍的(de)語言則仍然使用默認語言,可(ke)以使用:

// 設置允許的語言
Lang::setAllowLangList(['zh-cn','en-us']);

語言變量定義

語言(yan)變量的(de)定義,只需要在需要使用(yong)多(duo)語言(yan)的(de)地方,寫(xie)成:

Lang::get('add user error');
// 使用系統封裝的助手函數
lang('add user error');

也就是說,字符串信息要改成Lang::get方法來表示。

語(yu)言定(ding)義(yi)一般采(cai)用英(ying)語(yu)來描述。

語言文件定義

系統會默認(ren)加載下(xia)面(mian)三個語言包:

框架語言包: thinkphp\lang\當(dang)前語言.php
應用語言包: application\lang\當前語言.php
模塊語言包: application\模(mo)\lang\當前語言.php

如(ru)果(guo)你還需要(yao)加載其他的語言包(bao),可以在設置或者(zhe)自動檢測語言之后,用(yong)load方法進行加載:

Lang::load(APP_PATH . 'common\lang\zh-cn.php');

ThinkPHP語言文件定(ding)義采用返(fan)回數(shu)組方式:

return [
     'hello thinkphp'  => '歡迎使用ThinkPHP',
     'data type error' => '數(shu)據類型錯誤',
];

也(ye)可(ke)以在(zai)程序里面動態設置語言(yan)定義的值,使用下面的方(fang)式:

Lang::set('define2','語言(yan)定義');
$value = Lang::get('define2');

通(tong)常(chang)多語(yu)(yu)言的(de)(de)使用是在(zai)控(kong)制器里面(mian)(mian),但是模型(xing)類(lei)的(de)(de)自動驗證功能里面(mian)(mian)會用到提示(shi)信息,這個部分也可以使用多語(yu)(yu)言的(de)(de)特性。例如原(yuan)來的(de)(de)方(fang)式是把(ba)提示(shi)信息直接寫在(zai)模型(xing)里面(mian)(mian)定義:

['title','require','標題必須!',1],

如果(guo)使用了(le)多語言(yan)功(gong)能的話(假設,我們(men)在當(dang)前語言(yan)包(bao)里面定義了(le)' lang_var'=>'標題必須!'),就可(ke)以這樣(yang)定義模型(xing)的自動驗證

['title','require','{%lang_var}',1],

如(ru)果要在模(mo)板中輸出語言變量不需要在控制器中賦值,可以直接使用(yong)模(mo)板引擎特殊(shu)標簽來直接輸出語言定義的值:

{$Think.lang.lang_var}

可以輸出當前語言包里面定義的 lang_var語言定義。

變量傳入支持

語言(yan)包定(ding)義的時候支持傳入變量(liang),有兩種方式

使用命名綁定方式(shi),例(li)如:

'file_format'    =>    '文件格式: {:format},文件大小:{:size}',

在模板(ban)中輸出語言字符串(chuan)的時候傳入變量值(zhi)即可:

{:lang('file_format',['format' => 'jpeg,png,gif,jpg','size' => '2MB'])}

第二種方式是使(shi)用格式字串,如(ru)果你需要使(shi)用第三方的翻譯工具,建議使(shi)用該方式定義變量。

'file_format'    =>    '文(wen)(wen)件格式: %s,文(wen)(wen)件大小(xiao):%d',

在模板中輸出多語言的(de)方式(shi)更改(gai)為:

{:lang('file_format',['jpeg,png,gif,jpg','2MB'])}
文檔最后更新時間:2018-04-26 10:52:50

文檔
目錄

深色
模(mo)式

切換
寬度