diff --git a/build/windows/xampp/index.php b/build/windows/xampp/index.php
index 1b817d7f5c..ee6dc35152 100644
--- a/build/windows/xampp/index.php
+++ b/build/windows/xampp/index.php
@@ -1,83 +1,83 @@
-langs['cn'] = '中文简体';
-$config->langs['en'] = 'EN';
-
-$lang->cn->title = '欢迎使用禅道集成运行环境!';
-$lang->cn->poweredBy = "由xampp 精简而来";
-
-$lang->cn->links['zentao']['link'] = '/zentao/';
-$lang->cn->links['zentao']['text'] = '访问禅道';
-$lang->cn->links['zentao']['target'] = '_self';
-$lang->cn->links['official']['link'] = 'http://www.zentao.net/';
-$lang->cn->links['official']['text'] = '禅道官网';
-$lang->cn->links['official']['target'] = '_blank';
-$lang->cn->links['sqlbudyy']['link'] = '/sqlbuddy/';
-$lang->cn->links['sqlbudyy']['text'] = '数据库管理';
-$lang->cn->links['sqlbudyy']['target'] = '_blank';
-$lang->cn->links['phpinfo']['link'] = '?mode=phpinfo';
-$lang->cn->links['phpinfo']['text'] = 'PHP信息';
-$lang->cn->links['phpinfo']['target'] = '_blank';
-
-$lang->en->title = 'Welcome to use zentao!';
-$lang->en->poweredBy = "reduced from xampp ";
-
-$lang->en->links['zentao']['link'] = '/zentao/';
-$lang->en->links['zentao']['text'] = 'ZenTao';
-$lang->en->links['zentao']['target'] = '_self';
-$lang->en->links['official']['link'] = 'http://www.zentao.net/';
-$lang->en->links['official']['text'] = 'Community';
-$lang->en->links['official']['target'] = '_blank';
-$lang->en->links['sqlbudyy']['link'] = '/sqlbuddy/';
-$lang->en->links['sqlbudyy']['text'] = 'MySQL';
-$lang->en->links['sqlbudyy']['target'] = '_blank';
-$lang->en->links['phpinfo']['link'] = '?mode=phpinfo';
-$lang->en->links['phpinfo']['text'] = 'PHP';
-$lang->en->links['phpinfo']['target'] = '_blank';
-
-if(is_file('./my.php')) include './my.php';
-
-$acceptLang = stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh-CN') !== false ? 'cn' : 'en';
-$acceptLang = isset($_GET['lang']) ? $_GET['lang'] : $acceptLang;
-$clientLang = $lang->$acceptLang;
-?>
-
-
-
-
-
- title;?>
-
-
-
-
-
-
- title;?>
-
-
- links as $linkID => $link) echo "$link[text] ";?>
-
-
-
- poweredBy . ' ';
- foreach($config->langs as $langCode => $langName) echo "$langName ";
- ?>
-
-
-
-
-
+langs['cn'] = '中文简体';
+$config->langs['en'] = 'EN';
+
+$lang->cn->title = '欢迎使用禅道集成运行环境!';
+$lang->cn->poweredBy = "由xampp 精简而来";
+
+$lang->cn->links['zentao']['link'] = '/zentao/';
+$lang->cn->links['zentao']['text'] = '访问禅道';
+$lang->cn->links['zentao']['target'] = '_self';
+$lang->cn->links['official']['link'] = 'http://www.zentao.net/';
+$lang->cn->links['official']['text'] = '禅道官网';
+$lang->cn->links['official']['target'] = '_blank';
+$lang->cn->links['sqlbudyy']['link'] = '/sqlbuddy/';
+$lang->cn->links['sqlbudyy']['text'] = '数据库管理';
+$lang->cn->links['sqlbudyy']['target'] = '_blank';
+$lang->cn->links['phpinfo']['link'] = '?mode=phpinfo';
+$lang->cn->links['phpinfo']['text'] = 'PHP信息';
+$lang->cn->links['phpinfo']['target'] = '_blank';
+
+$lang->en->title = 'Welcome to use zentao!';
+$lang->en->poweredBy = "reduced from xampp ";
+
+$lang->en->links['zentao']['link'] = '/zentao/';
+$lang->en->links['zentao']['text'] = 'ZenTao';
+$lang->en->links['zentao']['target'] = '_self';
+$lang->en->links['official']['link'] = 'http://www.zentao.net/';
+$lang->en->links['official']['text'] = 'Community';
+$lang->en->links['official']['target'] = '_blank';
+$lang->en->links['sqlbudyy']['link'] = '/sqlbuddy/';
+$lang->en->links['sqlbudyy']['text'] = 'MySQL';
+$lang->en->links['sqlbudyy']['target'] = '_blank';
+$lang->en->links['phpinfo']['link'] = '?mode=phpinfo';
+$lang->en->links['phpinfo']['text'] = 'PHP';
+$lang->en->links['phpinfo']['target'] = '_blank';
+
+if(is_file('./my.php')) include './my.php';
+
+$acceptLang = stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh-CN') !== false ? 'cn' : 'en';
+$acceptLang = isset($_GET['lang']) ? $_GET['lang'] : $acceptLang;
+$clientLang = $lang->$acceptLang;
+?>
+
+
+
+
+
+ title;?>
+
+
+
+
+
+
+ title;?>
+
+
+ links as $linkID => $link) echo "$link[text] ";?>
+
+
+
+ poweredBy . ' ';
+ foreach($config->langs as $langCode => $langName) echo "$langName ";
+ ?>
+
+
+
+
+
diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php
index 73a20eeb01..f483a12ae4 100644
--- a/module/common/lang/zh-cn.php
+++ b/module/common/lang/zh-cn.php
@@ -1,300 +1,300 @@
-
- * @package ZenTaoPMS
- * @version $Id$
- * @link http://www.zentao.net
- */
-$lang->arrow = ' ';
-$lang->colon = '::';
-$lang->comma = ',';
-$lang->dot = '。';
-$lang->at = ' 于 ';
-$lang->downArrow = '↓';
-
-$lang->ZenTaoPMS = '禅道管理';
-$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
-$lang->myControl = "我的地盘";
-$lang->currentPos = '当前位置:';
-$lang->logout = '退出';
-$lang->login = '登录';
-$lang->aboutZenTao = '关于';
-$lang->todayIs = '今天是%s,';
-$lang->runInfo = "时间: %s 毫秒, 内存: %s KB, 查询: %s.
";
-
-$lang->reset = '重填';
-$lang->edit = '编辑';
-$lang->copy = '复制';
-$lang->delete = '删除';
-$lang->close = '关闭';
-$lang->link = '关联';
-$lang->unlink = '移除';
-$lang->import = '导入';
-$lang->export = '导出';
-$lang->setFileName = '文件名:';
-$lang->activate = '激活';
-$lang->submitting = '稍候...';
-$lang->save = '保存';
-$lang->confirm = '确认';
-$lang->preview = '查看';
-$lang->goback = '返回';
-$lang->go = 'GO';
-$lang->more = '更多';
-
-$lang->actions = '操作';
-$lang->comment = '备注';
-$lang->history = '历史记录';
-$lang->attatch = '附件';
-$lang->reverse = '[切换顺序]';
-$lang->switchDisplay= '[切换显示]';
-$lang->switchHelp = '切换帮助';
-$lang->addFiles = '上传了附件 ';
-$lang->files = '附件 ';
-$lang->unfold = '+';
-$lang->fold = '-';
-
-$lang->selectAll = '全选';
-$lang->notFound = '抱歉,您访问的对象并不存在!';
-$lang->showAll = '++ 全部显示 ++';
-$lang->hideClosed = '-- 隐藏已结束 --';
-
-$lang->future = '未来';
-$lang->year = '年';
-$lang->workingHour = '工时';
-
-$lang->idAB = 'ID';
-$lang->priAB = 'P';
-$lang->statusAB = '状态';
-$lang->openedByAB = '创建';
-$lang->assignedToAB = '指派';
-$lang->typeAB = '类型';
-
-$lang->common->common = '公有模块';
-
-/* 主导航菜单。*/
-$lang->menu->my = ' 我的地盘|my|index';
-$lang->menu->product = '产品视图|product|index';
-$lang->menu->project = '项目视图|project|index';
-$lang->menu->qa = '测试视图|qa|index';
-$lang->menu->doc = '文档视图|doc|index';
-$lang->menu->company = '组织视图|company|index';
-$lang->menu->admin = '后台管理|admin|index';
-
-/* 查询条中可以选择的对象列表。*/
-$lang->searchObjects['bug'] = 'B:Bug';
-$lang->searchObjects['story'] = 'S:需求';
-$lang->searchObjects['task'] = 'T:任务';
-$lang->searchObjects['testcase'] = 'C:用例';
-$lang->searchObjects['project'] = 'P:项目';
-$lang->searchObjects['product'] = 'P:产品';
-$lang->searchObjects['user'] = 'U:用户';
-$lang->searchObjects['build'] = 'B:Build';
-$lang->searchObjects['release'] = 'R:发布';
-$lang->searchObjects['productplan'] = 'P:产品计划';
-$lang->searchObjects['testtask'] = 'T:测试任务';
-$lang->searchObjects['doc'] = 'D:文档';
-$lang->searchTips = '输入编号';
-
-/* 导出文件的类型列表。*/
-$lang->exportFileTypeList['csv'] = 'csv';
-$lang->exportFileTypeList['xml'] = 'xml';
-$lang->exportFileTypeList['html'] = 'html';
-
-/* 风格列表。*/
-$lang->themes['default'] = '默认';
-$lang->themes['green'] = '绿色';
-$lang->themes['red'] = '红色';
-$lang->themes['classblue'] = '经典蓝';
-
-/* 首页菜单设置。*/
-$lang->index->menu->product = '浏览产品|product|browse';
-$lang->index->menu->project = '浏览项目|project|browse';
-
-/* 我的地盘菜单设置。*/
-$lang->my->menu->account = ' %s' . $lang->arrow;
-$lang->my->menu->index = '首页|my|index';
-$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
-$lang->my->menu->task = '我的任务|my|task|';
-$lang->my->menu->bug = '我的Bug|my|bug|';
-$lang->my->menu->testtask = '我的测试|my|testtask|';
-$lang->my->menu->story = '我的需求|my|story|';
-$lang->my->menu->myProject = '我的项目|my|project|';
-$lang->my->menu->dynamic = '我的动态|my|dynamic|';
-$lang->my->menu->profile = array('link' => '我的档案|my|profile|', 'alias' => 'editprofile');
-$lang->todo->menu = $lang->my->menu;
-
-/* 产品视图设置。*/
-$lang->product->menu->list = '%s';
-$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
-$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
-$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
-$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
-$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
-$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
-$lang->product->menu->view = '概况|product|view|productID=%s';
-$lang->product->menu->edit = '编辑|product|edit|productID=%s';
-$lang->product->menu->delete = array('link' => '删除|product|delete|productID=%s', 'target' => 'hiddenwin');
-$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
-$lang->product->menu->order = '排序|product|order|productID=%s';
-$lang->product->menu->create = array('link' => ' 新增产品|product|create', 'float' => 'right');
-$lang->product->menu->project = array('link' => ' 项目列表|product|project|status=all&productID=%s', 'float' => 'right');
-$lang->product->menu->all = array('link' => ' 所有产品|product|index|locate=false', 'float' => 'right');
-$lang->story->menu = $lang->product->menu;
-$lang->productplan->menu = $lang->product->menu;
-$lang->release->menu = $lang->product->menu;
-
-/* 项目视图菜单设置。*/
-$lang->project->menu->list = '%s';
-$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
-$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
-$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
-$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
-$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
-$lang->project->menu->testtask = '测试申请|project|testtask|projectID=%s';
-$lang->project->menu->burn = '燃尽图|project|burn|projectID=%s';
-$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
-$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
-$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
-$lang->project->menu->linkstory = array('link' => '关联需求|project|linkstory|projectID=%s');
-$lang->project->menu->view = '概况|project|view|projectID=%s';
-$lang->project->menu->edit = '编辑|project|edit|projectID=%s';
-$lang->project->menu->delete = array('link' => '删除|project|delete|projectID=%s', 'target' => 'hiddenwin');
-$lang->project->menu->order = '排序|project|order|projectID=%s';
-$lang->project->menu->create = array('link' => ' 新增项目|project|create', 'float' => 'right');
-$lang->project->menu->copy = array('link' => ' 复制项目|project|create|projectID=©ProjectID=%s', 'float' => 'right');
-$lang->project->menu->all = array('link' => ' 所有项目|project|index|locate=false', 'float' => 'right');
-$lang->task->menu = $lang->project->menu;
-$lang->build->menu = $lang->project->menu;
-
-/* QA视图菜单设置。*/
-$lang->bug->menu->product = '%s';
-$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
-$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
-$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
-
-$lang->testcase->menu->product = '%s';
-$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
-$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
-$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
-
-$lang->testtask->menu->product = '%s';
-$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
-$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
-$lang->testtask->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
-
-/* 文档视图菜单设置。*/
-$lang->doc->menu->list = '%s';
-$lang->doc->menu->browse = array('link' => '文档列表|doc|browse|libID=%s');
-$lang->doc->menu->edit = '编辑文档库|doc|editLib|libID=%s';
-$lang->doc->menu->module = '维护模块|tree|browse|libID=%s&viewType=doc';
-$lang->doc->menu->delete = array('link' => '删除文档库|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
-$lang->doc->menu->create = array('link' => ' 新增文档库|doc|createLib', 'float' => 'right');
-
-/* 组织结构视图菜单设置。*/
-$lang->company->menu->name = '%s' . $lang->arrow;
-$lang->company->menu->browseUser = array('link' => '用户列表|company|browse', 'subModule' => 'user');
-$lang->company->menu->dept = array('link' => '部门维护|dept|browse', 'subModule' => 'dept');
-$lang->company->menu->browseGroup = array('link' => '权限分组|group|browse', 'subModule' => 'group');
-$lang->company->menu->edit = array('link' => '公司管理|company|edit');
-$lang->company->menu->dynamic = '组织动态|company|dynamic|';
-$lang->company->menu->addGroup = array('link' => ' 添加分组|group|create', 'float' => 'right');
-$lang->company->menu->addUser = array('link' => ' 添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
-$lang->dept->menu = $lang->company->menu;
-$lang->group->menu = $lang->company->menu;
-
-/* 用户信息菜单设置。*/
-$lang->user->menu->account = '%s' . $lang->arrow;
-$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
-$lang->user->menu->task = '任务列表|user|task|account=%s';
-$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
-$lang->user->menu->dynamic = '用户动态|user|dynamic|type=today&account=%s';
-$lang->user->menu->projectList = '项目列表|user|project|account=%s';
-$lang->user->menu->profile = array('link' => '用户信息|user|profile|account=%s', 'alias' => 'edit');
-$lang->user->menu->browse = array('link' => ' 用户管理|company|browse|', 'float' => 'right');
-
-/* 后台管理菜单设置。*/
-$lang->admin->menu->index = array('link' => '首页|admin|index', 'subModule' => 'admin');
-$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
-$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
-$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
-$lang->admin->menu->convert = array('link' => '从其他系统导入|convert|index', 'subModule' => 'convert');
-$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
-$lang->convert->menu = $lang->admin->menu;
-$lang->upgrade->menu = $lang->admin->menu;
-$lang->action->menu = $lang->admin->menu;
-$lang->extension->menu = $lang->admin->menu;
-$lang->editor->menu = $lang->admin->menu;
-$lang->mail->menu = $lang->admin->menu;
-
-/*菜单设置:分组设置。*/
-$lang->menugroup->release = 'product';
-$lang->menugroup->story = 'product';
-$lang->menugroup->productplan = 'product';
-$lang->menugroup->task = 'project';
-$lang->menugroup->build = 'project';
-$lang->menugroup->convert = 'admin';
-$lang->menugroup->upgrade = 'admin';
-$lang->menugroup->user = 'company';
-$lang->menugroup->group = 'company';
-$lang->menugroup->bug = 'qa';
-$lang->menugroup->testcase = 'qa';
-$lang->menugroup->testtask = 'qa';
-$lang->menugroup->people = 'company';
-$lang->menugroup->dept = 'company';
-$lang->menugroup->todo = 'my';
-$lang->menugroup->action = 'admin';
-$lang->menugroup->extension = 'admin';
-$lang->menugroup->editor = 'admin';
-$lang->menugroup->mail = 'admin';
-
-/* 错误提示信息。*/
-$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
-$lang->error->length = array("『%s』长度错误,应当为『%s』", "『%s』长度应当不超过『%s』,且不小于『%s』。");
-$lang->error->reg = "『%s』不符合格式,应当为:『%s』。";
-$lang->error->unique = "『%s』已经有『%s』这条记录了。";
-$lang->error->gt = "『%s』应当大于『%s』。";
-$lang->error->notempty = "『%s』不能为空。";
-$lang->error->empty = "『%s』必须为空。";
-$lang->error->equal = "『%s』必须为『%s』。";
-$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
-$lang->error->float = "『%s』应当是数字,可以是小数。";
-$lang->error->email = "『%s』应当为合法的EMAIL。";
-$lang->error->date = "『%s』应当为合法的日期。";
-$lang->error->account = "『%s』应当为合法的用户名。";
-$lang->error->passwordsame = "两次密码应当相等。";
-$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
-$lang->error->accessDenied = '您没有访问权限';
-
-/* 分页信息。*/
-$lang->pager->noRecord = "暂时没有记录";
-$lang->pager->digest = "共%s 条记录,每页 %s 条,页面:%s/%s ";
-$lang->pager->first = "首页";
-$lang->pager->pre = "上页";
-$lang->pager->next = "下页";
-$lang->pager->last = "末页";
-$lang->pager->locate = "GO!";
-
-$lang->zentaoSite = "官方网站";
-$lang->chinaScrum = "Scrum社区 ";
-$lang->agileTraining = "培训 ";
-$lang->donate = "捐助禅道 ";
-$lang->zentaoKeywords = "开源项目管理软件,项目管理,项目管理软件,pmp,pms,php框架,国产php框架,scrum工具,scrum管理工具,scrum管理软件,敏捷项目管理,禅道";
-$lang->zentaoDESC = "禅道项目管理软件(ZenTaoPMS)是一款国产的,基于LGPL协议,开源免费的项目管理软件(工具、系统),同时也是一款scrum管理工具。
- 它集产品管理、项目管理、测试管理于一体,同时还包含了事务管理、组织管理等诸多功能,是中小型企业项目管理的首选。禅道项目管理软件使用PHP + MySQL开发,
-基于自主的PHP开发框架──ZenTaoPHP而成。第三方开发者或者企业可以非常方便的开发插件或者进行定制。禅道在手,项目无忧!";
-
-/* 时间格式设置。*/
-define('DT_DATETIME1', 'Y-m-d H:i:s');
-define('DT_DATETIME2', 'y-m-d H:i');
-define('DT_MONTHTIME1', 'n/d H:i');
-define('DT_MONTHTIME2', 'n月d日 H:i');
-define('DT_DATE1', 'Y-m-d');
-define('DT_DATE2', 'Ymd');
-define('DT_DATE3', 'Y年m月d日');
-define('DT_DATE4', 'n月j日');
-define('DT_TIME1', 'H:i:s');
-define('DT_TIME2', 'H:i');
+
+ * @package ZenTaoPMS
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+$lang->arrow = ' ';
+$lang->colon = '::';
+$lang->comma = ',';
+$lang->dot = '。';
+$lang->at = ' 于 ';
+$lang->downArrow = '↓';
+
+$lang->ZenTaoPMS = '禅道管理';
+$lang->welcome = "欢迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
+$lang->myControl = "我的地盘";
+$lang->currentPos = '当前位置:';
+$lang->logout = '退出';
+$lang->login = '登录';
+$lang->aboutZenTao = '关于';
+$lang->todayIs = '今天是%s,';
+$lang->runInfo = "时间: %s 毫秒, 内存: %s KB, 查询: %s.
";
+
+$lang->reset = '重填';
+$lang->edit = '编辑';
+$lang->copy = '复制';
+$lang->delete = '删除';
+$lang->close = '关闭';
+$lang->link = '关联';
+$lang->unlink = '移除';
+$lang->import = '导入';
+$lang->export = '导出';
+$lang->setFileName = '文件名:';
+$lang->activate = '激活';
+$lang->submitting = '稍候...';
+$lang->save = '保存';
+$lang->confirm = '确认';
+$lang->preview = '查看';
+$lang->goback = '返回';
+$lang->go = 'GO';
+$lang->more = '更多';
+
+$lang->actions = '操作';
+$lang->comment = '备注';
+$lang->history = '历史记录';
+$lang->attatch = '附件';
+$lang->reverse = '[切换顺序]';
+$lang->switchDisplay= '[切换显示]';
+$lang->switchHelp = '切换帮助';
+$lang->addFiles = '上传了附件 ';
+$lang->files = '附件 ';
+$lang->unfold = '+';
+$lang->fold = '-';
+
+$lang->selectAll = '全选';
+$lang->notFound = '抱歉,您访问的对象并不存在!';
+$lang->showAll = '++ 全部显示 ++';
+$lang->hideClosed = '-- 隐藏已结束 --';
+
+$lang->future = '未来';
+$lang->year = '年';
+$lang->workingHour = '工时';
+
+$lang->idAB = 'ID';
+$lang->priAB = 'P';
+$lang->statusAB = '状态';
+$lang->openedByAB = '创建';
+$lang->assignedToAB = '指派';
+$lang->typeAB = '类型';
+
+$lang->common->common = '公有模块';
+
+/* 主导航菜单。*/
+$lang->menu->my = ' 我的地盘|my|index';
+$lang->menu->product = '产品视图|product|index';
+$lang->menu->project = '项目视图|project|index';
+$lang->menu->qa = '测试视图|qa|index';
+$lang->menu->doc = '文档视图|doc|index';
+$lang->menu->company = '组织视图|company|index';
+$lang->menu->admin = '后台管理|admin|index';
+
+/* 查询条中可以选择的对象列表。*/
+$lang->searchObjects['bug'] = 'B:Bug';
+$lang->searchObjects['story'] = 'S:需求';
+$lang->searchObjects['task'] = 'T:任务';
+$lang->searchObjects['testcase'] = 'C:用例';
+$lang->searchObjects['project'] = 'P:项目';
+$lang->searchObjects['product'] = 'P:产品';
+$lang->searchObjects['user'] = 'U:用户';
+$lang->searchObjects['build'] = 'B:Build';
+$lang->searchObjects['release'] = 'R:发布';
+$lang->searchObjects['productplan'] = 'P:产品计划';
+$lang->searchObjects['testtask'] = 'T:测试任务';
+$lang->searchObjects['doc'] = 'D:文档';
+$lang->searchTips = '输入编号';
+
+/* 导出文件的类型列表。*/
+$lang->exportFileTypeList['csv'] = 'csv';
+$lang->exportFileTypeList['xml'] = 'xml';
+$lang->exportFileTypeList['html'] = 'html';
+
+/* 风格列表。*/
+$lang->themes['default'] = '默认';
+$lang->themes['green'] = '绿色';
+$lang->themes['red'] = '红色';
+$lang->themes['classblue'] = '经典蓝';
+
+/* 首页菜单设置。*/
+$lang->index->menu->product = '浏览产品|product|browse';
+$lang->index->menu->project = '浏览项目|project|browse';
+
+/* 我的地盘菜单设置。*/
+$lang->my->menu->account = ' %s' . $lang->arrow;
+$lang->my->menu->index = '首页|my|index';
+$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
+$lang->my->menu->task = '我的任务|my|task|';
+$lang->my->menu->bug = '我的Bug|my|bug|';
+$lang->my->menu->testtask = '我的测试|my|testtask|';
+$lang->my->menu->story = '我的需求|my|story|';
+$lang->my->menu->myProject = '我的项目|my|project|';
+$lang->my->menu->dynamic = '我的动态|my|dynamic|';
+$lang->my->menu->profile = array('link' => '我的档案|my|profile|', 'alias' => 'editprofile');
+$lang->todo->menu = $lang->my->menu;
+
+/* 产品视图设置。*/
+$lang->product->menu->list = '%s';
+$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
+$lang->product->menu->dynamic = '动态|product|dynamic|productID=%s';
+$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
+$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
+$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
+$lang->product->menu->doc = array('link' => '文档|product|doc|productID=%s', 'subModule' => 'doc');
+$lang->product->menu->view = '概况|product|view|productID=%s';
+$lang->product->menu->edit = '编辑|product|edit|productID=%s';
+$lang->product->menu->delete = array('link' => '删除|product|delete|productID=%s', 'target' => 'hiddenwin');
+$lang->product->menu->module = '模块|tree|browse|productID=%s&view=story';
+$lang->product->menu->order = '排序|product|order|productID=%s';
+$lang->product->menu->create = array('link' => ' 新增产品|product|create', 'float' => 'right');
+$lang->product->menu->project = array('link' => ' 项目列表|product|project|status=all&productID=%s', 'float' => 'right');
+$lang->product->menu->all = array('link' => ' 所有产品|product|index|locate=false', 'float' => 'right');
+$lang->story->menu = $lang->product->menu;
+$lang->productplan->menu = $lang->product->menu;
+$lang->release->menu = $lang->product->menu;
+
+/* 项目视图菜单设置。*/
+$lang->project->menu->list = '%s';
+$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
+$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
+$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
+$lang->project->menu->dynamic = '动态|project|dynamic|projectID=%s';
+$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
+$lang->project->menu->testtask = '测试申请|project|testtask|projectID=%s';
+$lang->project->menu->burn = '燃尽图|project|burn|projectID=%s';
+$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
+$lang->project->menu->doc = array('link' => '文档|project|doc|porjectID=%s', 'subModule' => 'doc');
+$lang->project->menu->product = '产品|project|manageproducts|projectID=%s';
+$lang->project->menu->linkstory = array('link' => '关联需求|project|linkstory|projectID=%s');
+$lang->project->menu->view = '概况|project|view|projectID=%s';
+$lang->project->menu->edit = '编辑|project|edit|projectID=%s';
+$lang->project->menu->delete = array('link' => '删除|project|delete|projectID=%s', 'target' => 'hiddenwin');
+$lang->project->menu->order = '排序|project|order|projectID=%s';
+$lang->project->menu->create = array('link' => ' 新增项目|project|create', 'float' => 'right');
+$lang->project->menu->copy = array('link' => ' 复制项目|project|create|projectID=©ProjectID=%s', 'float' => 'right');
+$lang->project->menu->all = array('link' => ' 所有项目|project|index|locate=false', 'float' => 'right');
+$lang->task->menu = $lang->project->menu;
+$lang->build->menu = $lang->project->menu;
+
+/* QA视图菜单设置。*/
+$lang->bug->menu->product = '%s';
+$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
+$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
+$lang->bug->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
+
+$lang->testcase->menu->product = '%s';
+$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
+$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
+$lang->testcase->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s');
+
+$lang->testtask->menu->product = '%s';
+$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
+$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
+$lang->testtask->menu->testtask = array('link' => '测试任务|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
+
+/* 文档视图菜单设置。*/
+$lang->doc->menu->list = '%s';
+$lang->doc->menu->browse = array('link' => '文档列表|doc|browse|libID=%s');
+$lang->doc->menu->edit = '编辑文档库|doc|editLib|libID=%s';
+$lang->doc->menu->module = '维护模块|tree|browse|libID=%s&viewType=doc';
+$lang->doc->menu->delete = array('link' => '删除文档库|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
+$lang->doc->menu->create = array('link' => ' 新增文档库|doc|createLib', 'float' => 'right');
+
+/* 组织结构视图菜单设置。*/
+$lang->company->menu->name = '%s' . $lang->arrow;
+$lang->company->menu->browseUser = array('link' => '用户列表|company|browse', 'subModule' => 'user');
+$lang->company->menu->dept = array('link' => '部门维护|dept|browse', 'subModule' => 'dept');
+$lang->company->menu->browseGroup = array('link' => '权限分组|group|browse', 'subModule' => 'group');
+$lang->company->menu->edit = array('link' => '公司管理|company|edit');
+$lang->company->menu->dynamic = '组织动态|company|dynamic|';
+$lang->company->menu->addGroup = array('link' => ' 添加分组|group|create', 'float' => 'right');
+$lang->company->menu->addUser = array('link' => ' 添加用户|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
+$lang->dept->menu = $lang->company->menu;
+$lang->group->menu = $lang->company->menu;
+
+/* 用户信息菜单设置。*/
+$lang->user->menu->account = '%s' . $lang->arrow;
+$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
+$lang->user->menu->task = '任务列表|user|task|account=%s';
+$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
+$lang->user->menu->dynamic = '用户动态|user|dynamic|type=today&account=%s';
+$lang->user->menu->projectList = '项目列表|user|project|account=%s';
+$lang->user->menu->profile = array('link' => '用户信息|user|profile|account=%s', 'alias' => 'edit');
+$lang->user->menu->browse = array('link' => ' 用户管理|company|browse|', 'float' => 'right');
+
+/* 后台管理菜单设置。*/
+$lang->admin->menu->index = array('link' => '首页|admin|index', 'subModule' => 'admin');
+$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
+$lang->admin->menu->editor = array('link' => '扩展编辑器|editor|index', 'subModule' => 'editor');
+$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
+$lang->admin->menu->convert = array('link' => '从其他系统导入|convert|index', 'subModule' => 'convert');
+$lang->admin->menu->trashes = array('link' => '回收站|action|trash', 'subModule' => 'action');
+$lang->convert->menu = $lang->admin->menu;
+$lang->upgrade->menu = $lang->admin->menu;
+$lang->action->menu = $lang->admin->menu;
+$lang->extension->menu = $lang->admin->menu;
+$lang->editor->menu = $lang->admin->menu;
+$lang->mail->menu = $lang->admin->menu;
+
+/*菜单设置:分组设置。*/
+$lang->menugroup->release = 'product';
+$lang->menugroup->story = 'product';
+$lang->menugroup->productplan = 'product';
+$lang->menugroup->task = 'project';
+$lang->menugroup->build = 'project';
+$lang->menugroup->convert = 'admin';
+$lang->menugroup->upgrade = 'admin';
+$lang->menugroup->user = 'company';
+$lang->menugroup->group = 'company';
+$lang->menugroup->bug = 'qa';
+$lang->menugroup->testcase = 'qa';
+$lang->menugroup->testtask = 'qa';
+$lang->menugroup->people = 'company';
+$lang->menugroup->dept = 'company';
+$lang->menugroup->todo = 'my';
+$lang->menugroup->action = 'admin';
+$lang->menugroup->extension = 'admin';
+$lang->menugroup->editor = 'admin';
+$lang->menugroup->mail = 'admin';
+
+/* 错误提示信息。*/
+$lang->error->companyNotFound = "您访问的域名 %s 没有对应的公司。";
+$lang->error->length = array("『%s』长度错误,应当为『%s』", "『%s』长度应当不超过『%s』,且不小于『%s』。");
+$lang->error->reg = "『%s』不符合格式,应当为:『%s』。";
+$lang->error->unique = "『%s』已经有『%s』这条记录了。";
+$lang->error->gt = "『%s』应当大于『%s』。";
+$lang->error->notempty = "『%s』不能为空。";
+$lang->error->empty = "『%s』必须为空。";
+$lang->error->equal = "『%s』必须为『%s』。";
+$lang->error->int = array("『%s』应当是数字。", "『%s』应当介于『%s-%s』之间。");
+$lang->error->float = "『%s』应当是数字,可以是小数。";
+$lang->error->email = "『%s』应当为合法的EMAIL。";
+$lang->error->date = "『%s』应当为合法的日期。";
+$lang->error->account = "『%s』应当为合法的用户名。";
+$lang->error->passwordsame = "两次密码应当相等。";
+$lang->error->passwordrule = "密码应该符合规则,长度至少为六位。";
+$lang->error->accessDenied = '您没有访问权限';
+
+/* 分页信息。*/
+$lang->pager->noRecord = "暂时没有记录";
+$lang->pager->digest = "共%s 条记录,每页 %s 条,页面:%s/%s ";
+$lang->pager->first = "首页";
+$lang->pager->pre = "上页";
+$lang->pager->next = "下页";
+$lang->pager->last = "末页";
+$lang->pager->locate = "GO!";
+
+$lang->zentaoSite = "官方网站";
+$lang->chinaScrum = "Scrum社区 ";
+$lang->agileTraining = "培训 ";
+$lang->donate = "捐助禅道 ";
+$lang->zentaoKeywords = "开源项目管理软件,项目管理,项目管理软件,pmp,pms,php框架,国产php框架,scrum工具,scrum管理工具,scrum管理软件,敏捷项目管理,禅道";
+$lang->zentaoDESC = "禅道项目管理软件(ZenTaoPMS)是一款国产的,基于LGPL协议,开源免费的项目管理软件(工具、系统),同时也是一款scrum管理工具。
+ 它集产品管理、项目管理、测试管理于一体,同时还包含了事务管理、组织管理等诸多功能,是中小型企业项目管理的首选。禅道项目管理软件使用PHP + MySQL开发,
+基于自主的PHP开发框架──ZenTaoPHP而成。第三方开发者或者企业可以非常方便的开发插件或者进行定制。禅道在手,项目无忧!";
+
+/* 时间格式设置。*/
+define('DT_DATETIME1', 'Y-m-d H:i:s');
+define('DT_DATETIME2', 'y-m-d H:i');
+define('DT_MONTHTIME1', 'n/d H:i');
+define('DT_MONTHTIME2', 'n月d日 H:i');
+define('DT_DATE1', 'Y-m-d');
+define('DT_DATE2', 'Ymd');
+define('DT_DATE3', 'Y年m月d日');
+define('DT_DATE4', 'n月j日');
+define('DT_TIME1', 'H:i:s');
+define('DT_TIME2', 'H:i');
diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php
index 4ef46eefc0..b782c9af7a 100644
--- a/module/common/lang/zh-tw.php
+++ b/module/common/lang/zh-tw.php
@@ -1,300 +1,300 @@
-
- * @package ZenTaoPMS
- * @version $Id: zh-tw.php 2686 2012-03-02 05:45:14Z wyd621@gmail.com $
- * @link http://www.zentao.net
- */
-$lang->arrow = ' ';
-$lang->colon = '::';
-$lang->comma = ',';
-$lang->dot = '。';
-$lang->at = ' 于 ';
-$lang->downArrow = '↓';
-
-$lang->ZenTaoPMS = '禪道管理';
-$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
-$lang->myControl = "我的地盤";
-$lang->currentPos = '當前位置:';
-$lang->logout = '退出';
-$lang->login = '登錄';
-$lang->aboutZenTao = '關於';
-$lang->todayIs = '今天是%s,';
-$lang->runInfo = "時間: %s 毫秒, 內存: %s KB, 查詢: %s.
";
-
-$lang->reset = '重填';
-$lang->edit = '編輯';
-$lang->copy = '複製';
-$lang->delete = '刪除';
-$lang->close = '關閉';
-$lang->link = '關聯';
-$lang->unlink = '移除';
-$lang->import = '導入';
-$lang->export = '導出';
-$lang->setFileName = '檔案名:';
-$lang->activate = '激活';
-$lang->submitting = '稍候...';
-$lang->save = '保存';
-$lang->confirm = '確認';
-$lang->preview = '查看';
-$lang->goback = '返回';
-$lang->go = 'GO';
-$lang->more = '更多';
-
-$lang->actions = '操作';
-$lang->comment = '備註';
-$lang->history = '歷史記錄';
-$lang->attatch = '附件';
-$lang->reverse = '[切換順序]';
-$lang->switchDisplay= '[切換顯示]';
-$lang->switchHelp = '切換幫助';
-$lang->addFiles = '上傳了附件 ';
-$lang->files = '附件 ';
-$lang->unfold = '+';
-$lang->fold = '-';
-
-$lang->selectAll = '全選';
-$lang->notFound = '抱歉,您訪問的對象並不存在!';
-$lang->showAll = '++ 全部顯示 ++';
-$lang->hideClosed = '-- 隱藏已結束 --';
-
-$lang->future = '未來';
-$lang->year = '年';
-$lang->workingHour = '工時';
-
-$lang->idAB = 'ID';
-$lang->priAB = 'P';
-$lang->statusAB = '狀態';
-$lang->openedByAB = '創建';
-$lang->assignedToAB = '指派';
-$lang->typeAB = '類型';
-
-$lang->common->common = '公有模組';
-
-/* 主導航菜單。*/
-$lang->menu->my = ' 我的地盤|my|index';
-$lang->menu->product = '產品視圖|product|index';
-$lang->menu->project = '項目視圖|project|index';
-$lang->menu->qa = '測試視圖|qa|index';
-$lang->menu->doc = '文檔視圖|doc|index';
-$lang->menu->company = '組織視圖|company|index';
-$lang->menu->admin = '後台管理|admin|index';
-
-/* 查詢條中可以選擇的對象列表。*/
-$lang->searchObjects['bug'] = 'B:Bug';
-$lang->searchObjects['story'] = 'S:需求';
-$lang->searchObjects['task'] = 'T:任務';
-$lang->searchObjects['testcase'] = 'C:用例';
-$lang->searchObjects['project'] = 'P:項目';
-$lang->searchObjects['product'] = 'P:產品';
-$lang->searchObjects['user'] = 'U:用戶';
-$lang->searchObjects['build'] = 'B:Build';
-$lang->searchObjects['release'] = 'R:發佈';
-$lang->searchObjects['productplan'] = 'P:產品計劃';
-$lang->searchObjects['testtask'] = 'T:測試任務';
-$lang->searchObjects['doc'] = 'D:文檔';
-$lang->searchTips = '輸入編號';
-
-/* 導出檔案的類型列表。*/
-$lang->exportFileTypeList['csv'] = 'csv';
-$lang->exportFileTypeList['xml'] = 'xml';
-$lang->exportFileTypeList['html'] = 'html';
-
-/* 風格列表。*/
-$lang->themes['default'] = '預設';
-$lang->themes['green'] = '綠色';
-$lang->themes['red'] = '紅色';
-$lang->themes['classblue'] = '經典藍';
-
-/* 首頁菜單設置。*/
-$lang->index->menu->product = '瀏覽產品|product|browse';
-$lang->index->menu->project = '瀏覽項目|project|browse';
-
-/* 我的地盤菜單設置。*/
-$lang->my->menu->account = ' %s' . $lang->arrow;
-$lang->my->menu->index = '首頁|my|index';
-$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
-$lang->my->menu->task = '我的任務|my|task|';
-$lang->my->menu->bug = '我的Bug|my|bug|';
-$lang->my->menu->testtask = '我的測試|my|testtask|';
-$lang->my->menu->story = '我的需求|my|story|';
-$lang->my->menu->myProject = '我的項目|my|project|';
-$lang->my->menu->dynamic = '我的動態|my|dynamic|';
-$lang->my->menu->profile = array('link' => '我的檔案|my|profile|', 'alias' => 'editprofile');
-$lang->todo->menu = $lang->my->menu;
-
-/* 產品視圖設置。*/
-$lang->product->menu->list = '%s';
-$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
-$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
-$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
-$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
-$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
-$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
-$lang->product->menu->view = '概況|product|view|productID=%s';
-$lang->product->menu->edit = '編輯|product|edit|productID=%s';
-$lang->product->menu->delete = array('link' => '刪除|product|delete|productID=%s', 'target' => 'hiddenwin');
-$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
-$lang->product->menu->order = '排序|product|order|productID=%s';
-$lang->product->menu->create = array('link' => ' 新增產品|product|create', 'float' => 'right');
-$lang->product->menu->project = array('link' => ' 項目列表|product|project|status=all&productID=%s', 'float' => 'right');
-$lang->product->menu->all = array('link' => ' 所有產品|product|index|locate=false', 'float' => 'right');
-$lang->story->menu = $lang->product->menu;
-$lang->productplan->menu = $lang->product->menu;
-$lang->release->menu = $lang->product->menu;
-
-/* 項目視圖菜單設置。*/
-$lang->project->menu->list = '%s';
-$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
-$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
-$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
-$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
-$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
-$lang->project->menu->testtask = '測試申請|project|testtask|projectID=%s';
-$lang->project->menu->burn = '燃盡圖|project|burn|projectID=%s';
-$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
-$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
-$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
-$lang->project->menu->linkstory = array('link' => '關聯需求|project|linkstory|projectID=%s');
-$lang->project->menu->view = '概況|project|view|projectID=%s';
-$lang->project->menu->edit = '編輯|project|edit|projectID=%s';
-$lang->project->menu->delete = array('link' => '刪除|project|delete|projectID=%s', 'target' => 'hiddenwin');
-$lang->project->menu->order = '排序|project|order|projectID=%s';
-$lang->project->menu->create = array('link' => ' 新增項目|project|create', 'float' => 'right');
-$lang->project->menu->copy = array('link' => ' 複製項目|project|create|projectID=©ProjectID=%s', 'float' => 'right');
-$lang->project->menu->all = array('link' => ' 所有項目|project|index|locate=false', 'float' => 'right');
-$lang->task->menu = $lang->project->menu;
-$lang->build->menu = $lang->project->menu;
-
-/* QA視圖菜單設置。*/
-$lang->bug->menu->product = '%s';
-$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
-$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
-$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
-
-$lang->testcase->menu->product = '%s';
-$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
-$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
-$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
-
-$lang->testtask->menu->product = '%s';
-$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
-$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
-$lang->testtask->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
-
-/* 文檔視圖菜單設置。*/
-$lang->doc->menu->list = '%s';
-$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s');
-$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
-$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
-$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
-$lang->doc->menu->create = array('link' => ' 新增文檔庫|doc|createLib', 'float' => 'right');
-
-/* 組織結構視圖菜單設置。*/
-$lang->company->menu->name = '%s' . $lang->arrow;
-$lang->company->menu->browseUser = array('link' => '用戶列表|company|browse', 'subModule' => 'user');
-$lang->company->menu->dept = array('link' => '部門維護|dept|browse', 'subModule' => 'dept');
-$lang->company->menu->browseGroup = array('link' => '權限分組|group|browse', 'subModule' => 'group');
-$lang->company->menu->edit = array('link' => '公司管理|company|edit');
-$lang->company->menu->dynamic = '組織動態|company|dynamic|';
-$lang->company->menu->addGroup = array('link' => ' 添加分組|group|create', 'float' => 'right');
-$lang->company->menu->addUser = array('link' => ' 添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
-$lang->dept->menu = $lang->company->menu;
-$lang->group->menu = $lang->company->menu;
-
-/* 用戶信息菜單設置。*/
-$lang->user->menu->account = '%s' . $lang->arrow;
-$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
-$lang->user->menu->task = '任務列表|user|task|account=%s';
-$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
-$lang->user->menu->dynamic = '用戶動態|user|dynamic|type=today&account=%s';
-$lang->user->menu->projectList = '項目列表|user|project|account=%s';
-$lang->user->menu->profile = array('link' => '用戶信息|user|profile|account=%s', 'alias' => 'edit');
-$lang->user->menu->browse = array('link' => ' 用戶管理|company|browse|', 'float' => 'right');
-
-/* 後台管理菜單設置。*/
-$lang->admin->menu->index = array('link' => '首頁|admin|index', 'subModule' => 'admin');
-$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
-$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
-$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
-$lang->admin->menu->convert = array('link' => '從其他系統導入|convert|index', 'subModule' => 'convert');
-$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
-$lang->convert->menu = $lang->admin->menu;
-$lang->upgrade->menu = $lang->admin->menu;
-$lang->action->menu = $lang->admin->menu;
-$lang->extension->menu = $lang->admin->menu;
-$lang->editor->menu = $lang->admin->menu;
-$lang->mail->menu = $lang->admin->menu;
-
-/*菜單設置:分組設置。*/
-$lang->menugroup->release = 'product';
-$lang->menugroup->story = 'product';
-$lang->menugroup->productplan = 'product';
-$lang->menugroup->task = 'project';
-$lang->menugroup->build = 'project';
-$lang->menugroup->convert = 'admin';
-$lang->menugroup->upgrade = 'admin';
-$lang->menugroup->user = 'company';
-$lang->menugroup->group = 'company';
-$lang->menugroup->bug = 'qa';
-$lang->menugroup->testcase = 'qa';
-$lang->menugroup->testtask = 'qa';
-$lang->menugroup->people = 'company';
-$lang->menugroup->dept = 'company';
-$lang->menugroup->todo = 'my';
-$lang->menugroup->action = 'admin';
-$lang->menugroup->extension = 'admin';
-$lang->menugroup->editor = 'admin';
-$lang->menugroup->mail = 'admin';
-
-/* 錯誤提示信息。*/
-$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
-$lang->error->length = array("『%s』長度錯誤,應當為『%s』", "『%s』長度應當不超過『%s』,且不小於『%s』。");
-$lang->error->reg = "『%s』不符合格式,應當為:『%s』。";
-$lang->error->unique = "『%s』已經有『%s』這條記錄了。";
-$lang->error->gt = "『%s』應當大於『%s』。";
-$lang->error->notempty = "『%s』不能為空。";
-$lang->error->empty = "『%s』必須為空。";
-$lang->error->equal = "『%s』必須為『%s』。";
-$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
-$lang->error->float = "『%s』應當是數字,可以是小數。";
-$lang->error->email = "『%s』應當為合法的EMAIL。";
-$lang->error->date = "『%s』應當為合法的日期。";
-$lang->error->account = "『%s』應當為合法的用戶名。";
-$lang->error->passwordsame = "兩次密碼應當相等。";
-$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
-$lang->error->accessDenied = '您沒有訪問權限';
-
-/* 分頁信息。*/
-$lang->pager->noRecord = "暫時沒有記錄";
-$lang->pager->digest = "共%s 條記錄,每頁 %s 條,頁面:%s/%s ";
-$lang->pager->first = "首頁";
-$lang->pager->pre = "上頁";
-$lang->pager->next = "下頁";
-$lang->pager->last = "末頁";
-$lang->pager->locate = "GO!";
-
-$lang->zentaoSite = "官方網站";
-$lang->chinaScrum = "Scrum社區 ";
-$lang->agileTraining = "培訓 ";
-$lang->donate = "捐助禪道 ";
-$lang->zentaoKeywords = "開源項目管理軟件,項目管理,項目管理軟件,pmp,pms,php框架,國產php框架,scrum工具,scrum管理工具,scrum管理軟件,敏捷項目管理,禪道";
-$lang->zentaoDESC = "禪道項目管理軟件(ZenTaoPMS)是一款國產的,基于LGPL協議,開源免費的項目管理軟件(工具、系統),同時也是一款scrum管理工具。
- 它集產品管理、項目管理、測試管理於一體,同時還包含了事務管理、組織管理等諸多功能,是中小型企業項目管理的首選。禪道項目管理軟件使用PHP + MySQL開發,
-基于自主的PHP開發框架──ZenTaoPHP而成。第三方開發者或者企業可以非常方便的開發插件或者進行定製。禪道在手,項目無憂!";
-
-/* 時間格式設置。*/
-define('DT_DATETIME1', 'Y-m-d H:i:s');
-define('DT_DATETIME2', 'y-m-d H:i');
-define('DT_MONTHTIME1', 'n/d H:i');
-define('DT_MONTHTIME2', 'n月d日 H:i');
-define('DT_DATE1', 'Y-m-d');
-define('DT_DATE2', 'Ymd');
-define('DT_DATE3', 'Y年m月d日');
-define('DT_DATE4', 'n月j日');
-define('DT_TIME1', 'H:i:s');
-define('DT_TIME2', 'H:i');
+
+ * @package ZenTaoPMS
+ * @version $Id: zh-tw.php 2686 2012-03-02 05:45:14Z wyd621@gmail.com $
+ * @link http://www.zentao.net
+ */
+$lang->arrow = ' ';
+$lang->colon = '::';
+$lang->comma = ',';
+$lang->dot = '。';
+$lang->at = ' 于 ';
+$lang->downArrow = '↓';
+
+$lang->ZenTaoPMS = '禪道管理';
+$lang->welcome = "歡迎使用『%s』{$lang->colon} {$lang->ZenTaoPMS}";
+$lang->myControl = "我的地盤";
+$lang->currentPos = '當前位置:';
+$lang->logout = '退出';
+$lang->login = '登錄';
+$lang->aboutZenTao = '關於';
+$lang->todayIs = '今天是%s,';
+$lang->runInfo = "時間: %s 毫秒, 內存: %s KB, 查詢: %s.
";
+
+$lang->reset = '重填';
+$lang->edit = '編輯';
+$lang->copy = '複製';
+$lang->delete = '刪除';
+$lang->close = '關閉';
+$lang->link = '關聯';
+$lang->unlink = '移除';
+$lang->import = '導入';
+$lang->export = '導出';
+$lang->setFileName = '檔案名:';
+$lang->activate = '激活';
+$lang->submitting = '稍候...';
+$lang->save = '保存';
+$lang->confirm = '確認';
+$lang->preview = '查看';
+$lang->goback = '返回';
+$lang->go = 'GO';
+$lang->more = '更多';
+
+$lang->actions = '操作';
+$lang->comment = '備註';
+$lang->history = '歷史記錄';
+$lang->attatch = '附件';
+$lang->reverse = '[切換順序]';
+$lang->switchDisplay= '[切換顯示]';
+$lang->switchHelp = '切換幫助';
+$lang->addFiles = '上傳了附件 ';
+$lang->files = '附件 ';
+$lang->unfold = '+';
+$lang->fold = '-';
+
+$lang->selectAll = '全選';
+$lang->notFound = '抱歉,您訪問的對象並不存在!';
+$lang->showAll = '++ 全部顯示 ++';
+$lang->hideClosed = '-- 隱藏已結束 --';
+
+$lang->future = '未來';
+$lang->year = '年';
+$lang->workingHour = '工時';
+
+$lang->idAB = 'ID';
+$lang->priAB = 'P';
+$lang->statusAB = '狀態';
+$lang->openedByAB = '創建';
+$lang->assignedToAB = '指派';
+$lang->typeAB = '類型';
+
+$lang->common->common = '公有模組';
+
+/* 主導航菜單。*/
+$lang->menu->my = ' 我的地盤|my|index';
+$lang->menu->product = '產品視圖|product|index';
+$lang->menu->project = '項目視圖|project|index';
+$lang->menu->qa = '測試視圖|qa|index';
+$lang->menu->doc = '文檔視圖|doc|index';
+$lang->menu->company = '組織視圖|company|index';
+$lang->menu->admin = '後台管理|admin|index';
+
+/* 查詢條中可以選擇的對象列表。*/
+$lang->searchObjects['bug'] = 'B:Bug';
+$lang->searchObjects['story'] = 'S:需求';
+$lang->searchObjects['task'] = 'T:任務';
+$lang->searchObjects['testcase'] = 'C:用例';
+$lang->searchObjects['project'] = 'P:項目';
+$lang->searchObjects['product'] = 'P:產品';
+$lang->searchObjects['user'] = 'U:用戶';
+$lang->searchObjects['build'] = 'B:Build';
+$lang->searchObjects['release'] = 'R:發佈';
+$lang->searchObjects['productplan'] = 'P:產品計劃';
+$lang->searchObjects['testtask'] = 'T:測試任務';
+$lang->searchObjects['doc'] = 'D:文檔';
+$lang->searchTips = '輸入編號';
+
+/* 導出檔案的類型列表。*/
+$lang->exportFileTypeList['csv'] = 'csv';
+$lang->exportFileTypeList['xml'] = 'xml';
+$lang->exportFileTypeList['html'] = 'html';
+
+/* 風格列表。*/
+$lang->themes['default'] = '預設';
+$lang->themes['green'] = '綠色';
+$lang->themes['red'] = '紅色';
+$lang->themes['classblue'] = '經典藍';
+
+/* 首頁菜單設置。*/
+$lang->index->menu->product = '瀏覽產品|product|browse';
+$lang->index->menu->project = '瀏覽項目|project|browse';
+
+/* 我的地盤菜單設置。*/
+$lang->my->menu->account = ' %s' . $lang->arrow;
+$lang->my->menu->index = '首頁|my|index';
+$lang->my->menu->todo = array('link' => '我的TODO|my|todo|', 'subModule' => 'todo');
+$lang->my->menu->task = '我的任務|my|task|';
+$lang->my->menu->bug = '我的Bug|my|bug|';
+$lang->my->menu->testtask = '我的測試|my|testtask|';
+$lang->my->menu->story = '我的需求|my|story|';
+$lang->my->menu->myProject = '我的項目|my|project|';
+$lang->my->menu->dynamic = '我的動態|my|dynamic|';
+$lang->my->menu->profile = array('link' => '我的檔案|my|profile|', 'alias' => 'editprofile');
+$lang->todo->menu = $lang->my->menu;
+
+/* 產品視圖設置。*/
+$lang->product->menu->list = '%s';
+$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
+$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
+$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
+$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release');
+$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s';
+$lang->product->menu->doc = array('link' => '文檔|product|doc|productID=%s', 'subModule' => 'doc');
+$lang->product->menu->view = '概況|product|view|productID=%s';
+$lang->product->menu->edit = '編輯|product|edit|productID=%s';
+$lang->product->menu->delete = array('link' => '刪除|product|delete|productID=%s', 'target' => 'hiddenwin');
+$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story';
+$lang->product->menu->order = '排序|product|order|productID=%s';
+$lang->product->menu->create = array('link' => ' 新增產品|product|create', 'float' => 'right');
+$lang->product->menu->project = array('link' => ' 項目列表|product|project|status=all&productID=%s', 'float' => 'right');
+$lang->product->menu->all = array('link' => ' 所有產品|product|index|locate=false', 'float' => 'right');
+$lang->story->menu = $lang->product->menu;
+$lang->productplan->menu = $lang->product->menu;
+$lang->release->menu = $lang->product->menu;
+
+/* 項目視圖菜單設置。*/
+$lang->project->menu->list = '%s';
+$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task', 'alias' => 'grouptask,importtask');
+$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s');
+$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
+$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s';
+$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
+$lang->project->menu->testtask = '測試申請|project|testtask|projectID=%s';
+$lang->project->menu->burn = '燃盡圖|project|burn|projectID=%s';
+$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers');
+$lang->project->menu->doc = array('link' => '文檔|project|doc|porjectID=%s', 'subModule' => 'doc');
+$lang->project->menu->product = '產品|project|manageproducts|projectID=%s';
+$lang->project->menu->linkstory = array('link' => '關聯需求|project|linkstory|projectID=%s');
+$lang->project->menu->view = '概況|project|view|projectID=%s';
+$lang->project->menu->edit = '編輯|project|edit|projectID=%s';
+$lang->project->menu->delete = array('link' => '刪除|project|delete|projectID=%s', 'target' => 'hiddenwin');
+$lang->project->menu->order = '排序|project|order|projectID=%s';
+$lang->project->menu->create = array('link' => ' 新增項目|project|create', 'float' => 'right');
+$lang->project->menu->copy = array('link' => ' 複製項目|project|create|projectID=©ProjectID=%s', 'float' => 'right');
+$lang->project->menu->all = array('link' => ' 所有項目|project|index|locate=false', 'float' => 'right');
+$lang->task->menu = $lang->project->menu;
+$lang->build->menu = $lang->project->menu;
+
+/* QA視圖菜單設置。*/
+$lang->bug->menu->product = '%s';
+$lang->bug->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s', 'alias' => 'view,create,edit,resolve,close,activate,report', 'subModule' => 'tree');
+$lang->bug->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,edit');
+$lang->bug->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
+
+$lang->testcase->menu->product = '%s';
+$lang->testcase->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
+$lang->testcase->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit', 'subModule' => 'tree');
+$lang->testcase->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s');
+
+$lang->testtask->menu->product = '%s';
+$lang->testtask->menu->bug = array('link' => '缺陷管理|bug|browse|productID=%s');
+$lang->testtask->menu->testcase = array('link' => '用例管理|testcase|browse|productID=%s');
+$lang->testtask->menu->testtask = array('link' => '測試任務|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases');
+
+/* 文檔視圖菜單設置。*/
+$lang->doc->menu->list = '%s';
+$lang->doc->menu->browse = array('link' => '文檔列表|doc|browse|libID=%s');
+$lang->doc->menu->edit = '編輯文檔庫|doc|editLib|libID=%s';
+$lang->doc->menu->module = '維護模組|tree|browse|libID=%s&viewType=doc';
+$lang->doc->menu->delete = array('link' => '刪除文檔庫|doc|deleteLib|libID=%s', 'target' => 'hiddenwin');
+$lang->doc->menu->create = array('link' => ' 新增文檔庫|doc|createLib', 'float' => 'right');
+
+/* 組織結構視圖菜單設置。*/
+$lang->company->menu->name = '%s' . $lang->arrow;
+$lang->company->menu->browseUser = array('link' => '用戶列表|company|browse', 'subModule' => 'user');
+$lang->company->menu->dept = array('link' => '部門維護|dept|browse', 'subModule' => 'dept');
+$lang->company->menu->browseGroup = array('link' => '權限分組|group|browse', 'subModule' => 'group');
+$lang->company->menu->edit = array('link' => '公司管理|company|edit');
+$lang->company->menu->dynamic = '組織動態|company|dynamic|';
+$lang->company->menu->addGroup = array('link' => ' 添加分組|group|create', 'float' => 'right');
+$lang->company->menu->addUser = array('link' => ' 添加用戶|user|create|dept=%s', 'subModule' => 'user', 'float' => 'right');
+$lang->dept->menu = $lang->company->menu;
+$lang->group->menu = $lang->company->menu;
+
+/* 用戶信息菜單設置。*/
+$lang->user->menu->account = '%s' . $lang->arrow;
+$lang->user->menu->todo = array('link' => 'TODO列表|user|todo|account=%s', 'subModule' => 'todo');
+$lang->user->menu->task = '任務列表|user|task|account=%s';
+$lang->user->menu->bug = 'Bug列表|user|bug|account=%s';
+$lang->user->menu->dynamic = '用戶動態|user|dynamic|type=today&account=%s';
+$lang->user->menu->projectList = '項目列表|user|project|account=%s';
+$lang->user->menu->profile = array('link' => '用戶信息|user|profile|account=%s', 'alias' => 'edit');
+$lang->user->menu->browse = array('link' => ' 用戶管理|company|browse|', 'float' => 'right');
+
+/* 後台管理菜單設置。*/
+$lang->admin->menu->index = array('link' => '首頁|admin|index', 'subModule' => 'admin');
+$lang->admin->menu->extension = array('link' => '插件管理|extension|browse', 'subModule' => 'extension');
+$lang->admin->menu->editor = array('link' => '擴展編輯器|editor|index', 'subModule' => 'editor');
+$lang->admin->menu->mail = array('link' => 'Email配置|mail|set', 'subModule' => 'mail');
+$lang->admin->menu->convert = array('link' => '從其他系統導入|convert|index', 'subModule' => 'convert');
+$lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action');
+$lang->convert->menu = $lang->admin->menu;
+$lang->upgrade->menu = $lang->admin->menu;
+$lang->action->menu = $lang->admin->menu;
+$lang->extension->menu = $lang->admin->menu;
+$lang->editor->menu = $lang->admin->menu;
+$lang->mail->menu = $lang->admin->menu;
+
+/*菜單設置:分組設置。*/
+$lang->menugroup->release = 'product';
+$lang->menugroup->story = 'product';
+$lang->menugroup->productplan = 'product';
+$lang->menugroup->task = 'project';
+$lang->menugroup->build = 'project';
+$lang->menugroup->convert = 'admin';
+$lang->menugroup->upgrade = 'admin';
+$lang->menugroup->user = 'company';
+$lang->menugroup->group = 'company';
+$lang->menugroup->bug = 'qa';
+$lang->menugroup->testcase = 'qa';
+$lang->menugroup->testtask = 'qa';
+$lang->menugroup->people = 'company';
+$lang->menugroup->dept = 'company';
+$lang->menugroup->todo = 'my';
+$lang->menugroup->action = 'admin';
+$lang->menugroup->extension = 'admin';
+$lang->menugroup->editor = 'admin';
+$lang->menugroup->mail = 'admin';
+
+/* 錯誤提示信息。*/
+$lang->error->companyNotFound = "您訪問的域名 %s 沒有對應的公司。";
+$lang->error->length = array("『%s』長度錯誤,應當為『%s』", "『%s』長度應當不超過『%s』,且不小於『%s』。");
+$lang->error->reg = "『%s』不符合格式,應當為:『%s』。";
+$lang->error->unique = "『%s』已經有『%s』這條記錄了。";
+$lang->error->gt = "『%s』應當大於『%s』。";
+$lang->error->notempty = "『%s』不能為空。";
+$lang->error->empty = "『%s』必須為空。";
+$lang->error->equal = "『%s』必須為『%s』。";
+$lang->error->int = array("『%s』應當是數字。", "『%s』應當介於『%s-%s』之間。");
+$lang->error->float = "『%s』應當是數字,可以是小數。";
+$lang->error->email = "『%s』應當為合法的EMAIL。";
+$lang->error->date = "『%s』應當為合法的日期。";
+$lang->error->account = "『%s』應當為合法的用戶名。";
+$lang->error->passwordsame = "兩次密碼應當相等。";
+$lang->error->passwordrule = "密碼應該符合規則,長度至少為六位。";
+$lang->error->accessDenied = '您沒有訪問權限';
+
+/* 分頁信息。*/
+$lang->pager->noRecord = "暫時沒有記錄";
+$lang->pager->digest = "共%s 條記錄,每頁 %s 條,頁面:%s/%s ";
+$lang->pager->first = "首頁";
+$lang->pager->pre = "上頁";
+$lang->pager->next = "下頁";
+$lang->pager->last = "末頁";
+$lang->pager->locate = "GO!";
+
+$lang->zentaoSite = "官方網站";
+$lang->chinaScrum = "Scrum社區 ";
+$lang->agileTraining = "培訓 ";
+$lang->donate = "捐助禪道 ";
+$lang->zentaoKeywords = "開源項目管理軟件,項目管理,項目管理軟件,pmp,pms,php框架,國產php框架,scrum工具,scrum管理工具,scrum管理軟件,敏捷項目管理,禪道";
+$lang->zentaoDESC = "禪道項目管理軟件(ZenTaoPMS)是一款國產的,基于LGPL協議,開源免費的項目管理軟件(工具、系統),同時也是一款scrum管理工具。
+ 它集產品管理、項目管理、測試管理於一體,同時還包含了事務管理、組織管理等諸多功能,是中小型企業項目管理的首選。禪道項目管理軟件使用PHP + MySQL開發,
+基于自主的PHP開發框架──ZenTaoPHP而成。第三方開發者或者企業可以非常方便的開發插件或者進行定製。禪道在手,項目無憂!";
+
+/* 時間格式設置。*/
+define('DT_DATETIME1', 'Y-m-d H:i:s');
+define('DT_DATETIME2', 'y-m-d H:i');
+define('DT_MONTHTIME1', 'n/d H:i');
+define('DT_MONTHTIME2', 'n月d日 H:i');
+define('DT_DATE1', 'Y-m-d');
+define('DT_DATE2', 'Ymd');
+define('DT_DATE3', 'Y年m月d日');
+define('DT_DATE4', 'n月j日');
+define('DT_TIME1', 'H:i:s');
+define('DT_TIME2', 'H:i');
diff --git a/module/common/model.php b/module/common/model.php
index 3b1227dd5a..37e0008e19 100644
--- a/module/common/model.php
+++ b/module/common/model.php
@@ -1,367 +1,367 @@
-
- * @package common
- * @version $Id$
- * @link http://www.zentao.net
- */
-class commonModel extends model
-{
- /**
- * Start the session.
- *
- * @access public
- * @return void
- */
- public function startSession()
- {
- session_name($this->config->sessionVar);
- if(isset($_GET[$this->config->sessionVar])) session_id($_GET[$this->config->sessionVar]);
- session_start();
- }
-
- /**
- * Set the header info.
- *
- * @access public
- * @return void
- */
- public function sendHeader()
- {
- header("Content-Type: text/html; Language={$this->config->encoding}");
- header("Cache-control: private");
- }
-
- /**
- * Set the commpany.
- *
- * First, search company by the http host. If not found, search by the default domain. Last, use the first as the default.
- * After get the company, save it to session.
- * @access public
- * @return void
- */
- public function setCompany()
- {
- $httpHost = $this->server->http_host;
- if(strpos($httpHost, ":"))
- {
- $httpHost = explode(":", $httpHost);
- $httpHost = $httpHost[0];
- }
-
- if($this->session->company and $this->session->company->pms == $httpHost)
- {
- $this->app->company = $this->session->company;
- }
- else
- {
- $company = $this->loadModel('company')->getByDomain();
- if(!$company and isset($this->config->default->domain)) $company = $this->company->getByDomain($this->config->default->domain);
- if(!$company) $company = $this->company->getFirst();
- if(!$company) $this->app->error(sprintf($this->lang->error->companyNotFound, $httpHost), __FILE__, __LINE__, $exit = true);
- $this->session->set('company', $company);
- $this->app->company = $company;
- }
- }
-
- /**
- * Set the user info.
- *
- * @access public
- * @return void
- */
- public function setUser()
- {
- if($this->session->user)
- {
- $this->app->user = $this->session->user;
- }
- elseif($this->app->company->guest)
- {
- $user = new stdClass();
- $user->id = 0;
- $user->account = 'guest';
- $user->realname = 'guest';
- $user->rights = $this->loadModel('user')->authorize('guest');
- $this->session->set('user', $user);
- $this->app->user = $this->session->user;
- }
- }
-
- /**
- * Juage a method of one module is open or not?
- *
- * @param string $module
- * @param string $method
- * @access public
- * @return bool
- */
- public function isOpenMethod($module, $method)
- {
- if($module == 'user' and strpos('login|logout|deny', $method) !== false) return true;
- if($module == 'api' and $method == 'getsessionid') return true;
- if($module == 'misc' and $method == 'about') return true;
- if($module == 'misc' and $method == 'checkupdate') return true;
- if($module == 'help' and $method == 'field') return true;
- return false;
- }
-
- /**
- * Deny access.
- *
- * @access public
- * @return void
- */
- public function deny($module, $method)
- {
- $vars = "module=$module&method=$method";
- if(isset($this->server->http_referer))
- {
- $referer = helper::safe64Encode($this->server->http_referer);
- $vars .= "&referer=$referer";
- }
- $denyLink = helper::createLink('user', 'deny', $vars);
-
- /* Fix the bug of IE: use js locate, can't get the referer. */
- if(strpos($this->server->http_user_agent, 'MSIE') !== false)
- {
- echo "deny ";
- echo "";
- }
- else
- {
- echo js::locate($denyLink);
- }
- exit;
- }
-
- /**
- * Get the run info.
- *
- * @param mixed $startTime the start time of this execution
- * @access public
- * @return array the run info array.
- */
- public function getRunInfo($startTime)
- {
- $info['timeUsed'] = round(getTime() - $startTime, 4) * 1000;
- $info['memory'] = round(memory_get_peak_usage() / 1024, 1);
- $info['querys'] = count(dao::$querys);
- return $info;
- }
-
- /**
- * Print top bar.
- *
- * @static
- * @access public
- * @return void
- */
- public static function printTopBar()
- {
- global $lang, $app;
-
- printf($lang->todayIs, date(DT_DATE3));
- if(isset($app->user)) echo $app->user->realname . ' ';
- if(isset($app->user) and $app->user->account != 'guest')
- {
- echo html::a(helper::createLink('my', 'index'), $lang->myControl);
- echo html::a(helper::createLink('user', 'logout'), $lang->logout);
- }
- else
- {
- echo html::a(helper::createLink('user', 'login'), $lang->login);
- }
- echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about'");
- echo $lang->agileTraining;
- echo $lang->donate;
- }
-
- /**
- * Print the main menu.
- *
- * @param string $moduleName
- * @static
- * @access public
- * @return void
- */
- public static function printMainmenu($moduleName)
- {
- global $app, $lang;
- echo "\n";
-
- /* Set the main main menu. */
- $mainMenu = $moduleName;
- if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
-
- /* Print all main menus. */
- foreach($lang->menu as $menuKey => $menu)
- {
- $active = $menuKey == $mainMenu ? "class='active'" : '';
- list($menuLabel, $module, $method) = explode('|', $menu);
-
- if(common::hasPriv($module, $method))
- {
- $link = helper::createLink($module, $method);
- echo " \n";
- }
- }
-
- }
-
- /**
- * Print the search box.
- *
- * @static
- * @access public
- * @return void
- */
- public static function printSearchBox()
- {
- global $app, $lang;
- $moduleName = $app->getModuleName();
- $methodName = $app->getMethodName();
- $searchObject = $moduleName;
-
- if($moduleName == 'product')
- {
- if($methodName == 'browse') $searchObject = 'story';
- }
- elseif($moduleName == 'project')
- {
- if(strpos('task|story|bug|build', $methodName) !== false) $searchObject = $methodName;
- }
- elseif($moduleName == 'my' or $moduleName == 'user')
- {
- $searchObject = $methodName;
- }
-
- echo "";
- echo html::select('searchType', $lang->searchObjects, $searchObject);
- echo html::input('searchQuery', $lang->searchTips, "onclick=this.value='' onkeydown='if(event.keyCode==13) shortcut()' class='w-60px'");
- echo " ";
- echo " ";
- echo " \n";
- }
-
- /**
- * Print the module menu.
- *
- * @param string $moduleName
- * @static
- * @access public
- * @return void
- */
- public static function printModuleMenu($moduleName)
- {
- global $lang, $app;
-
- if(!isset($lang->$moduleName->menu)) {echo ""; return;}
-
- /* Get the sub menus of the module, and get current module and method. */
- $submenus = $lang->$moduleName->menu;
- $currentModule = $app->getModuleName();
- $currentMethod = $app->getMethodName();
-
- /* The beginning of the menu. */
- echo "\n";
-
- /* Cycling to print every sub menus. */
- foreach($submenus as $subMenuKey => $submenu)
- {
- /* Init the these vars. */
- $link = $submenu;
- $subModule = '';
- $alias = '';
- $float = '';
- $active = '';
- $target = '';
-
- if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
-
- /* Print the menu. */
- if(strpos($link, '|') === false)
- {
- echo "$link \n";
- }
- else
- {
- $link = explode('|', $link);
- list($label, $module, $method) = $link;
- $vars = isset($link[3]) ? $link[3] : '';
- if(common::hasPriv($module, $method))
- {
- /* Is the currentModule active? */
- if($currentModule == $subModule and $float != 'right') $active = 'active';
- if($module == $currentModule and ($method == $currentMethod or strpos($alias, $currentMethod) !== false) and $float != 'right') $active = 'active';
- echo "" . html::a(helper::createLink($module, $method, $vars), $label, $target, "id=submenu$subMenuKey") . " \n";
- }
- }
- }
- echo " \n";
- }
-
- /**
- * Print the bread menu.
- *
- * @param string $moduleName
- * @param string $position
- * @static
- * @access public
- * @return void
- */
- public static function printBreadMenu($moduleName, $position)
- {
- global $lang;
- $mainMenu = $moduleName;
- if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
- echo html::a(helper::createLink('my', 'index'), $lang->ZenTaoPMS) . $lang->arrow;
- if($moduleName != 'index')
- {
- list($menuLabel, $module, $method) = explode('|', $lang->menu->$mainMenu);
- echo html::a(helper::createLink($module, $method), $menuLabel);
- }
- else
- {
- echo $lang->index->common;
- }
- if(empty($position)) return;
- echo $lang->arrow;
- foreach($position as $key => $link)
- {
- echo $link;
- if(isset($position[$key + 1])) echo $lang->arrow;
- }
- }
-
-
- /**
- * Diff two string. (see phpt)
- *
- * @param string $text1
- * @param string $text2
- * @static
- * @access public
- * @return string
- */
- public static function diff($text1, $text2)
- {
- $text1 = str_replace(' ', '', trim($text1));
- $text2 = str_replace(' ', '', trim($text2));
- $w = explode("\n", $text1);
- $o = explode("\n", $text2);
- $w1 = array_diff_assoc($w,$o);
- $o1 = array_diff_assoc($o,$w);
- $w2 = array();
- $o2 = array();
- foreach($w1 as $idx => $val) $w2[sprintf("%03d<",$idx)] = sprintf("%03d- ", $idx+1) . "" . trim($val) . "";
- foreach($o1 as $idx => $val) $o2[sprintf("%03d>",$idx)] = sprintf("%03d+ ", $idx+1) . "" . trim($val) . " ";
- $diff = array_merge($w2, $o2);
- ksort($diff);
- return implode("\n", $diff);
- }
-}
+
+ * @package common
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+class commonModel extends model
+{
+ /**
+ * Start the session.
+ *
+ * @access public
+ * @return void
+ */
+ public function startSession()
+ {
+ session_name($this->config->sessionVar);
+ if(isset($_GET[$this->config->sessionVar])) session_id($_GET[$this->config->sessionVar]);
+ session_start();
+ }
+
+ /**
+ * Set the header info.
+ *
+ * @access public
+ * @return void
+ */
+ public function sendHeader()
+ {
+ header("Content-Type: text/html; Language={$this->config->encoding}");
+ header("Cache-control: private");
+ }
+
+ /**
+ * Set the commpany.
+ *
+ * First, search company by the http host. If not found, search by the default domain. Last, use the first as the default.
+ * After get the company, save it to session.
+ * @access public
+ * @return void
+ */
+ public function setCompany()
+ {
+ $httpHost = $this->server->http_host;
+ if(strpos($httpHost, ":"))
+ {
+ $httpHost = explode(":", $httpHost);
+ $httpHost = $httpHost[0];
+ }
+
+ if($this->session->company and $this->session->company->pms == $httpHost)
+ {
+ $this->app->company = $this->session->company;
+ }
+ else
+ {
+ $company = $this->loadModel('company')->getByDomain();
+ if(!$company and isset($this->config->default->domain)) $company = $this->company->getByDomain($this->config->default->domain);
+ if(!$company) $company = $this->company->getFirst();
+ if(!$company) $this->app->error(sprintf($this->lang->error->companyNotFound, $httpHost), __FILE__, __LINE__, $exit = true);
+ $this->session->set('company', $company);
+ $this->app->company = $company;
+ }
+ }
+
+ /**
+ * Set the user info.
+ *
+ * @access public
+ * @return void
+ */
+ public function setUser()
+ {
+ if($this->session->user)
+ {
+ $this->app->user = $this->session->user;
+ }
+ elseif($this->app->company->guest)
+ {
+ $user = new stdClass();
+ $user->id = 0;
+ $user->account = 'guest';
+ $user->realname = 'guest';
+ $user->rights = $this->loadModel('user')->authorize('guest');
+ $this->session->set('user', $user);
+ $this->app->user = $this->session->user;
+ }
+ }
+
+ /**
+ * Juage a method of one module is open or not?
+ *
+ * @param string $module
+ * @param string $method
+ * @access public
+ * @return bool
+ */
+ public function isOpenMethod($module, $method)
+ {
+ if($module == 'user' and strpos('login|logout|deny', $method) !== false) return true;
+ if($module == 'api' and $method == 'getsessionid') return true;
+ if($module == 'misc' and $method == 'about') return true;
+ if($module == 'misc' and $method == 'checkupdate') return true;
+ if($module == 'help' and $method == 'field') return true;
+ return false;
+ }
+
+ /**
+ * Deny access.
+ *
+ * @access public
+ * @return void
+ */
+ public function deny($module, $method)
+ {
+ $vars = "module=$module&method=$method";
+ if(isset($this->server->http_referer))
+ {
+ $referer = helper::safe64Encode($this->server->http_referer);
+ $vars .= "&referer=$referer";
+ }
+ $denyLink = helper::createLink('user', 'deny', $vars);
+
+ /* Fix the bug of IE: use js locate, can't get the referer. */
+ if(strpos($this->server->http_user_agent, 'MSIE') !== false)
+ {
+ echo "deny ";
+ echo "";
+ }
+ else
+ {
+ echo js::locate($denyLink);
+ }
+ exit;
+ }
+
+ /**
+ * Get the run info.
+ *
+ * @param mixed $startTime the start time of this execution
+ * @access public
+ * @return array the run info array.
+ */
+ public function getRunInfo($startTime)
+ {
+ $info['timeUsed'] = round(getTime() - $startTime, 4) * 1000;
+ $info['memory'] = round(memory_get_peak_usage() / 1024, 1);
+ $info['querys'] = count(dao::$querys);
+ return $info;
+ }
+
+ /**
+ * Print top bar.
+ *
+ * @static
+ * @access public
+ * @return void
+ */
+ public static function printTopBar()
+ {
+ global $lang, $app;
+
+ printf($lang->todayIs, date(DT_DATE3));
+ if(isset($app->user)) echo $app->user->realname . ' ';
+ if(isset($app->user) and $app->user->account != 'guest')
+ {
+ echo html::a(helper::createLink('my', 'index'), $lang->myControl);
+ echo html::a(helper::createLink('user', 'logout'), $lang->logout);
+ }
+ else
+ {
+ echo html::a(helper::createLink('user', 'login'), $lang->login);
+ }
+ echo html::a(helper::createLink('misc', 'about'), $lang->aboutZenTao, '', "class='about'");
+ echo $lang->agileTraining;
+ echo $lang->donate;
+ }
+
+ /**
+ * Print the main menu.
+ *
+ * @param string $moduleName
+ * @static
+ * @access public
+ * @return void
+ */
+ public static function printMainmenu($moduleName)
+ {
+ global $app, $lang;
+ echo "\n";
+
+ /* Set the main main menu. */
+ $mainMenu = $moduleName;
+ if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
+
+ /* Print all main menus. */
+ foreach($lang->menu as $menuKey => $menu)
+ {
+ $active = $menuKey == $mainMenu ? "class='active'" : '';
+ list($menuLabel, $module, $method) = explode('|', $menu);
+
+ if(common::hasPriv($module, $method))
+ {
+ $link = helper::createLink($module, $method);
+ echo " \n";
+ }
+ }
+
+ }
+
+ /**
+ * Print the search box.
+ *
+ * @static
+ * @access public
+ * @return void
+ */
+ public static function printSearchBox()
+ {
+ global $app, $lang;
+ $moduleName = $app->getModuleName();
+ $methodName = $app->getMethodName();
+ $searchObject = $moduleName;
+
+ if($moduleName == 'product')
+ {
+ if($methodName == 'browse') $searchObject = 'story';
+ }
+ elseif($moduleName == 'project')
+ {
+ if(strpos('task|story|bug|build', $methodName) !== false) $searchObject = $methodName;
+ }
+ elseif($moduleName == 'my' or $moduleName == 'user')
+ {
+ $searchObject = $methodName;
+ }
+
+ echo "";
+ echo html::select('searchType', $lang->searchObjects, $searchObject);
+ echo html::input('searchQuery', $lang->searchTips, "onclick=this.value='' onkeydown='if(event.keyCode==13) shortcut()' class='w-60px'");
+ echo " ";
+ echo " ";
+ echo " \n";
+ }
+
+ /**
+ * Print the module menu.
+ *
+ * @param string $moduleName
+ * @static
+ * @access public
+ * @return void
+ */
+ public static function printModuleMenu($moduleName)
+ {
+ global $lang, $app;
+
+ if(!isset($lang->$moduleName->menu)) {echo ""; return;}
+
+ /* Get the sub menus of the module, and get current module and method. */
+ $submenus = $lang->$moduleName->menu;
+ $currentModule = $app->getModuleName();
+ $currentMethod = $app->getMethodName();
+
+ /* The beginning of the menu. */
+ echo "\n";
+
+ /* Cycling to print every sub menus. */
+ foreach($submenus as $subMenuKey => $submenu)
+ {
+ /* Init the these vars. */
+ $link = $submenu;
+ $subModule = '';
+ $alias = '';
+ $float = '';
+ $active = '';
+ $target = '';
+
+ if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
+
+ /* Print the menu. */
+ if(strpos($link, '|') === false)
+ {
+ echo "$link \n";
+ }
+ else
+ {
+ $link = explode('|', $link);
+ list($label, $module, $method) = $link;
+ $vars = isset($link[3]) ? $link[3] : '';
+ if(common::hasPriv($module, $method))
+ {
+ /* Is the currentModule active? */
+ if($currentModule == $subModule and $float != 'right') $active = 'active';
+ if($module == $currentModule and ($method == $currentMethod or strpos($alias, $currentMethod) !== false) and $float != 'right') $active = 'active';
+ echo "" . html::a(helper::createLink($module, $method, $vars), $label, $target, "id=submenu$subMenuKey") . " \n";
+ }
+ }
+ }
+ echo " \n";
+ }
+
+ /**
+ * Print the bread menu.
+ *
+ * @param string $moduleName
+ * @param string $position
+ * @static
+ * @access public
+ * @return void
+ */
+ public static function printBreadMenu($moduleName, $position)
+ {
+ global $lang;
+ $mainMenu = $moduleName;
+ if(isset($lang->menugroup->$moduleName)) $mainMenu = $lang->menugroup->$moduleName;
+ echo html::a(helper::createLink('my', 'index'), $lang->ZenTaoPMS) . $lang->arrow;
+ if($moduleName != 'index')
+ {
+ list($menuLabel, $module, $method) = explode('|', $lang->menu->$mainMenu);
+ echo html::a(helper::createLink($module, $method), $menuLabel);
+ }
+ else
+ {
+ echo $lang->index->common;
+ }
+ if(empty($position)) return;
+ echo $lang->arrow;
+ foreach($position as $key => $link)
+ {
+ echo $link;
+ if(isset($position[$key + 1])) echo $lang->arrow;
+ }
+ }
+
+
+ /**
+ * Diff two string. (see phpt)
+ *
+ * @param string $text1
+ * @param string $text2
+ * @static
+ * @access public
+ * @return string
+ */
+ public static function diff($text1, $text2)
+ {
+ $text1 = str_replace(' ', '', trim($text1));
+ $text2 = str_replace(' ', '', trim($text2));
+ $w = explode("\n", $text1);
+ $o = explode("\n", $text2);
+ $w1 = array_diff_assoc($w,$o);
+ $o1 = array_diff_assoc($o,$w);
+ $w2 = array();
+ $o2 = array();
+ foreach($w1 as $idx => $val) $w2[sprintf("%03d<",$idx)] = sprintf("%03d- ", $idx+1) . "" . trim($val) . "";
+ foreach($o1 as $idx => $val) $o2[sprintf("%03d>",$idx)] = sprintf("%03d+ ", $idx+1) . "" . trim($val) . " ";
+ $diff = array_merge($w2, $o2);
+ ksort($diff);
+ return implode("\n", $diff);
+ }
+}
diff --git a/module/common/view/footer.html.php b/module/common/view/footer.html.php
index 08a9d68424..fdf4a5f5cb 100644
--- a/module/common/view/footer.html.php
+++ b/module/common/view/footer.html.php
@@ -1,31 +1,31 @@
-
- getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
-
-
-
-
-
-
-