グループ化における ThinkPHP の多言語の使用

WBOY
リリース: 2016-06-13 13:02:50
オリジナル
795 人が閲覧しました

ThinkPHP をグループ化で多言語で使用する方法!
参考: http://www.coderblog.in/2010/11/thinkphp-multilingual-with-group.html

ThinkPHP2.0 は最初からプロジェクトのグループ化をサポートできます。グループ化の利点は、プロジェクト全体を階層化する .net の明確な階層化に慣れているためか、より明確です。そのため、管理とコードを容易にするために、プロジェクトの大小に関わらず、プロジェクトを明確に階層化する必要があると感じます。分離。

ThinkPHP のグループ化機能を使うと、例えば Admin グループと Home グループに分けてディレクトリを作成できるので、とても便利です。ただし、グループ化機能を使用しているため、多言語プロジェクトでは、対応する言語ファイルが見つからず、すべてのタグが直接大文字で出力されるという予期せぬ問題が発生します。

最初は問題が見つかりませんでした。公式マニュアルではこの点が明確ではないような気がします。ソースコードを直接確認して確認する必要があります。

実際、複数の言語を検出するコードを見れば、何が起こっているかが正確にわかります。このコードは 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.php
if (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 (ログイン操作に対応)
-- lang.php (Admin 下の共通言語)


もちろん、最後の構成で
LANG_SWITCH_ON を開くことを忘れないでください。そうしないと、すべての大文字が返されます。
LANG_SWITCH_ON =>真実

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート