ホームページ  >  記事  >  バックエンド開発  >  thinkphp は多言語機能を実装します (言語パック)_PHP チュートリアル

thinkphp は多言語機能を実装します (言語パック)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:37:081802ブラウズ

1. ホームの config.php に次の設定を追加します (選択したプロジェクト名)

コードをコピーします コードは次のとおりです:

return array(
//'構成項目' =>'構成値'
'LANG_SWITCH_ON' => true, / /言語パック機能を有効にする 'LANG_AUTO_DETECT' _LIST' => 'en-us,zh-cn,zh -tw ', //許可される言語のリストを記述する必要があります
'VAR_LANGUAGE' => 'l', //デフォルトの言語切り替え変数
?>
2.ホームのconfフォルダーにphpファイル(tag.php)を追加し、次のコードを追加します:


コードをコピーします。 コードは次のとおりです:
Return array (

// 次の定義行を

'app_begin' = & gt; array ('checklang');

) 3. Extend/Behavior/CheckLangBehavior.class.php ファイルを Home/lib/Behavior/ にコピーします (thinkphp パッケージのフルバージョンのみが利用可能です。ない場合は自分で作成してください)。 CheckLangBehavior.class.php コード:


コードをコピーします

コードは次のとおりです:

defined('THINK_PATH') or exit();
/**
* 语言检测 并自动加载语言包
* @category Extend
* @package Extend
* @subpackage Behavior
*/
class CheckLangBehavior extends Behavior {
// 行为参数定义(默认值) 可在项目配置中覆盖
protected $options = array(
'LANG_SWITCH_ON' => false,   // 默认关闭语言包功能
            'LANG_AUTO_DETECT'      => true,   // 自动侦测语言 开启多语言功能后有效
            'LANG_LIST'             => 'zh-cn', // 允许切换的语言列表 用逗号分隔
            'VAR_LANGUAGE'          => 'l',        // 默认语言切换变量
        );

    // 行为扩展的执行入口必须是run
    public function run(&$params){
        // 开启静态缓存
        $this->checkLanguage();
    }

    /**
     * 语言检查
     * 检查浏览器支持语言,并自动加载语言包
     * @access private
     * @return void
     */
    private function checkLanguage() {
        // 不开启语言包功能,仅仅加载框架语言文件直接返回
        if (!C('LANG_SWITCH_ON')){
            return;
        }
        $langSet = C('DEFAULT_LANG');
        // 启用了语言包功能
        // 根据是否启用自动侦测设置获取语言选择
        if (C('LANG_AUTO_DETECT')){
            if(isset($_GET[C('VAR_LANGUAGE')])){
                $langSet = $_GET[C('VAR_LANGUAGE')];// url中设置了语言变量
                cookie('think_language',$langSet,3600);
            }elseif(cookie('think_language')){// 获取上次用户的选择
                $langSet = cookie('think_language');
            }elseif(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){// 自动侦测浏览器语言
                preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
                $langSet = $matches[1];
                cookie('think_language',$langSet,3600);
            }
            if(false === stripos(C('LANG_LIST'),$langSet)) { // 非法语言参数
                $langSet = C('DEFAULT_LANG');
            }
        }
        // 定义当前语言
        define('LANG_SET',strtolower($langSet));

$group = '';
$group = '' ; // プロジェクトのパブリック言語パッケージを読み取ります
iF (is_file (lang_path.lang_set. '/Commit.php')
l (influde lang_path.lang_set. '/ Commit.php');
// 言語パック public public を読み取ります。一般的なグループ化
$file = $path.GROUP_NAME.'.php';
$group = GROUP_NAME.C('TMPL_FILE_DEPR'); ))

);
}}}



4. ホームの lang フォルダーの下に 3 つの言語フォルダーを作成します。 zh-cn en-us zh-tw です

図に示すように、これら 3 つのフォルダーのそれぞれに common.php ファイルを作成します。 P Common.php のコードをコピーします



コードをコピーします

コードは次のとおりです:

& lt;? Php

return array (

'welcome' = & gt; 'Thinkphp の使用へようこそ',

) ;

? & gt; 代 コード

を次のようにコピーします: & lt;? Phpreturn array (
'welcome' = & gt;

コードは次のとおりです:
return array(
'welcome'=>'ThinkPHP へようこそ',
);
?>

5. tpl/Index/フォルダーにビューindex.htmlを作成します
コードをコピーします

コードは次のとおりです:



ThinkPHP の例: 多言語 < ;body> ;
言語を切り替える: 簡体字中国語 ? l=zh-tw">繁体字中国語 | 英語
{$Think.lang.welcome}






完了!
背景言語を切り替えたい場合は、次のように各文の前に L を追加します:

コードをコピーします コードは次のとおりです:
public functionindex(){
print L('add_user_error') //add_user_error は単なる言語変数であり、特定の言語を言語パッケージ
$this-> ;display();
}

cakephp のほうが優れていると思います。すべての文に変数を与える必要はありません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/736806.html技術記事 1. ホーム (選択したプロジェクト名) の config.php に次の設定を追加します。次のようにコードをコピーします。 ?php return array( //'Configuration item'='Configuration value' 'LANG_SWITCH_ON' = true, //言語パッケージ機能を有効にする...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。