ThinkPHP多語言在分組下的用法!

來源:互聯網
上載者:User

簡介:這是ThinkPHP多語言在分組下的用法!的詳細頁面,介紹了和php,PHP ThinkPHP多語言在分組下的用法!有關的知識、技巧、經驗,和一些php源碼等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=325720' scrolling='no'>
參考:http://www.coderblog.in/2010/11/thinkphp-multilingual-with-group.html

ThinkPHP2.0開始就可以支援項目分組,分組的好處是可以讓整個項目層次更加清晰,也許是因為習慣了.net的清晰分層,所以我覺得在一個項目裡,不管大小,都應該層次分明,這樣方便管理之餘也方便代碼的分離。

ThinkPHP的分組功能可讓你分別建立多個目錄以對應不同的分組,如可分為 Admin 和 Home 2個組,就可以在 Action 下建立不同的目錄,感覺這樣是挺清晰方便的。不過也正是因為使用了分組功能,導致在多語言項目時就會出現些預想不到的問題了,總是找不到對應的語言檔案來解釋,所有標籤都直接輸出大寫了。

開始一直找不出問題,寫法都沒錯的啊,感覺這點官方的手冊上說得並不清楚哦,如果按手冊上做,根本出不來效果,然後只好直接跟蹤源碼查看個究竟了。

其實如果查看一下檢測多語言的那段代碼就會很清楚是怎麼回事了,此代碼是在 ThinkPHP/Lib/Think/Core/App.class.php ,以下是主要的代碼:

// 不開啟語言套件功能,僅僅載入架構語言檔案直接返回if (!C('LANG_SWITCH_ON')){  L(include THINK_PATH.'/Lang/'.$langSet.'.php');  return;}

剛開始就是卡在這裡了,如果要使用自己定義的語言,這個選擇必須開啟,然後就是語言檔案的路徑存放問題,繼續往下看:

// 定義當前語言define('LANG_SET',strtolower($langSet));// 載入架構語言套件if(is_file(THINK_PATH.'/Lang/'.LANG_SET.'.php'))   L(include THINK_PATH.'/Lang/'.LANG_SET.'.php');// 讀取項目公用語言套件if (is_file(LANG_PATH.LANG_SET.'/common.php'))   L(include LANG_PATH.LANG_SET.'/common.php');$group = '';// 讀取當前分組公用語言套件// 例如定義了分組GROUP_NAME為Admin,則路徑為:// 當前項目路徑/zh-cn/Admin/lang.phpif (defined('GROUP_NAME')){   $group = GROUP_NAME.C('TMPL_FILE_DEPR');   if (is_file(LANG_PATH.LANG_SET.'/'.$group.'lang.php'))       L(include LANG_PATH.LANG_SET.'/'.$group.'lang.php');}// 讀取當前模組語言套件// 例如當前為為MemberAction模組,則模組名為:Member,語言檔案名稱為:member.php(檔案名稱為小寫)if (is_file(LANG_PATH.LANG_SET.'/'.$group.strtolower(MODULE_NAME).'.php'))   L(include LANG_PATH.LANG_SET.'/'.$group.strtolower(MODULE_NAME).'.php'); 

看完後就應該非常清楚了吧,呵,如果定義了分組,就必須按以下目錄結構和規則命名:

Lang

  -- 語言編碼如(zh-cn)

  -- 分組名

     --模組名.php

     --lang.php(此為本組的公用語言套件)

還是舉個例比較好理解,如我項目分為2組:

Admin, Home,在Admin下有一個名為 LoginAction.class.php 的操作,現要為Admin下建立多語言套件,那麼目錄結構應該為:

Lang

-- zh-cn

  -- Admin

     -- login.php (對應login操作)

     -- lang.php (Admin下的公用語言)

當然,最後別忘記要開啟LANG_SWITCH_ON的配置,否則就全部返回大寫了:

LANG_SWITCH_ON => true

“ThinkPHP多語言在分組下的用法!”的更多相關文章 》

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/325720.html pageNo:14

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.