Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

分享Discuz!之初窥门径——聊聊语言包

[复制链接]
习明 发表于 2007-6-7 00:34:47 | 显示全部楼层 |阅读模式
  接触Discuz!有将近一年了,学习始终没有停止,Discuz!让我从零开始学习PHP,学习MYSQL,学习数不清的技术和技巧,作为一个菜鸟中的老手,将我在学习和使用Discuz!中得到的一些经验与大家分享,本人文字功力有限,各位D友多多指正。言归正传,今天主要说说语言包
  有人可能看到这个题目的第一反应就是:语言包,这东西有啥好说的,就是一些变量对应的文字而已。那好,且看下去。

一、语言包之简介
  Discuz!程序的语言包通常为存在于 ./templates/default/ 目录下 *.lang.php 文件,5.5原版有13个语言包文件分别为:

templates.lang.php                          模版语言包
messages.lang.php                          提示信息语言包:系统提示内容文字
admincp.lang.php                           系统设置语言包:后台管理中的文字
misc.lang.php                                 混杂语言包:一些论坛相关的文字
pms.lang.php                                 站内短信语言包
magics.lang.php                              道具使用语言包
actions.lang.php                              用户行为语言包:在线列表中用以标识用户当前行为
emails.lang.php                               Email相关语言包
modactions.lang.php                       管理信息语言包:管理操作的英文所写及对应文字信息
spaces.lang.php                              mini-space语言包
archiver.lang.php                            存档文件语言包:存档模式下的文字
wap.lang.php                                 wap语言包
customfaq.lang.php                         Discuz! Board 的特别使用帮助

  当然最常用的是templates和messages这两个。

二、语言包之巧改模版
  很多人对于Discuz!内置模版并不满意,希望改出自己的个性,但因为模版中没有一个中文,苦于无从下手,不知从何改起。这个时候就有语言包的用武之地了。
  例如有会员提问:“查看新帖”不够醒目,如何修改。如果模版里是中文的 “查看新帖” 四个字,你还会找不到么? 首先判断一下,这个文字应该是模版里的调用(就算判断不出,也先看看templates) 用记事本之类的工具打开templates.lang.php 查找 “查看新帖” 运气不错,只有一处
  1. 'show_newthreads' => '查看新帖',
复制代码
这个文字只有首页出现过 那应该是在discuz.htm模版里 现在用记事本打开 discuz.htm模版 查找
  1. {lang show_newthreads}
复制代码
看到了没? 那里就是查看新帖的位置。这样一来 你要如何醒目就是你自己的事情了。

  当然很多时候并不是这么幸运,例如在首页右上角有一个 “今日”(贴数),而横排板块时也会有个 “今日”,去templates.lang.php一查,“今日”这两个字有好几处,即便是完全匹配的也有两处。这时候就需要一些E文知识或者经验了
  1. 'index_today' => '今日',
  2. 'forum_todayposts' => '今日',
复制代码

究竟哪个对应的是右上角的今日总贴数呢? index是索引的意思,很多网站的主页都用index.XXX 包括Discuz!;forum可以有论坛的意思,所以index_today是总贴数 forum_todayposts 是分论坛的
  这里只是举例说明,即便不知道这些,也完全可以自己尝试出来。比如把其中一个改为“今日贴数” 然后去主页看看哪个变了
  有些时候文字的内容很多,其中还包含一些变量的成分(如用户名),直接搜索整条文字可能找不到,此时可以将文字断开,取中文最长的部分去搜索。另外,应该灵活变通,例如想修改在线列表的某些内容,但在线列表里全都是用户名,查什么呢?查离它最近的内容,比如“在线用户”或者“最高记录是”,然后在模版中找到对应的位置,再在它附近找我们要的内容。

三、语言包之善用提示
  Discuz!的信息提示有4种模式:1.显示信息内容,附加一个“如未自动跳转”的链接,这种信息提示有自动转到指定页面的功能;2.显示信息内容,并出现[ 点击这里返回上一页 ]连接,这种信息提示只有点击链接才会返回上一页;3.提示无权操作,并要求输入用户名密码或重新登陆;4. 只有提示信息
  可能有人会问,还有种是可以自选返回哪个页面的 比如编辑帖后可以选回到列表页面或主题页面,其实如果仔细看一下代码就会知道,这是第一种的变形。
  对于第一种,其实就是在Discuz!自定义的showmessage函数中,使用了两个参数。型如:
  1. showmessage("语言包是个好东西!","https://discuz.dismall.com/");
复制代码
前面的"语言包是个好东西!"即为信息提示内容,后面的网址也就是自动跳转的目的地。

  而第二种,我们可以发现,这种返回链接式的提示信息有一个共同的特点:提示文字中都含有“返回”两个字,显示提示信息的时候,系统会判断提示文字中是否含有这两个字,如果有就会提供一个返回链接。这是有前提的,那就是当没有提供第一种模式中的跳转链接时才会按此执行。
  后面两种暂且不说,因为一个涉及的东西和本文无关,另一个就是即不提供跳转地址也不加返回的。
  那么这个和语言包有什么关系?对于普通使用者或许没什么,但对于开发Discuz!插件的作者,了解这个功能可以在开发过程中加以应用,是很必要的。说一句题外话,很多开发者都不喜欢使用语言包,习惯于直接在模版或php代码中加入文字内容,其实个人认为这样是很不明智的。语言包的存在使得程序的可移植性增强了,即便是不同编码之间,只需要对语言包进行重编码即可正常使用,而不需要逐个将文件重编,以变量形式调取的文字内容,修改起来也十分方便。

[ 本帖最后由 习明 于 2007-9-16 20:35 编辑 ]

评分

6

查看全部评分

 楼主| 习明 发表于 2007-6-7 00:37:01 | 显示全部楼层
趁没人 抢占沙发!
回复

使用道具 举报

cell007 发表于 2007-6-7 00:38:09 | 显示全部楼层
前排,支持lz!
回复

使用道具 举报

yunings 发表于 2007-6-7 01:03:29 | 显示全部楼层
非常有用的帖子,感谢楼主。收藏了,用来个性化社区提示信息,哈
回复

使用道具 举报

SilentHunter 发表于 2007-6-7 01:46:14 | 显示全部楼层
感谢实习版主的分享:)
回复

使用道具 举报

碧空情缘 发表于 2007-6-7 01:51:05 | 显示全部楼层
:) :) :)
回复

使用道具 举报

H5N1 发表于 2007-6-7 01:53:57 | 显示全部楼层
不错不错!!多发一些!~~~~~~~~~~~~~
回复

使用道具 举报

togetherhappy 发表于 2007-6-7 02:54:13 | 显示全部楼层
标签收藏!!!
回复

使用道具 举报

文文滴 发表于 2007-6-7 03:06:22 | 显示全部楼层
支持+收藏
楼主人很爱帮别人,又有才哈哈
回复

使用道具 举报

crc4590699 发表于 2007-6-7 06:37:47 | 显示全部楼层
路过~~~`~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-21 02:24 , Processed in 0.108907 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表