现在的位置: 首页 > 综合 > 正文

discuz 插件语言包

2013年03月07日 ⁄ 综合 ⁄ 共 2999字 ⁄ 字号 评论关闭

插件语言包

Discuz现在有四个编码的的源代码,分别是GBK,BIG5,UTF8SC,UTF8TC,所以下载安装时,要选择对应编码的源代码包。可以看出DZ也没有方法整合四个编码的源代码,所以在插件开发时,编码是很重要的。

那么插件里是如何区分不同编码的呢?
如果在php代码或模板里用中文字符,那么你用什么编码设计的,只能显示什么编码的。其它编码的网站安装时会出现乱码。DZ是这样解决编码的。
如下图所示:


新版本兼容的语言编码
如需自动转码,请在文件包中包含下面的文件:
discuz_plugin_it618_onlineserver.xml (简体中文编码)
文件包中已手动转码的请忽略本设置

xml配置文件是可以被DZ自动转码的,所以当你在应用的后台设置里填中文字符,是可以正常显示的。
但是你不能在代码输出中文字符,但是DZ提供了语言包。

可以手工添加语言包到xml配置文件里。
  <item id="language">
   <item id="scriptlang">
    <item id="it618_copyright"><![CDATA[插件设计:<a href=\"http://www.cnit618.com\" target=\"_blank\" title=\"为站长解决问题的网站\">IT618资讯网</a>]]></item>
   </item>
   <item id="templatelang">
    <item id="it618_copyright"><![CDATA[插件设计:<a href="http://www.cnit618.com" target="_blank" title="为站长解决问题的网站">IT618资讯网</a>]]></item>
   </item>
  </item>

language 是语言包的根结点 
scriptlang 是脚本语言包部分 调用方法:lang('plugin/it618_onlineserver', 'it618_copyright')
templatelang 是模板语言包部分 调用方法:{lang it618_onlineserver:it618_copyright}

============================================================================================================
  1. /** 
  2. * 加载语言 
  3. * @param $file - 语言文件,可包含路径如 forum/xxx home/xxx 
  4. * @param $langvar - 语言文字索引 
  5. * @param $vars - 变量替换数组 
  6. * @return 语言文字 
  7. */  
  8. function lang($file$langvar = null, $vars = array())  

此函数可加载 Discuz! X 中的所有语言包。
$file 如果写成不包含路径的文件,则代表 source/language 目录下的文件。如果包含目录,如 'forum/misc',则代表 source/language/forum/lang_misc.php 文件。如果写成 plugin/插件id,则会读取插件的语言包文件,即 data/plugindata/lang_plugin.php,此文件是根据安装并启用的插件缓存后生成的。
...[/more]
任何语言内容均可增加可替换的变量
如语言包内容为“你好 {username}”
那么 $vars = array('username' => $username) 时,{username} 会显示成 $username 变量的值。
当插件语言包文件(data/plugindata/lang_plugin.php)内容为:


  1. <?php  
  2. $lang = array (  
  3.   'test' =>   
  4.   array (  
  5.     'name' => '葫芦',  
  6.   ),  
  7. );  
  8. ?>  


以下代码可调用“葫芦”二字

  1. echo lang('plugin/test''name');  

=======================================================================================================
  • 创建语言包

给插件创建语言包首先需要创建一个 data/plugindata/identifier.lang.php 文件,文件内容中包含 3 个数组,如下:

<?php

$scriptlang['identifier'] = array(
  'english' => 'chinese',
  ...
);

$templatelang['identifier'] = array(
  'english' => 'chinese',
  ...
);

$installlang['identifier'] = array(
  'english' => 'chinese',
  ...
);

?>

$scriptlang 为程序脚本文件的语言包,$templatelang 为模版文件的语言包,$installlang 为安装、升级、卸载脚本用的语言包。 如果插件不涉及某些类型的语言文字,变量可忽略。

然后在插件基本设置中开启语言包选项后即可。

  • 调用语言包

模版中调用模板文件语言包,通过 {lang identifier:english} 方式调用。

程序脚本中调用脚本文件语言包,通过 lang('plugin/identifier', 'english') 方式调用。

安装脚本中调用安装脚本文件语言包,通过 $installlang 变量直接获取。如 $installlang['english']。

  • 语言包导出

创建好的语言包在插件导出后会自动导出到 XML 文件中,供插件作者转码后发放多编码版本的插件。如上例中导出的 XML 中会包含以下内容:

<item id="language">
	<item id="scriptlang">
		<item id="english"><![CDATA[chinese]]></item>
	</item>
	<item id="templatelang">
		<item id="english"><![CDATA[chinese]]></item>
	</item>
	<item id="installlang">
		<item id="english"><![CDATA[chinese]]></item>
	</item>
</item>

data/plugindata/identifier.lang.php 文件不必在插件发布的时候导出,此文件仅供插件设计者模式时使用。

插件模板

插件的模板统一放置到 source/plugin/identifier/template 目录下,程序脚本通过以下语句调用插件模板文件,如下例,调用 source/plugin/identifier/template/test.htm

include template('identifier:test');

模版中调用插件模版通过以下方法:

{template identifier:test}

模板的编写详见模板创建、解析原理详解

抱歉!评论已关闭.