diff --git a/VERSION b/VERSION index 546fe2354d..1baf6d5a83 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -11.6.3 +11.6.4 diff --git a/config/config.php b/config/config.php index e2d63a3b71..e0b26cde6c 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '11.6.3'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '11.6.4'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. $config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php. @@ -37,6 +37,7 @@ $config->langs['zh-cn'] = '简体'; $config->langs['zh-tw'] = '繁體'; $config->langs['en'] = 'English'; $config->langs['de'] = 'Deutsch'; +$config->langs['fr'] = 'Français'; /* 设备类型视图文件前缀。The prefix for view file for different device. */ $config->devicePrefix['mhtml'] = ''; diff --git a/config/zentaopms.php b/config/zentaopms.php index e0b78067a5..a5f8f0a6aa 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -40,6 +40,10 @@ $config->productCommonList['de'][0] = 'Produkt'; $config->productCommonList['de'][1] = 'Projekt'; $config->projectCommonList['de'][0] = 'Projekt'; $config->projectCommonList['de'][1] = 'Iteration'; +$config->productCommonList['fr'][0] = 'Product'; +$config->productCommonList['fr'][1] = 'Projet'; +$config->projectCommonList['fr'][0] = 'Projet'; +$config->projectCommonList['fr'][1] = 'Sprint'; /* Supported charsets. */ $config->charsets['zh-cn']['utf-8'] = 'UTF-8'; @@ -50,6 +54,8 @@ $config->charsets['en']['utf-8'] = 'UTF-8'; $config->charsets['en']['GBK'] = 'GBK'; $config->charsets['de']['utf-8'] = 'UTF-8'; $config->charsets['de']['GBK'] = 'GBK'; +$config->charsets['fr']['utf-8'] = 'UTF-8'; +$config->charsets['fr']['GBK'] = 'GBK'; /* IP white list settings.*/ $config->ipWhiteList = '*'; diff --git a/db/standard/zentao11.6.4.sql b/db/standard/zentao11.6.4.sql new file mode 100644 index 0000000000..436985846a --- /dev/null +++ b/db/standard/zentao11.6.4.sql @@ -0,0 +1,937 @@ +CREATE TABLE `zt_action` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL DEFAULT '', + `objectID` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` varchar(255) NOT NULL, + `project` mediumint(9) NOT NULL, + `actor` varchar(30) NOT NULL DEFAULT '', + `action` varchar(30) NOT NULL DEFAULT '', + `date` datetime NOT NULL, + `comment` text NOT NULL, + `extra` text NOT NULL, + `read` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `date` (`date`), + KEY `actor` (`actor`), + KEY `project` (`project`), + KEY `objectID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_block` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `module` varchar(20) NOT NULL, + `title` varchar(100) NOT NULL, + `source` varchar(20) NOT NULL, + `block` varchar(20) NOT NULL, + `params` text NOT NULL, + `order` tinyint(3) unsigned NOT NULL DEFAULT '0', + `grid` tinyint(3) unsigned NOT NULL DEFAULT '0', + `height` smallint(5) unsigned NOT NULL DEFAULT '0', + `hidden` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `accountModuleOrder` (`account`,`module`,`order`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_branch` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_bug` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `plan` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toTask` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toStory` mediumint(8) NOT NULL DEFAULT '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `severity` tinyint(4) NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `os` varchar(30) NOT NULL DEFAULT '', + `browser` varchar(30) NOT NULL DEFAULT '', + `hardware` varchar(30) NOT NULL, + `found` varchar(30) NOT NULL DEFAULT '', + `steps` text NOT NULL, + `status` enum('active','resolved','closed') NOT NULL DEFAULT 'active', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `confirmed` tinyint(1) NOT NULL DEFAULT '0', + `activatedCount` smallint(6) NOT NULL, + `activatedDate` datetime NOT NULL, + `mailto` text, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedBuild` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `deadline` date NOT NULL, + `resolvedBy` varchar(30) NOT NULL DEFAULT '', + `resolution` varchar(30) NOT NULL DEFAULT '', + `resolvedBuild` varchar(30) NOT NULL DEFAULT '', + `resolvedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `duplicateBug` mediumint(8) unsigned NOT NULL, + `linkBug` varchar(255) NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `caseVersion` smallint(6) NOT NULL DEFAULT '1', + `result` mediumint(8) unsigned NOT NULL, + `testtask` mediumint(8) unsigned NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`), + KEY `status` (`status`), + KEY `plan` (`plan`), + KEY `story` (`story`), + KEY `case` (`case`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_build` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(150) NOT NULL, + `scmPath` char(255) NOT NULL, + `filePath` char(255) NOT NULL, + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `builder` char(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_burn` ( + `project` mediumint(8) unsigned NOT NULL, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `estimate` float NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + PRIMARY KEY (`project`,`date`,`task`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_case` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(30) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `title` varchar(255) NOT NULL, + `precondition` text NOT NULL, + `keywords` varchar(255) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '3', + `type` char(30) NOT NULL DEFAULT '1', + `stage` varchar(255) NOT NULL, + `howRun` varchar(30) NOT NULL, + `scriptedBy` varchar(30) NOT NULL, + `scriptedDate` date NOT NULL, + `scriptStatus` varchar(30) NOT NULL, + `scriptLocation` varchar(255) NOT NULL, + `status` char(30) NOT NULL DEFAULT '1', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `frequency` enum('1','2','3') NOT NULL DEFAULT '1', + `order` tinyint(30) unsigned NOT NULL DEFAULT '0', + `openedBy` char(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` date NOT NULL, + `lastEditedBy` char(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `linkCase` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL, + `fromCaseID` mediumint(8) unsigned NOT NULL, + `fromCaseVersion` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `story` (`story`), + KEY `module` (`module`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_casestep` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(3) unsigned NOT NULL DEFAULT '0', + `type` varchar(10) NOT NULL DEFAULT 'step', + `desc` text NOT NULL, + `expect` text NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_company` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(120) DEFAULT NULL, + `phone` char(20) DEFAULT NULL, + `fax` char(20) DEFAULT NULL, + `address` char(120) DEFAULT NULL, + `zipcode` char(10) DEFAULT NULL, + `website` char(120) DEFAULT NULL, + `backyard` char(120) DEFAULT NULL, + `guest` enum('1','0') NOT NULL DEFAULT '0', + `admins` char(255) DEFAULT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_config` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `owner` char(30) NOT NULL DEFAULT '', + `module` varchar(30) NOT NULL, + `section` char(30) NOT NULL DEFAULT '', + `key` char(30) NOT NULL DEFAULT '', + `value` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`owner`,`module`,`section`,`key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_cron` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `m` varchar(20) NOT NULL, + `h` varchar(20) NOT NULL, + `dom` varchar(20) NOT NULL, + `mon` varchar(20) NOT NULL, + `dow` varchar(20) NOT NULL, + `command` text NOT NULL, + `remark` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `buildin` tinyint(1) NOT NULL DEFAULT '0', + `status` varchar(20) NOT NULL, + `lastTime` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `lastTime` (`lastTime`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_dept` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(60) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` tinyint(3) unsigned NOT NULL DEFAULT '0', + `position` char(30) NOT NULL DEFAULT '', + `function` char(255) NOT NULL DEFAULT '', + `manager` char(30) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `path` (`path`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doc` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `lib` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `views` smallint(5) unsigned NOT NULL, + `collector` text NOT NULL, + `addedBy` varchar(30) NOT NULL, + `addedDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `version` smallint(5) unsigned NOT NULL DEFAULT '1', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`), + KEY `lib` (`lib`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doccontent` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `doc` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `digest` varchar(255) NOT NULL, + `content` text NOT NULL, + `files` text NOT NULL, + `type` varchar(10) NOT NULL, + `version` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `doc_version` (`doc`,`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doclib` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `name` varchar(60) NOT NULL, + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `main` enum('0','1') NOT NULL DEFAULT '0', + `collector` text NOT NULL, + `order` tinyint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_effort` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `user` char(30) NOT NULL DEFAULT '', + `todo` enum('1','0') NOT NULL DEFAULT '1', + `date` date NOT NULL, + `begin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `end` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `type` enum('1','2','3') NOT NULL DEFAULT '1', + `idvalue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(30) NOT NULL DEFAULT '', + `desc` char(255) NOT NULL DEFAULT '', + `status` enum('1','2','3') NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `user` (`user`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_entry` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `account` varchar(30) NOT NULL DEFAULT '', + `code` varchar(20) NOT NULL, + `key` varchar(32) NOT NULL, + `freePasswd` enum('0','1') NOT NULL DEFAULT '0', + `ip` varchar(100) NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `calledTime` int(10) unsigned NOT NULL DEFAULT '0', + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0', '1') NOT NULL DEFAULT '0', + PRIMARY KEY `id` (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_extension` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(150) NOT NULL, + `code` varchar(30) NOT NULL, + `version` varchar(50) NOT NULL, + `author` varchar(100) NOT NULL, + `desc` text NOT NULL, + `license` text NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'extension', + `site` varchar(150) NOT NULL, + `zentaoCompatible` varchar(100) NOT NULL, + `installedTime` datetime NOT NULL, + `depends` varchar(100) NOT NULL, + `dirs` mediumtext NOT NULL, + `files` mediumtext NOT NULL, + `status` varchar(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + KEY `name` (`name`), + KEY `installedTime` (`installedTime`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_file` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `pathname` char(100) NOT NULL, + `title` char(255) NOT NULL, + `extension` char(30) NOT NULL, + `size` int(10) unsigned NOT NULL DEFAULT '0', + `objectType` char(30) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `addedBy` char(30) NOT NULL DEFAULT '', + `addedDate` datetime NOT NULL, + `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0', + `extra` varchar(255) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `objectType` (`objectType`), + KEY `objectID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_group` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(30) NOT NULL, + `role` char(30) NOT NULL DEFAULT '', + `desc` char(255) NOT NULL DEFAULT '', + `acl` text, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_grouppriv` ( + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` char(30) NOT NULL DEFAULT '', + `method` char(30) NOT NULL DEFAULT '', + UNIQUE KEY `group` (`group`,`module`,`method`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_history` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `action` mediumint(8) unsigned NOT NULL DEFAULT '0', + `field` varchar(30) NOT NULL DEFAULT '', + `old` text NOT NULL, + `new` text NOT NULL, + `diff` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `action` (`action`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_lang` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `lang` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `section` varchar(30) NOT NULL, + `key` varchar(60) NOT NULL, + `value` text NOT NULL, + `system` enum('0','1') NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_log` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `action` mediumint(8) unsigned NOT NULL, + `date` datetime NOT NULL, + `url` varchar(255) NOT NULL, + `contentType` varchar(30) NOT NULL, + `data` text NOT NULL, + `result` text NOT NULL, + PRIMARY KEY (`id`), + KEY `objectType` (`objectType`), + KEY `obejctID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_module` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(60) NOT NULL DEFAULT '', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `type` char(30) NOT NULL, + `owner` varchar(30) NOT NULL, + `collector` text NOT NULL, + `short` varchar(30) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `root` (`root`), + KEY `type` (`type`), + KEY `path` (`path`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_notify` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(50) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `action` mediumint(9) NOT NULL, + `toList` varchar(255) NOT NULL, + `ccList` text NOT NULL, + `subject` varchar(255) NOT NULL, + `data` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `sendTime` datetime NOT NULL, + `status` varchar(10) NOT NULL DEFAULT 'wait', + `failReason` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_product` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `line` mediumint(8) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT 'normal', + `status` varchar(30) NOT NULL DEFAULT '', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `PO` varchar(30) NOT NULL, + `QD` varchar(30) NOT NULL, + `RD` varchar(30) NOT NULL, + `acl` enum('open','private','custom') NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `createdVersion` varchar(20) NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `order` (`order`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_productplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `parent` mediumint(9) NOT NULL DEFAULT '0', + `title` varchar(90) NOT NULL, + `desc` text NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `order` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `end` (`end`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_project` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `isCat` enum('1','0') NOT NULL DEFAULT '0', + `catID` mediumint(8) unsigned NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'sprint', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `days` smallint(5) unsigned NOT NULL, + `status` varchar(10) NOT NULL, + `subStatus` varchar(30) NOT NULL DEFAULT '', + `statge` enum('1','2','3','4','5') NOT NULL DEFAULT '1', + `pri` enum('1','2','3','4') NOT NULL DEFAULT '1', + `desc` text NOT NULL, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedVersion` varchar(20) NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `canceledBy` varchar(30) NOT NULL DEFAULT '', + `canceledDate` datetime NOT NULL, + `PO` varchar(30) NOT NULL DEFAULT '', + `PM` varchar(30) NOT NULL DEFAULT '', + `QD` varchar(30) NOT NULL DEFAULT '', + `RD` varchar(30) NOT NULL DEFAULT '', + `team` varchar(90) NOT NULL, + `acl` enum('open','private','custom') NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `begin` (`begin`), + KEY `end` (`end`), + KEY `status` (`status`), + KEY `order` (`order`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectproduct` ( + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `plan` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`project`,`product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectstory` ( + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `order` smallint(6) unsigned NOT NULL, + UNIQUE KEY `project` (`project`,`story`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_release` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `build` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `marker` enum('0','1') NOT NULL DEFAULT '0', + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `leftBugs` text NOT NULL, + `desc` text NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'normal', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_score` ( + `id` bigint(12) unsigned NOT NULL AUTO_INCREMENT, + `account` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL DEFAULT '', + `method` varchar(30) NOT NULL, + `desc` varchar(250) NOT NULL DEFAULT '', + `before` int(11) NOT NULL DEFAULT '0', + `score` int(11) NOT NULL DEFAULT '0', + `after` int(11) NOT NULL DEFAULT '0', + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `model` (`module`), + KEY `method` (`method`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_story` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `product` mediumint(8) unsigned NOT NULL default '0', + `branch` mediumint(8) unsigned NOT NULL default '0', + `module` mediumint(8) unsigned NOT NULL default '0', + `plan` text, + `source` varchar(20) NOT NULL, + `sourceNote` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL default '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL default '', + `pri` tinyint(3) unsigned NOT NULL default '3', + `estimate` float unsigned NOT NULL, + `status` enum('','changed','active','draft','closed') NOT NULL default '', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released', 'closed') NOT NULL DEFAULT 'wait', + `stagedBy` char(30) NOT NULL, + `mailto` text, + `openedBy` varchar(30) NOT NULL default '', + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL default '', + `assignedDate` datetime NOT NULL, + `lastEditedBy` varchar(30) NOT NULL default '', + `lastEditedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` date NOT NULL, + `closedBy` varchar(30) NOT NULL default '', + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `toBug` mediumint(8) unsigned NOT NULL, + `childStories` varchar(255) NOT NULL, + `linkStories` varchar(255) NOT NULL, + `duplicateStory` mediumint(8) unsigned NOT NULL, + `version` smallint(6) NOT NULL default '1', + `deleted` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `status` (`status`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storyspec` ( + `story` mediumint(9) NOT NULL, + `version` smallint(6) NOT NULL, + `title` varchar(255) NOT NULL, + `spec` text NOT NULL, + `verify` text NOT NULL, + UNIQUE KEY `story` (`story`,`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_storystage` ( + `story` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `stage` varchar(50) NOT NULL, + `stagedBy` char(30) NOT NULL, + UNIQUE KEY `story_branch` (`story`,`branch`), + KEY `story` (`story`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_suitecase` ( + `suite` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + UNIQUE KEY `suitecase` (`suite`,`case`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_task` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `fromBug` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `estimate` float unsigned NOT NULL, + `consumed` float unsigned NOT NULL, + `left` float unsigned NOT NULL, + `deadline` date NOT NULL, + `status` enum('wait','doing','done','pause','cancel','closed') NOT NULL DEFAULT 'wait', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `mailto` text, + `desc` text NOT NULL, + `openedBy` varchar(30) NOT NULL, + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `estStarted` date NOT NULL, + `realStarted` date NOT NULL, + `finishedBy` varchar(30) NOT NULL, + `finishedDate` datetime NOT NULL, + `finishedList` text NOT NULL, + `canceledBy` varchar(30) NOT NULL, + `canceledDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `lastEditedBy` varchar(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `project` (`project`), + KEY `story` (`story`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_taskestimate` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `left` float unsigned NOT NULL DEFAULT '0', + `consumed` float unsigned NOT NULL, + `account` char(30) NOT NULL DEFAULT '', + `work` text, + PRIMARY KEY (`id`), + KEY `task` (`task`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_team` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `type` enum('project','task') NOT NULL DEFAULT 'project', + `account` char(30) NOT NULL DEFAULT '', + `role` char(30) NOT NULL DEFAULT '', + `limited` char(8) NOT NULL DEFAULT 'no', + `join` date NOT NULL DEFAULT '0000-00-00', + `days` smallint(5) unsigned NOT NULL, + `hours` float(2,1) unsigned NOT NULL DEFAULT '0.0', + `estimate` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `consumed` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `left` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `order` tinyint(3) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `team` (`root`,`type`,`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `tasks` varchar(255) NOT NULL, + `builds` varchar(255) NOT NULL, + `title` varchar(255) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `owner` char(30) NOT NULL, + `members` text NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `cases` text NOT NULL, + `report` text NOT NULL, + `objectType` varchar(20) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testresult` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `run` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + `caseResult` char(30) NOT NULL, + `stepResults` text NOT NULL, + `lastRunner` varchar(30) NOT NULL, + `date` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`), + KEY `run` (`run`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testrun` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `assignedTo` char(30) NOT NULL DEFAULT '', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + `status` char(30) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `task` (`task`,`case`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testsuite` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `desc` text NOT NULL, + `type` varchar(20) NOT NULL, + `addedBy` char(30) NOT NULL, + `addedDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testtask` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(90) NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `build` char(30) NOT NULL, + `owner` varchar(30) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `begin` date NOT NULL, + `end` date NOT NULL, + `mailto` text, + `desc` text NOT NULL, + `report` text NOT NULL, + `status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_translation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `lang` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `key` varchar(100) NOT NULL, + `value` text NOT NULL, + `referer` text NOT NULL, + `status` varchar(30) NOT NULL, + `translator` char(30) NOT NULL, + `translatedTime` datetime NOT NULL, + `reviewer` char(30) NOT NULL, + `reviewedTime` datetime NOT NULL, + `reason` text NOT NULL, + `version` varchar(20) NOT NULL, + `mode` varchar(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `lang_module_key_mode` (`lang`,`module`,`key`,`mode`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_todo` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `date` date NOT NULL, + `begin` smallint(4) unsigned zerofill NOT NULL, + `end` smallint(4) unsigned zerofill NOT NULL, + `type` char(10) NOT NULL, + `cycle` tinyint(3) unsigned NOT NULL DEFAULT '0', + `idvalue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `name` char(150) NOT NULL, + `desc` text NOT NULL, + `status` enum('wait','doing','done','closed') NOT NULL DEFAULT 'wait', + `private` tinyint(1) NOT NULL, + `config` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedBy` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `finishedBy` varchar(30) NOT NULL DEFAULT '', + `finishedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `assignedTo` (`assignedTo`), + KEY `finishedBy` (`finishedBy`), + KEY `date` (`date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_user` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `dept` mediumint(8) unsigned NOT NULL DEFAULT '0', + `account` char(30) NOT NULL DEFAULT '', + `password` char(32) NOT NULL DEFAULT '', + `role` char(10) NOT NULL DEFAULT '', + `realname` varchar(100) NOT NULL DEFAULT '', + `nickname` char(60) NOT NULL DEFAULT '', + `commiter` varchar(100) NOT NULL, + `avatar` char(30) NOT NULL DEFAULT '', + `birthday` date NOT NULL DEFAULT '0000-00-00', + `gender` enum('f','m') NOT NULL DEFAULT 'f', + `email` char(90) NOT NULL DEFAULT '', + `skype` char(90) NOT NULL DEFAULT '', + `qq` char(20) NOT NULL DEFAULT '', + `mobile` char(11) NOT NULL DEFAULT '', + `phone` char(20) NOT NULL DEFAULT '', + `weixin` varchar(90) NOT NULL DEFAULT '', + `dingding` varchar(90) NOT NULL DEFAULT '', + `slack` varchar(90) NOT NULL DEFAULT '', + `whatsapp` varchar(90) NOT NULL DEFAULT '', + `address` char(120) NOT NULL DEFAULT '', + `zipcode` char(10) NOT NULL DEFAULT '', + `join` date NOT NULL DEFAULT '0000-00-00', + `visits` mediumint(8) unsigned NOT NULL DEFAULT '0', + `ip` char(15) NOT NULL DEFAULT '', + `last` int(10) unsigned NOT NULL DEFAULT '0', + `fails` tinyint(5) NOT NULL DEFAULT '0', + `locked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `ranzhi` char(30) NOT NULL DEFAULT '', + `score` int(11) NOT NULL DEFAULT '0', + `scoreLevel` int(11) NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `account` (`account`), + KEY `dept` (`dept`), + KEY `email` (`email`), + KEY `commiter` (`commiter`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usercontact` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `listName` varchar(60) NOT NULL, + `userList` text NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usergroup` ( + `account` char(30) NOT NULL DEFAULT '', + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + UNIQUE KEY `account` (`account`,`group`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userquery` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(90) NOT NULL, + `form` text NOT NULL, + `sql` text NOT NULL, + `shortcut` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `module` (`module`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usertpl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `type` char(30) NOT NULL, + `title` varchar(150) NOT NULL, + `content` text NOT NULL, + `public` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userview` ( + `account` char(30) NOT NULL, + `products` mediumtext NOT NULL, + `projects` mediumtext NOT NULL, + UNIQUE KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_webhook` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(10) NOT NULL DEFAULT 'default', + `name` varchar(50) NOT NULL, + `url` varchar(255) NOT NULL, + `domain` varchar(255) NOT NULL, + `contentType` varchar(30) NOT NULL DEFAULT 'application/json', + `sendType` enum('sync','async') NOT NULL DEFAULT 'sync', + `products` text NOT NULL, + `projects` text NOT NULL, + `params` varchar(100) NOT NULL, + `actions` text NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/db/zentao.sql b/db/zentao.sql index eeb638d840..9d946a88f4 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -1026,7 +1026,6 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'admin', 'index'), (1, 'admin', 'safe'), (1, 'api', 'debug'), -(1, 'api', 'sql'), (1, 'backup', 'backup'), (1, 'backup', 'change'), (1, 'backup', 'delete'), diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 091185b9cb..f626dca399 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -1,3 +1,39 @@ +2019-10-17 11.6.4 +完成的需求: +4392 维护文档分类切换所属文档库后把分类下面的文档也带到新文档库中 +4390 禅道英文版的About 中增加翻译者的名字 +4349 用户名中可以加“.” +修复的Bug: +2621 禅道集成客户端版本显示问题 +2648 bug的视图权限提示不准确 +2652 移除测试单中关联的用例,分页栏显示异常 +2657 内网禅道提交需求时,所属模块下拉时无法定位到模块对应的值 +2661 测试用例库提示页面错误 +2662 创建需求提交没有响应 +2663 项目文档,项目下拉菜单已结束显示位置不正确 +2666 需求已完成的键 由 done 改成了 fixed,导致需求关联的计划丢失 +2684 文档设置不显示子分类文档无效 +2691 产品下拉框样式重叠 +2692 保存按钮提示不统一 +2714 测试单中搜索用例状态显示结果不准确 +2716 激活测试单时显示报错窗口 +2717 邮件列表状态提示不一致 +2719 套件关联用例后,进入套件详情界面报错。 +2720 测试单详情的测试用例,右侧的执行按钮可用状态与下方的执行按钮不一致。 +2721 编辑器中的代码功能自动增加多余空格 +2724 创建项目关联多个产品,不提示导入关联计划下需求 +2728 项目导入bug会列出已经解决的bug +2729 客户端登录禅道用户登录次数会+2 +2731 搜索框更换条件搜索后选择上周没有反应 +2733 php7.2版本兼容问题 +2737 在项目模块下下创建任务无法关联需求 +2739 测试-bug-批量建用例 同一个需求可以关联多个模块 +2742 漏洞需要修复 +2744 添加用户页面和修改密码页面存在密码明文传输 +2748 禅道翻译功能,翻译日语时, 当翻译结果与原文一致时,无法保存。 +2754 翻译功能,新手教程中,创建账号,创建产品与创建需求,对照翻译时,复制到所翻译语言中的变量没有作用 +2767 翻译功能限制打开无效 + 2019-09-24 11.6.3 修复的Bug: 2722 多人任务轮流完成之后状态异常 diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 1ee6b029c6..c1354dd920 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -594,6 +594,11 @@ class baseRouter unset($GLOBALS); unset($_REQUEST); + /* Change for CSRF. */ + $httpType = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http'; + $httpHost = $_SERVER['HTTP_HOST']; + if(strpos($this->server->http_referer, "$httpType://$httpHost") !== 0) $_FILES = $_POST = array(); + $_FILES = validater::filterFiles(); $_POST = validater::filterSuper($_POST); $_GET = validater::filterSuper($_GET); diff --git a/framework/router.class.php b/framework/router.class.php index fd1cbd4bdc..df52800bfa 100755 --- a/framework/router.class.php +++ b/framework/router.class.php @@ -337,11 +337,16 @@ class router extends baseRouter $this->loadModuleConfig('workflowaction'); $moduleName = 'flow'; + $methodName = $this->methodName; /* - * 工作流中除了browse、create、edit、view、delete、export外其他的方法都调用operate方法来执行。 - * In addition to browse, create, edit, view, delete and export, all methods in the workflow call the operate method to execute. + * 工作流中除了内置方法外的方法,如果是批量操作调用batchOperate方法,其它操作调用operate方法来执行。 + * In addition to the built-in methods in the workflow, if the batch operation calls the batchOperate method, other operations call the operate method to execute. */ - $methodName = in_array($this->methodName, $this->config->workflowaction->default->actions) ? $this->methodName : 'operate'; + if(!in_array($this->methodName, $this->config->workflowaction->default->actions)) + { + if($action->type == 'single') $methodName = 'operate'; + if($action->type == 'batch') $methodName = 'batchOperate'; + } $this->setFlowURI($moduleName, $methodName); } @@ -388,12 +393,13 @@ class router extends baseRouter $params = array_slice($params, 2); // $params = array(1); /* Prepend other params. */ - if($methodName == 'operate') array_unshift($params, $this->rawMethod); // $params = array('close', 1); - array_unshift($params, $this->rawModule); // $params = array($module, 'close', 1); - array_unshift($params, $methodName); // $params = array('operate', $module, 'close', 1); - array_unshift($params, $moduleName); // $params = array('flow', 'operate', $module, 'close', 1); + if($methodName == 'operate') array_unshift($params, $this->rawMethod); // $params = array('close', 1); + if($methodName == 'batchOperate') array_unshift($params, $this->rawMethod); // $params = array('close', 1); + array_unshift($params, $this->rawModule); // $params = array($module, 'close', 1); + array_unshift($params, $methodName); // $params = array('operate', $module, 'close', 1); + array_unshift($params, $moduleName); // $params = array('flow', 'operate', $module, 'close', 1); - $this->URI = implode($this->config->requestFix, $params); // $this->URI = flow-operate-$module-close-1.html; + $this->URI = implode($this->config->requestFix, $params); // $this->URI = flow-operate-$module-close-1.html; } else { diff --git a/lib/base/filter/filter.class.php b/lib/base/filter/filter.class.php index f110bfd3e1..8182ed30da 100644 --- a/lib/base/filter/filter.class.php +++ b/lib/base/filter/filter.class.php @@ -643,7 +643,7 @@ class baseValidater $var = (string) $var; $evils = array('eval', 'exec', 'passthru', 'proc_open', 'shell_exec', 'system', '$$', 'include', 'require', 'assert'); - $replaces = array('e v a l', 'e x e c', ' p a s s t h r u', ' p r o c _ o p e n', 's h e l l _ e x e c', 's y s t e m', '$ $', 'i n c l u d e', 'r e q u i r e', 'a s s e r t'); + $replaces = array('e v a l', 'e x e c', 'p a s s t h r u', 'p r o c _ o p e n', 's h e l l _ e x e c', 's y s t e m', '$ $', 'i n c l u d e', 'r e q u i r e', 'a s s e r t'); $var = str_ireplace($evils, $replaces, $var); return $var; @@ -666,12 +666,12 @@ class baseValidater { $var = (string) $var; $evils = array('appendchild(', 'createElement(', 'xss.re', 'onfocus', 'onclick', 'innerHTML', 'replaceChild(', 'html(', 'append(', 'appendTo(', 'prepend(', 'prependTo(', 'after(', 'insertBefore', 'before(', 'replaceWith('); - $replaces = array('a p p e n d c h i l d (', 'c r e a t e E l e m e n t (', 'x s s . r e', 'o n f o c u s', 'o n c l i c k', 'i n n e r H T M L', 'r e p l a c e C h i l d (', 'h t m l (', 'a p p e n d (', 'a p p e n d T o (', 'p r e p e n d (', 'p r e p e n d T o (', 'a f t e r (', 'i n s e r t B e f o r e(', 'b e f o r e (', 'r e p l a c e W i t h ('); + $replaces = array('a p p e n d c h i l d (', 'c r e a t e E l e m e n t (', 'x s s . r e', 'o n f o c u s', 'o n c l i c k', 'i n n e r H T M L', 'r e p l a c e C h i l d (', 'h t m l (', 'a p p e n d (', 'a p p e n d T o (', 'p r e p e n d (', 'p r e p e n d T o (', 'a f t e r (', 'i n s e r t B e f o r e (', 'b e f o r e (', 'r e p l a c e W i t h ('); $var = str_ireplace($evils, $replaces, $var); } /* Process like 'javascript:' */ - $var = preg_replace('/j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:/Ui', 'j a v a s c r i p t :', $var); + $var = preg_replace('/j\s*a\s*v\s*a\s*s\s*c\s*r\s*i\s*p\s*t\s*:/Ui', "j a v a s c r i p t :", $var); return $var; } @@ -721,6 +721,27 @@ class baseValidater return $var; } + /** + * Replace space to i tag. + * + * @param string $var + * @static + * @access public + * @return string + */ + public static function replaceSpace2Tag($var) + { + $replacedTrojan = array('e v a l', 'e x e c', 'p a s s t h r u', 'p r o c _ o p e n', 's h e l l _ e x e c', 's y s t e m', '$ $', 'i n c l u d e', 'r e q u i r e', 'a s s e r t'); + $replacedXSS = array('a p p e n d c h i l d (', 'c r e a t e E l e m e n t (', 'x s s . r e', 'o n f o c u s', 'o n c l i c k', 'i n n e r H T M L', 'r e p l a c e C h i l d (', 'h t m l (', 'a p p e n d (', 'a p p e n d T o (', 'p r e p e n d (', 'p r e p e n d T o (', 'a f t e r (', 'i n s e r t B e f o r e (', 'b e f o r e (', 'r e p l a c e W i t h ('); + + $replacsTrojan = array('eval', 'exec', 'passthru', 'proc_open', 'shell_exec', 'system', '$$', 'include', 'require', 'assert'); + $replacsXSS = array('appendchild(', 'createElement(', 'xss.re', 'onfocus', 'onclick', 'innerHTML', 'replaceChild(', 'html(', 'append(', 'appendTo(', 'prepend(', 'prependTo(', 'after(', 'insertBefore(', 'before(', 'replaceWith(', 'javascript:'); + + $var = str_ireplace($replacedTrojan, $replacsTrojan, $var); + $var = str_ireplace($replacedXSS, $replacsXSS, $var); + return $var; + } + /** * Check by rule. * @@ -1008,6 +1029,9 @@ class baseFixer if(!isset($this->stripedFields[$fieldName]) and (!defined('RUN_MODE') or RUN_MODE != 'admin')) { $this->data->$fieldName = self::dataStripTags($this->data->$fieldName); + + /* Code for bug #2721. */ + $this->data->$fieldName = baseValidater::replaceSpace2Tag($this->data->$fieldName); } $this->stripedFields[$fieldName] = $fieldName; } diff --git a/module/action/lang/de.php b/module/action/lang/de.php index a8583fd048..cb890986bf 100644 --- a/module/action/lang/de.php +++ b/module/action/lang/de.php @@ -137,6 +137,7 @@ $lang->action->desc->linkchildtask = '$date, $actor linked $lang->action->desc->unlinkchildrentask = '$date, $actor unlinked a child task $extra。' . "\n"; $lang->action->desc->linkparenttask = '$date, $actor linked to a parent task $extra。' . "\n"; $lang->action->desc->unlinkparenttask = '$date, $actor unlinked a parent task $extra。' . "\n"; +$lang->action->desc->deletechildrentask = '$date, $actor deleted a child task $extra。' . "\n"; /* 关联用例和移除用例时的历史操作记录。*/ $lang->action->desc->linkrelatedcase = '$date, $actor hat einen Fall verknüpft $extra.' . "\n"; @@ -209,6 +210,7 @@ $lang->action->label->unlinkparenttask = "unlink from parent task"; $lang->action->label->batchcreate = "batch created tasks"; $lang->action->label->createchildren = "create child tasks"; $lang->action->label->managed = "managed"; +$lang->action->label->deletechildrentask = "delete children task"; /* 动态信息按照对象分组 */ $lang->action->dynamicAction = new stdclass; @@ -281,6 +283,7 @@ $lang->action->dynamicAction->task['canceled'] = 'Cancel Task'; $lang->action->dynamicAction->task['activated'] = 'Activate Task'; $lang->action->dynamicAction->task['createchildren'] = 'Create Child Task'; $lang->action->dynamicAction->task['unlinkparenttask'] = 'Unlink Parent Task'; +$lang->action->dynamicAction->task['deletechildrentask'] = 'Delete children task'; $lang->action->dynamicAction->task['linkparenttask'] = 'Link Parent Task'; $lang->action->dynamicAction->task['linkchildtask'] = 'Link Child Task'; $lang->action->dynamicAction->task['undeleted'] = 'Restore Task'; diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php new file mode 100644 index 0000000000..2abd1bacff --- /dev/null +++ b/module/action/lang/fr.php @@ -0,0 +1,451 @@ + + * @package action + * @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->action->common = 'Log'; +$lang->action->product = $lang->productCommon; +$lang->action->project = $lang->projectCommon; +$lang->action->objectType = "Type d'objet"; +$lang->action->objectID = 'ID'; +$lang->action->objectName = "Nom de l'object"; +$lang->action->actor = 'User'; +$lang->action->action = 'Action'; +$lang->action->actionID = 'Action ID'; +$lang->action->date = 'Date'; +$lang->action->extra = 'Extra'; + +$lang->action->trash = 'Corbeille'; +$lang->action->undelete = 'Restaurer'; +$lang->action->hideOne = 'Masquer'; +$lang->action->hideAll = 'Masquer Tout'; +$lang->action->editComment = 'Editer commentaire'; +$lang->action->create = 'Ajouter commentaire'; +$lang->action->comment = 'Commentaire'; + +$lang->action->trashTips = 'Note: Les suppressions dans ZenTao sont purement logiques.'; +$lang->action->textDiff = 'Text Format'; +$lang->action->original = 'Original Format'; +$lang->action->confirmHideAll = 'Voulez-vous masquer tous les enregistrements ?'; +$lang->action->needEdit = '%s que vous voulez restaurer. SVP éditez la.'; +$lang->action->historyEdit = "l'historique Edité Par ne peut pas être vide."; +$lang->action->noDynamic = "Pas d'historique."; + +$lang->action->history = new stdclass(); +$lang->action->history->action = 'Lien'; +$lang->action->history->field = 'Champ'; +$lang->action->history->old = 'Ancienne valeur'; +$lang->action->history->new = 'Nouvelle valeur'; +$lang->action->history->diff = 'Comparer'; + +$lang->action->dynamic = new stdclass(); +$lang->action->dynamic->today = "Aujourd'hui"; +$lang->action->dynamic->yesterday = 'Hier'; +$lang->action->dynamic->twoDaysAgo = 'Il y a 2 jours'; +$lang->action->dynamic->thisWeek = 'Cette semaine'; +$lang->action->dynamic->lastWeek = 'La semaine dernière'; +$lang->action->dynamic->thisMonth = 'Ce mois'; +$lang->action->dynamic->lastMonth = 'Le mois dernier'; +$lang->action->dynamic->all = 'Tout'; +$lang->action->dynamic->hidden = 'Caché'; +$lang->action->dynamic->search = 'Rechercher'; + +$lang->action->periods['all'] = $lang->action->dynamic->all; +$lang->action->periods['today'] = $lang->action->dynamic->today; +$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday; +$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek; +$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek; +$lang->action->periods['thismonth'] = $lang->action->dynamic->thisMonth; +$lang->action->periods['lastmonth'] = $lang->action->dynamic->lastMonth; + +$lang->action->objectTypes['product'] = $lang->productCommon; +$lang->action->objectTypes['story'] = 'Story'; +$lang->action->objectTypes['productplan'] = 'Plan'; +$lang->action->objectTypes['release'] = 'Release'; +$lang->action->objectTypes['project'] = 'Projet'; +$lang->action->objectTypes['task'] = 'Tâche'; +$lang->action->objectTypes['build'] = 'Build'; +$lang->action->objectTypes['bug'] = 'Bug'; +$lang->action->objectTypes['case'] = 'CasTest'; +$lang->action->objectTypes['caseresult'] = 'CasTest Result'; +$lang->action->objectTypes['stepresult'] = 'CasTest Steps'; +$lang->action->objectTypes['testtask'] = 'Recette'; +$lang->action->objectTypes['user'] = 'Utilisateur'; +$lang->action->objectTypes['doc'] = 'Document'; +$lang->action->objectTypes['doclib'] = 'Répertoire Documents'; +$lang->action->objectTypes['todo'] = 'Todo'; +$lang->action->objectTypes['branch'] = 'Branche'; +$lang->action->objectTypes['module'] = 'Module'; +$lang->action->objectTypes['testsuite'] = 'Cahier recette'; +$lang->action->objectTypes['caselib'] = 'Library'; +$lang->action->objectTypes['testreport'] = 'Edition'; +$lang->action->objectTypes['entry'] = 'Entrée'; +$lang->action->objectTypes['webhook'] = 'Webhook'; + +/* 用来描述操作历史记录。*/ +$lang->action->desc = new stdclass(); +$lang->action->desc->common = '$date, $action par $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action en tant que $extra par $actor.' . "\n"; +$lang->action->desc->opened = '$date, initié par $actor .' . "\n"; +$lang->action->desc->created = '$date, créé par $actor .' . "\n"; +$lang->action->desc->changed = '$date, modifié par $actor .' . "\n"; +$lang->action->desc->edited = '$date, édité par $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor affecté à $extra.' . "\n"; +$lang->action->desc->closed = '$date, fermé par $actor .' . "\n"; +$lang->action->desc->deleted = '$date, supprimé par $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor a supprimé $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor a édité $extra.' . "\n"; +$lang->action->desc->erased = '$date, supprimé par $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, restauré par $actor .' . "\n"; +$lang->action->desc->hidden = '$date, masqué par $actor .' . "\n"; +$lang->action->desc->commented = '$date, ajouté par $actor.' . "\n"; +$lang->action->desc->activated = '$date, activé par $actor .' . "\n"; +$lang->action->desc->blocked = '$date, bloqué par $actor .' . "\n"; +$lang->action->desc->moved = '$date, déplacé par $actor , qui était "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor a confirmé la modification de la story. Le dernier build est #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor a confirmé la modification du CasTest. Le dernier build est #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor a confirmé le Bug.' . "\n"; +$lang->action->desc->frombug = '$date, converti par $actor. Son ID était $extra.'; +$lang->action->desc->started = '$date, commencé par $actor.' . "\n"; +$lang->action->desc->restarted = '$date, reprise par $actor.' . "\n"; +$lang->action->desc->delayed = '$date, ajourné par $actor.' . "\n"; +$lang->action->desc->suspended = '$date, suspendu par $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, enregistré par $actor et son coût est de $extra heures.'; +$lang->action->desc->editestimate = '$date, $actor a édité son temps estimé.'; +$lang->action->desc->deleteestimate = '$date, $actor a supprimé son estimation de temps.'; +$lang->action->desc->canceled = '$date, annulé par $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor a validé, le build est #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor a validé, le build est #$extra.' . "\n"; +$lang->action->desc->finished = '$date, terminé par $actor.' . "\n"; +$lang->action->desc->paused = '$date, mis en pause par $actor.' . "\n"; +$lang->action->desc->verified = '$date, verifié par $actor.' . "\n"; +$lang->action->desc->diff1 = '%s a changé. Il est passé de "%s" à "%s".
' . "\n"; +$lang->action->desc->diff2 = '%s a changé. La différence est ' . "\n" . "
%s
" . "\n
%s
"; +$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n"; +$lang->action->desc->linked2bug = '$date, affecté à $extra par $actor'; + +/* 子任务修改父任务的历史操作记录 */ +$lang->action->desc->createchildren = '$date, $actor a créé un sous-tâche $extra。' . "\n"; +$lang->action->desc->linkchildtask = '$date, $actor a raccroché une sous-tâche $extra。' . "\n"; +$lang->action->desc->linkchildtask = '$date, $actor a raccroché une sous-tâche $extra。' . "\n"; +$lang->action->desc->unlinkchildrentask = '$date, $actor a décroché une sous-tâche $extra。' . "\n"; +$lang->action->desc->linkparenttask = '$date, $actor a accroché une tâche parent $extra。' . "\n"; +$lang->action->desc->unlinkparenttask = '$date, $actor a décroché une tâche parent $extra。' . "\n"; +$lang->action->desc->deletechildrentask = '$date, $actor deleted a child task $extra。' . "\n"; + +/* 关联用例和移除用例时的历史操作记录。*/ +$lang->action->desc->linkrelatedcase = '$date, $actor a fait le lien avec un CasTest $extra.' . "\n"; +$lang->action->desc->unlinkrelatedcase = '$date, $actor a délié le CasTest $extra.' . "\n"; + +/* 用来显示动态信息。*/ +$lang->action->label = new stdclass(); +$lang->action->label->created = 'a créé '; +$lang->action->label->opened = 'a ouvert '; +$lang->action->label->changed = 'a changé '; +$lang->action->label->edited = 'a édité '; +$lang->action->label->assigned = 'a affecté '; +$lang->action->label->closed = 'a fermé '; +$lang->action->label->deleted = 'a supprimé '; +$lang->action->label->deletedfile = 'a supprimé '; +$lang->action->label->editfile = 'a édité '; +$lang->action->label->erased = 'a détruit '; +$lang->action->label->undeleted = 'a restauré '; +$lang->action->label->hidden = 'a masqué '; +$lang->action->label->commented = 'a commenté '; +$lang->action->label->activated = 'a activé '; +$lang->action->label->blocked = 'a bloqué '; +$lang->action->label->resolved = 'a résolu '; +$lang->action->label->reviewed = 'a revu '; +$lang->action->label->moved = 'a déplacé '; +$lang->action->label->confirmed = 'a confirmé Story '; +$lang->action->label->bugconfirmed = 'a confirmé le Bug '; +$lang->action->label->tostory = 'a converti en Story '; +$lang->action->label->frombug = 'a converti du Bug '; +$lang->action->label->fromlib = 'a importé de la Library '; +$lang->action->label->totask = 'a converti en Tâche '; +$lang->action->label->svncommited = 'a committé SVN '; +$lang->action->label->gitcommited = 'a committé Git '; +$lang->action->label->linked2plan = 'a racordé au Plan '; +$lang->action->label->unlinkedfromplan = 'a extrait du plan '; +$lang->action->label->changestatus = 'a changé le statut '; +$lang->action->label->marked = 'a marqué'; +$lang->action->label->linked2project = "a ajouté à {$lang->projectCommon}"; +$lang->action->label->unlinkedfromproject = "a enlevé de {$lang->projectCommon}"; +$lang->action->label->unlinkedfrombuild = "a enlevé du Build "; +$lang->action->label->linked2release = "a ajouté à une Release "; +$lang->action->label->unlinkedfromrelease = "a enlevé de la Release "; +$lang->action->label->linkrelatedbug = "a lié à un Bug "; +$lang->action->label->unlinkrelatedbug = "a délié du Bug "; +$lang->action->label->linkrelatedcase = "a mis en relation avec un CasTest "; +$lang->action->label->unlinkrelatedcase = "a libéré du CasTest "; +$lang->action->label->linkrelatedstory = "a lié à une Story "; +$lang->action->label->unlinkrelatedstory = "a dégagé de la Story "; +$lang->action->label->subdividestory = "a décomposé la Story "; +$lang->action->label->unlinkchildstory = "a dissocié de la Story fille "; +$lang->action->label->started = 'a commencé '; +$lang->action->label->restarted = 'a continué '; +$lang->action->label->recordestimate = 'a estimé '; +$lang->action->label->editestimate = 'a réestimé '; +$lang->action->label->canceled = 'a annulé '; +$lang->action->label->finished = 'a fini '; +$lang->action->label->paused = 'a stoppé '; +$lang->action->label->verified = 'a vérifié '; +$lang->action->label->delayed = 'a ajourné '; +$lang->action->label->suspended = 'a suspendu '; +$lang->action->label->login = "s'est Connecté"; +$lang->action->label->logout = "s'est Déconnecté"; +$lang->action->label->deleteestimate = "a remis à zéro "; +$lang->action->label->linked2build = "a ajouté au Build "; +$lang->action->label->linked2bug = "a lié au Bug "; +$lang->action->label->linkchildtask = "a raccroché à une sous-tâche"; +$lang->action->label->unlinkchildrentask = "a décroché la sous-tâche"; +$lang->action->label->linkparenttask = "a raccroché à une tâche parent"; +$lang->action->label->unlinkparenttask = "a décroché de la tâche parent"; +$lang->action->label->batchcreate = "a créé tâches par lot"; +$lang->action->label->createchildren = "a créé sous-tâches par lot"; +$lang->action->label->managed = "a managé"; +$lang->action->label->deletechildrentask = "delete children task"; + +/* 动态信息按照对象分组 */ +$lang->action->dynamicAction = new stdclass; +$lang->action->dynamicAction->todo['opened'] = 'Créer Todo'; +$lang->action->dynamicAction->todo['edited'] = 'Edit Todo'; +$lang->action->dynamicAction->todo['erased'] = 'Détruire Todo'; +$lang->action->dynamicAction->todo['finished'] = 'Finir Todo'; +$lang->action->dynamicAction->todo['activated'] = 'Activer Todo'; +$lang->action->dynamicAction->todo['closed'] = 'Fermer Todo'; +$lang->action->dynamicAction->todo['deleted'] = 'Suppr Todo'; +$lang->action->dynamicAction->todo['assigned'] = 'Assigner Todo'; +$lang->action->dynamicAction->todo['undeleted'] = 'Restaurer Todo'; +$lang->action->dynamicAction->todo['hidden'] = 'Masquer Todo'; + +$lang->action->dynamicAction->product['opened'] = 'Créer ' . $lang->productCommon; +$lang->action->dynamicAction->product['edited'] = 'Editer ' . $lang->productCommon; +$lang->action->dynamicAction->product['deleted'] = 'Supprimer ' . $lang->productCommon; +$lang->action->dynamicAction->product['closed'] = 'Fermer ' . $lang->productCommon; +$lang->action->dynamicAction->product['undeleted'] = 'Restaurer ' . $lang->productCommon; +$lang->action->dynamicAction->product['hidden'] = 'Masquer ' . $lang->productCommon; +$lang->action->dynamicAction->productplan['opened'] = 'Créer Plan'; +$lang->action->dynamicAction->productplan['edited'] = 'Editer Plan'; +$lang->action->dynamicAction->release['opened'] = 'Créer Release'; +$lang->action->dynamicAction->release['edited'] = 'Editer Release'; +$lang->action->dynamicAction->release['changestatus'] = 'Changer Statut Release'; +$lang->action->dynamicAction->release['undeleted'] = 'Restaurer Release'; +$lang->action->dynamicAction->release['hidden'] = 'Masquer Release'; +$lang->action->dynamicAction->story['opened'] = 'Créer Story'; +$lang->action->dynamicAction->story['edited'] = 'Editer Story'; +$lang->action->dynamicAction->story['activated'] = 'Activer Story'; +$lang->action->dynamicAction->story['reviewed'] = 'Consulter Story'; +$lang->action->dynamicAction->story['closed'] = 'Fermer Story'; +$lang->action->dynamicAction->story['assigned'] = 'Assigner Story'; +$lang->action->dynamicAction->story['changed'] = 'Changer Story'; +$lang->action->dynamicAction->story['linked2plan'] = 'Inclure Story au Plan'; +$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Enlever Story du Plan'; +$lang->action->dynamicAction->story['linked2release'] = 'Inclure Story à la Release'; +$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Enlever Story de la Release'; +$lang->action->dynamicAction->story['linked2build'] = 'Ajouter Story au Build'; +$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Détacher Story du Build'; +$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Détacher du Project'; +$lang->action->dynamicAction->story['undeleted'] = 'Restaurer Story'; +$lang->action->dynamicAction->story['hidden'] = 'Masquer Story'; + +$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['deleted'] = 'Supprimer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['delayed'] = 'Ajouter ' . $lang->projectCommon; +$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->projectCommon; +$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['managed'] = 'Manager ' . $lang->projectCommon; +$lang->action->dynamicAction->project['undeleted'] = 'Restaurer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['hidden'] = 'Masquer ' . $lang->projectCommon; +$lang->action->dynamicAction->project['moved'] = 'Déplacer Tâche'; +$lang->action->dynamicAction->task['opened'] = 'Créer Tâche'; +$lang->action->dynamicAction->task['edited'] = 'Editer Tâche'; +$lang->action->dynamicAction->task['commented'] = 'Commenter Tâche'; +$lang->action->dynamicAction->task['assigned'] = 'Assigner Tâche'; +$lang->action->dynamicAction->task['confirmed'] = 'Confirmer Tâche'; +$lang->action->dynamicAction->task['started'] = 'Commencer Tâche'; +$lang->action->dynamicAction->task['finished'] = 'Terminer Tâche'; +$lang->action->dynamicAction->task['recordestimate'] = 'Ajouter Estimation'; +$lang->action->dynamicAction->task['editestimate'] = 'Editer Estimation'; +$lang->action->dynamicAction->task['deleteestimate'] = 'RAZ Estimation'; +$lang->action->dynamicAction->task['paused'] = 'Stopper Tâche'; +$lang->action->dynamicAction->task['closed'] = 'Fermer Tâche'; +$lang->action->dynamicAction->task['canceled'] = 'Supprimer Tâche'; +$lang->action->dynamicAction->task['activated'] = 'Activer Tâche'; +$lang->action->dynamicAction->task['createchildren'] = 'Créer Sous-Tâche'; +$lang->action->dynamicAction->task['unlinkparenttask'] = 'Délier Tâche Parent'; +$lang->action->dynamicAction->task['deletechildrentask'] = 'Delete children task'; +$lang->action->dynamicAction->task['linkparenttask'] = 'Lier Tâche Parent'; +$lang->action->dynamicAction->task['linkchildtask'] = 'Lier sous-tâche'; +$lang->action->dynamicAction->task['undeleted'] = 'Restaurer Tâche'; +$lang->action->dynamicAction->task['hidden'] = 'Masquer Tâche'; +$lang->action->dynamicAction->task['svncommited'] = 'SVN Commit'; +$lang->action->dynamicAction->task['gitcommited'] = 'GIT Commit'; +$lang->action->dynamicAction->build['opened'] = 'Créer Build'; +$lang->action->dynamicAction->build['edited'] = 'Editer Build'; + +$lang->action->dynamicAction->bug['opened'] = 'Remonter Bug'; +$lang->action->dynamicAction->bug['edited'] = 'Editer Bug'; +$lang->action->dynamicAction->bug['activated'] = 'Activer Bug'; +$lang->action->dynamicAction->bug['assigned'] = 'Assigner Bug'; +$lang->action->dynamicAction->bug['closed'] = 'Fermer Bug'; +$lang->action->dynamicAction->bug['bugconfirmed'] = 'Confirmer Bug'; +$lang->action->dynamicAction->bug['resolved'] = 'Resolu Bug'; +$lang->action->dynamicAction->bug['undeleted'] = 'Restaurer Bug'; +$lang->action->dynamicAction->bug['hidden'] = 'Masquer Bug'; +$lang->action->dynamicAction->bug['confirmed'] = 'Confirme Chang Story'; +$lang->action->dynamicAction->bug['tostory'] = 'Converti en Story'; +$lang->action->dynamicAction->bug['totask'] = 'Converti en Tâche'; +$lang->action->dynamicAction->bug['linked2plan'] = 'Lié au Plan'; +$lang->action->dynamicAction->bug['unlinkedfromplan'] = 'Enlevé du Plan'; +$lang->action->dynamicAction->bug['linked2release'] = 'Ajouté à la Release'; +$lang->action->dynamicAction->bug['unlinkedfromrelease'] = 'Enlevé de la Release'; +$lang->action->dynamicAction->bug['linked2bug'] = 'Lié au Build'; +$lang->action->dynamicAction->bug['unlinkedfrombuild'] = 'Retiré du Build'; +$lang->action->dynamicAction->testtask['opened'] = 'Créé Recette'; +$lang->action->dynamicAction->testtask['edited'] = 'Edité Recette'; +$lang->action->dynamicAction->testtask['started'] = 'Commencé Recette'; +$lang->action->dynamicAction->testtask['activated'] = 'Activé Recette'; +$lang->action->dynamicAction->testtask['closed'] = 'Fermé Recette'; +$lang->action->dynamicAction->testtask['blocked'] = 'Bloqué Recette'; +$lang->action->dynamicAction->case['opened'] = 'Créé CasTest'; +$lang->action->dynamicAction->case['edited'] = 'Edité CasTest'; +$lang->action->dynamicAction->case['deleted'] = 'Supprimé CasTest'; +$lang->action->dynamicAction->case['undeleted'] = 'Restauré CasTest'; +$lang->action->dynamicAction->case['hidden'] = 'Masqué CasTest'; +$lang->action->dynamicAction->case['reviewed'] = 'Ajouté Revue Résultats'; +$lang->action->dynamicAction->case['confirmed'] = 'Confirmé CasTest'; +$lang->action->dynamicAction->case['fromlib'] = 'Importé de CasTest Lib'; +$lang->action->dynamicAction->testreport['opened'] = 'Créé Test Report'; +$lang->action->dynamicAction->testreport['edited'] = 'Edité Test Report'; +$lang->action->dynamicAction->testreport['deleted'] = 'Supprimé Test Report'; +$lang->action->dynamicAction->testreport['undeleted'] = 'Restauré Test Report'; +$lang->action->dynamicAction->testreport['hidden'] = 'Masqué Test Report'; +$lang->action->dynamicAction->testsuite['opened'] = 'Créé Test Suite'; +$lang->action->dynamicAction->testsuite['edited'] = 'Edité Test Suite'; +$lang->action->dynamicAction->testsuite['deleted'] = 'Supprimé Test Suite'; +$lang->action->dynamicAction->testsuite['undeleted'] = 'Restauré Test Suite'; +$lang->action->dynamicAction->testsuite['hidden'] = 'Masqué Test Suite'; +$lang->action->dynamicAction->caselib['opened'] = 'Créé CasTest Lib'; +$lang->action->dynamicAction->caselib['edited'] = 'Edité CasTest Lib'; +$lang->action->dynamicAction->caselib['deleted'] = 'Supprimé CasTest Lib'; +$lang->action->dynamicAction->caselib['undeleted'] = 'Restauré CasTest Lib'; +$lang->action->dynamicAction->caselib['hidden'] = 'Masqué CasTest Lib'; + +$lang->action->dynamicAction->doclib['created'] = 'Créer Doc Library'; +$lang->action->dynamicAction->doclib['edited'] = 'Editer Doc Library'; +$lang->action->dynamicAction->doc['created'] = 'Créer Document'; +$lang->action->dynamicAction->doc['edited'] = 'Editer Document'; +$lang->action->dynamicAction->doc['commented'] = 'Commenter Document'; +$lang->action->dynamicAction->doc['deleted'] = 'Supprimer Document'; +$lang->action->dynamicAction->doc['undeleted'] = 'Restaurer Document'; +$lang->action->dynamicAction->doc['hidden'] = 'Masquer Document'; + +$lang->action->dynamicAction->user['created'] = 'Créer User'; +$lang->action->dynamicAction->user['edited'] = 'Editer User'; +$lang->action->dynamicAction->user['login'] = 'Connexion'; +$lang->action->dynamicAction->user['logout'] = 'Déconnexion'; +$lang->action->dynamicAction->user['undeleted'] = 'Restaure User'; +$lang->action->dynamicAction->user['hidden'] = 'Masquer User'; +$lang->action->dynamicAction->user['loginxuanxuan'] = 'Login Desktop'; + +$lang->action->dynamicAction->entry['created'] = 'Ajouter Application'; +$lang->action->dynamicAction->entry['edited'] = 'Editer Application'; + +/* 用来生成相应对象的链接。*/ +$lang->action->label->product = $lang->productCommon . '|product|view|productID=%s'; +$lang->action->label->productplan = 'Plan|productplan|view|productID=%s'; +$lang->action->label->release = 'Release|release|view|productID=%s'; +$lang->action->label->story = 'Story|story|view|storyID=%s'; +$lang->action->label->project = "{$lang->projectCommon}|project|view|projectID=%s"; +$lang->action->label->task = 'Tâche|task|view|taskID=%s'; +$lang->action->label->build = 'Build|build|view|buildID=%s'; +$lang->action->label->bug = 'Bug|bug|view|bugID=%s'; +$lang->action->label->case = 'CasTest|testcase|view|caseID=%s'; +$lang->action->label->testtask = 'Recette|testtask|view|caseID=%s'; +$lang->action->label->testsuite = 'Cahier Recette|testsuite|view|suiteID=%s'; +$lang->action->label->caselib = 'Library Recette|testsuite|libview|libID=%s'; +$lang->action->label->todo = 'Agenda|todo|view|todoID=%s'; +$lang->action->label->doclib = 'Bibliothèque|doc|browse|libID=%s'; +$lang->action->label->doc = 'Document|doc|view|docID=%s'; +$lang->action->label->user = 'Utilisateur|user|view|account=%s'; +$lang->action->label->testreport = 'Rapport|testreport|view|report=%s'; +$lang->action->label->entry = 'Application|entry|browse|'; +$lang->action->label->webhook = 'Webhook|webhook|browse|'; +$lang->action->label->space = ' '; + +/* Object type. */ +$lang->action->search->objectTypeList[''] = ''; +$lang->action->search->objectTypeList['product'] = $lang->productCommon; +$lang->action->search->objectTypeList['project'] = $lang->projectCommon; +$lang->action->search->objectTypeList['bug'] = 'Bug'; +$lang->action->search->objectTypeList['case'] = 'CasTest'; +$lang->action->search->objectTypeList['caseresult'] = 'CasTest Result'; +$lang->action->search->objectTypeList['stepresult'] = 'CasTest Steps'; +$lang->action->search->objectTypeList['story'] = 'Story'; +$lang->action->search->objectTypeList['task'] = 'Tâche'; +$lang->action->search->objectTypeList['testtask'] = 'Recette'; +$lang->action->search->objectTypeList['user'] = 'Utilisateur'; +$lang->action->search->objectTypeList['doc'] = 'Doc'; +$lang->action->search->objectTypeList['doclib'] = 'Doc Lib'; +$lang->action->search->objectTypeList['todo'] = 'Todo'; +$lang->action->search->objectTypeList['build'] = 'Build'; +$lang->action->search->objectTypeList['release'] = 'Release'; +$lang->action->search->objectTypeList['productplan'] = 'Plan'; +$lang->action->search->objectTypeList['branch'] = 'Branche'; +$lang->action->search->objectTypeList['testsuite'] = 'Cahier Recette'; +$lang->action->search->objectTypeList['caselib'] = 'Library'; +$lang->action->search->objectTypeList['testreport'] = 'Etat'; + +/* 用来在动态显示中显示动作 */ +$lang->action->search->label[''] = ''; +$lang->action->search->label['created'] = $lang->action->label->created; +$lang->action->search->label['opened'] = $lang->action->label->opened; +$lang->action->search->label['changed'] = $lang->action->label->changed; +$lang->action->search->label['edited'] = $lang->action->label->edited; +$lang->action->search->label['assigned'] = $lang->action->label->assigned; +$lang->action->search->label['closed'] = $lang->action->label->closed; +$lang->action->search->label['deleted'] = $lang->action->label->deleted; +$lang->action->search->label['deletedfile'] = $lang->action->label->deletedfile; +$lang->action->search->label['editfile'] = $lang->action->label->editfile; +$lang->action->search->label['erased'] = $lang->action->label->erased; +$lang->action->search->label['undeleted'] = $lang->action->label->undeleted; +$lang->action->search->label['hidden'] = $lang->action->label->hidden; +$lang->action->search->label['commented'] = $lang->action->label->commented; +$lang->action->search->label['activated'] = $lang->action->label->activated; +$lang->action->search->label['blocked'] = $lang->action->label->blocked; +$lang->action->search->label['resolved'] = $lang->action->label->resolved; +$lang->action->search->label['reviewed'] = $lang->action->label->reviewed; +$lang->action->search->label['moved'] = $lang->action->label->moved; +$lang->action->search->label['confirmed'] = $lang->action->label->confirmed; +$lang->action->search->label['bugconfirmed'] = $lang->action->label->bugconfirmed; +$lang->action->search->label['tostory'] = $lang->action->label->tostory; +$lang->action->search->label['frombug'] = $lang->action->label->frombug; +$lang->action->search->label['totask'] = $lang->action->label->totask; +$lang->action->search->label['svncommited'] = $lang->action->label->svncommited; +$lang->action->search->label['gitcommited'] = $lang->action->label->gitcommited; +$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan; +$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan; +$lang->action->search->label['changestatus'] = $lang->action->label->changestatus; +$lang->action->search->label['marked'] = $lang->action->label->marked; +$lang->action->search->label['linked2project'] = $lang->action->label->linked2project; +$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject; +$lang->action->search->label['started'] = $lang->action->label->started; +$lang->action->search->label['restarted'] = $lang->action->label->restarted; +$lang->action->search->label['recordestimate'] = $lang->action->label->recordestimate; +$lang->action->search->label['editestimate'] = $lang->action->label->editestimate; +$lang->action->search->label['canceled'] = $lang->action->label->canceled; +$lang->action->search->label['finished'] = $lang->action->label->finished; +$lang->action->search->label['paused'] = $lang->action->label->paused; +$lang->action->search->label['verified'] = $lang->action->label->verified; +$lang->action->search->label['login'] = $lang->action->label->login; +$lang->action->search->label['logout'] = $lang->action->label->logout; diff --git a/module/action/lang/zh-tw.php b/module/action/lang/zh-tw.php index 8c22824465..1b06ba9ff7 100755 --- a/module/action/lang/zh-tw.php +++ b/module/action/lang/zh-tw.php @@ -137,6 +137,7 @@ $lang->action->desc->linkchildtask = '$date, 由 $actor $lang->action->desc->unlinkchildrentask = '$date, 由 $actor 移除子任務 $extra。' . "\n"; $lang->action->desc->linkparenttask = '$date, 由 $actor 關聯到父任務 $extra。' . "\n"; $lang->action->desc->unlinkparenttask = '$date, 由 $actor 從父任務$extra取消關聯。' . "\n"; +$lang->action->desc->deletechildrentask = '$date, 由 $actor 刪除子任務$extra。' . "\n"; /* 關聯用例和移除用例時的歷史操作記錄。*/ $lang->action->desc->linkrelatedcase = '$date, 由 $actor 關聯相關用例 $extra。' . "\n"; @@ -209,6 +210,7 @@ $lang->action->label->unlinkparenttask = "從父任務取消關聯"; $lang->action->label->batchcreate = "批量創建任務"; $lang->action->label->createchildren = "創建子任務"; $lang->action->label->managed = "維護"; +$lang->action->label->deletechildrentask = "刪除子任務"; /* 動態信息按照對象分組 */ $lang->action->dynamicAction = new stdclass(); @@ -281,6 +283,7 @@ $lang->action->dynamicAction->task['canceled'] = '取消任務'; $lang->action->dynamicAction->task['activated'] = '激活任務'; $lang->action->dynamicAction->task['createchildren'] = '創建子任務'; $lang->action->dynamicAction->task['unlinkparenttask'] = '從父任務取消關聯'; +$lang->action->dynamicAction->task['deletechildrentask'] = '刪除子任務'; $lang->action->dynamicAction->task['linkparenttask'] = '關聯到父任務'; $lang->action->dynamicAction->task['linkchildtask'] = '關聯子任務'; $lang->action->dynamicAction->task['undeleted'] = '還原任務'; diff --git a/module/admin/lang/fr.php b/module/admin/lang/fr.php new file mode 100644 index 0000000000..448f2d6b24 --- /dev/null +++ b/module/admin/lang/fr.php @@ -0,0 +1,82 @@ + + * @package admin + * @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->admin->common = 'Admin'; +$lang->admin->index = 'Admin Home'; +$lang->admin->checkDB = 'Check Database'; +$lang->admin->sso = 'Zdoo'; +$lang->admin->ssoAction = 'Link Zdoo'; +$lang->admin->safeIndex = 'Sécurité'; +$lang->admin->checkWeak = 'Contrôle niveau de sécurité des mots de passe'; +$lang->admin->certifyMobile = 'Vérifier votre smartphone'; +$lang->admin->certifyEmail = 'Vérifier votre Email'; +$lang->admin->ztCompany = 'Vérifier votre entreprise'; +$lang->admin->captcha = 'Code de vérification'; +$lang->admin->getCaptcha = 'Obtenir le Code de vérification'; + +$lang->admin->api = 'API'; +$lang->admin->log = 'Log'; +$lang->admin->setting = 'Paramétrage'; +$lang->admin->days = 'Durée de conservation'; + +$lang->admin->info = new stdclass(); +$lang->admin->info->version = 'La version actuelle est %s customisée. '; +$lang->admin->info->links = 'Vous pouvez visiter les liens ci-dessous'; +$lang->admin->info->account = 'Votre identifiant client ZenTao est %s.'; +$lang->admin->info->log = 'Les logs qui dépassent la durée de conservation seront supprimés et vous devrez exécuter un cron.'; + +$lang->admin->notice = new stdclass(); +$lang->admin->notice->register = "Note: Vous n'êtes pas enregistré sur le site officiel de ZenTao (www.zentao.pm). %s vous pourrez ensuite obtenir les dernières Mises à Jour de ZenTao et des informations."; +$lang->admin->notice->ignore = "Ignorer"; +$lang->admin->notice->int = "『 %s 』 devrait être un entier positif."; + +$lang->admin->register = new stdclass(); +$lang->admin->register->common = 'Connectez-vous avec votre nouveau compte'; +$lang->admin->register->caption = "S'enregistrer sur la communauté Zentao"; +$lang->admin->register->click = "S'enregistrer ici"; +$lang->admin->register->lblAccount = '>= 3 lettres et chiffres'; +$lang->admin->register->lblPasswd = '>= 6 lettres et chiffres'; +$lang->admin->register->submit = "S'enregistrer"; +$lang->admin->register->bind = "S'associer à un compte existant"; +$lang->admin->register->success = "Vous êtes enregistré !"; + +$lang->admin->bind = new stdclass(); +$lang->admin->bind->caption = 'Lier au compte'; +$lang->admin->bind->success = "Le compte est associé !"; + +$lang->admin->safe = new stdclass(); +$lang->admin->safe->common = 'Politique de sécurité'; +$lang->admin->safe->set = 'Paramétrages du Mot de passe'; +$lang->admin->safe->password = 'Force du Mot de passe'; +$lang->admin->safe->weak = 'Mots de passes non sécurisés courrants'; +$lang->admin->safe->reason = 'Type'; +$lang->admin->safe->checkWeak = 'Balayage des mots de passe faibles'; +$lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles'; +$lang->admin->safe->modifyPasswordFirstLogin = 'Forcer le changement du mot de passe après la première connexion'; + +$lang->admin->safe->modeList[0] = "Contrôle Modéré"; +$lang->admin->safe->modeList[1] = 'Contrôle Moyen'; +$lang->admin->safe->modeList[2] = 'Contrôle Fort'; + +$lang->admin->safe->modeRuleList[1] = ' >= 6 Majuscules, minuscules et chiffres'; +$lang->admin->safe->modeRuleList[2] = ' >= 10 Majuscules, minuscules, chiffres et caractères spéciaux'; + +$lang->admin->safe->reasonList['weak'] = 'Mots de passe faibles courants'; +$lang->admin->safe->reasonList['account'] = 'Identique au compte'; +$lang->admin->safe->reasonList['mobile'] = 'Identique au numéro de mobile'; +$lang->admin->safe->reasonList['phone'] = 'Identique au téléphone fixe'; +$lang->admin->safe->reasonList['birthday'] = 'Identique à la date de naissance'; + +$lang->admin->safe->modifyPasswordList[1] = 'Oui'; +$lang->admin->safe->modifyPasswordList[0] = 'Non'; + +$lang->admin->safe->noticeMode = "Le mot de passe sera vérifié quand un utilisateur se connectera ou qu'un utilisateur sera créé ou modifier."; +$lang->admin->safe->noticeStrong = ''; diff --git a/module/api/lang/fr.php b/module/api/lang/fr.php new file mode 100644 index 0000000000..5acaa81448 --- /dev/null +++ b/module/api/lang/fr.php @@ -0,0 +1,30 @@ + + * @package api + * @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->api = new stdclass(); +$lang->api->common = 'API'; +$lang->api->getModel = 'Super Model API'; +$lang->api->sql = 'SQL Query API'; + +$lang->api->position = 'Position'; +$lang->api->startLine = "%s,%s"; +$lang->api->desc = 'Description'; +$lang->api->debug = 'Debug'; +$lang->api->submit = 'Soumission'; +$lang->api->url = 'Request URL'; +$lang->api->result = 'Résultats'; +$lang->api->status = 'Statut'; +$lang->api->data = 'Données'; +$lang->api->noParam = "Aucun paramètre n'est requis si GET Debug"; +$lang->api->post = 'Se référer à la liste si POST Debug'; + +$lang->api->error = new stdclass(); +$lang->api->error->onlySelect = 'Cette interface SQL ne supporte que les requêtes SELECT.'; diff --git a/module/backup/lang/fr.php b/module/backup/lang/fr.php new file mode 100644 index 0000000000..d0b813db18 --- /dev/null +++ b/module/backup/lang/fr.php @@ -0,0 +1,42 @@ +backup->common = 'Backup'; +$lang->backup->index = 'Accueil Backup'; +$lang->backup->history = 'Historique'; +$lang->backup->delete = 'Suppression Backup'; +$lang->backup->backup = 'Backup'; +$lang->backup->restore = 'Restaurer'; +$lang->backup->change = 'Editer Expiration'; +$lang->backup->changeAB = 'Editer'; +$lang->backup->rmPHPHeader = 'Enlever PHP header'; + +$lang->backup->time = 'Date'; +$lang->backup->files = 'Fichiers'; +$lang->backup->size = 'Taille'; + +$lang->backup->setting = 'Paramétrage'; +$lang->backup->settingDir = 'Répertoire Backup'; +$lang->backup->settingList['nofile'] = 'Ne pas archiver fichiers et codes.'; +$lang->backup->settingList['nozip'] = 'Copier seulement les fichiers sans les compresser.'; +$lang->backup->settingList['nosafe'] = 'Ne pas prévenir du téléchargement par PHP file header.'; + +$lang->backup->waitting = ' est en cours. Patientez s´il vous plait...'; +$lang->backup->progressSQL = '

SQL backup: %s est sauvegardé.

'; +$lang->backup->progressAttach = '

SQL backup est terminé.

Attachment backup: %s est sauvegardé avec succès.

'; +$lang->backup->progressCode = '

SQL backup est terminé.

Attachment backup est terminé.

Code backup: %s est sauvegardé avec succès.

'; +$lang->backup->confirmDelete = 'Voulez-vous supprimer la sauvegarde ?'; +$lang->backup->confirmRestore = 'Voulez-vous restaurer la sauvegarde ?'; +$lang->backup->holdDays = 'conserver les derniers %s jours de backup'; +$lang->backup->restoreTip = 'Seulement les fichiers et les bases peuvent être restaurées en cliquant sur Restaurer. Le code doit être restauré manuellement.'; + +$lang->backup->success = new stdclass(); +$lang->backup->success->backup = 'Terminé avec succès !'; +$lang->backup->success->restore = 'Restauré avec succès !'; + +$lang->backup->error = new stdclass(); +$lang->backup->error->noCreateDir = "Le répertoire n'existe pas et ne peut pas être créer. C'est problématique."; +$lang->backup->error->noWritable = "%s n'est pas autorisé à l'écriture ! Vérifier les privilèges sinon le backup ne pourra pas se faire."; +$lang->backup->error->noDelete = "%s ne peut pas être supprimé. Modifiez les privilèges ou supprimez-le avec vos petites mains."; +$lang->backup->error->restoreSQL = "Echec pour restaurer la database library. Error %s."; +$lang->backup->error->restoreFile = "Echec pour restaurer le fichier. Erreur %s."; +$lang->backup->error->backupFile = "Echec pour sauvegarder le fichier. Erreur %s."; +$lang->backup->error->backupCode = "Echec pour sauvegarder le code. Erreur %s."; diff --git a/module/block/control.php b/module/block/control.php index a16ca26ac6..ffb3c3522d 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -713,20 +713,8 @@ class block extends control $pager = pager::init(0, $num , 1); $productStats = $this->loadModel('product')->getStats('order_desc', $this->viewType != 'json' ? $pager : '', $type); - $projects = $this->loadModel('project')->getPairs(); $productIdList = array(); - $this->loadModel('action'); - foreach($productStats as $product) - { - $currentProjectID = $this->dao->select('objectID')->from(TABLE_ACTION) - ->where('objectType')->eq('project') - ->andWhere('action')->eq('managed') - ->andWhere("CONCAT(extra, ',,')")->like("%$product->id,,") - ->orderBy('id_desc') - ->fetch('objectID'); - $product->currentProject = zget($projects, $currentProjectID, ''); - $productIdList[] = $product->id; - } + foreach($productStats as $product) $productIdList[] = $product->id; $this->view->projects = $this->dao->select('t1.product,t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id') diff --git a/module/block/lang/fr.php b/module/block/lang/fr.php new file mode 100644 index 0000000000..6960c8c81d --- /dev/null +++ b/module/block/lang/fr.php @@ -0,0 +1,404 @@ + + * @package block + * @version $Id$ + * @link https://www.zentao.pm + */ +$lang->block = new stdclass(); +$lang->block->common = 'Bloc'; +$lang->block->name = 'Nom'; +$lang->block->style = 'Style'; +$lang->block->grid = 'Position'; +$lang->block->color = 'Couleur'; +$lang->block->reset = 'Réinit'; + +$lang->block->account = 'Compte'; +$lang->block->module = 'Module'; +$lang->block->title = 'Titre'; +$lang->block->source = 'Source Module'; +$lang->block->block = 'Source Bloc'; +$lang->block->order = 'Ordre'; +$lang->block->height = 'Hauteur'; +$lang->block->role = 'Rôle'; + +$lang->block->lblModule = 'Module'; +$lang->block->lblBlock = 'Bloc'; +$lang->block->lblNum = 'Numéro'; +$lang->block->lblHtml = 'HTML'; +$lang->block->dynamic = 'Historique'; +$lang->block->assignToMe = 'Assigné à moi'; +$lang->block->lblFlowchart = 'Organigramme'; +$lang->block->welcome = 'Bienvenue'; +$lang->block->lblTesttask = 'Détail Recette'; + +$lang->block->leftToday = 'Reste à faire'; +$lang->block->myTask = 'Mes Tâches'; +$lang->block->myStory = 'Stories'; +$lang->block->myBug = 'Bugs'; +$lang->block->myProject = $lang->projectCommon . 's'; +$lang->block->myProduct = '' . $lang->productCommon . 's'; +$lang->block->delayed = 'Ajourné'; +$lang->block->noData = 'Pas de données pour ce type de rapport.'; +$lang->block->emptyTip = 'No data.'; + +$lang->block->params = new stdclass(); +$lang->block->params->name = 'Nom'; +$lang->block->params->value = 'Valeur'; + +$lang->block->createBlock = 'Ajouter Bloc'; +$lang->block->editBlock = 'Editer Bloc'; +$lang->block->ordersSaved = 'L´ordre a été sauvegardé.'; +$lang->block->confirmRemoveBlock = 'Voulez-vous vraiment supprimer ce bloc ?'; +$lang->block->noticeNewBlock = 'Une nouvelle disposition est disponible. Voulez-vous la consulter ?'; +$lang->block->confirmReset = 'Voulez-vous vraiment réinitialiser la disposition ?'; +$lang->block->closeForever = 'Fermeture Permanente'; +$lang->block->confirmClose = 'Voulez-vous vraiment fermer de façon permanente ce bloc ? Ensuite, plus personne ne pourra l´utiliser. Il pourra être réactivé par l´admin.'; +$lang->block->remove = 'Supprimer'; +$lang->block->refresh = 'Rafraichir'; +$lang->block->nbsp = ' '; +$lang->block->hidden = 'Masquer'; +$lang->block->dynamicInfo = "%s %s %s %s %s"; + +$lang->block->default['product']['1']['title'] = ' Rapport de ' . $lang->productCommon; +$lang->block->default['product']['1']['block'] = 'statistic'; +$lang->block->default['product']['1']['grid'] = 8; + +$lang->block->default['product']['1']['params']['type'] = 'all'; +$lang->block->default['product']['1']['params']['num'] = '20'; + +$lang->block->default['product']['2']['title'] = "Vue d'ensemble du " . $lang->productCommon; +$lang->block->default['product']['2']['block'] = 'overview'; +$lang->block->default['product']['2']['grid'] = 4; + +$lang->block->default['product']['3']['title'] = $lang->productCommon . 's Actifs'; +$lang->block->default['product']['3']['block'] = 'list'; +$lang->block->default['product']['3']['grid'] = 8; + +$lang->block->default['product']['3']['params']['num'] = 15; +$lang->block->default['product']['3']['params']['type'] = 'noclosed'; + +$lang->block->default['product']['4']['title'] = 'Mes Stories'; +$lang->block->default['product']['4']['block'] = 'story'; +$lang->block->default['product']['4']['grid'] = 4; + +$lang->block->default['product']['4']['params']['num'] = 15; +$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['product']['4']['params']['type'] = 'assignedTo'; + +$lang->block->default['project']['1']['title'] = 'Rapport de ' . $lang->projectCommon; +$lang->block->default['project']['1']['block'] = 'statistic'; +$lang->block->default['project']['1']['grid'] = 8; + +$lang->block->default['project']['1']['params']['type'] = 'all'; +$lang->block->default['project']['1']['params']['num'] = '20'; + +$lang->block->default['project']['2']['title'] = "Vue d'ensemble du " . $lang->projectCommon; +$lang->block->default['project']['2']['block'] = 'overview'; +$lang->block->default['project']['2']['grid'] = 4; + +$lang->block->default['project']['3']['title'] = $lang->projectCommon . 's Actifs'; +$lang->block->default['project']['3']['block'] = 'list'; +$lang->block->default['project']['3']['grid'] = 8; + +$lang->block->default['project']['3']['params']['num'] = 15; +$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc'; +$lang->block->default['project']['3']['params']['type'] = 'undone'; + +$lang->block->default['project']['4']['title'] = 'Mes Tâches'; +$lang->block->default['project']['4']['block'] = 'task'; +$lang->block->default['project']['4']['grid'] = 4; + +$lang->block->default['project']['4']['params']['num'] = 15; +$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['project']['4']['params']['type'] = 'assignedTo'; + +$lang->block->default['qa']['1']['title'] = 'Rapport de Tests'; +$lang->block->default['qa']['1']['block'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; + +$lang->block->default['qa']['1']['params']['type'] = 'noclosed'; +$lang->block->default['qa']['1']['params']['num'] = '20'; + +//$lang->block->default['qa']['2']['title'] = 'Testcase Overview'; +//$lang->block->default['qa']['2']['block'] = 'overview'; +//$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['title'] = 'Mes Bugs'; +$lang->block->default['qa']['2']['block'] = 'bug'; +$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['params']['num'] = 15; +$lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; + +$lang->block->default['qa']['3']['title'] = 'Mes CasTests'; +$lang->block->default['qa']['3']['block'] = 'case'; +$lang->block->default['qa']['3']['grid'] = 4; + +$lang->block->default['qa']['3']['params']['num'] = 15; +$lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['3']['params']['type'] = 'assigntome'; + +$lang->block->default['qa']['4']['title'] = 'Builds en attente'; +$lang->block->default['qa']['4']['block'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 4; + +$lang->block->default['qa']['4']['params']['num'] = 15; +$lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['4']['params']['type'] = 'wait'; + +$lang->block->default['full']['my']['1']['title'] = 'Bienvenue'; +$lang->block->default['full']['my']['1']['block'] = 'welcome'; +$lang->block->default['full']['my']['1']['grid'] = 8; +$lang->block->default['full']['my']['1']['source'] = ''; +$lang->block->default['full']['my']['2']['title'] = 'Historique'; +$lang->block->default['full']['my']['2']['block'] = 'dynamic'; +$lang->block->default['full']['my']['2']['grid'] = 4; +$lang->block->default['full']['my']['2']['source'] = ''; +$lang->block->default['full']['my']['3']['title'] = 'Organigramme'; +$lang->block->default['full']['my']['3']['block'] = 'flowchart'; +$lang->block->default['full']['my']['3']['grid'] = 8; +$lang->block->default['full']['my']['3']['source'] = ''; +$lang->block->default['full']['my']['4']['title'] = 'Mon Agenda'; +$lang->block->default['full']['my']['4']['block'] = 'list'; +$lang->block->default['full']['my']['4']['grid'] = 4; +$lang->block->default['full']['my']['4']['source'] = 'todo'; +$lang->block->default['full']['my']['4']['params']['num'] = '20'; +$lang->block->default['full']['my']['5'] = $lang->block->default['project']['1']; +$lang->block->default['full']['my']['5']['source'] = 'project'; +$lang->block->default['full']['my']['6'] = $lang->block->default['project']['2']; +$lang->block->default['full']['my']['6']['source'] = 'project'; +$lang->block->default['full']['my']['7'] = $lang->block->default['product']['1']; +$lang->block->default['full']['my']['7']['source'] = 'product'; +$lang->block->default['full']['my']['8'] = $lang->block->default['product']['2']; +$lang->block->default['full']['my']['8']['source'] = 'product'; +$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2']; +$lang->block->default['full']['my']['9']['source'] = 'qa'; + +$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1']; +$lang->block->default['onlyTest']['my']['1']['source'] = 'qa'; +$lang->block->default['onlyTest']['my']['1']['grid'] = '8'; +$lang->block->default['onlyTest']['my']['2']['title'] = 'Historique'; +$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic'; +$lang->block->default['onlyTest']['my']['2']['grid'] = 4; +$lang->block->default['onlyTest']['my']['2']['source'] = ''; +$lang->block->default['onlyTest']['my']['3']['title'] = 'Mon Agenday'; +$lang->block->default['onlyTest']['my']['3']['block'] = 'list'; +$lang->block->default['onlyTest']['my']['3']['grid'] = 6; +$lang->block->default['onlyTest']['my']['3']['source'] = 'todo'; +$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20'; +$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2']; +$lang->block->default['onlyTest']['my']['4']['source'] = 'qa'; +$lang->block->default['onlyTest']['my']['4']['grid'] = 6; + +$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['project']['1']; +$lang->block->default['onlyStory']['my']['1']['source'] = 'project'; +$lang->block->default['onlyStory']['my']['1']['grid'] = 8; +$lang->block->default['onlyStory']['my']['2']['title'] = 'Historique'; +$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic'; +$lang->block->default['onlyStory']['my']['2']['grid'] = 4; +$lang->block->default['onlyStory']['my']['2']['source'] = ''; +$lang->block->default['onlyStory']['my']['3']['title'] = 'Mon Agenda'; +$lang->block->default['onlyStory']['my']['3']['block'] = 'list'; +$lang->block->default['onlyStory']['my']['3']['grid'] = 6; +$lang->block->default['onlyStory']['my']['3']['source'] = 'todo'; +$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20'; +$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2']; +$lang->block->default['onlyStory']['my']['4']['source'] = 'product'; +$lang->block->default['onlyStory']['my']['4']['grid'] = 6; + +$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1']; +$lang->block->default['onlyTask']['my']['1']['source'] = 'project'; +$lang->block->default['onlyTask']['my']['1']['grid'] = 8; +$lang->block->default['onlyTask']['my']['2']['title'] = 'Historique'; +$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic'; +$lang->block->default['onlyTask']['my']['2']['grid'] = 4; +$lang->block->default['onlyTask']['my']['2']['source'] = ''; +$lang->block->default['onlyTask']['my']['3']['title'] = 'Mon Agenda'; +$lang->block->default['onlyTask']['my']['3']['block'] = 'list'; +$lang->block->default['onlyTask']['my']['3']['grid'] = 6; +$lang->block->default['onlyTask']['my']['3']['source'] = 'todo'; +$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20'; +$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2']; +$lang->block->default['onlyTask']['my']['4']['source'] = 'project'; +$lang->block->default['onlyTask']['my']['4']['grid'] = 6; + +$lang->block->num = 'Numéro'; +$lang->block->type = 'Type'; +$lang->block->orderBy = 'Trié par'; + +$lang->block->availableBlocks = new stdclass(); + +$lang->block->availableBlocks->todo = 'Ma Todo List'; +$lang->block->availableBlocks->task = 'Mes Tâches'; +$lang->block->availableBlocks->bug = 'Mes Bugs'; +$lang->block->availableBlocks->case = 'Mes CasTests'; +$lang->block->availableBlocks->story = 'Mes Stories'; +$lang->block->availableBlocks->product = $lang->productCommon . 's'; +$lang->block->availableBlocks->project = $lang->projectCommon . 's'; +$lang->block->availableBlocks->plan = 'Plans'; +$lang->block->availableBlocks->release = 'Releases'; +$lang->block->availableBlocks->build = 'Builds'; +$lang->block->availableBlocks->testtask = 'Recettes'; + +$lang->block->moduleList['product'] = $lang->productCommon; +$lang->block->moduleList['project'] = $lang->projectCommon; +$lang->block->moduleList['qa'] = 'QA'; +$lang->block->moduleList['todo'] = 'Todo'; + +$lang->block->modules['product'] = new stdclass(); +$lang->block->modules['product']->availableBlocks = new stdclass(); +$lang->block->modules['product']->availableBlocks->statistic = 'Rapport de ' . $lang->productCommon; +$lang->block->modules['product']->availableBlocks->overview = "Vue d'ensemble du " . $lang->productCommon; +$lang->block->modules['product']->availableBlocks->list = 'Liste ' . $lang->productCommon; +$lang->block->modules['product']->availableBlocks->story = 'Story'; +$lang->block->modules['product']->availableBlocks->plan = 'Plan'; +$lang->block->modules['product']->availableBlocks->release = 'Release'; +$lang->block->modules['project'] = new stdclass(); +$lang->block->modules['project']->availableBlocks = new stdclass(); +$lang->block->modules['project']->availableBlocks->statistic = 'Rapport de ' . $lang->projectCommon; +$lang->block->modules['project']->availableBlocks->overview = "Vue d'ensemble du " . $lang->projectCommon; +$lang->block->modules['project']->availableBlocks->list = 'Liste ' . $lang->projectCommon; +$lang->block->modules['project']->availableBlocks->task = 'Tâches'; +$lang->block->modules['project']->availableBlocks->build = 'Build'; +$lang->block->modules['qa'] = new stdclass(); +$lang->block->modules['qa']->availableBlocks = new stdclass(); +$lang->block->modules['qa']->availableBlocks->statistic = 'Rapport de Tests'; +//$lang->block->modules['qa']->availableBlocks->overview = 'Testcase Overview'; +$lang->block->modules['qa']->availableBlocks->bug = 'Bug'; +$lang->block->modules['qa']->availableBlocks->case = 'CasTests'; +$lang->block->modules['qa']->availableBlocks->testtask = 'Build'; +$lang->block->modules['todo'] = new stdclass(); +$lang->block->modules['todo']->availableBlocks = new stdclass(); +$lang->block->modules['todo']->availableBlocks->list = 'Todo'; + +$lang->block->orderByList = new stdclass(); + +$lang->block->orderByList->product = array(); +$lang->block->orderByList->product['id_asc'] = 'Tri par ID Produit ASC'; +$lang->block->orderByList->product['id_desc'] = 'Tri par ID Produit DESC'; +$lang->block->orderByList->product['status_asc'] = 'Tri par Statut ASC'; +$lang->block->orderByList->product['status_desc'] = 'Tri par Statut DESC'; + +$lang->block->orderByList->project = array(); +$lang->block->orderByList->project['id_asc'] = 'Tri par ID Projet ASC'; +$lang->block->orderByList->project['id_desc'] = 'Tri par ID Projet DESC'; +$lang->block->orderByList->project['status_asc'] = 'Tri par Statut ASC'; +$lang->block->orderByList->project['status_desc'] = 'Tri par Statut DESC'; + +$lang->block->orderByList->task = array(); +$lang->block->orderByList->task['id_asc'] = 'Tri par ID Tâche ASC'; +$lang->block->orderByList->task['id_desc'] = 'Tri par ID Tâche DESC'; +$lang->block->orderByList->task['pri_asc'] = 'Tri par Priorité de tâche ASC'; +$lang->block->orderByList->task['pri_desc'] = 'Tri par Priorité de tâche DESC'; +$lang->block->orderByList->task['estimate_asc'] = 'Tri par durée estimée tâche ASC'; +$lang->block->orderByList->task['estimate_desc'] = 'Tri par durée estimée tâche DESC'; +$lang->block->orderByList->task['status_asc'] = 'Tri par Statut ASC'; +$lang->block->orderByList->task['status_desc'] = 'Tri par Statut DESC'; +$lang->block->orderByList->task['deadline_asc'] = 'Tri par Date Butoir Tâche ASC'; +$lang->block->orderByList->task['deadline_desc'] = 'Tri par Date Butoir Tâche DESC'; + +$lang->block->orderByList->bug = array(); +$lang->block->orderByList->bug['id_asc'] = 'Tri par ID Bug ASC'; +$lang->block->orderByList->bug['id_desc'] = 'Tri par ID Bug DESC'; +$lang->block->orderByList->bug['pri_asc'] = 'Tri par Priorité Bug ASC'; +$lang->block->orderByList->bug['pri_desc'] = 'Tri par Priorité Bug DESC'; +$lang->block->orderByList->bug['severity_asc'] = 'Tri par Sévérité Bug ASC'; +$lang->block->orderByList->bug['severity_desc'] = 'Tri par Sévérité Bug DESC'; + +$lang->block->orderByList->case = array(); +$lang->block->orderByList->case['id_asc'] = 'Tri par ID CasTest ASC'; +$lang->block->orderByList->case['id_desc'] = 'Tri par ID CasTest DESC'; +$lang->block->orderByList->case['pri_asc'] = 'Tri par Priorité ASC'; +$lang->block->orderByList->case['pri_desc'] = 'Tri par Priorité DESC'; + +$lang->block->orderByList->story = array(); +$lang->block->orderByList->story['id_asc'] = 'Tri par ID Story ASC'; +$lang->block->orderByList->story['id_desc'] = 'Tri par ID Story DESC'; +$lang->block->orderByList->story['pri_asc'] = 'Tri par Priorité Story ASC'; +$lang->block->orderByList->story['pri_desc'] = 'Tri par Priorité Story DESC'; +$lang->block->orderByList->story['status_asc'] = 'Tri par Statut Story ASC'; +$lang->block->orderByList->story['status_desc'] = 'Tri par Statut Story DESC'; +$lang->block->orderByList->story['stage_asc'] = 'Tri par Phase Story ASC'; +$lang->block->orderByList->story['stage_desc'] = 'Tri par Phase Story DESC'; + +$lang->block->todoNum = 'Todo'; +$lang->block->taskNum = 'Task'; +$lang->block->bugNum = 'Bug'; + +$lang->block->typeList = new stdclass(); + +$lang->block->typeList->task['assignedTo'] = 'Tâches qui me sont assignées'; +$lang->block->typeList->task['openedBy'] = "Tâches que j'ai créées"; +$lang->block->typeList->task['finishedBy'] = "Tâches que j'ai terminées"; +$lang->block->typeList->task['closedBy'] = "Tâches que j'ai fermées"; +$lang->block->typeList->task['canceledBy'] = "Tâches que j'ai annulées"; + +$lang->block->typeList->bug['assignedTo'] = 'Bugs qui me sont assignés'; +$lang->block->typeList->bug['openedBy'] = "Bugs que j'ai détectés"; +$lang->block->typeList->bug['resolvedBy'] = "Bugs que j'ai résolus"; +$lang->block->typeList->bug['closedBy'] = "Bugs que j'ai fermés"; + +$lang->block->typeList->case['assigntome'] = 'CasTests qui me sont assignés'; +$lang->block->typeList->case['openedbyme'] = "CasTests que j'ai créés";; + +$lang->block->typeList->story['assignedTo'] = 'Stories qui me sont assignées'; +$lang->block->typeList->story['openedBy'] = "Stories que j'ai créées"; +$lang->block->typeList->story['reviewedBy'] = "Stories que j'ai acceptées"; +$lang->block->typeList->story['closedBy'] = "Stories que j'ai fermées"; + +$lang->block->typeList->product['noclosed'] = 'Ouverts'; +$lang->block->typeList->product['closed'] = 'Fermés'; +$lang->block->typeList->product['all'] = 'Tous'; +$lang->block->typeList->product['involved'] = 'Impliqués'; + +$lang->block->typeList->project['undone'] = 'Non terminés'; +$lang->block->typeList->project['doing'] = 'En cours'; +$lang->block->typeList->project['all'] = 'Tous'; +$lang->block->typeList->project['involved'] = 'Impliqués'; + +$lang->block->typeList->testtask['wait'] = 'En attente'; +$lang->block->typeList->testtask['doing'] = 'En cours'; +$lang->block->typeList->testtask['blocked'] = 'Bloquées'; +$lang->block->typeList->testtask['done'] = 'Jouées'; +$lang->block->typeList->testtask['all'] = 'Toutes'; + +$lang->block->modules['product']->moreLinkList = new stdclass(); +$lang->block->modules['product']->moreLinkList->list = 'product|all|product=&line=0&status=%s'; +$lang->block->modules['product']->moreLinkList->story = 'my|story|type=%s'; + +$lang->block->modules['project']->moreLinkList = new stdclass(); +$lang->block->modules['project']->moreLinkList->list = 'project|all|status=%s&project='; +$lang->block->modules['project']->moreLinkList->task = 'my|task|type=%s'; + +$lang->block->modules['qa']->moreLinkList = new stdclass(); +$lang->block->modules['qa']->moreLinkList->bug = 'my|bug|type=%s'; +$lang->block->modules['qa']->moreLinkList->case = 'my|testcase|type=%s'; +$lang->block->modules['qa']->moreLinkList->testtask = 'testtask|browse|type=%s'; + +$lang->block->modules['todo']->moreLinkList = new stdclass(); +$lang->block->modules['todo']->moreLinkList->list = 'my|todo|type=all'; + +$lang->block->modules['common'] = new stdclass(); +$lang->block->modules['common']->moreLinkList = new stdclass(); +$lang->block->modules['common']->moreLinkList->dynamic = 'company|dynamic|'; + +$lang->block->welcomeList['06:00'] = 'Bonjour, %s'; +$lang->block->welcomeList['11:30'] = 'Bonjour, %s'; +$lang->block->welcomeList['13:30'] = 'Bonjour, %s'; +$lang->block->welcomeList['19:00'] = 'Bonsoir, %s'; + +$lang->block->gridOptions[8] = 'Left'; +$lang->block->gridOptions[4] = 'Right'; + +$lang->block->flowchart = array(); +$lang->block->flowchart[] = array('Administrateur', 'Ajoute Compartiment', 'Ajoute Utilisateurs', 'Administre Privilèges'); +$lang->block->flowchart[] = array($lang->productCommon . ' Owner', 'Ajoute ' . $lang->productCommon . '/Modules', 'Ajoute ' . $lang->projectCommon . 's', 'Ajoute Stories', 'Maintient Plans', 'Crée Releases'); +$lang->block->flowchart[] = array('Scrum Master', 'Ajoute ' . $lang->projectCommon . 's', 'Constitue Equipes', 'Associe ' . $lang->productCommon . 's', 'Rattache Stories', 'Crée/Affecte Tâches'); +$lang->block->flowchart[] = array('Développeurs', 'Réclament Tâches/Bugs', 'Effectuent Tâches', 'Corrigent Bugs', 'MàJ Statuts', 'Terminent Tâches/Bugs'); +$lang->block->flowchart[] = array('Testeurs', 'Rédigent CasTests', 'Jouent CasTests', 'Détectent Bugs', 'Vérifient Corrections', 'Ferment Bugs'); diff --git a/module/block/view/productblock.html.php b/module/block/view/productblock.html.php index d6d00ede50..0353fa5975 100644 --- a/module/block/view/productblock.html.php +++ b/module/block/view/productblock.html.php @@ -39,7 +39,7 @@ > name?> - currentProject ? $product->currentProject : zget($projects, $product->id, '');?> + id, '');?> plans?> diff --git a/module/branch/lang/fr.php b/module/branch/lang/fr.php new file mode 100644 index 0000000000..d5b6775163 --- /dev/null +++ b/module/branch/lang/fr.php @@ -0,0 +1,18 @@ +branch->common = 'Etablissements'; +$lang->branch->manage = 'Gérer Etablissements'; +$lang->branch->sort = 'Classer Etablissement'; +$lang->branch->delete = 'Supprimer Etablissement'; +$lang->branch->add = 'Ajout'; + +$lang->branch->manageTitle = 'Gestion %s'; +$lang->branch->all = 'Tous'; + +$lang->branch->id = 'ID'; +$lang->branch->product = 'Product'; +$lang->branch->name = 'Nom'; +$lang->branch->order = 'Ordre'; +$lang->branch->deleted = 'Delete'; + +$lang->branch->confirmDelete = "Voulez-vous vraiment supprimer l'établissement @branch@ ?"; +$lang->branch->canNotDelete = 'Attention ! Il y a des données dans @branch@. Suppression impossible !'; diff --git a/module/bug/lang/de.php b/module/bug/lang/de.php index e736085719..b07073712b 100644 --- a/module/bug/lang/de.php +++ b/module/bug/lang/de.php @@ -198,6 +198,7 @@ $lang->bug->priList[4] = '4'; $lang->bug->osList[''] = ''; $lang->bug->osList['all'] = 'Alle'; $lang->bug->osList['windows'] = 'Windows'; +$lang->bug->osList['win10'] = 'Windows 10'; $lang->bug->osList['win8'] = 'Windows 8'; $lang->bug->osList['win7'] = 'Windows 7'; $lang->bug->osList['vista'] = 'Windows Vista'; diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 5ea2864591..030d181cd8 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -198,6 +198,7 @@ $lang->bug->priList[4] = '4'; $lang->bug->osList[''] = ''; $lang->bug->osList['all'] = 'All'; $lang->bug->osList['windows'] = 'Windows'; +$lang->bug->osList['win10'] = 'Windows 10'; $lang->bug->osList['win8'] = 'Windows 8'; $lang->bug->osList['win7'] = 'Windows 7'; $lang->bug->osList['vista'] = 'Windows Vista'; diff --git a/module/bug/lang/fr.php b/module/bug/lang/fr.php new file mode 100644 index 0000000000..f47acd5c51 --- /dev/null +++ b/module/bug/lang/fr.php @@ -0,0 +1,407 @@ + + * @package bug + * @version $Id: en.php 4536 2013-03-02 13:39:37Z wwccss $ + * @link https://www.zentao.pm + */ +/* Fieldlist. */ +$lang->bug->common = 'Bug'; +$lang->bug->id = 'ID'; +$lang->bug->product = $lang->productCommon; +$lang->bug->branch = 'Branche/Platforme'; +$lang->bug->productplan = 'Plan'; +$lang->bug->module = 'Module'; +$lang->bug->moduleAB = 'Module'; +$lang->bug->project = $lang->projectCommon; +$lang->bug->story = 'Story'; +$lang->bug->storyVersion = 'Story Version'; +$lang->bug->color = 'Color'; +$lang->bug->task = 'Tâche'; +$lang->bug->title = 'Titre'; +$lang->bug->severity = 'Sévérité'; +$lang->bug->severityAB = 'S'; +$lang->bug->pri = 'Priorité'; +$lang->bug->type = 'Type'; +$lang->bug->os = 'OS'; +$lang->bug->browser = 'Browser'; +$lang->bug->steps = 'Repro Steps'; +$lang->bug->status = 'Statut'; +$lang->bug->statusAB = 'Statut'; +$lang->bug->subStatus = 'Sub Statut'; +$lang->bug->activatedCount = 'Heures Activation'; +$lang->bug->activatedCountAB = 'Actif'; +$lang->bug->activatedDate = 'Date Activation'; +$lang->bug->confirmed = 'Confirmé'; +$lang->bug->confirmedAB = 'C'; +$lang->bug->toTask = 'Convertir en Tâche'; +$lang->bug->toStory = 'Convertir en Story'; +$lang->bug->mailto = 'Mailto'; +$lang->bug->openedBy = 'Signalé par'; +$lang->bug->openedByAB = 'Détecteur'; +$lang->bug->openedDate = 'Date signalement'; +$lang->bug->openedDateAB = 'Signalé'; +$lang->bug->openedBuild = 'Open Build'; +$lang->bug->assignedTo = 'Bugs qui me sont affectés'; +$lang->bug->assignBug = 'Affecter à'; +$lang->bug->assignedToAB = 'Affecté à'; +$lang->bug->assignedDate = 'Date affectation'; +$lang->bug->resolvedBy = 'Résolus par moi'; +$lang->bug->resolvedByAB = 'Résolu par'; +$lang->bug->resolution = 'Résolution'; +$lang->bug->resolutionAB = 'Résolution'; +$lang->bug->resolvedBuild = 'Build'; +$lang->bug->resolvedDate = 'Date Correction'; +$lang->bug->resolvedDateAB = 'Date Correction'; +$lang->bug->deadline = 'Date Butoir'; +$lang->bug->plan = 'Plan'; +$lang->bug->closedBy = 'Fermé par'; +$lang->bug->closedDate = 'Date Fermeture'; +$lang->bug->duplicateBug = 'Bug ID en doublon'; +$lang->bug->lastEditedBy = 'Edité par'; +$lang->bug->linkBug = 'Bugs Liés'; +$lang->bug->linkBugs = 'Associer Bug'; +$lang->bug->unlinkBug = 'Dissocier'; +$lang->bug->case = 'CasTests'; +$lang->bug->caseVersion = 'Case Version'; +$lang->bug->testtask = 'Request'; +$lang->bug->files = 'Fichiers'; +$lang->bug->keywords = 'Tags'; +$lang->bug->lastEditedByAB = 'Edité par'; +$lang->bug->lastEditedDateAB = 'Date Modif'; +$lang->bug->lastEditedDate = 'Date Modif'; +$lang->bug->fromCase = 'du CasTest'; +$lang->bug->toCase = 'vers CasTest'; +$lang->bug->colorTag = 'Couleur'; + +/* 方法列表。*/ +$lang->bug->index = 'Accueil Bug'; +$lang->bug->create = 'Signaler un Bug'; +$lang->bug->batchCreate = 'Signaler par Lot'; +$lang->bug->confirmBug = 'Confirmer'; +$lang->bug->confirmAction = 'Confirmer Bug'; +$lang->bug->batchConfirm = 'Confirmé par Lot'; +$lang->bug->edit = 'Editer Bug'; +$lang->bug->batchEdit = 'Editer par Lot'; +$lang->bug->batchChangeModule = 'Batch Edit Modules'; +$lang->bug->batchChangeBranch = 'Batch Edit Branches'; +$lang->bug->batchClose = 'Fermer par Lot'; +$lang->bug->assignTo = 'Affecter à'; +$lang->bug->assignAction = 'Affecter Bug'; +$lang->bug->batchAssignTo = 'Affecter par Lot'; +$lang->bug->browse = 'Liste des Bugs'; +$lang->bug->view = 'Détail Bug'; +$lang->bug->resolve = 'Résoudre'; +$lang->bug->resolveAction = 'Résoudre Bug'; +$lang->bug->batchResolve = 'Résoudre par Lot'; +$lang->bug->close = 'Clôturer'; +$lang->bug->closeAction = 'Clôturer Bug'; +$lang->bug->activate = 'Activer'; +$lang->bug->activateAction = 'Activer Bug'; +$lang->bug->batchActivate = 'Activer par Lot'; +$lang->bug->reportChart = 'Signalements'; +$lang->bug->reportAction = 'Signalement Bugs'; +$lang->bug->export = 'Exporter Données'; +$lang->bug->exportAction = 'Exporter Bug'; +$lang->bug->delete = 'Supprimer'; +$lang->bug->deleteAction = 'Supprimer Bug'; +$lang->bug->deleted = 'Supprimé'; +$lang->bug->confirmStoryChange = 'Confirmer Changement Story'; +$lang->bug->copy = 'Copier'; +$lang->bug->search = 'Rechercher'; + +/* 查询条件列表。*/ +$lang->bug->assignToMe = 'Affectés à moi'; +$lang->bug->openedByMe = 'Détectés par moi'; +$lang->bug->resolvedByMe = 'Résolus par moi'; +$lang->bug->closedByMe = 'Fermés par moi'; +$lang->bug->assignToNull = 'Non affectés'; +$lang->bug->unResolved = 'Actifs'; +$lang->bug->toClosed = 'A Fermer'; +$lang->bug->unclosed = 'Non fermés'; +$lang->bug->unconfirmed = 'Non confirmés'; +$lang->bug->longLifeBugs = 'Persistant'; +$lang->bug->postponedBugs = 'Reporté'; +$lang->bug->overdueBugs = 'Retard'; +$lang->bug->allBugs = 'Tous'; +$lang->bug->byQuery = 'Rechercher'; +$lang->bug->needConfirm = 'Story Changée'; +$lang->bug->allProduct = 'Tous les ' . $lang->productCommon . 's'; +$lang->bug->my = 'Mes'; +$lang->bug->yesterdayResolved = 'Bugs Résolus Hier '; +$lang->bug->yesterdayConfirmed = 'Bugs Confirmés Hier '; +$lang->bug->yesterdayClosed = 'Bugs Fermés Hier '; + +$lang->bug->assignToMeAB = 'Affectés à Moi'; +$lang->bug->openedByMeAB = 'Signalés par Moi'; +$lang->bug->resolvedByMeAB = 'Résolus par Moi'; + +$lang->bug->ditto = 'Idem'; +$lang->bug->dittoNotice = "Ce bug n'est pas lié au même product que le précédent !"; +$lang->bug->noAssigned = 'Non affectés'; +$lang->bug->noBug = "Pas de bug pour l'instant. Bravo !"; +$lang->bug->noModule = "
Vous n'avez pas de modules.
Gérer Modules maintenant
"; +$lang->bug->delayWarning = " Retard %s jours "; + +/* 页面标签。*/ +$lang->bug->lblAssignedTo = 'Affecté à4'; +$lang->bug->lblMailto = 'Mailto'; +$lang->bug->lblLastEdited = 'Edité par'; +$lang->bug->lblResolved = 'Résolu par'; +$lang->bug->allUsers = 'Charger Tous'; +$lang->bug->allBuilds = 'Tous les Builds'; +$lang->bug->createBuild = 'Nouveau'; + +/* legend列表。*/ +$lang->bug->legendBasicInfo = 'Infos de Base'; +$lang->bug->legendAttatch = 'Fichiers'; +$lang->bug->legendPrjStoryTask = $lang->projectCommon . '/Story/Tâche'; +$lang->bug->lblTypeAndSeverity = 'Type/Severité'; +$lang->bug->lblSystemBrowserAndHardware = 'Système/Browser'; +$lang->bug->legendSteps = 'Etapes Repro'; +$lang->bug->legendComment = 'Note'; +$lang->bug->legendLife = 'Vie du Bug'; +$lang->bug->legendMisc = 'Divers'; +$lang->bug->legendRelated = 'Infos connexes'; + +/* 功能按钮。*/ +$lang->bug->buttonConfirm = 'Confirmer'; + +/* 交互提示。*/ +$lang->bug->summary = "Total de %s bugs sur cette page, et %s sont Actifs."; +$lang->bug->confirmChangeProduct = "Tout changement aux {$lang->productCommon} fera que les {$lang->projectCommon}s, stories et tâches associées vont changer. Voulez-vous faire cela ?"; +$lang->bug->confirmDelete = 'Voulez-vous supprimer ce bug ?'; +$lang->bug->remindTask = 'Ce bug a été converti en tâche. Voulez-vous mettre à jour le statut de la Tâche(ID %s) ?'; +$lang->bug->skipClose = 'Bug %s est actif. Vous ne pouvez pas le fermer.'; + +/* 模板。*/ +$lang->bug->tplStep = "

[Etape]


"; +$lang->bug->tplResult = "

[Résultats]


"; +$lang->bug->tplExpect = "

[Résultats attendus]


"; + +/* 各个字段取值列表。*/ +$lang->bug->severityList[1] = '1'; +$lang->bug->severityList[2] = '2'; +$lang->bug->severityList[3] = '3'; +$lang->bug->severityList[4] = '4'; + +$lang->bug->priList[0] = ''; +$lang->bug->priList[1] = '1'; +$lang->bug->priList[2] = '2'; +$lang->bug->priList[3] = '3'; +$lang->bug->priList[4] = '4'; + +$lang->bug->osList[''] = ''; +$lang->bug->osList['all'] = 'Tous'; +$lang->bug->osList['windows'] = 'Windows'; +$lang->bug->osList['win10'] = 'Windows 10'; +$lang->bug->osList['win8'] = 'Windows 8'; +$lang->bug->osList['win7'] = 'Windows 7'; +$lang->bug->osList['vista'] = 'Windows Vista'; +$lang->bug->osList['winxp'] = 'Windows XP'; +$lang->bug->osList['win2012'] = 'Windows 2012'; +$lang->bug->osList['win2008'] = 'Windows 2008'; +$lang->bug->osList['win2003'] = 'Windows 2003'; +$lang->bug->osList['win2000'] = 'Windows 2000'; +$lang->bug->osList['android'] = 'Android'; +$lang->bug->osList['ios'] = 'IOS'; +$lang->bug->osList['wp8'] = 'WP8'; +$lang->bug->osList['wp7'] = 'WP7'; +$lang->bug->osList['symbian'] = 'Symbian'; +$lang->bug->osList['linux'] = 'Linux'; +$lang->bug->osList['freebsd'] = 'FreeBSD'; +$lang->bug->osList['osx'] = 'OS X'; +$lang->bug->osList['unix'] = 'Unix'; +$lang->bug->osList['others'] = 'Autres'; + +$lang->bug->browserList[''] = ''; +$lang->bug->browserList['all'] = 'Tous'; +$lang->bug->browserList['ie'] = 'IE series'; +$lang->bug->browserList['ie11'] = 'IE11'; +$lang->bug->browserList['ie10'] = 'IE10'; +$lang->bug->browserList['ie9'] = 'IE9'; +$lang->bug->browserList['ie8'] = 'IE8'; +$lang->bug->browserList['ie7'] = 'IE7'; +$lang->bug->browserList['ie6'] = 'IE6'; +$lang->bug->browserList['chrome'] = 'Chrome'; +$lang->bug->browserList['firefox'] = 'Firefox series'; +$lang->bug->browserList['firefox4'] = 'Firefox4'; +$lang->bug->browserList['firefox3'] = 'Firefox3'; +$lang->bug->browserList['firefox2'] = 'Firefox2'; +$lang->bug->browserList['opera'] = 'Opera series'; +$lang->bug->browserList['oprea11'] = 'Opera11'; +$lang->bug->browserList['oprea10'] = 'Opera10'; +$lang->bug->browserList['opera9'] = 'Opera9'; +$lang->bug->browserList['safari'] = 'Safari'; +$lang->bug->browserList['maxthon'] = 'Maxthon'; +$lang->bug->browserList['uc'] = 'UC'; +$lang->bug->browserList['other'] = 'Autres'; + +$lang->bug->typeList[''] = ''; +$lang->bug->typeList['codeerror'] = 'Code Erreur'; +$lang->bug->typeList['interface'] = 'Interface'; +$lang->bug->typeList['config'] = 'Configuration'; +$lang->bug->typeList['install'] = 'Installation'; +$lang->bug->typeList['security'] = 'Faille Sécurité'; +$lang->bug->typeList['performance'] = 'Performance'; +$lang->bug->typeList['standard'] = 'Convention de Code'; +$lang->bug->typeList['automation'] = 'Script automatisation'; +$lang->bug->typeList['designchange'] = 'Design Change'; +$lang->bug->typeList['newfeature'] = 'Nouvelle fonctionnalité'; +$lang->bug->typeList['designdefect'] = 'Erreur de Design'; +$lang->bug->typeList['trackthings'] = 'Tracking'; +$lang->bug->typeList['others'] = 'Autres'; + +$lang->bug->statusList[''] = ''; +$lang->bug->statusList['active'] = 'Actif'; +$lang->bug->statusList['resolved'] = 'Résolu'; +$lang->bug->statusList['closed'] = 'Fermé'; + +$lang->bug->confirmedList[1] = 'Oui'; +$lang->bug->confirmedList[0] = 'Non'; + +$lang->bug->resolutionList[''] = ''; +$lang->bug->resolutionList['bydesign'] = 'Du Design'; +$lang->bug->resolutionList['duplicate'] = 'Doublon'; +$lang->bug->resolutionList['external'] = 'Externe'; +$lang->bug->resolutionList['fixed'] = 'Résolu'; +$lang->bug->resolutionList['notrepro'] = 'Irreproductible'; +$lang->bug->resolutionList['postponed'] = 'Reporté à +tard'; +$lang->bug->resolutionList['willnotfix'] = "On ne corrigera pas"; +$lang->bug->resolutionList['tostory'] = 'Converti en Story'; + +/* 统计报表。*/ +$lang->bug->report = new stdclass(); +$lang->bug->report->common = 'Rapport'; +$lang->bug->report->select = 'Sélect Type de Rapport'; +$lang->bug->report->create = 'Créer Rapport'; + +$lang->bug->report->charts['bugsPerProject'] = 'Bugs ' . $lang->projectCommon; +$lang->bug->report->charts['bugsPerBuild'] = 'Bugs Par Build'; +$lang->bug->report->charts['bugsPerModule'] = 'Bugs Par Module'; +$lang->bug->report->charts['openedBugsPerDay'] = 'Bugs Détectés Par Jour'; +$lang->bug->report->charts['resolvedBugsPerDay'] = 'Bugs Résolus Par Jour'; +$lang->bug->report->charts['closedBugsPerDay'] = 'Bugs Fermés Par Jour'; +$lang->bug->report->charts['openedBugsPerUser'] = 'Bugs Détectés Par User'; +$lang->bug->report->charts['resolvedBugsPerUser'] = 'Bugs Résolus Par User'; +$lang->bug->report->charts['closedBugsPerUser'] = 'Bugs Fermés Par User'; +$lang->bug->report->charts['bugsPerSeverity'] = 'Sévérité Bug'; +$lang->bug->report->charts['bugsPerResolution'] = 'Résulution Bug'; +$lang->bug->report->charts['bugsPerStatus'] = 'Statut Bug'; +$lang->bug->report->charts['bugsPerActivatedCount'] = 'Heure Activation'; +$lang->bug->report->charts['bugsPerPri'] = 'Priorité Bug'; +$lang->bug->report->charts['bugsPerType'] = 'Type de Bug'; +$lang->bug->report->charts['bugsPerAssignedTo'] = 'Bug Affecté à'; +//$lang->bug->report->charts['bugLiveDays'] = 'Bug Handling Time Report'; +//$lang->bug->report->charts['bugHistories'] = 'Bug Handling Steps Report'; + +$lang->bug->report->options = new stdclass(); +$lang->bug->report->options->graph = new stdclass(); +$lang->bug->report->options->type = 'pie'; +$lang->bug->report->options->width = 500; +$lang->bug->report->options->height = 140; + +$lang->bug->report->bugsPerProject = new stdclass(); +$lang->bug->report->bugsPerBuild = new stdclass(); +$lang->bug->report->bugsPerModule = new stdclass(); +$lang->bug->report->openedBugsPerDay = new stdclass(); +$lang->bug->report->resolvedBugsPerDay = new stdclass(); +$lang->bug->report->closedBugsPerDay = new stdclass(); +$lang->bug->report->openedBugsPerUser = new stdclass(); +$lang->bug->report->resolvedBugsPerUser = new stdclass(); +$lang->bug->report->closedBugsPerUser = new stdclass(); +$lang->bug->report->bugsPerSeverity = new stdclass(); +$lang->bug->report->bugsPerResolution = new stdclass(); +$lang->bug->report->bugsPerStatus = new stdclass(); +$lang->bug->report->bugsPerActivatedCount = new stdclass(); +$lang->bug->report->bugsPerType = new stdclass(); +$lang->bug->report->bugsPerPri = new stdclass(); +$lang->bug->report->bugsPerAssignedTo = new stdclass(); +$lang->bug->report->bugLiveDays = new stdclass(); +$lang->bug->report->bugHistories = new stdclass(); + +$lang->bug->report->bugsPerProject->graph = new stdclass(); +$lang->bug->report->bugsPerBuild->graph = new stdclass(); +$lang->bug->report->bugsPerModule->graph = new stdclass(); +$lang->bug->report->openedBugsPerDay->graph = new stdclass(); +$lang->bug->report->resolvedBugsPerDay->graph = new stdclass(); +$lang->bug->report->closedBugsPerDay->graph = new stdclass(); +$lang->bug->report->openedBugsPerUser->graph = new stdclass(); +$lang->bug->report->resolvedBugsPerUser->graph = new stdclass(); +$lang->bug->report->closedBugsPerUser->graph = new stdclass(); +$lang->bug->report->bugsPerSeverity->graph = new stdclass(); +$lang->bug->report->bugsPerResolution->graph = new stdclass(); +$lang->bug->report->bugsPerStatus->graph = new stdclass(); +$lang->bug->report->bugsPerActivatedCount->graph = new stdclass(); +$lang->bug->report->bugsPerType->graph = new stdclass(); +$lang->bug->report->bugsPerPri->graph = new stdclass(); +$lang->bug->report->bugsPerAssignedTo->graph = new stdclass(); +$lang->bug->report->bugLiveDays->graph = new stdclass(); +$lang->bug->report->bugHistories->graph = new stdclass(); + +$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->projectCommon; +$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build'; +$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module'; + +$lang->bug->report->openedBugsPerDay->type = 'bar'; +$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date'; + +$lang->bug->report->resolvedBugsPerDay->type = 'bar'; +$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date'; + +$lang->bug->report->closedBugsPerDay->type = 'bar'; +$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date'; + +$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User'; +$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = 'User'; +$lang->bug->report->closedBugsPerUser->graph->xAxisName = 'User'; + +$lang->bug->report->bugsPerSeverity->graph->xAxisName = 'Sévérité'; +$lang->bug->report->bugsPerResolution->graph->xAxisName = 'Résolution'; +$lang->bug->report->bugsPerStatus->graph->xAxisName = 'Statut'; +$lang->bug->report->bugsPerActivatedCount->graph->xAxisName = 'Heure Activation'; +$lang->bug->report->bugsPerPri->graph->xAxisName = 'Priorité'; +$lang->bug->report->bugsPerType->graph->xAxisName = 'Type'; +$lang->bug->report->bugsPerAssignedTo->graph->xAxisName = 'Affecté à'; +$lang->bug->report->bugLiveDays->graph->xAxisName = 'Handling Time'; +$lang->bug->report->bugHistories->graph->xAxisName = 'Handling Steps'; + +/* 操作记录。*/ +$lang->bug->action = new stdclass(); +$lang->bug->action->resolved = array('main' => '$date, résolu par $actor et la résolution est $extra $appendLink.', 'extra' => 'resolutionList'); +$lang->bug->action->tostory = array('main' => '$date, converti par $actor en Story avec ID $extra.'); +$lang->bug->action->totask = array('main' => '$date, importé par $actor en tant que Task avec ID $extra.'); +$lang->bug->action->linked2plan = array('main' => '$date, lié par $actor au Plan $extra.'); +$lang->bug->action->unlinkedfromplan = array('main' => '$date, supprimé par $actor du Plan $extra.'); +$lang->bug->action->linked2build = array('main' => '$date, lié par $actor au Build $extra.'); +$lang->bug->action->unlinkedfrombuild = array('main' => '$date, retiré par $actor du Build $extra.'); +$lang->bug->action->linked2release = array('main' => '$date, ajouté par $actor à la Release $extra.'); +$lang->bug->action->unlinkedfromrelease = array('main' => '$date, retiré par $actor de la Release $extra.'); +$lang->bug->action->linkrelatedbug = array('main' => '$date, associé par $actor au Bug $extra.'); +$lang->bug->action->unlinkrelatedbug = array('main' => '$date, dissocié par $actor du Bug $extra.'); + +$lang->bug->placeholder = new stdclass(); +$lang->bug->placeholder->chooseBuilds = 'Sélect Build'; +$lang->bug->placeholder->newBuildName = 'Nom Nouv Build'; + +$lang->bug->featureBar['browse']['all'] = $lang->bug->allBugs; +$lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed; +$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe; +$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe; +$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe; + + +$lang->bug->featureBar['browse']['more'] = $lang->more; + +$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed; +$lang->bug->moreSelects['unresolved'] = $lang->bug->unResolved; +$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed; +$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull; +$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs; +$lang->bug->moreSelects['postponedbugs'] = $lang->bug->postponedBugs; +$lang->bug->moreSelects['overduebugs'] = $lang->bug->overdueBugs; +$lang->bug->moreSelects['needconfirm'] = $lang->bug->needConfirm; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index ad014b3832..7873a9d6d8 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -198,6 +198,7 @@ $lang->bug->priList[4] = '4'; $lang->bug->osList[''] = ''; $lang->bug->osList['all'] = '全部'; $lang->bug->osList['windows'] = 'Windows'; +$lang->bug->osList['win10'] = 'Windows 10'; $lang->bug->osList['win8'] = 'Windows 8'; $lang->bug->osList['win7'] = 'Windows 7'; $lang->bug->osList['vista'] = 'Windows Vista'; diff --git a/module/bug/lang/zh-tw.php b/module/bug/lang/zh-tw.php index d74dc3af9a..a52963d5db 100644 --- a/module/bug/lang/zh-tw.php +++ b/module/bug/lang/zh-tw.php @@ -198,6 +198,7 @@ $lang->bug->priList[4] = '4'; $lang->bug->osList[''] = ''; $lang->bug->osList['all'] = '全部'; $lang->bug->osList['windows'] = 'Windows'; +$lang->bug->osList['win10'] = 'Windows 10'; $lang->bug->osList['win8'] = 'Windows 8'; $lang->bug->osList['win7'] = 'Windows 7'; $lang->bug->osList['vista'] = 'Windows Vista'; diff --git a/module/build/lang/fr.php b/module/build/lang/fr.php new file mode 100644 index 0000000000..f3275f77d0 --- /dev/null +++ b/module/build/lang/fr.php @@ -0,0 +1,61 @@ + + * @package build + * @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->build->common = "Build"; +$lang->build->create = "Créer Build"; +$lang->build->edit = "Editer Build"; +$lang->build->linkStory = "Intégrer Story"; +$lang->build->linkBug = "Intégrer Bug"; +$lang->build->delete = "Supprimer Build"; +$lang->build->deleted = "Supprimé"; +$lang->build->view = "Détail Build"; +$lang->build->batchUnlink = 'Retirer par Lot'; +$lang->build->batchUnlinkStory = 'Retirer Sories par Lot'; +$lang->build->batchUnlinkBug = 'Retirer Bugs par Lot'; + +$lang->build->confirmDelete = "Voulez-vous supprimer ce build ?"; +$lang->build->confirmUnlinkStory = "Voulez-vous retirer cette Story du Build ?"; +$lang->build->confirmUnlinkBug = "Voulez-vous retirer ce Bug du Build ?"; + +$lang->build->basicInfo = 'Infos de Base'; + +$lang->build->id = 'ID'; +$lang->build->product = $lang->productCommon; +$lang->build->branch = 'Platforme/Branche'; +$lang->build->project = $lang->projectCommon; +$lang->build->name = 'Nom'; +$lang->build->date = 'Date'; +$lang->build->builder = 'Builder'; +$lang->build->scmPath = 'SCM Path'; +$lang->build->filePath = 'File Path'; +$lang->build->desc = 'Description'; +$lang->build->files = 'Fichiers'; +$lang->build->last = 'Dernier Build'; +$lang->build->packageType = 'Type de Package'; +$lang->build->unlinkStory = 'Retirer Story'; +$lang->build->unlinkBug = 'Retirer Bug'; +$lang->build->stories = 'Stories terminées'; +$lang->build->bugs = 'Bugs Résolus'; +$lang->build->generatedBugs = 'Bugs signalés'; +$lang->build->noProduct = " Ce {$lang->projectCommon} n'est pas associé à un {$lang->productCommon}, le Build ne peut pas être créé. Commencez par rattacher le projet à un {$lang->productCommon}"; +$lang->build->noBuild = 'Aucun builds.'; + +$lang->build->finishStories = ' Stories Terminées %s'; +$lang->build->resolvedBugs = ' Bugs Résolus %s'; +$lang->build->createdBugs = ' Bugs Signalés %s'; + +$lang->build->placeholder = new stdclass(); +$lang->build->placeholder->scmPath = ' Source code repository, ex: Subversion/Git Library path'; +$lang->build->placeholder->filePath = ' Chemin de téléchargement pour ce Build.'; + +$lang->build->action = new stdclass(); +$lang->build->action->buildopened = '$date, Build $extra créé par $actor.' . "\n"; +$lang->backhome = 'Retour'; diff --git a/module/caselib/lang/de.php b/module/caselib/lang/de.php new file mode 100644 index 0000000000..429aa86b8b --- /dev/null +++ b/module/caselib/lang/de.php @@ -0,0 +1,37 @@ + + * @package caselib + * @version $Id: zh-cn.php 4490 2013-02-27 03:27:05Z wyd621@gmail.com $ + * @link http://www.zentao.net + */ +$lang->caselib->common = 'Case Library'; +$lang->caselib->all = 'All Case Libraries'; + +$lang->caselib->index = "Library Home"; +$lang->caselib->create = "Create Case Library"; +$lang->caselib->edit = 'Edit Case Library'; +$lang->caselib->browse = 'View Cases in Library'; +$lang->caselib->view = 'Library Detail'; +$lang->caselib->createCase = 'Create Case'; +$lang->caselib->delete = "Delete Suite"; +$lang->caselib->linkVersion = "Version"; +$lang->caselib->deleted = 'Deleted'; +$lang->caselib->exportTemplet = 'Export Template'; +$lang->caselib->batchCreateCase = 'Batch Create'; +$lang->caselib->import = 'Import'; +$lang->caselib->importAction = 'Import Case'; +$lang->caselib->showImport = 'Imported Data'; + +$lang->caselib->id = 'ID'; +$lang->caselib->name = 'Name'; +$lang->caselib->desc = 'Description'; + +$lang->caselib->legendDesc = 'Description'; + +$lang->caselib->libraryDelete = 'Do you want to delete this library?'; +$lang->caselib->noModule = '
You have no modules.
Manage it now.
'; diff --git a/module/caselib/lang/fr.php b/module/caselib/lang/fr.php new file mode 100644 index 0000000000..429aa86b8b --- /dev/null +++ b/module/caselib/lang/fr.php @@ -0,0 +1,37 @@ + + * @package caselib + * @version $Id: zh-cn.php 4490 2013-02-27 03:27:05Z wyd621@gmail.com $ + * @link http://www.zentao.net + */ +$lang->caselib->common = 'Case Library'; +$lang->caselib->all = 'All Case Libraries'; + +$lang->caselib->index = "Library Home"; +$lang->caselib->create = "Create Case Library"; +$lang->caselib->edit = 'Edit Case Library'; +$lang->caselib->browse = 'View Cases in Library'; +$lang->caselib->view = 'Library Detail'; +$lang->caselib->createCase = 'Create Case'; +$lang->caselib->delete = "Delete Suite"; +$lang->caselib->linkVersion = "Version"; +$lang->caselib->deleted = 'Deleted'; +$lang->caselib->exportTemplet = 'Export Template'; +$lang->caselib->batchCreateCase = 'Batch Create'; +$lang->caselib->import = 'Import'; +$lang->caselib->importAction = 'Import Case'; +$lang->caselib->showImport = 'Imported Data'; + +$lang->caselib->id = 'ID'; +$lang->caselib->name = 'Name'; +$lang->caselib->desc = 'Description'; + +$lang->caselib->legendDesc = 'Description'; + +$lang->caselib->libraryDelete = 'Do you want to delete this library?'; +$lang->caselib->noModule = '
You have no modules.
Manage it now.
'; diff --git a/module/caselib/lang/zh-tw.php b/module/caselib/lang/zh-tw.php new file mode 100644 index 0000000000..feae2692d3 --- /dev/null +++ b/module/caselib/lang/zh-tw.php @@ -0,0 +1,37 @@ + + * @package caselib + * @version $Id: zh-tw.php 4490 2013-02-27 03:27:05Z wyd621@gmail.com $ + * @link http://www.zentao.net + */ +$lang->caselib->common = '用例庫'; +$lang->caselib->all = '所有用例庫'; + +$lang->caselib->index = "用例庫首頁"; +$lang->caselib->create = "創建用例庫"; +$lang->caselib->edit = '編輯用例庫'; +$lang->caselib->browse = '瀏覽庫用例'; +$lang->caselib->view = '查看庫概況'; +$lang->caselib->createCase = '創建用例'; +$lang->caselib->delete = "刪除"; +$lang->caselib->linkVersion = "版本"; +$lang->caselib->deleted = '已刪除'; +$lang->caselib->exportTemplet = '導出模板'; +$lang->caselib->batchCreateCase = '批量創建用例'; +$lang->caselib->import = '導入'; +$lang->caselib->importAction = '導入用例'; +$lang->caselib->showImport = '顯示導入數據'; + +$lang->caselib->id = '編號'; +$lang->caselib->name = '名稱'; +$lang->caselib->desc = '描述'; + +$lang->caselib->legendDesc = '描述'; + +$lang->caselib->libraryDelete = '您確認要刪除該用例庫嗎?'; +$lang->caselib->noModule = '
您現在還沒有模組信息
請維護用例庫模組
'; diff --git a/module/common/lang/de.php b/module/common/lang/de.php index afad35cf49..ad194c5a7f 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -142,7 +142,7 @@ $lang->searchObjects['release'] = 'Release'; $lang->searchObjects['productplan'] = $lang->productCommon . 'Plan'; $lang->searchObjects['testtask'] = 'Test Aufgabe'; $lang->searchObjects['doc'] = 'Doc'; -$lang->searchObjects['testsuite'] = 'Fall Bibliothek'; +$lang->searchObjects['caselib'] = 'Case Library'; $lang->searchObjects['testreport'] = 'Test-Bericht'; $lang->searchTips = 'ID (strg+g)'; @@ -273,7 +273,7 @@ $lang->qa->menu->testcase = array('link' => 'Fälle|testcase|browse|productID=% $lang->qa->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->qa->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); $lang->qa->menu->report = array('link' => 'Berichte|testreport|browse|productID=%s'); -$lang->qa->menu->caselib = array('link' => 'Bibliothek|testsuite|library'); +$lang->qa->menu->caselib = array('link' => 'Bibliothek|caselib|browse'); $lang->bug = new stdclass(); $lang->bug->menu = new stdclass(); @@ -283,7 +283,7 @@ $lang->bug->menu->testcase = array('link' => 'Fälle|testcase|browse|productID= $lang->bug->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->bug->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); $lang->bug->menu->report = array('link' => 'Berichte|testreport|browse|productID=%s'); -$lang->bug->menu->caselib = array('link' => 'Bibliothek|testsuite|library'); +$lang->bug->menu->caselib = array('link' => 'Bibliothek|caselib|browse'); $lang->testcase = new stdclass(); $lang->testcase->menu = new stdclass(); @@ -292,7 +292,7 @@ $lang->testcase->menu->testcase = array('link' => 'Fälle|testcase|browse|produ $lang->testcase->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->testcase->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); $lang->testcase->menu->report = array('link' => 'Berichte|testreport|browse|productID=%s'); -$lang->testcase->menu->caselib = array('link' => 'Bibliothek|testsuite|library'); +$lang->testcase->menu->caselib = array('link' => 'Bibliothek|caselib|browse'); $lang->testtask = new stdclass(); $lang->testtask->menu = new stdclass(); @@ -301,7 +301,7 @@ $lang->testtask->menu->testcase = array('link' => 'Fälle|testcase|browse|produ $lang->testtask->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report'); $lang->testtask->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); $lang->testtask->menu->report = array('link' => 'Berichte|testreport|browse|productID=%s'); -$lang->testtask->menu->caselib = array('link' => 'Bibliothek|testsuite|library'); +$lang->testtask->menu->caselib = array('link' => 'Bibliothek|caselib|browse'); $lang->testsuite = new stdclass(); $lang->testsuite->menu = new stdclass(); @@ -310,7 +310,7 @@ $lang->testsuite->menu->testcase = array('link' => 'Fälle|testcase|browse|prod $lang->testsuite->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->testsuite->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase'); $lang->testsuite->menu->report = array('link' => 'Report|testreport|browse|productID=%s'); -$lang->testsuite->menu->caselib = array('link' => 'Library|testsuite|library'); +$lang->testsuite->menu->caselib = array('link' => 'Library|caselib|browse'); $lang->testreport = new stdclass(); $lang->testreport->menu = new stdclass(); @@ -319,7 +319,7 @@ $lang->testreport->menu->testcase = array('link' => 'Fälle|testcase|browse|pro $lang->testreport->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->testreport->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); $lang->testreport->menu->report = array('link' => 'Berichte|testreport|browse|productID=%s', 'alias' => 'view,create,edit'); -$lang->testreport->menu->caselib = array('link' => 'Bibliothek|testsuite|library'); +$lang->testreport->menu->caselib = array('link' => 'Bibliothek|caselib|browse'); $lang->caselib = new stdclass(); $lang->caselib->menu = new stdclass(); @@ -328,7 +328,7 @@ $lang->caselib->menu->testcase = array('link' => 'Fälle|testcase|browse|'); $lang->caselib->menu->testtask = array('link' => 'Build|testtask|browse|'); $lang->caselib->menu->testsuite = array('link' => 'Suite|testsuite|browse|'); $lang->caselib->menu->report = array('link' => 'Berichte|testreport|browse|'); -$lang->caselib->menu->caselib = array('link' => 'Bibliothek|testsuite|library', 'alias' => 'createlib,createcase,libview,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase'); +$lang->caselib->menu->caselib = array('link' => 'Bibliothek|caselib|browse', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase'); /* 文档视图菜单设置。*/ $lang->doc = new stdclass(); @@ -451,7 +451,6 @@ $lang->menugroup->group = 'company'; $lang->menugroup->bug = 'qa'; $lang->menugroup->testcase = 'qa'; $lang->menugroup->case = 'qa'; -$lang->menugroup->caselib = 'qa'; $lang->menugroup->testtask = 'qa'; $lang->menugroup->testsuite = 'qa'; $lang->menugroup->caselib = 'qa'; @@ -691,6 +690,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory') unset($lang->searchObjects['build']); unset($lang->searchObjects['testtask']); unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); unset($lang->searchObjects['testreport']); } @@ -727,6 +727,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTask') unset($lang->searchObjects['release']); unset($lang->searchObjects['productplan']); unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); unset($lang->searchObjects['testreport']); } @@ -760,7 +761,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->menu->testcase = 'Test Fälle|testcase|index'; $lang->menu->testsuite = 'Test Suite|testsuite|index'; $lang->menu->testtask = 'Test Aufgaben|testtask|index'; - $lang->menu->caselib = 'Fall Bibliothek|testsuite|library'; + $lang->menu->caselib = 'Fall Bibliothek|caselib|browse'; $lang->menuOrder[6] = 'bug'; $lang->menuOrder[7] = 'testcase'; @@ -847,9 +848,9 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') /* Adjust sub menu of caselib module. */ $lang->caselib->menu = new stdclass(); - $lang->caselib->menu->all = 'Alle|testsuite|library|libID=%s&browseType=all'; - $lang->caselib->menu->wait = 'Warten|testsuite|library|libID=%s&browseType=wait'; - $lang->caselib->menu->view = 'Anzeige|testsuite|libview|libID=%s'; + $lang->caselib->menu->all = 'Alle|caselib|browse|libID=%s&browseType=all'; + $lang->caselib->menu->wait = 'Warten|caselib|browse|libID=%s&browseType=wait'; + $lang->caselib->menu->view = 'Anzeige|caselib|view|libID=%s'; $lang->caselib->menuOrder[5] = 'lib'; $lang->caselib->menuOrder[10] = 'all'; @@ -881,6 +882,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->menugroup->testcase = 'testcase'; $lang->menugroup->testtask = 'testtask'; $lang->menugroup->testsuite = 'testsuite'; + $lang->menugroup->caselib = 'caselib'; $lang->menugroup->testreport = 'testtask'; $lang->menugroup->build = 'product'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 2ea545a73a..8c09957df6 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -451,7 +451,6 @@ $lang->menugroup->group = 'company'; $lang->menugroup->bug = 'qa'; $lang->menugroup->testcase = 'qa'; $lang->menugroup->case = 'qa'; -$lang->menugroup->caselib = 'qa'; $lang->menugroup->testtask = 'qa'; $lang->menugroup->testsuite = 'qa'; $lang->menugroup->caselib = 'qa'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php new file mode 100644 index 0000000000..647935cf13 --- /dev/null +++ b/module/common/lang/fr.php @@ -0,0 +1,895 @@ + + * @package ZenTaoPMS + * @version $Id: en.php 5116 2013-07-12 06:37:48Z chencongzhi520@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->arrow = '  '; +$lang->colon = '-'; +$lang->comma = ','; +$lang->dot = '.'; +$lang->at = ' à '; +$lang->downArrow = '↓'; +$lang->null = 'Null'; +$lang->ellipsis = '…'; +$lang->percent = '%'; +$lang->dash = '-'; + +$lang->zentaoPMS = 'ZenTao'; +$lang->logoImg = 'zt-logo-en.png'; +$lang->welcome = "%s ALM"; +$lang->logout = 'Déconnexion'; +$lang->login = 'Connexion'; +$lang->help = 'Aide'; +$lang->aboutZenTao = 'A Propos'; +$lang->profile = 'Profil'; +$lang->changePassword = 'Mot de Passe'; +$lang->runInfo = "
Time %s MS, Memory %s KB, Query %s.
"; +$lang->agreement = "I have read and agreed to the terms and conditions of Z PUBLIC LICENSE 1.2 . Without authorization, I should not remove, hide or cover any logos/links of ZenTao."; +$lang->designedByAIUX = "Designed by AIUX"; + +$lang->reset = 'Réinitialiser'; +$lang->cancel = 'Annuler'; +$lang->refresh = 'Rafraichir'; +$lang->edit = 'Editer'; +$lang->delete = 'Supprimer'; +$lang->close = 'Fermer'; +$lang->unlink = 'Dissocier'; +$lang->import = 'Importer'; +$lang->export = 'Exporter'; +$lang->setFileName = 'Nom du Fichier'; +$lang->submitting = 'Enregistrement...'; +$lang->save = 'Sauvegarde'; +$lang->saveSuccess = 'Sauvegardé'; +$lang->confirm = 'Confirmer'; +$lang->preview = 'Consulter'; +$lang->goback = 'Retour'; +$lang->goPC = 'PC'; +$lang->more = 'Plus'; +$lang->day = 'Jour'; +$lang->customConfig = 'Personnalisation'; +$lang->public = 'Public'; +$lang->trunk = 'Tronc'; +$lang->sort = 'Ordre'; +$lang->required = 'Obligatoire'; +$lang->noData = 'No data.'; + +$lang->actions = 'Action'; +$lang->restore = 'Réinitialiser'; +$lang->comment = 'Note'; +$lang->history = 'Historique'; +$lang->attatch = 'Fichiers'; +$lang->reverse = 'Inverser'; +$lang->switchDisplay = 'Basculer'; +$lang->expand = 'Déplier'; +$lang->collapse = 'Replier'; +$lang->saveSuccess = 'Sauvé'; +$lang->fail = 'Echec'; +$lang->addFiles = 'Fichiers ajoutés '; +$lang->files = 'Fichiers '; +$lang->pasteText = 'Collage Multi-lignes'; +$lang->uploadImages = 'Upload Multi-images'; +$lang->timeout = 'Timeout. Vérifier votre connexion réseau, ou réessayez !'; +$lang->repairTable = 'La Base de données est peut-être endommagée. Exécutez phpmyadmin ou myisamchk pour corriger.'; +$lang->duplicate = '%s a le même titre que le fichier existant.'; +$lang->ipLimited = "Sorry, your current IP is restricted. PLease contact your Administer to grant your permissions."; +$lang->unfold = '+'; +$lang->fold = '-'; +$lang->homepage = 'Set Home'; +$lang->noviceTutorial = 'Tutoriel ZenTao'; +$lang->changeLog = 'Change Log'; +$lang->manual = 'User Manual'; +$lang->manualUrl = 'https://www.zentao.pm/book/zentaomanual/zentao-installation-11.html'; +$lang->customMenu = 'Personnalisation Menu'; +$lang->customField = 'Personnalisation Champ'; +$lang->lineNumber = 'Ligne No.'; +$lang->tutorialConfirm = 'You are using ZenTao tutorial. Do you want to quit right now?'; + +$lang->preShortcutKey = '[Shortcut:←]'; +$lang->nextShortcutKey = '[Shortcut:→]'; +$lang->backShortcutKey = '[Shortcut:Alt+↑]'; + +$lang->select = 'Sélectionner'; +$lang->selectAll = 'Tout sélectionner'; +$lang->selectReverse = "Sélectionner l'inverse"; +$lang->loading = 'Chargement...'; +$lang->notFound = 'Not found !'; +$lang->notPage = 'Désolé, la fonctionnalité que vous souhaitez utiliser est encore en développement !'; +$lang->showAll = '[[Voir Tout]]'; + +$lang->future = 'En Attente'; +$lang->year = 'Année'; +$lang->workingHour = 'Heures'; + +$lang->idAB = 'ID'; +$lang->priAB = 'P'; +$lang->statusAB = 'Statut'; +$lang->openedByAB = 'Créé par'; +$lang->assignedToAB = 'Affecté à'; +$lang->typeAB = 'Type'; + +$lang->common = new stdclass(); +$lang->common->common = 'Module Commun'; + +/* Main menu. */ +$lang->menu = new stdclass(); +$lang->menu->my = 'Dashboard|my|index'; +$lang->menu->product = $lang->productCommon . '|product|index|locate=no'; +$lang->menu->project = $lang->projectCommon . '|project|index|locate=no'; +$lang->menu->qa = 'QA|qa|index'; +$lang->menu->doc = 'Doc|doc|index'; +$lang->menu->report = 'Rapports|report|index'; +$lang->menu->company = 'Entreprise|company|index'; +$lang->menu->admin = 'Admin|admin|index'; + +$lang->dividerMenu = ',qa,report,'; + +/* Object list in search form. */ +$lang->searchObjects['bug'] = 'Bug'; +$lang->searchObjects['story'] = 'Story'; +$lang->searchObjects['task'] = 'Tâche'; +$lang->searchObjects['testcase'] = 'CasTest'; +$lang->searchObjects['project'] = $lang->projectCommon; +$lang->searchObjects['product'] = $lang->productCommon; +$lang->searchObjects['user'] = 'Utilisateur'; +$lang->searchObjects['build'] = 'Build'; +$lang->searchObjects['release'] = 'Release'; +$lang->searchObjects['productplan'] = $lang->productCommon . 'Plan'; +$lang->searchObjects['testtask'] = 'Recette'; +$lang->searchObjects['doc'] = 'Document'; +$lang->searchObjects['caselib'] = 'Case Library'; +$lang->searchObjects['testreport'] = 'CR de Test'; +$lang->searchTips = 'ID (ctrl+g)'; + +/* Code formats for import. */ +$lang->importEncodeList['gbk'] = 'GBK'; +$lang->importEncodeList['big5'] = 'BIG5'; +$lang->importEncodeList['utf-8'] = 'UTF-8'; + +/* File type list for export. */ +$lang->exportFileTypeList['csv'] = 'csv'; +$lang->exportFileTypeList['xml'] = 'xml'; +$lang->exportFileTypeList['html'] = 'html'; + +$lang->exportTypeList['all'] = 'Toutes les Données'; +$lang->exportTypeList['selected'] = 'Données sélectionnées'; + +/* Language. */ +$lang->lang = 'Langue'; + +/* Theme style. */ +$lang->theme = 'Theme'; +$lang->themes['default'] = 'Default'; +$lang->themes['green'] = 'Green'; +$lang->themes['red'] = 'Red'; +$lang->themes['purple'] = 'Purple'; +$lang->themes['pink'] = 'Pink'; +$lang->themes['blackberry'] = 'Blackberry'; +$lang->themes['classic'] = 'Classic'; + +/* Index menu settings. */ +$lang->index = new stdclass(); +$lang->index->menu = new stdclass(); + +$lang->index->menu->product = "{$lang->productCommon}|product|browse"; +$lang->index->menu->project = "{$lang->projectCommon}|project|browse"; + +/* my dashboard menu settings. */ +$lang->my = new stdclass(); +$lang->my->menu = new stdclass(); + +$lang->my->menu->index = 'Accueil|my|index'; +$lang->my->menu->calendar = array('link' => 'Agenda|my|calendar|', 'subModule' => 'todo', 'alias' => 'todo'); +$lang->my->menu->task = array('link' => 'Tâche|my|task|', 'subModule' => 'task'); +$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug'); +$lang->my->menu->testtask = array('link' => 'Recette|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase'); +$lang->my->menu->story = array('link' => 'Story|my|story|', 'subModule' => 'story'); +$lang->my->menu->myProject = "{$lang->projectCommon}|my|project|"; +$lang->my->menu->dynamic = 'Historique|my|dynamic|'; +$lang->my->menu->profile = array('link' => 'Profil|my|profile', 'alias' => 'editprofile'); +$lang->my->menu->changePassword = 'Password|my|changepassword'; +$lang->my->menu->manageContacts = 'Contact|my|managecontacts'; +$lang->my->menu->score = array('link' => 'Points|my|score', 'subModule' => 'score'); + +$lang->my->dividerMenu = ',task,myProject,profile,'; + +$lang->todo = new stdclass(); +$lang->todo->menu = $lang->my->menu; + +$lang->score = new stdclass(); +$lang->score->menu = $lang->my->menu; + +/* Product menu settings. */ +$lang->product = new stdclass(); +$lang->product->menu = new stdclass(); + +$lang->product->menu->story = array('link' => 'Story|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story'); +$lang->product->menu->plan = array('link' => 'Plan|productplan|browse|productID=%s', 'subModule' => 'productplan'); +$lang->product->menu->release = array('link' => 'Release|release|browse|productID=%s', 'subModule' => 'release'); +$lang->product->menu->roadmap = 'Roadmap|product|roadmap|productID=%s'; +$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s"; +$lang->product->menu->dynamic = 'Historique|product|dynamic|productID=%s'; +$lang->product->menu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc'); +$lang->product->menu->branch = '@branch@|branch|manage|productID=%s'; +$lang->product->menu->module = 'Module|tree|browse|productID=%s&view=story'; +$lang->product->menu->view = array('link' => "Vue d'ensemble|product|view|productID=%s", 'alias' => 'edit'); + +$lang->product->dividerMenu = ',plan,project,doc,'; + +$lang->story = new stdclass(); +$lang->productplan = new stdclass(); +$lang->release = new stdclass(); +$lang->branch = new stdclass(); + +$lang->branch->menu = $lang->product->menu; +$lang->story->menu = $lang->product->menu; +$lang->productplan->menu = $lang->product->menu; +$lang->release->menu = $lang->product->menu; + +/* Project menu settings. */ +$lang->project = new stdclass(); +$lang->project->menu = new stdclass(); + +$lang->project->menu->task = array('link' => 'Tâche|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug'); +$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s'); +$lang->project->menu->burn = array('link' => 'Atterrissage|project|burn|projectID=%s'); +$lang->project->menu->list = array('link' => 'Plus|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover'); +$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban'); +$lang->project->menu->qa = array('link' => 'Test|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover'); +$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc'); +$lang->project->menu->action = array('link' => 'Historique|project|dynamic|projectID=%s', 'subModule' => 'dynamic', 'class' => 'dropdown dropdown-hover'); +$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s'; +$lang->project->menu->team = array('link' => 'Equipe|project|team|projectID=%s', 'alias' => 'managemembers'); +$lang->project->menu->view = array('link' => "Vue d'ensemble|project|view|projectID=%s", 'alias' => 'edit,start,suspend,putoff,close'); + +$lang->project->subMenu = new stdclass(); +$lang->project->subMenu->list = new stdclass(); +$lang->project->subMenu->list->groupTask = 'Vision Groupée|project|groupTask|projectID=%s'; +$lang->project->subMenu->list->tree = 'Arborescence|project|tree|projectID=%s'; + +$lang->project->subMenu->qa = new stdclass(); +$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s'; +$lang->project->subMenu->qa->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build'); +$lang->project->subMenu->qa->testtask = array('link' => 'Recette|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask'); + +$lang->project->dividerMenu = ',story,team,product,'; + +$lang->task = new stdclass(); +$lang->build = new stdclass(); +$lang->task->menu = $lang->project->menu; +$lang->build->menu = $lang->project->menu; + +/* QA menu settings. */ +$lang->qa = new stdclass(); +$lang->qa->menu = new stdclass(); + +$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->qa->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s'); +$lang->qa->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s'); +$lang->qa->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s'); +$lang->qa->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s'); +$lang->qa->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->bug = new stdclass(); +$lang->bug->menu = new stdclass(); + +$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree'); +$lang->bug->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s'); +$lang->bug->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s'); +$lang->bug->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s'); +$lang->bug->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s'); +$lang->bug->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->testcase = new stdclass(); +$lang->testcase->menu = new stdclass(); +$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testcase->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase,importfromlib', 'subModule' => 'tree'); +$lang->testcase->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s'); +$lang->testcase->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s'); +$lang->testcase->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s'); +$lang->testcase->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->testtask = new stdclass(); +$lang->testtask->menu = new stdclass(); +$lang->testtask->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testtask->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s'); +$lang->testtask->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report'); +$lang->testtask->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s'); +$lang->testtask->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s'); +$lang->testtask->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->testsuite = new stdclass(); +$lang->testsuite->menu = new stdclass(); +$lang->testsuite->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testsuite->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s'); +$lang->testsuite->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s'); +$lang->testsuite->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase'); +$lang->testsuite->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s'); +$lang->testsuite->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->testreport = new stdclass(); +$lang->testreport->menu = new stdclass(); +$lang->testreport->menu->bug = array('link' => 'Bug|bug|browse|productID=%s'); +$lang->testreport->menu->testcase = array('link' => 'CasTest|testcase|browse|productID=%s'); +$lang->testreport->menu->testtask = array('link' => 'Recette|testtask|browse|productID=%s'); +$lang->testreport->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|productID=%s'); +$lang->testreport->menu->report = array('link' => 'Rapport|testreport|browse|productID=%s', 'alias' => 'view,create,edit'); +$lang->testreport->menu->caselib = array('link' => 'Library Recette|caselib|browse'); + +$lang->caselib = new stdclass(); +$lang->caselib->menu = new stdclass(); +$lang->caselib->menu->bug = array('link' => 'Bug|bug|browse|'); +$lang->caselib->menu->testcase = array('link' => 'CasTest|testcase|browse|'); +$lang->caselib->menu->testtask = array('link' => 'Recette|testtask|browse|'); +$lang->caselib->menu->testsuite = array('link' => 'Cahier Recette|testsuite|browse|'); +$lang->caselib->menu->report = array('link' => 'Rapport|testreport|browse|'); +$lang->caselib->menu->caselib = array('link' => 'Library Recette|caselib|browse', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase'); + +/* Doc menu settings. */ +$lang->doc = new stdclass(); +$lang->doc->menu = new stdclass(); +//$lang->doc->menu->createLib = array('link' => ' Add Library|doc|createLib', 'float' => 'right'); + +$lang->svn = new stdclass(); +$lang->git = new stdclass(); + +/* Report menu settings. */ +$lang->report = new stdclass(); +$lang->report->menu = new stdclass(); + +$lang->report->menu->product = array('link' => $lang->productCommon . '|report|productsummary'); +$lang->report->menu->prj = array('link' => $lang->projectCommon . '|report|projectdeviation'); +$lang->report->menu->test = array('link' => 'Recette|report|bugcreate', 'alias' => 'bugassign'); +$lang->report->menu->staff = array('link' => 'Entreprise|report|workload'); + +$lang->report->notice = new stdclass(); +$lang->report->notice->help = 'Note : Le rapport est généré à partir des résultats de la liste consultée. Par exemple, cliquez sur AssignedToMe, puis Générer Rapport pour obtenir un rapport basé sur la liste de ce qui vous est assigné.'; + +/* Company menu settings. */ +$lang->company = new stdclass(); +$lang->company->menu = new stdclass(); +$lang->company->menu->browseUser = array('link' => 'Utilisateurs|company|browse', 'subModule' => 'user'); +$lang->company->menu->dept = array('link' => 'Compartiments|dept|browse', 'subModule' => 'dept'); +$lang->company->menu->browseGroup = array('link' => 'Privilèges|group|browse', 'subModule' => 'group'); +$lang->company->menu->dynamic = 'Historique|company|dynamic|'; +$lang->company->menu->view = array('link' => 'Entreprise|company|view'); + +$lang->dept = new stdclass(); +$lang->group = new stdclass(); +$lang->user = new stdclass(); + +$lang->dept->menu = $lang->company->menu; +$lang->group->menu = $lang->company->menu; +$lang->user->menu = $lang->company->menu; + +/* Admin menu settings. */ +$lang->admin = new stdclass(); +$lang->admin->menu = new stdclass(); +$lang->admin->menu->index = array('link' => 'Accueil|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); +$lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook'); +$lang->admin->menu->custom = array('link' => 'Personnalisation|custom|set', 'subModule' => 'custom'); +$lang->admin->menu->sso = array('link' => 'Intégration|admin|sso'); + +$lang->admin->menu->dev = array('link' => 'Dévelop.|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor,entry'); +$lang->admin->menu->translate = array('link' => 'Traduire|translate|index', 'subModule' => 'translate'); +$lang->admin->menu->data = array('link' => 'Données|backup|index', 'subModule' => 'backup,action'); +$lang->admin->menu->safe = array('link' => 'Sécurité|admin|safe', 'alias' => 'checkweak'); +$lang->admin->menu->system = array('link' => 'Système|cron|index', 'subModule' => 'cron'); + +$lang->admin->subMenu = new stdclass(); +$lang->admin->subMenu->message = new stdclass(); +$lang->admin->subMenu->message->mail = array('link' => 'Mail|mail|index', 'subModule' => 'mail'); +$lang->admin->subMenu->message->webhook = array('link' => 'Webhook|webhook|browse', 'subModule' => 'webhook'); +$lang->admin->subMenu->message->browser = array('link' => 'Browser|message|browser'); +$lang->admin->subMenu->message->setting = array('link' => 'Paramètrage|message|setting', 'subModule' => 'message'); + +$lang->admin->subMenu->sso = new stdclass(); +$lang->admin->subMenu->sso->ranzhi = 'Zdoo|admin|sso'; + +$lang->admin->subMenu->dev = new stdclass(); +$lang->admin->subMenu->dev->api = array('link' => 'API|dev|api'); +$lang->admin->subMenu->dev->db = array('link' => 'Database|dev|db'); +$lang->admin->subMenu->dev->editor = array('link' => 'Editor|editor|index', 'subModule' => 'editor'); +$lang->admin->subMenu->dev->entry = array('link' => 'Application|entry|browse', 'subModule' => 'entry'); + +$lang->admin->subMenu->data = new stdclass(); +$lang->admin->subMenu->data->backup = array('link' => 'Backup|backup|index', 'subModule' => 'backup'); +$lang->admin->subMenu->data->trash = 'Corbeille|action|trash'; + +$lang->admin->subMenu->system = new stdclass(); +$lang->admin->subMenu->system->cron = array('link' => 'Cron|cron|index', 'subModule' => 'cron'); +$lang->admin->subMenu->system->timezone = array('link' => 'Timezone|custom|timezone', 'subModule' => 'custom'); + +$lang->convert = new stdclass(); +$lang->upgrade = new stdclass(); +$lang->action = new stdclass(); +$lang->backup = new stdclass(); +$lang->extension = new stdclass(); +$lang->custom = new stdclass(); +$lang->mail = new stdclass(); +$lang->cron = new stdclass(); +$lang->dev = new stdclass(); +$lang->entry = new stdclass(); +$lang->webhook = new stdclass(); +$lang->message = new stdclass(); +$lang->search = new stdclass(); +$lang->translate = new stdclass(); +$lang->editor = new stdclass(); + +$lang->convert->menu = $lang->admin->menu; +$lang->upgrade->menu = $lang->admin->menu; +$lang->action->menu = $lang->admin->menu; +$lang->backup->menu = $lang->admin->menu; +$lang->cron->menu = $lang->admin->menu; +$lang->extension->menu = $lang->admin->menu; +$lang->custom->menu = $lang->admin->menu; +$lang->mail->menu = $lang->admin->menu; +$lang->dev->menu = $lang->admin->menu; +$lang->entry->menu = $lang->admin->menu; +$lang->webhook->menu = $lang->admin->menu; +$lang->message->menu = $lang->admin->menu; +$lang->translate->menu = $lang->admin->menu; +$lang->editor->menu = $lang->admin->menu; + +/* Menu group. */ +$lang->menugroup = new stdclass(); +$lang->menugroup->release = 'product'; +$lang->menugroup->story = 'product'; +$lang->menugroup->branch = '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->case = 'qa'; +$lang->menugroup->testtask = 'qa'; +$lang->menugroup->testsuite = 'qa'; +$lang->menugroup->caselib = 'qa'; +$lang->menugroup->testreport = 'qa'; +$lang->menugroup->doclib = 'doc'; +$lang->menugroup->people = 'company'; +$lang->menugroup->dept = 'company'; +$lang->menugroup->todo = 'my'; +$lang->menugroup->score = 'my'; +$lang->menugroup->action = 'admin'; +$lang->menugroup->backup = 'admin'; +$lang->menugroup->cron = 'admin'; +$lang->menugroup->extension = 'admin'; +$lang->menugroup->custom = 'admin'; +$lang->menugroup->mail = 'admin'; +$lang->menugroup->dev = 'admin'; +$lang->menugroup->entry = 'admin'; +$lang->menugroup->webhook = 'admin'; +$lang->menugroup->message = 'admin'; +$lang->menugroup->translate = 'admin'; +$lang->menugroup->editor = 'admin'; + +/* Error info. */ +$lang->error = new stdclass(); +$lang->error->companyNotFound = "The domain %s cannot be found!"; +$lang->error->length = array("『 %s 』length error. It should be『%s』", "『%s』length should be <=『%s』and >『%s』."); +$lang->error->reg = "『 %s 』format error. It should be『%s』."; +$lang->error->unique = "『 %s 』『 %s 』exists. Go to Admin->Recycle Bin to restore it, if you are sure it is deleted."; +$lang->error->gt = "『 %s 』should be > 『 %s 』."; +$lang->error->ge = "『 %s 』should be >= 『 %s 』."; +$lang->error->notempty = "『 %s 』should not be blank."; +$lang->error->empty = "『 %s 』should be null."; +$lang->error->equal = "『 %s 』has to be 『 %s 』."; +$lang->error->int = array("『 %s 』should be numbers", "『 %s 』should be 『 %s-%s 』."); +$lang->error->float = "『 %s 』should have numbers, or decimals."; +$lang->error->email = "『 %s 』should be valid Email."; +$lang->error->URL = "『 %s 』should be url."; +$lang->error->date = "『%s』should be valid date."; +$lang->error->datetime = "『 %s 』should be valid date."; +$lang->error->code = "『 %s 』should be letters or numbers."; +$lang->error->account = "『 %s 』should be >= 3 letters or numbers."; +$lang->error->passwordsame = "Passwords should be consistent."; +$lang->error->passwordrule = "Password should conform to rules. It should be >= 6 characters."; +$lang->error->accessDenied = 'Access is denied.'; +$lang->error->pasteImg = 'Images are not allowed to be pasted in your browser!'; +$lang->error->noData = 'No data.'; +$lang->error->editedByOther = 'This record might have been changed. Please refresh and try to edit again!'; +$lang->error->tutorialData = 'No data can be imported in tutorial mode. Please quit tutorial first!'; + +/* Page info. */ +$lang->pager = new stdclass(); +$lang->pager->noRecord = "Pas d'enregistrement."; +$lang->pager->digest = "Total: %s. %s %s/%s   "; +$lang->pager->recPerPage = " %s par page"; +$lang->pager->first = ""; +$lang->pager->pre = ""; +$lang->pager->next = ""; +$lang->pager->last = ""; +$lang->pager->locate = "Go!"; +$lang->pager->previousPage = "Préc"; +$lang->pager->nextPage = "Suiv"; +$lang->pager->summery = "%s-%s sur %s."; +$lang->pager->pageOfText = "Page {0}"; +$lang->pager->firstPage = "Première"; +$lang->pager->lastPage = "Dernière"; +$lang->pager->goto = "Aller à"; +$lang->pager->pageOf = "Page {page}"; +$lang->pager->totalPage = "{totalPage} pages"; +$lang->pager->totalCount = "Total: {recTotal} lignes"; +$lang->pager->pageSize = "{recPerPage} par page"; +$lang->pager->itemsRange = "De {start} à {end}"; +$lang->pager->pageOfTotal = "Page {page} sur {totalPage}"; + +$lang->colorPicker = new stdclass(); +$lang->colorPicker->errorTip = "Ce n'est pas une valeur de couleur valide"; + +$lang->proVersion = "ZenTao Pro   "; +$lang->downNotify = "Download Desktop Notification"; +$lang->downloadClient = "Download ZenTao Desktop"; +$lang->clientHelp = "Client Help"; +$lang->clientHelpLink = "https://www.zentao.pm/book/zentaomanual/scrum-tool-im-integration-206.html"; +$lang->website = "https://www.zentao.pm"; + +$lang->suhosinInfo = "Warning ! Data is reaching the limit. Please change sohusin.post.max_vars and sohusin.request.max_vars (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved."; +$lang->maxVarsInfo = "Warning ! Data is reaching the limit. Please change max_input_vars (set larger %s value) in php.ini, then save and restart Apache or php-fpm, or some data will not be saved."; +$lang->pasteTextInfo = "Collez le texte ici. Chaque ligne sera un titre. "; +$lang->noticeImport = "Les données importées contiennent des données qui existent déjà dans le système. Confirmez s'il vous plait cette action."; +$lang->importConfirm = "Importer"; +$lang->importAndCover = "Ecraser"; +$lang->importAndInsert = "Inserer"; + +$lang->noResultsMatch = "Aucun résults trouvé !"; +$lang->searchMore = "Plus de résults :"; +$lang->chooseUsersToMail = "Choisissez les utilisateurs à avertir."; +$lang->browserNotice = "Le navigateur que vous utilisez actuellement peut ne pas vous afficher les résultats correctement. Il est recommandé d'utiliser Chrome, Palemoon, Firefox, IE9+, Opera or Safari."; +$lang->noticePasteImg = "Vous pouvez déposer des images dans l'éditeur."; +$lang->pasteImgFail = "Echec lors de la dépose des images. Essayez plus tard."; +$lang->pasteImgUploading = "Chargement..."; + +/* Time formats settings. */ +if(!defined('DT_DATETIME1')) define('DT_DATETIME1', 'Y-m-d H:i:s'); +if(!defined('DT_DATETIME2')) define('DT_DATETIME2', 'y-m-d H:i'); +if(!defined('DT_MONTHTIME1'))define('DT_MONTHTIME1', 'n/d H:i'); +if(!defined('DT_MONTHTIME2'))define('DT_MONTHTIME2', 'n/d H:i'); +if(!defined('DT_DATE1')) define('DT_DATE1', 'Y-m-d'); +if(!defined('DT_DATE2')) define('DT_DATE2', 'Ymd'); +if(!defined('DT_DATE3')) define('DT_DATE3', 'Y/m/d'); +if(!defined('DT_DATE4')) define('DT_DATE4', 'n/j'); +if(!defined('DT_TIME1')) define('DT_TIME1', 'H:i:s'); +if(!defined('DT_TIME2')) define('DT_TIME2', 'H:i'); + +/* Datepicker. */ +$lang->datepicker = new stdclass(); + +$lang->datepicker->dpText = new stdclass(); +$lang->datepicker->dpText->TEXT_OR = 'ou '; +$lang->datepicker->dpText->TEXT_PREV_YEAR = 'Année Dernière'; +$lang->datepicker->dpText->TEXT_PREV_MONTH = 'Mois Dernier'; +$lang->datepicker->dpText->TEXT_PREV_WEEK = 'Semaine Dernière'; +$lang->datepicker->dpText->TEXT_YESTERDAY = 'Hier'; +$lang->datepicker->dpText->TEXT_THIS_MONTH = 'Ce Mois'; +$lang->datepicker->dpText->TEXT_THIS_WEEK = 'Cette Semaine'; +$lang->datepicker->dpText->TEXT_TODAY = "Aujourd'hui"; +$lang->datepicker->dpText->TEXT_NEXT_YEAR = 'Année Prochaine'; +$lang->datepicker->dpText->TEXT_NEXT_MONTH = 'Mois Prochain'; +$lang->datepicker->dpText->TEXT_CLOSE = 'Fermer'; +$lang->datepicker->dpText->TEXT_DATE = ''; +$lang->datepicker->dpText->TEXT_CHOOSE_DATE = 'Choisir une Date'; + +$lang->datepicker->dayNames = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'); +$lang->datepicker->abbrDayNames = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'); +$lang->datepicker->monthNames = array('Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc'); + +/* Common action icons. */ +$lang->icons['todo'] = 'check'; +$lang->icons['product'] = 'cube'; +$lang->icons['bug'] = 'bug'; +$lang->icons['task'] = 'check-sign'; +$lang->icons['tasks'] = 'tasks'; +$lang->icons['project'] = 'stack'; +$lang->icons['doc'] = 'file-text'; +$lang->icons['doclib'] = 'folder-close'; +$lang->icons['story'] = 'lightbulb'; +$lang->icons['release'] = 'tags'; +$lang->icons['roadmap'] = 'code-fork'; +$lang->icons['plan'] = 'flag'; +$lang->icons['dynamic'] = 'volume-up'; +$lang->icons['build'] = 'tag'; +$lang->icons['test'] = 'check'; +$lang->icons['testtask'] = 'check'; +$lang->icons['group'] = 'group'; +$lang->icons['team'] = 'group'; +$lang->icons['company'] = 'sitemap'; +$lang->icons['user'] = 'user'; +$lang->icons['dept'] = 'sitemap'; +$lang->icons['tree'] = 'sitemap'; +$lang->icons['usecase'] = 'sitemap'; +$lang->icons['testcase'] = 'sitemap'; +$lang->icons['result'] = 'list-alt'; +$lang->icons['mail'] = 'envelope'; +$lang->icons['trash'] = 'trash'; +$lang->icons['extension'] = 'th-large'; +$lang->icons['app'] = 'th-large'; + +$lang->icons['results'] = 'list-alt'; +$lang->icons['create'] = 'plus'; +$lang->icons['post'] = 'edit'; +$lang->icons['batchCreate'] = 'plus-sign'; +$lang->icons['batchEdit'] = 'edit-sign'; +$lang->icons['batchClose'] = 'off'; +$lang->icons['edit'] = 'edit'; +$lang->icons['delete'] = 'close'; +$lang->icons['copy'] = 'copy'; +$lang->icons['report'] = 'bar-chart'; +$lang->icons['export'] = 'export'; +$lang->icons['report-file'] = 'file-powerpoint'; +$lang->icons['import'] = 'import'; +$lang->icons['finish'] = 'checked'; +$lang->icons['resolve'] = 'check'; +$lang->icons['start'] = 'play'; +$lang->icons['restart'] = 'play'; +$lang->icons['run'] = 'play'; +$lang->icons['runCase'] = 'play'; +$lang->icons['batchRun'] = 'play-sign'; +$lang->icons['assign'] = 'hand-right'; +$lang->icons['assignTo'] = 'hand-right'; +$lang->icons['change'] = 'fork'; +$lang->icons['link'] = 'link'; +$lang->icons['close'] = 'off'; +$lang->icons['activate'] = 'magic'; +$lang->icons['review'] = 'glasses'; +$lang->icons['confirm'] = 'search'; +$lang->icons['confirmBug'] = 'search'; +$lang->icons['putoff'] = 'calendar'; +$lang->icons['suspend'] = 'pause'; +$lang->icons['pause'] = 'pause'; +$lang->icons['cancel'] = 'ban-circle'; +$lang->icons['recordEstimate'] = 'time'; +$lang->icons['customFields'] = 'cogs'; +$lang->icons['manage'] = 'cog'; +$lang->icons['unlock'] = 'unlock-alt'; +$lang->icons['confirmStoryChange'] = 'search'; +$lang->icons['score'] = 'tint'; + +include (dirname(__FILE__) . '/menuOrder.php'); + +global $config; +if(isset($config->global->flow) and $config->global->flow == 'onlyStory') +{ + /* Remove project, report and qa module. */ + unset($lang->menu->project); + unset($lang->menu->report); + unset($lang->menu->qa); + + unset($lang->menuOrder[15]); + unset($lang->menuOrder[20]); + unset($lang->menuOrder[30]); + + /* Adjust sub menu of my dashboard. */ + unset($lang->my->menu->bug); + unset($lang->my->menu->testtask); + unset($lang->my->menu->task); + unset($lang->my->menu->myProject); + + /* Adjust sub menu of product module. */ + unset($lang->product->menu->project); + unset($lang->product->menu->doc); + + /* Rename product module. */ + $lang->menu->product = "{$lang->productCommon}|product|index"; + + /* Adjust search items. */ + unset($lang->searchObjects['bug']); + unset($lang->searchObjects['task']); + unset($lang->searchObjects['testcase']); + unset($lang->searchObjects['project']); + unset($lang->searchObjects['build']); + unset($lang->searchObjects['testtask']); + unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); + unset($lang->searchObjects['testreport']); +} + +if(isset($config->global->flow) and $config->global->flow == 'onlyTask') +{ + /* Remove product, report and qa module. */ + unset($lang->menu->product); + unset($lang->menu->report); + unset($lang->menu->qa); + + unset($lang->menuOrder[10]); + unset($lang->menuOrder[20]); + unset($lang->menuOrder[30]); + + /* Adjust sub menu of my dashboard. */ + unset($lang->my->menu->bug); + unset($lang->my->menu->testtask); + unset($lang->my->menu->story); + + /* Adjust sub menu of project module. */ + unset($lang->project->menu->story); + unset($lang->project->menu->build); + unset($lang->project->menu->qa); + unset($lang->project->menu->product); + unset($lang->project->menu->doc); + + /* Remove sub menu of product module. */ + unset($lang->product->menu); + unset($lang->product->menuOrder); + + unset($lang->searchObjects['story']); + unset($lang->searchObjects['product']); + unset($lang->searchObjects['testcase']); + unset($lang->searchObjects['release']); + unset($lang->searchObjects['productplan']); + unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); + unset($lang->searchObjects['testreport']); +} + +if(isset($config->global->flow) and $config->global->flow == 'onlyTest') +{ + /* Remove project and test module. */ + unset($lang->menu->project); + unset($lang->menu->qa); + unset($lang->menu->report); + + unset($lang->menuOrder[15]); + unset($lang->menuOrder[20]); + unset($lang->menuOrder[30]); + + /* Rename product module. */ + $lang->menu->product = "{$lang->productCommon}|product|index"; + + /* Adjust sub menu of my dashboard. */ + unset($lang->my->menu->task); + unset($lang->my->menu->myProject); + unset($lang->my->menu->story); + + /* Remove sub menu of project module. */ + unset($lang->project->menu); + unset($lang->project->menuOrder); + $lang->project->menu = new stdclass(); + $lang->project->menu->list = array('alias' => ''); + + /* Add bug, testcase and testtask module. */ + $lang->menu->bug = 'Bug|bug|index'; + $lang->menu->testcase = 'CasTest|testcase|index'; + $lang->menu->testsuite = 'Cahier de Recette|testsuite|index'; + $lang->menu->testtask = 'Recette|testtask|index'; + $lang->menu->caselib = 'Library Recette|caselib|browse'; + + $lang->menuOrder[6] = 'bug'; + $lang->menuOrder[7] = 'testcase'; + $lang->menuOrder[8] = 'testsuite'; + $lang->menuOrder[9] = 'testtask'; + $lang->menuOrder[10] = 'caselib'; + $lang->menuOrder[11] = 'product'; + + /* Adjust sub menu of bug module. */ + $lang->bug->menu = new stdclass(); + $lang->bug->menu->all = 'Tous|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s'; + $lang->bug->menu->unclosed = 'Non Fermés|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s'; + $lang->bug->menu->openedbyme = 'Détectés par Moi|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s'; + $lang->bug->menu->assigntome = 'Affectés à Moi|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s'; + $lang->bug->menu->resolvedbyme = 'Résolus par Moi|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s'; + $lang->bug->menu->toclosed = 'A Fermer|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s'; + $lang->bug->menu->unresolved = 'Actifs|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s'; + $lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover'); + + $lang->bug->subMenu = new stdclass(); + $lang->bug->subMenu->more = new stdclass(); + $lang->bug->subMenu->more->unconfirmed = 'Non confirmés|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s'; + $lang->bug->subMenu->more->assigntonull = 'Non affectés|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s'; + $lang->bug->subMenu->more->longlifebugs = 'Persistants|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s'; + $lang->bug->subMenu->more->postponedbugs = 'Reportés|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s'; + $lang->bug->subMenu->more->overduebugs = 'Retard|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s'; + $lang->bug->subMenu->more->needconfirm = 'A Confirmer|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s'; + + $lang->bug->menuOrder[5] = 'product'; + $lang->bug->menuOrder[10] = 'all'; + $lang->bug->menuOrder[15] = 'unclosed'; + $lang->bug->menuOrder[20] = 'openedbyme'; + $lang->bug->menuOrder[25] = 'assigntome'; + $lang->bug->menuOrder[30] = 'resolvedbyme'; + $lang->bug->menuOrder[35] = 'toclosed'; + $lang->bug->menuOrder[40] = 'unresolved'; + $lang->bug->menuOrder[45] = 'unconfirmed'; + $lang->bug->menuOrder[50] = 'assigntonull'; + $lang->bug->menuOrder[55] = 'longlifebugs'; + $lang->bug->menuOrder[60] = 'postponedbugs'; + $lang->bug->menuOrder[65] = 'overduebugs'; + $lang->bug->menuOrder[70] = 'needconfirm'; + + /* Adjust sub menu of testcase. */ + $lang->testcase->menu = new stdclass(); + $lang->testcase->menu->all = 'Tous|testcase|browse|productID=%s&branch=%s&browseType=all'; + $lang->testcase->menu->wait = 'En Attente|testcase|browse|productID=%s&branch=%s&browseType=wait'; + $lang->testcase->menu->bysuite = array('link' => 'Cahier Recette|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover'); + + $lang->testcase->subMenu = new stdclass(); + $lang->testcase->subMenu->bysuite = new stdclass(); + $lang->testcase->subMenu->bysuite->create = 'Rédiger Cahier de Recette|testsuite|create|productID=%s'; + + $lang->testcase->menuOrder[5] = 'product'; + $lang->testcase->menuOrder[10] = 'all'; + $lang->testcase->menuOrder[15] = 'wait'; + $lang->testcase->menuOrder[20] = 'suite'; + + /* Adjust sub menu of bug module. */ + $lang->testsuite->menu = new stdclass(); + + $lang->testsuite->menuOrder[5] = 'product'; + + /* Adjust sub menu of testtask. */ + $lang->testtask->menu = new stdclass(); + $lang->testtask->menu->totalStatus = 'Toutes|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus'; + $lang->testtask->menu->wait = 'En Attente|testtask|browse|productID=%s&branch=%s&type=%s,wait'; + $lang->testtask->menu->doing = 'En Déroulement|testtask|browse|productID=%s&branch=%s&type=%s,doing'; + $lang->testtask->menu->blocked = 'Bloquées|testtask|browse|productID=%s&branch=%s&type=%s,blocked'; + $lang->testtask->menu->done = 'Jouées|testtask|browse|productID=%s&branch=%s&type=%s,done'; + $lang->testtask->menu->report = array('link' => 'Rapports|testreport|browse'); + + $lang->testtask->menuOrder[5] = 'product'; + $lang->testtask->menuOrder[10] = 'scope'; + $lang->testtask->menuOrder[15] = 'totalStatus'; + $lang->testtask->menuOrder[20] = 'wait'; + $lang->testtask->menuOrder[25] = 'doing'; + $lang->testtask->menuOrder[30] = 'blocked'; + $lang->testtask->menuOrder[35] = 'done'; + $lang->testtask->menuOrder[40] = 'report'; + + $lang->testreport->menu = $lang->testtask->menu; + $lang->testreport->menuOrder = $lang->testtask->menuOrder; + + /* Adjust sub menu of caselib module. */ + $lang->caselib->menu = new stdclass(); + $lang->caselib->menu->all = 'Toutes|caselib|browse|libID=%s&browseType=all'; + $lang->caselib->menu->wait = 'En Attente|caselib|browse|libID=%s&browseType=wait'; + $lang->caselib->menu->view = 'Vues|caselib|view|libID=%s'; + + $lang->caselib->menuOrder[5] = 'lib'; + $lang->caselib->menuOrder[10] = 'all'; + $lang->caselib->menuOrder[15] = 'wait'; + $lang->caselib->menuOrder[20] = 'view'; + + /* Adjust sub menu of product module. */ + unset($lang->product->menu->story); + unset($lang->product->menu->project); + unset($lang->product->menu->release); + unset($lang->product->menu->dynamic); + unset($lang->product->menu->plan); + unset($lang->product->menu->roadmap); + unset($lang->product->menu->doc); + unset($lang->product->menu->module); + unset($lang->product->menu->index); + + $lang->product->menu->build = array('link' => 'Build|product|build', 'subModule' => 'build'); + + $lang->product->menuOrder[5] = 'build'; + $lang->product->menuOrder[10] = 'view'; + $lang->product->menuOrder[15] = 'order'; + + $lang->build->menu = $lang->product->menu; + $lang->build->menuOrder = $lang->product->menuOrder; + + /* Adjust menu group. */ + $lang->menugroup->bug = 'bug'; + $lang->menugroup->testcase = 'testcase'; + $lang->menugroup->testtask = 'testtask'; + $lang->menugroup->testsuite = 'testsuite'; + $lang->menugroup->caselib = 'caselib'; + $lang->menugroup->testreport = 'testtask'; + $lang->menugroup->build = 'product'; + + /* Adjust search objects. */ + unset($lang->searchObjects['story']); + unset($lang->searchObjects['task']); + unset($lang->searchObjects['release']); + unset($lang->searchObjects['project']); + unset($lang->searchObjects['productplan']); +} diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 2b03bfdfba..18bd04ac83 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -451,7 +451,6 @@ $lang->menugroup->group = 'company'; $lang->menugroup->bug = 'qa'; $lang->menugroup->testcase = 'qa'; $lang->menugroup->case = 'qa'; -$lang->menugroup->caselib = 'qa'; $lang->menugroup->testtask = 'qa'; $lang->menugroup->testsuite = 'qa'; $lang->menugroup->caselib = 'qa'; diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 09e0602962..d3add55c6b 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -142,7 +142,7 @@ $lang->searchObjects['release'] = '發佈'; $lang->searchObjects['productplan'] = $lang->productCommon . '計劃'; $lang->searchObjects['testtask'] = '測試單'; $lang->searchObjects['doc'] = '文檔'; -$lang->searchObjects['testsuite'] = '用例庫'; +$lang->searchObjects['caselib'] = '用例庫'; $lang->searchObjects['testreport'] = '測試報告'; $lang->searchTips = '編號(ctrl+g)'; @@ -273,7 +273,7 @@ $lang->qa->menu->testcase = array('link' => '用例|testcase|browse|productID=% $lang->qa->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); $lang->qa->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); $lang->qa->menu->report = array('link' => '報告|testreport|browse|productID=%s'); -$lang->qa->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->qa->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->bug = new stdclass(); $lang->bug->menu = new stdclass(); @@ -283,7 +283,7 @@ $lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID= $lang->bug->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); $lang->bug->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); $lang->bug->menu->report = array('link' => '報告|testreport|browse|productID=%s'); -$lang->bug->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->bug->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->testcase = new stdclass(); $lang->testcase->menu = new stdclass(); @@ -292,7 +292,7 @@ $lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|produ $lang->testcase->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); $lang->testcase->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); $lang->testcase->menu->report = array('link' => '報告|testreport|browse|productID=%s'); -$lang->testcase->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->testcase->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->testtask = new stdclass(); $lang->testtask->menu = new stdclass(); @@ -301,7 +301,7 @@ $lang->testtask->menu->testcase = array('link' => '用例|testcase|browse|produ $lang->testtask->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report'); $lang->testtask->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); $lang->testtask->menu->report = array('link' => '報告|testreport|browse|productID=%s'); -$lang->testtask->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->testtask->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->testsuite = new stdclass(); $lang->testsuite->menu = new stdclass(); @@ -310,7 +310,7 @@ $lang->testsuite->menu->testcase = array('link' => '用例|testcase|browse|prod $lang->testsuite->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); $lang->testsuite->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s', 'alias' => 'view,create,edit,linkcase'); $lang->testsuite->menu->report = array('link' => '報告|testreport|browse|productID=%s'); -$lang->testsuite->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->testsuite->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->testreport = new stdclass(); $lang->testreport->menu = new stdclass(); @@ -319,7 +319,7 @@ $lang->testreport->menu->testcase = array('link' => '用例|testcase|browse|pro $lang->testreport->menu->testtask = array('link' => '測試單|testtask|browse|productID=%s'); $lang->testreport->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); $lang->testreport->menu->report = array('link' => '報告|testreport|browse|productID=%s', 'alias' => 'view,create,edit'); -$lang->testreport->menu->caselib = array('link' => '用例庫|testsuite|library'); +$lang->testreport->menu->caselib = array('link' => '用例庫|caselib|browse'); $lang->caselib = new stdclass(); $lang->caselib->menu = new stdclass(); @@ -328,7 +328,7 @@ $lang->caselib->menu->testcase = array('link' => '用例|testcase|browse|'); $lang->caselib->menu->testtask = array('link' => '測試單|testtask|browse|'); $lang->caselib->menu->testsuite = array('link' => '套件|testsuite|browse|'); $lang->caselib->menu->report = array('link' => '報告|testreport|browse|'); -$lang->caselib->menu->caselib = array('link' => '用例庫|testsuite|library', 'alias' => 'createlib,createcase,libview,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase'); +$lang->caselib->menu->caselib = array('link' => '用例庫|caselib|browse', 'alias' => 'create,createcase,view,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase'); /* 文檔視圖菜單設置。*/ $lang->doc = new stdclass(); @@ -451,7 +451,6 @@ $lang->menugroup->group = 'company'; $lang->menugroup->bug = 'qa'; $lang->menugroup->testcase = 'qa'; $lang->menugroup->case = 'qa'; -$lang->menugroup->caselib = 'qa'; $lang->menugroup->testtask = 'qa'; $lang->menugroup->testsuite = 'qa'; $lang->menugroup->caselib = 'qa'; @@ -691,6 +690,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory') unset($lang->searchObjects['build']); unset($lang->searchObjects['testtask']); unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); unset($lang->searchObjects['testreport']); } @@ -727,6 +727,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTask') unset($lang->searchObjects['release']); unset($lang->searchObjects['productplan']); unset($lang->searchObjects['testsuite']); + unset($lang->searchObjects['caselib']); unset($lang->searchObjects['testreport']); } @@ -760,7 +761,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->menu->testcase = '用例|testcase|index'; $lang->menu->testsuite = '套件|testsuite|index'; $lang->menu->testtask = '測試單|testtask|index'; - $lang->menu->caselib = '用例庫|testsuite|library'; + $lang->menu->caselib = '用例庫|caselib|browse'; $lang->menuOrder[6] = 'bug'; $lang->menuOrder[7] = 'testcase'; @@ -847,9 +848,9 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') /* Adjust sub menu of caselib module. */ $lang->caselib->menu = new stdclass(); - $lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all'; - $lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait'; - $lang->caselib->menu->view = '概況|testsuite|libview|libID=%s'; + $lang->caselib->menu->all = '所有|caselib|browse|libID=%s&browseType=all'; + $lang->caselib->menu->wait = '待評審|caselib|browse|libID=%s&browseType=wait'; + $lang->caselib->menu->view = '概況|caselib|view|libID=%s'; $lang->caselib->menuOrder[5] = 'lib'; $lang->caselib->menuOrder[10] = 'all'; @@ -882,6 +883,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->menugroup->case = 'testcase'; $lang->menugroup->testtask = 'testtask'; $lang->menugroup->testsuite = 'testsuite'; + $lang->menugroup->caselib = 'caselib'; $lang->menugroup->testreport = 'testtask'; $lang->menugroup->build = 'product'; diff --git a/module/company/lang/fr.php b/module/company/lang/fr.php new file mode 100644 index 0000000000..8a919feaa3 --- /dev/null +++ b/module/company/lang/fr.php @@ -0,0 +1,35 @@ + + * @package company + * @version $Id: en.php 4714 2013-05-02 08:10:58Z chencongzhi520@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->company->common = 'Entreprise'; +$lang->company->index = "Accueil Entreprise"; +$lang->company->edit = "Edit Entreprise"; +$lang->company->view = "Informations Entreprise"; +$lang->company->browse = "Liste Utilisateurs"; +$lang->company->dynamic = "Historique"; +$lang->company->orgView = 'Vues'; + +$lang->company->name = "Nom de l'entreprise"; +$lang->company->phone = 'Téléphone'; +$lang->company->fax = 'Fax'; +$lang->company->address = 'Mail'; +$lang->company->zipcode = 'Code Postal'; +$lang->company->website = 'Site Web'; +$lang->company->backyard = 'Intranet'; +$lang->company->guest = 'Connexion Invités'; +$lang->company->admins = 'Administrateur'; + +$lang->company->product = $lang->productCommon; +$lang->company->project = $lang->projectCommon; +$lang->company->user = 'Utilisateurs'; + +$lang->company->guestOptions[0] = 'Refusée'; +$lang->company->guestOptions[1] = 'Autorisée'; diff --git a/module/convert/lang/fr.php b/module/convert/lang/fr.php new file mode 100644 index 0000000000..d7943c4b48 --- /dev/null +++ b/module/convert/lang/fr.php @@ -0,0 +1,116 @@ + + * @package convert + * @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->convert->common = 'Importé'; +$lang->convert->index = 'Accueil'; + +$lang->convert->start = 'Commencer'; +$lang->convert->desc = <<Bienvenue dans l'Assistant de Conversion, ce programme va vous assister pour convertir des données vers ZenTao.

+La conversion comporte des risques, il est donc fortement recommandé d'effectuer une sauvegarde de votre base de données et des fichiers importants avant d'effectuer la conversion, et de vous assurer que plus personne n'utilise le système. +EOT; + +$lang->convert->setConfig = 'Source Config'; +$lang->convert->setBugfree = 'Bugfree Config'; +$lang->convert->setRedmine = 'Redmine Config'; +$lang->convert->checkBugFree = 'Check Bugfree'; +$lang->convert->checkRedmine = 'Check Redmine'; +$lang->convert->convertRedmine = 'Convert Redmine'; +$lang->convert->convertBugFree = 'Convert BugFree'; + +$lang->convert->selectSource = 'Sélectionnez le système source et sa version'; +$lang->convert->mustSelectSource = "You must select a source system."; + +$lang->convert->direction = "{$lang->projectCommon} convertis vers"; +$lang->convert->questionTypeOfRedmine = 'Type in Redmine'; +$lang->convert->aimTypeOfZentao = 'Convert to Type in ZenTao'; + +$lang->convert->directionList['bug'] = 'Bug'; +$lang->convert->directionList['task'] = 'Task'; +$lang->convert->directionList['story'] = 'Story'; + +$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x'); +$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1'); + +$lang->convert->setting = 'Settings'; +$lang->convert->checkConfig = 'Check Settings'; + +$lang->convert->ok = ' OK '; +$lang->convert->fail = ' Failed'; + +$lang->convert->dbHost = 'Database Server'; +$lang->convert->dbPort = 'Server Port'; +$lang->convert->dbUser = 'Database User Name'; +$lang->convert->dbPassword = 'Database Password'; +$lang->convert->dbName = 'Database used in %s'; +$lang->convert->dbCharset = '%s Database Coding'; +$lang->convert->dbPrefix = '%s Table Prefix'; +$lang->convert->installPath = '%s Installation Root Directory'; + +$lang->convert->checkDB = 'Database'; +$lang->convert->checkTable = 'Table'; +$lang->convert->checkPath = 'Installation Path'; + +$lang->convert->execute = 'Convert'; +$lang->convert->item = 'Item Converted'; +$lang->convert->count = 'No.'; +$lang->convert->info = 'Info'; + +$lang->convert->bugfree = new stdclass(); +$lang->convert->bugfree->users = 'User'; +$lang->convert->bugfree->projects = $lang->projectCommon; +$lang->convert->bugfree->modules = 'Module'; +$lang->convert->bugfree->bugs = 'Bug'; +$lang->convert->bugfree->cases = 'CasTest'; +$lang->convert->bugfree->results = 'Result'; +$lang->convert->bugfree->actions = 'History'; +$lang->convert->bugfree->files = 'Files'; + +$lang->convert->redmine = new stdclass(); +$lang->convert->redmine->users = 'User'; +$lang->convert->redmine->groups = 'Group'; +$lang->convert->redmine->products = $lang->productCommon; +$lang->convert->redmine->projects = $lang->projectCommon; +$lang->convert->redmine->stories = 'Story'; +$lang->convert->redmine->tasks = 'Task'; +$lang->convert->redmine->bugs = 'Bug'; +$lang->convert->redmine->productPlans = $lang->productCommon . 'Plan'; +$lang->convert->redmine->teams = 'Team'; +$lang->convert->redmine->releases = 'Release'; +$lang->convert->redmine->builds = 'Build'; +$lang->convert->redmine->docLibs = 'Doc Lib'; +$lang->convert->redmine->docs = 'Doc'; +$lang->convert->redmine->files = 'Files'; + +$lang->convert->errorFileNotExits = 'File %s is not found.'; +$lang->convert->errorUserExists = 'User %s existed.'; +$lang->convert->errorGroupExists = 'Group %s existed.'; +$lang->convert->errorBuildExists = 'Build %s existed.'; +$lang->convert->errorReleaseExists = 'Release %s existed.'; +$lang->convert->errorCopyFailed = 'File %s copy failed.'; + +$lang->convert->setParam = 'Set parameters.'; + +$lang->convert->statusType = new stdclass(); +$lang->convert->priType = new stdclass(); + +$lang->convert->aimType = 'Convert Issue'; +$lang->convert->statusType->bug = 'Convert Status (Bug Status)'; +$lang->convert->statusType->story = 'Convert Status (Story Status)'; +$lang->convert->statusType->task = 'Convert Status (Task Status)'; +$lang->convert->priType->bug = 'Convert Priority (Bug Status)'; +$lang->convert->priType->story = 'Convert Priority (Story Status)'; +$lang->convert->priType->task = 'Convert Priority (Task Status)'; + +$lang->convert->issue = new stdclass(); +$lang->convert->issue->redmine = 'Redmine'; +$lang->convert->issue->zentao = 'ZenTao'; +$lang->convert->issue->goto = 'Convert To'; diff --git a/module/cron/lang/fr.php b/module/cron/lang/fr.php new file mode 100644 index 0000000000..8e1fb54609 --- /dev/null +++ b/module/cron/lang/fr.php @@ -0,0 +1,55 @@ +cron->common = 'Cron'; +$lang->cron->index = 'Accueil Cron'; +$lang->cron->list = 'Tâches'; +$lang->cron->create = 'Ajouter'; +$lang->cron->createAction = 'Ajouter Cron'; +$lang->cron->edit = 'Editer Cron'; +$lang->cron->delete = 'Supprimer Cron'; +$lang->cron->toggle = 'Activer/Désactiver'; +$lang->cron->turnon = 'On/Off'; +$lang->cron->openProcess = 'Restart'; +$lang->cron->restart = 'Restart Cron'; + +$lang->cron->m = 'Minute'; +$lang->cron->h = 'Heure'; +$lang->cron->dom = 'Jour'; +$lang->cron->mon = 'Mois'; +$lang->cron->dow = 'Semaine'; +$lang->cron->command = 'Commande'; +$lang->cron->status = 'Statut'; +$lang->cron->type = 'Type'; +$lang->cron->remark = 'Commentaire'; +$lang->cron->lastTime = 'Dernier Run'; + +$lang->cron->turnonList['1'] = 'On'; +$lang->cron->turnonList['0'] = 'Off'; + +$lang->cron->statusList['normal'] = 'Normal'; +$lang->cron->statusList['running'] = 'Running'; +$lang->cron->statusList['stop'] = 'Stop'; + +$lang->cron->typeList['zentao'] = 'Self Call'; +$lang->cron->typeList['system'] = 'Command Système'; + +$lang->cron->toggleList['start'] = 'Activer'; +$lang->cron->toggleList['stop'] = 'Désactiver'; + +$lang->cron->confirmDelete = 'Voulez-vous supprimer ce cron ?'; +$lang->cron->confirmTurnon = 'Voulez-vous arrêter le cron ?'; +$lang->cron->introduction = <<Cron sert à accomplire des actions récurrentes, telles que la mise à jour des graphiques d'atterrissage, des sauvegardes, etc.

+

Les fonctionnalités du Cron ont besoin d'être plus testées, le Cron est donc désactivé par défaut.

+EOD; +$lang->cron->confirmOpen = <<Voulez-vous le mettre en route ?Activer les Tâches Programmées

+EOD; + +$lang->cron->notice = new stdclass(); +$lang->cron->notice->m = 'Range:0-59,"*" means the numbers within the range, "/" means "per", "-" means the range.'; +$lang->cron->notice->h = 'Range:0-23'; +$lang->cron->notice->dom = 'Range:1-31'; +$lang->cron->notice->mon = 'Range:1-12'; +$lang->cron->notice->dow = 'Range:0-6'; +$lang->cron->notice->help = 'Note:If the server is restarted, or the Cron is not working, it means the Cron has stopped. You can restart it by clicking 【Restart】 or refresh this page. If the last execution time is changed, it means the Cron is running.'; +$lang->cron->notice->errorRule = '"%s" invalide'; diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php new file mode 100644 index 0000000000..a552678108 --- /dev/null +++ b/module/custom/lang/fr.php @@ -0,0 +1,146 @@ +custom->common = 'Personnalisation'; +$lang->custom->index = 'Accueil'; +$lang->custom->set = 'Personnaliser'; +$lang->custom->restore = 'Réinitialiser'; +$lang->custom->key = 'Clé'; +$lang->custom->value = 'Valeur'; +$lang->custom->flow = 'Concept'; +$lang->custom->working = 'Mode'; +$lang->custom->select = 'Choix du Concept'; +$lang->custom->branch = 'Multi-Branches'; +$lang->custom->owner = 'Propriétaire'; +$lang->custom->module = 'Module'; +$lang->custom->section = 'Section'; +$lang->custom->lang = 'Langue'; +$lang->custom->setPublic = 'Set Public'; +$lang->custom->required = 'Champ Obligatoire'; +$lang->custom->score = 'Point'; +$lang->custom->timezone = 'Timezone'; +$lang->custom->scoreReset = 'Réinit Points'; +$lang->custom->scoreTitle = 'Fonctionnalité des Points'; + +$lang->custom->object['story'] = 'Story'; +$lang->custom->object['task'] = 'Tâche'; +$lang->custom->object['bug'] = 'Bug'; +$lang->custom->object['testcase'] = 'CasTest'; +$lang->custom->object['testtask'] = 'Build'; +$lang->custom->object['todo'] = 'Agenda'; +$lang->custom->object['user'] = 'Utilisateur'; +$lang->custom->object['block'] = 'Bloc'; + +$lang->custom->story = new stdClass(); +$lang->custom->story->fields['priList'] = 'Priorité'; +$lang->custom->story->fields['sourceList'] = 'Source'; +$lang->custom->story->fields['reasonList'] = 'Raison Fermeture'; +$lang->custom->story->fields['stageList'] = 'Phase'; +$lang->custom->story->fields['statusList'] = 'Statut'; +$lang->custom->story->fields['reviewResultList'] = 'Valider Résultats'; +$lang->custom->story->fields['review'] = 'Validation Requise'; + +$lang->custom->task = new stdClass(); +$lang->custom->task->fields['priList'] = 'Priorité'; +$lang->custom->task->fields['typeList'] = 'Type'; +$lang->custom->task->fields['reasonList'] = 'Raison Fermeture'; +$lang->custom->task->fields['statusList'] = 'Statut'; +$lang->custom->task->fields['hours'] = 'Effort'; + +$lang->custom->bug = new stdClass(); +$lang->custom->bug->fields['priList'] = 'Priorité'; +$lang->custom->bug->fields['severityList'] = 'Sévérité'; +$lang->custom->bug->fields['osList'] = 'OS'; +$lang->custom->bug->fields['browserList'] = 'Browser'; +$lang->custom->bug->fields['typeList'] = 'Type'; +$lang->custom->bug->fields['resolutionList'] = 'Résolution'; +$lang->custom->bug->fields['statusList'] = 'Statut'; +$lang->custom->bug->fields['longlife'] = 'Jours Calage'; + +$lang->custom->testcase = new stdClass(); +$lang->custom->testcase->fields['priList'] = 'Priorité'; +$lang->custom->testcase->fields['typeList'] = 'Type'; +$lang->custom->testcase->fields['stageList'] = 'Phase'; +$lang->custom->testcase->fields['resultList'] = 'Résultat'; +$lang->custom->testcase->fields['statusList'] = 'Statut'; +$lang->custom->testcase->fields['review'] = 'Validation Requise'; + +$lang->custom->testtask = new stdClass(); +$lang->custom->testtask->fields['priList'] = 'Priorité'; +$lang->custom->testtask->fields['statusList'] = 'Statut'; + +$lang->custom->todo = new stdClass(); +$lang->custom->todo->fields['priList'] = 'Priorité'; +$lang->custom->todo->fields['typeList'] = 'Type'; +$lang->custom->todo->fields['statusList'] = 'Statut'; + +$lang->custom->user = new stdClass(); +$lang->custom->user->fields['roleList'] = 'Rôle'; +$lang->custom->user->fields['statusList'] = 'Statut'; +$lang->custom->user->fields['contactField'] = 'Contact'; +$lang->custom->user->fields['deleted'] = 'Parti'; + +$lang->custom->system = array('flow', 'working', 'required', 'score'); + +$lang->custom->block->fields['closed'] = 'Bloc Fermé'; + +$lang->custom->currentLang = 'Current Language'; +$lang->custom->allLang = 'All Languages'; + +$lang->custom->confirmRestore = 'Voulez-vous réinitialiser ?'; + +$lang->custom->notice = new stdclass(); +$lang->custom->notice->userFieldNotice = 'Control whether the above fields are displayed on the user-related page. Leave it blank to display all.'; +$lang->custom->notice->canNotAdd = 'It will be calculated, so customization is not enabled.'; +$lang->custom->notice->forceReview = '%s review is required for committers selected.'; +$lang->custom->notice->forceNotReview = "%s review is not required for committers selected."; +$lang->custom->notice->longlife = 'Define stalled bugs.'; +$lang->custom->notice->invalidNumberKey = 'The key should be =< 255.'; +$lang->custom->notice->invalidStringKey = 'The key should be lowercase letters, numbers or underlines.'; +$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set does not exist or is disabled. Timezone cannot be set.'; +$lang->custom->notice->noClosedBlock = 'You have no blocks that are closed permanently.'; +$lang->custom->notice->required = 'The selected field is required.'; + +$lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Home. Do you want to go to Product Home ?"; +$lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has Project Home. Do you want to go to Project Home ?"; +$lang->custom->notice->indexPage['qa'] = "ZenTao 8.2+ has QA Homepage. Do you want to go to QA Homepage ?"; + +$lang->custom->notice->invalidStrlen['ten'] = 'The key should be <= 10 characters.'; +$lang->custom->notice->invalidStrlen['twenty'] = 'The key should be <= 20 characters.'; +$lang->custom->notice->invalidStrlen['thirty'] = 'The key should be <= 30 characters.'; +$lang->custom->notice->invalidStrlen['twoHundred'] = 'The key should be <= 225 characters.'; + +$lang->custom->storyReview = 'Validation'; +$lang->custom->forceReview = 'Validation Requise'; +$lang->custom->forceNotReview = 'Aucune Validation Requise'; +$lang->custom->reviewList[1] = 'On'; +$lang->custom->reviewList[0] = 'Off'; + +$lang->custom->deletedList[1] = 'Montrer'; +$lang->custom->deletedList[0] = 'Cacher'; + +$lang->custom->workingHours = 'Heures/Jour'; +$lang->custom->weekend = 'Weekend'; +$lang->custom->weekendList[2] = '2-Jour'; +$lang->custom->weekendList[1] = '1-Jour'; + +$lang->custom->productProject = new stdclass(); +$lang->custom->productProject->relation['0_0'] = 'Product - Project'; +$lang->custom->productProject->relation['0_1'] = 'Product - Sprint'; +$lang->custom->productProject->relation['1_1'] = 'Project - Sprint'; + +$lang->custom->productProject->notice = 'Sélectionnez le concept qui correspond à votre équipe.'; + +$lang->custom->workingList['full'] = 'Application Lifecycle Management'; +$lang->custom->workingList['onlyTest'] = 'Gestion de la Qualité'; +$lang->custom->workingList['onlyStory'] = 'Gestion des Stories'; +$lang->custom->workingList['onlyTask'] = 'Gestion des Tâches'; + +$lang->custom->menuTip = "Cliquez pour montrer/cacher le menu. Déplacez pour changer l'ordre d'affichage."; +$lang->custom->saveFail = 'Echec de la sauvegarde !'; +$lang->custom->page = ' Page'; + +$lang->custom->scoreStatus[1] = 'On'; +$lang->custom->scoreStatus[0] = 'Off'; + +$lang->custom->moduleName['product'] = $lang->productCommon; +$lang->custom->moduleName['productplan'] = 'Plan'; +$lang->custom->moduleName['project'] = $lang->projectCommon; diff --git a/module/datatable/lang/fr.php b/module/datatable/lang/fr.php new file mode 100644 index 0000000000..fc8c02fd72 --- /dev/null +++ b/module/datatable/lang/fr.php @@ -0,0 +1,25 @@ +datatable = new stdclass(); +$lang->datatable->common = 'Tableaux de Données'; +$lang->datatable->width = 'Largeur'; +$lang->datatable->show = 'Visible'; +$lang->datatable->hide = 'Caché'; +$lang->datatable->reset = 'Réinitialiser'; + +$lang->datatable->custom = 'Personnaliser colonnes'; +$lang->datatable->customTip = "Cochez les colonnes à afficher et déplacez les pour les mettre dans l'ordre."; +$lang->datatable->switchToTable = 'Basculer vers le Tableau Commun'; +$lang->datatable->switchToDatatable = 'Basculer vers le Tableau Avancé'; +$lang->datatable->required = 'Obligatoire'; +$lang->datatable->confirmReset = 'Voulez-vous restaurer les paramétres par défaut ?'; +$lang->datatable->setGlobal = 'Paramétrage Global'; +$lang->datatable->resetGlobal = 'Globale Réinit.'; + +$lang->datatable->branch = 'Branche'; +$lang->datatable->platform = 'Plateforme'; + +$lang->datatable->showModule = 'Montrer les noms des modules dans la page de listes'; +$lang->datatable->showModuleAB = 'Montrer Nom Modules'; +$lang->datatable->showModuleList[] = 'N/A'; +$lang->datatable->showModuleList['base'] = 'Base Node'; +$lang->datatable->showModuleList['end'] = 'End Node'; diff --git a/module/dept/lang/fr.php b/module/dept/lang/fr.php new file mode 100644 index 0000000000..c7393bb19f --- /dev/null +++ b/module/dept/lang/fr.php @@ -0,0 +1,32 @@ + + * @package dept + * @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->dept->common = 'Compartiments'; +$lang->dept->manageChild = "Entreprise > Compartiments > Domaines"; +$lang->dept->edit = "Editer Compartiment"; +$lang->dept->delete = "Supprimer Compartiment"; +$lang->dept->parent = "Comp. Parent"; +$lang->dept->manager = "Responsable"; +$lang->dept->name = "Nom du Compartiment"; +$lang->dept->browse = "Consulter Compartiment"; +$lang->dept->manage = "Gérer Compartiment"; +$lang->dept->updateOrder = "Rang Compartiment"; +$lang->dept->add = "Ajout Compartiment"; +$lang->dept->grade = "Department Grade"; +$lang->dept->order = "Department Order"; +$lang->dept->dragAndSort = "Déplacez pour classer"; + +$lang->dept->confirmDelete = " Confirmez que vous voulez bien supprimer ce Compartiment ?"; +$lang->dept->successSave = " Sauvé !"; + +$lang->dept->error = new stdclass(); +$lang->dept->error->hasSons = 'Ce Compartiment possède des domaines. Vous ne pouvez pas le supprimer !'; +$lang->dept->error->hasUsers = 'Ce Compartiment possède des utilisateurs. Vous ne pouvez pas le supprimer !'; diff --git a/module/dev/lang/fr.php b/module/dev/lang/fr.php new file mode 100644 index 0000000000..ec6e250dbd --- /dev/null +++ b/module/dev/lang/fr.php @@ -0,0 +1,125 @@ +dev->common = 'Développeur'; +$lang->dev->api = 'API'; +$lang->dev->db = 'Base de Données'; +$lang->dev->editor = 'Editeur'; +$lang->dev->dbList = 'Bases de Données'; +$lang->dev->moduleList = 'Modules'; +$lang->dev->params = 'Paramètres'; +$lang->dev->type = 'Type'; +$lang->dev->desc = 'Description'; +$lang->dev->noParams = 'Pas de Paramètres'; +$lang->dev->post = 'Paramètre POST'; + +$lang->dev->paramRange = 'Rang Paramètre : %s'; +$lang->dev->paramDate = 'Format Date : YY-mm-dd, e.g 2019-01-01'; +$lang->dev->paramColor = 'Format Couleur : #RGB, e.g. #3da7f5'; +$lang->dev->paramMailto = "Comptes utilisateurs. Séparé par des ','."; + +$lang->dev->fields = array(); +$lang->dev->fields['id'] = 'ID'; +$lang->dev->fields['name'] = 'Champ'; +$lang->dev->fields['desc'] = 'Description'; +$lang->dev->fields['type'] = 'Type'; +$lang->dev->fields['length'] = 'Longueur'; +$lang->dev->fields['null'] = 'Null'; + +$lang->dev->tableList = array(); +$lang->dev->tableList['action'] = 'Action'; +$lang->dev->tableList['bug'] = 'Bug'; +$lang->dev->tableList['build'] = 'Build'; +$lang->dev->tableList['burn'] = 'Graphe Burndown'; +$lang->dev->tableList['case'] = 'CasTest'; +$lang->dev->tableList['casestep'] = 'Step'; +$lang->dev->tableList['company'] = 'Entreprise'; +$lang->dev->tableList['config'] = 'Configuration'; +$lang->dev->tableList['custom'] = 'Personnalisation'; +$lang->dev->tableList['dept'] = 'Compartiment'; +$lang->dev->tableList['doc'] = 'Document'; +$lang->dev->tableList['doclib'] = 'Bibliothèque Document'; +$lang->dev->tableList['effort'] = 'Effort'; +$lang->dev->tableList['extension'] = 'Extension'; +$lang->dev->tableList['file'] = 'Fichier'; +$lang->dev->tableList['group'] = 'Groupe'; +$lang->dev->tableList['grouppriv'] = 'Privilège'; +$lang->dev->tableList['history'] = 'Historique'; +$lang->dev->tableList['lang'] = 'Langue'; +$lang->dev->tableList['module'] = 'Module'; +$lang->dev->tableList['product'] = $lang->productCommon; +$lang->dev->tableList['productplan'] = $lang->productCommon . 'Plan'; +$lang->dev->tableList['project'] = $lang->projectCommon; +$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon; +$lang->dev->tableList['projectstory'] = $lang->projectCommon . 'Story'; +$lang->dev->tableList['release'] = 'Release'; +$lang->dev->tableList['story'] = 'Story'; +$lang->dev->tableList['storyspec'] = 'Description Story'; +$lang->dev->tableList['task'] = 'Tâche'; +$lang->dev->tableList['taskestimate'] = 'Estimés'; +$lang->dev->tableList['team'] = 'Equipe'; +$lang->dev->tableList['testresult'] = 'Résultats Test'; +$lang->dev->tableList['testrun'] = 'Exécution Test'; +$lang->dev->tableList['testtask'] = 'Campagne'; +$lang->dev->tableList['todo'] = 'Agenda'; +$lang->dev->tableList['user'] = 'User'; +$lang->dev->tableList['usercontact'] = 'Contact Utilisateur'; +$lang->dev->tableList['usergroup'] = 'User Group'; +$lang->dev->tableList['userquery'] = 'User Query'; +$lang->dev->tableList['usertpl'] = 'User Template'; +$lang->dev->tableList['admin'] = 'Admin'; +$lang->dev->tableList['api'] = 'API'; +$lang->dev->tableList['backup'] = 'Sauvegarde'; +$lang->dev->tableList['common'] = 'Commun'; +$lang->dev->tableList['convert'] = 'Convert'; +$lang->dev->tableList['dev'] = 'Dévelop'; +$lang->dev->tableList['editor'] = 'Editeur'; +$lang->dev->tableList['git'] = 'GIT'; +$lang->dev->tableList['index'] = 'Accueil'; +$lang->dev->tableList['install'] = 'Installer'; +$lang->dev->tableList['mail'] = 'Email'; +$lang->dev->tableList['misc'] = 'Divers'; +$lang->dev->tableList['my'] = 'Dashboard'; +$lang->dev->tableList['qa'] = 'QA'; +$lang->dev->tableList['report'] = 'Rapport'; +$lang->dev->tableList['search'] = 'Recherche'; +$lang->dev->tableList['sso'] = 'SSO'; +$lang->dev->tableList['svn'] = 'SVN'; +$lang->dev->tableList['testcase'] = 'CasTest'; +$lang->dev->tableList['testreport'] = 'Rapport Test'; +$lang->dev->tableList['testsuite'] = 'Cahier Recette'; +$lang->dev->tableList['tree'] = 'Arborescence'; +$lang->dev->tableList['upgrade'] = 'Update'; +$lang->dev->tableList['cron'] = 'Cron'; +$lang->dev->tableList['datatable'] = 'Tableau Données'; +$lang->dev->tableList['block'] = 'Bloc'; +$lang->dev->tableList['branch'] = 'Branche'; +$lang->dev->tableList['doccontent'] = 'Contenu Doc'; +$lang->dev->tableList['storystage'] = 'Phase Story Phase'; +$lang->dev->tableList['translate'] = 'Traduction'; +$lang->dev->tableList['tutorial'] = 'Tutoriel'; +$lang->dev->tableList['suitecase'] = 'Cas Cahier Recette'; +$lang->dev->tableList['score'] = 'Score'; +$lang->dev->tableList['entry'] = 'Application'; +$lang->dev->tableList['webhook'] = 'WebHook'; +$lang->dev->tableList['log'] = 'Log'; +$lang->dev->tableList['message'] = 'Message'; +$lang->dev->tableList['notify'] = 'Notification'; +$lang->dev->tableList['userview'] = 'Droits Utilisateur'; +$lang->dev->tableList['im_chatuser'] = 'Utilisateurs Client'; +$lang->dev->tableList['im_message'] = 'Messages Client'; +$lang->dev->tableList['translation'] = 'Traduction'; +$lang->dev->tableList['im_messagestatus'] = 'Statut Messages Client'; + +$lang->dev->groupList['my'] = 'Dashboard'; +$lang->dev->groupList['product'] = $lang->productCommon; +$lang->dev->groupList['project'] = $lang->projectCommon; +$lang->dev->groupList['qa'] = 'QA'; +$lang->dev->groupList['doc'] = 'Doc'; +$lang->dev->groupList['report'] = 'Rapport'; +$lang->dev->groupList['company'] = 'Entreprise'; +$lang->dev->groupList['repo'] = 'Code'; +$lang->dev->groupList['api'] = 'API'; +$lang->dev->groupList['message'] = 'Message'; + +$lang->dev->endGroupList['admin'] = 'Admin'; +$lang->dev->endGroupList['system'] = 'Système'; +$lang->dev->endGroupList['other'] = 'Autres'; diff --git a/module/dev/model.php b/module/dev/model.php index 7f93038002..f86506eb45 100644 --- a/module/dev/model.php +++ b/module/dev/model.php @@ -41,7 +41,7 @@ class devModel extends model { if(isset($this->config->dev->tableMap[$module])) $aliasModule = $this->config->dev->tableMap[$module]; if(strpos($aliasModule, '-') !== false) list($aliasModule, $subLang) = explode('-', $aliasModule); - if(strpos($module, 'im_') === false) $this->app->loadLang($aliasModule ? $aliasModule : $module); + $this->app->loadLang($aliasModule ? $aliasModule : $module); } catch(PDOException $e) { diff --git a/module/doc/lang/de.php b/module/doc/lang/de.php index bcdc41af51..b59a444006 100644 --- a/module/doc/lang/de.php +++ b/module/doc/lang/de.php @@ -78,6 +78,8 @@ $lang->doc->editType = 'Bearbeiten'; $lang->doc->deleteType = 'Löschen'; $lang->doc->addType = 'Hinzufügen'; $lang->doc->childType = 'Child'; +$lang->doc->editType = 'Manage Category'; +$lang->doc->deleteType = 'Delete Category'; $lang->doc->collect = 'Favorit hinzufügen'; $lang->doc->cancelCollection = 'Favorit entfernen'; $lang->doc->deleteFile = 'Delete File'; diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index f6e62b389e..3c42b4b086 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -52,7 +52,7 @@ $lang->doc->retrack = 'Retrack'; $lang->doc->moduleDoc = 'By Module'; $lang->doc->searchDoc = 'Search'; -$lang->doc->fast = 'Qucik Entry'; +$lang->doc->fast = 'Quick Entry'; $lang->doc->allDoc = 'All Documents'; $lang->doc->openedByMe = 'My'; $lang->doc->orderByOpen = 'Recent Added'; @@ -78,6 +78,8 @@ $lang->doc->editType = 'Edit'; $lang->doc->deleteType = 'Delete'; $lang->doc->addType = 'Add'; $lang->doc->childType = 'Categories'; +$lang->doc->editType = 'Manage Category'; +$lang->doc->deleteType = 'Delete Category'; $lang->doc->collect = 'Add Favorite'; $lang->doc->cancelCollection = 'Remove Favorite'; $lang->doc->deleteFile = 'Delete File'; diff --git a/module/doc/lang/fr.php b/module/doc/lang/fr.php new file mode 100644 index 0000000000..4724fc9ac0 --- /dev/null +++ b/module/doc/lang/fr.php @@ -0,0 +1,221 @@ + + * @package doc + * @version $Id: en.php 824 2010-05-02 15:32:06Z wwccss $ + * @link https://www.zentao.pm + */ +/* Fields. */ +$lang->doc->common = 'Gestion Documentaire'; +$lang->doc->id = 'ID'; +$lang->doc->product = $lang->productCommon; +$lang->doc->project = $lang->projectCommon; +$lang->doc->lib = 'Bibliothèque'; +$lang->doc->module = 'Catégorie'; +$lang->doc->title = 'Nom'; +$lang->doc->digest = 'Résumé'; +$lang->doc->comment = 'Commentaire'; +$lang->doc->type = 'Type'; +$lang->doc->content = 'Texte'; +$lang->doc->keywords = 'Tags'; +$lang->doc->url = 'URL'; +$lang->doc->files = 'Fichiers'; +$lang->doc->addedBy = 'Auteur'; +$lang->doc->addedDate = 'Ajouté le'; +$lang->doc->editedBy = 'Màj par'; +$lang->doc->editedDate = 'Màj le'; +$lang->doc->version = 'Version'; +$lang->doc->basicInfo = 'Infos de Base'; +$lang->doc->deleted = 'Supprimé'; +$lang->doc->fileObject = 'Objet Dépendant'; +$lang->doc->whiteList = 'Liste Blanche'; +$lang->doc->contentType = 'Format'; +$lang->doc->separator = ""; +$lang->doc->fileTitle = 'Nom du Fichier'; +$lang->doc->filePath = 'Chemin Fichier'; +$lang->doc->extension = 'Extension'; +$lang->doc->size = 'Taille'; +$lang->doc->download = 'Téléchargement'; +$lang->doc->acl = 'Right'; +$lang->doc->fileName = 'Fichiers'; +$lang->doc->groups = 'Groupes'; +$lang->doc->users = 'Utilisateurs'; +$lang->doc->item = ' Objets'; +$lang->doc->num = 'Documents'; +$lang->doc->searchResult = 'Résultat de Recherche'; +$lang->doc->fullscreen = 'Plein Ecran'; +$lang->doc->retrack = 'Réduire'; + +$lang->doc->moduleDoc = 'Par Module'; +$lang->doc->searchDoc = 'Rechercher'; +$lang->doc->fast = 'Saisie rapide'; +$lang->doc->allDoc = 'Tous les Documents'; +$lang->doc->openedByMe = 'Mes'; +$lang->doc->orderByOpen = 'Récemment Ajoutés'; +$lang->doc->orderByEdit = 'Récemment Mis à Jour'; +$lang->doc->orderByVisit = 'Dernière Visite'; +$lang->doc->todayEdited = "Mis à Jour Aujourd'hui"; +$lang->doc->pastEdited = 'Total Mis à Jour'; +$lang->doc->myDoc = 'Mes Documents'; +$lang->doc->myCollection = 'Mes Favoris'; + +/* 方法列表。*/ +$lang->doc->index = 'Accueil Documents'; +$lang->doc->create = 'Ajouter Document'; +$lang->doc->edit = 'Editer Document'; +$lang->doc->delete = 'Supprimer Document'; +$lang->doc->browse = 'Liste Documents'; +$lang->doc->view = 'Détail Document'; +$lang->doc->diff = 'Diff'; +$lang->doc->diffAction = 'Document Diff'; +$lang->doc->sort = 'Rang Document'; +$lang->doc->manageType = 'Gérer Catégories'; +$lang->doc->editType = 'Editer'; +$lang->doc->deleteType = 'Supprimer'; +$lang->doc->addType = 'Ajouter'; +$lang->doc->childType = 'Catégories'; +$lang->doc->editType = 'Manage Category'; +$lang->doc->deleteType = 'Delete Category'; +$lang->doc->collect = 'Ajouter aux Favoris'; +$lang->doc->cancelCollection = 'Retirer des Favoris'; +$lang->doc->deleteFile = 'Supprimer Fichier'; + +$lang->doc->libName = 'Bibliothèque de Documents'; +$lang->doc->libType = 'Catégorie'; +$lang->doc->custom = 'Personnaliser Bibliothèque de Documents'; +$lang->doc->customAB = 'Person. Bib Doc'; +$lang->doc->createLib = 'Créer une Bibliothèque'; +$lang->doc->allLibs = 'Liste des Bibliothèque'; +$lang->doc->objectLibs = "{$lang->productCommon}/{$lang->projectCommon} Bibliothèque"; +$lang->doc->showFiles = 'Pièces Jointes'; +$lang->doc->editLib = 'Editer Bibliothèque'; +$lang->doc->deleteLib = 'Supprimer Bibliothèque'; +$lang->doc->fixedMenu = 'Coller au Menu'; +$lang->doc->removeMenu = 'Décoller du Menu'; +$lang->doc->search = 'Rechercher'; + +/* 查询条件列表 */ +$lang->doc->allProduct = 'Tous les ' . $lang->productCommon . 's'; +$lang->doc->allProject = 'Tous les ' . $lang->projectCommon . 's'; + +$lang->doc->libTypeList['product'] = $lang->productCommon . ' Library'; +$lang->doc->libTypeList['project'] = 'Bibliothèque ' . $lang->projectCommon; +$lang->doc->libTypeList['custom'] = 'Bib. Personnalisée'; + +$lang->doc->libIconList['product'] = 'icon-cube'; +$lang->doc->libIconList['project'] = 'icon-stack'; +$lang->doc->libIconList['custom'] = 'icon-folder-o'; + +$lang->doc->systemLibs['product'] = $lang->productCommon; +$lang->doc->systemLibs['project'] = $lang->projectCommon; + +global $config; +if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']); +if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']); +if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']); +if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']); + +$lang->doc->aclList['open'] = 'Public'; +$lang->doc->aclList['custom'] = 'Person.'; +$lang->doc->aclList['private'] = 'Privé'; + +$lang->doc->typeList['html'] = 'Html'; +$lang->doc->typeList['markdown'] = 'Markdown'; +$lang->doc->typeList['url'] = 'URL'; +$lang->doc->typeList['word'] = 'Word'; +$lang->doc->typeList['ppt'] = 'PPT'; +$lang->doc->typeList['excel'] = 'Excel'; + +$lang->doc->types['text'] = 'Text'; +$lang->doc->types['url'] = 'URL'; + +$lang->doc->contentTypeList['html'] = 'HTML'; +$lang->doc->contentTypeList['markdown'] = 'MarkDown'; + +$lang->doc->browseType = 'Catégorie'; +$lang->doc->browseTypeList['list'] = 'Liste'; +$lang->doc->browseTypeList['grid'] = 'Vignettes'; + +$lang->doc->fastMenuList['byediteddate'] = 'Récemment Mis à Jour'; +//$lang->doc->fastMenuList['visiteddate'] = 'Recently Visited'; +$lang->doc->fastMenuList['openedbyme'] = 'Mes Documents'; +$lang->doc->fastMenuList['collectedbyme'] = 'Mes Favoris'; + +$lang->doc->fastMenuIconList['byediteddate'] = 'icon-folder-upload'; +//$lang->doc->fastMenuIconList['visiteddate'] = 'icon-folder-move'; +$lang->doc->fastMenuIconList['openedbyme'] = 'icon-folder-account'; +$lang->doc->fastMenuIconList['collectedbyme'] = 'icon-folder-star'; + +$lang->doc->customObjectLibs['files'] = 'Montrer Bibliothèque des Pièces jointes'; +$lang->doc->customObjectLibs['customFiles'] = 'Montrer Library Personnelle'; + +$lang->doc->orderLib = 'Paramétrage Rang'; +$lang->doc->customShowLibs = 'Paramétrage Affichage'; +$lang->doc->customShowLibsList['zero'] = 'Montrer Bibliothèques Vides'; +$lang->doc->customShowLibsList['children'] = 'Montrer sous-catégorie de Documents'; +$lang->doc->customShowLibsList['unclosed'] = "Montrer {$lang->projectCommon}s actifs seulement"; + +$lang->doc->confirmDelete = "Voulez-vous supprimer ce document ?"; +$lang->doc->confirmDeleteLib = "Voulez-vous supprimer cette Bibliothèque ?"; +$lang->doc->errorEditSystemDoc = "Vous n'avez pas besoin de changer de système de Bibliothèque."; +$lang->doc->errorEmptyProduct = "Aucun {$lang->productCommon}. Il ne peut pas être créé."; +$lang->doc->errorEmptyProject = "Aucun {$lang->projectCommon}. Il ne peut pas être créé."; +$lang->doc->errorMainSysLib = "Cette Bibliothèque ne peut pas être supprimée."; +$lang->doc->accessDenied = "Access is denied !"; +$lang->doc->versionNotFount = "N'existe pas dans ce build."; +$lang->doc->noDoc = 'Aucun documents. '; +$lang->doc->cannotCreateOffice = 'Désolé, %s peut seulement être créé dans ZenTao Enterprise. Contactez Zentao à renee@easysoft.ltd pour essayer ZenTao Enterprise.'; +$lang->doc->noSearchedDoc = 'Aucun documents trouvé.'; +$lang->doc->noEditedDoc = "Vous n'avez pas mis à jour de documents."; +$lang->doc->noOpenedDoc = "Vous n'avez pas ajouté de documents."; +$lang->doc->noCollectedDoc = "Vous avez aucun document dans vos favoris."; + +$lang->doc->noticeAcl['lib']['product']['default'] = 'Les utilisateurs qui ont accès au Product peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['product']['custom'] = 'Les utilisateurs qui ont accès au Product ou les utilisateurs de la Liste Blanche peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['project']['default'] = 'Les utilisateurs qui ont accès au Projet peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['project']['custom'] = 'Les utilisateurs qui ont accès au Projet ou les utilisateurs de la Liste Blanche peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['custom']['open'] = 'Tous les utilisateurs peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['custom']['custom'] = 'Les utilisateurs de la Liste Blanche peuvent y accéder.'; +$lang->doc->noticeAcl['lib']['custom']['private'] = 'Seulement le créateur de la Bibliothèque peut y accéder.'; + +$lang->doc->noticeAcl['doc']['open'] = 'Les utilisateurs qui ont accès à la Bibliothèque à laquelle le document appartient peuvent y accéder.'; +$lang->doc->noticeAcl['doc']['custom'] = 'Les utilisateurs de la Liste Blanche peuvent y accéder.'; +$lang->doc->noticeAcl['doc']['private'] = 'Seulement celui qui a ajouté le document peut y accéder.'; + +$lang->doc->placeholder = new stdclass(); +$lang->doc->placeholder->url = 'URL'; + +$lang->doclib = new stdclass(); +$lang->doclib->name = 'Nom'; +$lang->doclib->control = "Contrôle d'Accès"; +$lang->doclib->group = 'Groupe'; +$lang->doclib->user = 'Utilisateur'; +$lang->doclib->files = 'Pièces Jointes'; +$lang->doclib->all = 'Toutes les Libraries'; +$lang->doclib->select = 'Sélect.'; +$lang->doclib->project = 'Bibliothèque ' . $lang->projectCommon; +$lang->doclib->product = $lang->productCommon . ' Library'; + +$lang->doclib->aclListA['default'] = 'Défaut'; +$lang->doclib->aclListA['custom'] = 'Person.'; + +$lang->doclib->aclListB['open'] = 'Public'; +$lang->doclib->aclListB['custom'] = 'Person.'; +$lang->doclib->aclListB['private'] = 'Privée'; + +$lang->doclib->create['product'] = 'Créer ' . $lang->productCommon . ' Library'; +$lang->doclib->create['project'] = 'Créer ' . 'Bibliothèque ' . $lang->projectCommon; +$lang->doclib->create['custom'] = 'Créer Bibliothèque Personnelle'; + +$lang->doclib->main['product'] = 'Bibliothèque Principale'; +$lang->doclib->main['project'] = 'Bibliothèque Principale'; + +$lang->doclib->tabList['product'] = $lang->productCommon; +$lang->doclib->tabList['project'] = $lang->projectCommon; +$lang->doclib->tabList['custom'] = 'Personnelle'; + +$lang->doclib->nameList['custom'] = 'Nom personnalisé'; diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index 43dbd5e246..0da031d70d 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -78,6 +78,8 @@ $lang->doc->editType = '编辑分类'; $lang->doc->deleteType = '删除分类'; $lang->doc->addType = '增加分类'; $lang->doc->childType = '子分类'; +$lang->doc->editType = '维护分类'; +$lang->doc->deleteType = '删除分类'; $lang->doc->collect = '收藏'; $lang->doc->cancelCollection = '取消收藏'; $lang->doc->deleteFile = '删除附件'; diff --git a/module/doc/lang/zh-tw.php b/module/doc/lang/zh-tw.php index 7822f43cee..4c24b6a352 100644 --- a/module/doc/lang/zh-tw.php +++ b/module/doc/lang/zh-tw.php @@ -78,6 +78,8 @@ $lang->doc->editType = '編輯分類'; $lang->doc->deleteType = '刪除分類'; $lang->doc->addType = '增加分類'; $lang->doc->childType = '子分類'; +$lang->doc->editType = '維護分類'; +$lang->doc->deleteType = '刪除分類'; $lang->doc->collect = '收藏'; $lang->doc->cancelCollection = '取消收藏'; $lang->doc->deleteFile = '刪除附件'; diff --git a/module/doc/model.php b/module/doc/model.php index 316d2f14c5..24c76422e7 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -364,7 +364,11 @@ class docModel extends model elseif($browseType == "bymodule") { $modules = 0; - if($moduleID) $modules = (strpos($this->config->doc->custom->showLibs, 'children') === false) ? array($moduleID => $moduleID) : $this->loadModel('tree')->getAllChildId($moduleID); + if($moduleID) + { + $modules = array($moduleID => $moduleID); + if(strpos($this->config->doc->custom->showLibs, 'children') === false) $modules = $this->loadModel('tree')->getAllChildId($moduleID); + } $docs = $this->getDocs($libID, $modules, $sort, $pager); } elseif($browseType == "bygrid") diff --git a/module/editor/control.php b/module/editor/control.php index b391fbb5db..1f8623d650 100644 --- a/module/editor/control.php +++ b/module/editor/control.php @@ -11,6 +11,15 @@ */ class editor extends control { + /** + * Construct + * + * @param string $moduleName + * @param string $methodName + * @param string $appName + * @access public + * @return void + */ public function __construct($moduleName = '', $methodName = '', $appName = '') { parent::__construct($moduleName, $methodName, $appName); diff --git a/module/editor/lang/fr.php b/module/editor/lang/fr.php new file mode 100644 index 0000000000..d483fce164 --- /dev/null +++ b/module/editor/lang/fr.php @@ -0,0 +1,76 @@ +editor->common = 'Editeur'; +$lang->editor->api = 'API'; +$lang->editor->index = 'Accueil'; +$lang->editor->newMethod = 'New Méthode'; +$lang->editor->extend = 'Extension'; +$lang->editor->api = 'API'; +$lang->editor->newLang = 'New Language'; +$lang->editor->newConfig = 'New Config'; +$lang->editor->newHook = 'New Hook'; +$lang->editor->newExtend = 'New Extension'; +$lang->editor->newPage = 'New Page'; +$lang->editor->override = 'Ecraser'; +$lang->editor->edit = 'Editer Extension'; +$lang->editor->save = 'Sauver Page'; +$lang->editor->delete = 'Supprimer Page'; + +$lang->editor->moduleList = 'Module'; +$lang->editor->filePath = "Extension:"; +$lang->editor->sourceFile = 'Fichier Source :'; +$lang->editor->fileName = "Nom Fichier :"; +$lang->editor->isOverride = "Override Duplicated File"; +$lang->editor->exampleHook = "(e.g. ***.html.hook.php)"; +$lang->editor->exampleJs = "(e.g. ***.js)"; +$lang->editor->exampleCss = "(e.g. ***.css)"; +$lang->editor->examplePHP = "(e.g. ***.php)"; +$lang->editor->pageName = "Nom Page :"; + +$lang->editor->deleteConfirm = 'Voulez-vous le supprimer ?'; +$lang->editor->extendConfirm = 'Voulez-vous utiliser le code original ?'; +$lang->editor->repeatFile = 'Doublon'; +$lang->editor->repeatPage = "Cette page existe. Voulez-vous l'écraser ?"; +$lang->editor->noticeOkFile = 'Pour des raisons de sécurité, votre compte administrateur doit être confirmé. \n Please login ZenTao server and create %s File.\n Note:\n 1. File is blank.\n 2. If the file existed, delete it and then create a new one.'; +$lang->editor->editFileError = 'Vous pouvez seulement modifier les fichiers ZenTao !'; + +$lang->editor->notWritable = "Non inscriptible. Permission requise. Essayez chmod 777 -R "; +$lang->editor->notDelete = 'Ne peut pas être supprimé. Vérifiez les permissions !'; +$lang->editor->emptyFileName = 'Entrez un nom de fichier !'; +$lang->editor->onlyLocalVisit = "Cette fonctionnalité ne fonctionne que pour une IP 127.0.0.1. Aide"; + +$lang->editor->translate['config.php'] = 'config'; +$lang->editor->translate['control.php'] = 'contrôle'; +$lang->editor->translate['model.php'] = 'modèle'; + +$lang->editor->modules['action'] = 'System Log'; +$lang->editor->modules['admin'] = 'Admin'; +$lang->editor->modules['api'] = 'API'; +$lang->editor->modules['bug'] = 'Bug'; +$lang->editor->modules['build'] = 'Build'; +$lang->editor->modules['common'] = 'Module Commun'; +$lang->editor->modules['company'] = 'Entreprise'; +$lang->editor->modules['convert'] = 'Convertir'; +$lang->editor->modules['dept'] = 'Compartiment'; +$lang->editor->modules['doc'] = 'Doc'; +$lang->editor->modules['extension'] = 'Extension'; +$lang->editor->modules['file'] = 'Fichier'; +$lang->editor->modules['group'] = 'Groupe'; +$lang->editor->modules['index'] = 'Accueil'; +$lang->editor->modules['install'] = 'Installer'; +$lang->editor->modules['misc'] = 'Divers'; +$lang->editor->modules['my'] = 'Dashboard'; +$lang->editor->modules['product'] = $lang->productCommon; +$lang->editor->modules['productplan'] = 'Plan'; +$lang->editor->modules['project'] = $lang->projectCommon; +$lang->editor->modules['qa'] = 'QA'; +$lang->editor->modules['release'] = 'Release'; +$lang->editor->modules['report'] = 'Rapport'; +$lang->editor->modules['search'] = 'Recherche'; +$lang->editor->modules['story'] = 'Story'; +$lang->editor->modules['task'] = 'Tâche'; +$lang->editor->modules['testcase'] = 'CasTest'; +$lang->editor->modules['testtask'] = 'Recette'; +$lang->editor->modules['todo'] = 'Agenda'; +$lang->editor->modules['tree'] = 'Module Maintenance'; +$lang->editor->modules['upgrade'] = 'Upgrade'; +$lang->editor->modules['user'] = 'User'; diff --git a/module/editor/model.php b/module/editor/model.php index dc1b2621d1..56f8f4ab00 100644 --- a/module/editor/model.php +++ b/module/editor/model.php @@ -365,6 +365,11 @@ class editorModel extends model */ public function save($filePath) { + $statusFile = $this->loadModel('upgrade')->checkSafeFile(); + if($statusFile) die(js::alert(sprintf($this->lang->editor->noticeOkFile, str_replace('\\', '/', $statusFile)))); + + if(strpos(strtolower($filePath), strtolower($this->app->getBasePath())) !== 0) die(js::alert($this->lang->editor->editFileError)); + $fileContent = $this->post->fileContent; $evils = array('eval', 'exec', 'passthru', 'proc_open', 'shell_exec', 'system', '$$', 'include', 'require', 'assert'); $gibbedEvils = array('e v a l', 'e x e c', ' p a s s t h r u', ' p r o c _ o p e n', 's h e l l _ e x e c', 's y s t e m', '$ $', 'i n c l u d e', 'r e q u i r e', 'a s s e r t'); diff --git a/module/entry/lang/fr.php b/module/entry/lang/fr.php new file mode 100644 index 0000000000..398454e31c --- /dev/null +++ b/module/entry/lang/fr.php @@ -0,0 +1,57 @@ +entry->common = 'Application'; +$lang->entry->list = 'Applications'; +$lang->entry->api = 'API'; +$lang->entry->webhook = 'Webhook'; +$lang->entry->log = 'Log'; +$lang->entry->setting = 'Paramétrages'; + +$lang->entry->browse = 'Voir'; +$lang->entry->create = 'Ajouter Application'; +$lang->entry->edit = 'Editer'; +$lang->entry->delete = 'Supprimer'; +$lang->entry->createKey = 'Regénérer la Clé Secrète'; + +$lang->entry->id = 'ID'; +$lang->entry->name = 'Nom'; +$lang->entry->account = 'Compte'; +$lang->entry->code = 'Code'; +$lang->entry->freePasswd = 'Free Password Login'; +$lang->entry->key = 'Clé'; +$lang->entry->ip = 'IP'; +$lang->entry->desc = 'Description'; +$lang->entry->createdBy = 'Créé par'; +$lang->entry->createdDate = 'Créé le'; +$lang->entry->editedby = 'Edité par'; +$lang->entry->editedDate = 'Edité le'; +$lang->entry->date = 'Requesting Time'; +$lang->entry->url = 'Requesting URL'; + +$lang->entry->confirmDelete = 'Voulez-vous supprimer cette entrée ?'; +$lang->entry->help = 'Aide'; +$lang->entry->notify = 'Notification'; + +$lang->entry->helpLink = 'https://www.zentao.pm/book/zentaomanual/scrum-tool-open-source-integrate-third-party-application-221.html'; +$lang->entry->notifyLink = 'https://www.zentao.pm/book/zentaopmshelp/301.html'; + +$lang->entry->note = new stdClass(); +$lang->entry->note->name = 'Nom'; +$lang->entry->note->code = 'Code doit être composé de lettres et de chiffres'; +$lang->entry->note->ip = "Utilisez la virgule pour séparer les IPs. IP segment est supporté, ex: 192.168.1.*"; +$lang->entry->note->allIP = 'Toutes IPs'; +$lang->entry->note->account = 'Compte Application'; + +$lang->entry->freePasswdList[1] = 'On'; +$lang->entry->freePasswdList[0] = 'Off'; + +$lang->entry->errmsg['PARAM_CODE_MISSING'] = 'Parameter code manquant.'; +$lang->entry->errmsg['PARAM_TOKEN_MISSING'] = 'Parameter token manquante.'; +$lang->entry->errmsg['SESSION_CODE_MISSING'] = 'Session code manquant.'; +$lang->entry->errmsg['EMPTY_KEY'] = 'Clé Secrète manquante.'; +$lang->entry->errmsg['INVALID_TOKEN'] = 'Invalide token.'; +$lang->entry->errmsg['SESSION_VERIFY_FAILED'] = 'Echec de vérification de Session.'; +$lang->entry->errmsg['IP_DENIED'] = 'IP interdite.'; +$lang->entry->errmsg['ACCOUNT_UNBOUND'] = 'Compte non lié.'; +$lang->entry->errmsg['INVALID_ACCOUNT'] = 'Compte Invalide.'; +$lang->entry->errmsg['EMPTY_ENTRY'] = 'Application innexistante.'; +$lang->entry->errmsg['CALLED_TIME'] = 'Token expiré'; diff --git a/module/extension/lang/fr.php b/module/extension/lang/fr.php new file mode 100644 index 0000000000..a74efb8f93 --- /dev/null +++ b/module/extension/lang/fr.php @@ -0,0 +1,122 @@ + + * @package extension + * @version $Id$ + * @link https://www.zentao.pm + */ +$lang->extension->common = 'Extension'; +$lang->extension->browse = 'Extensions'; +$lang->extension->install = 'Installer Extension'; +$lang->extension->installAuto = 'Auto Installation'; +$lang->extension->installForce = 'Forcer Installation'; +$lang->extension->uninstall = 'Désinstaller'; +$lang->extension->uninstallAction = 'Désinstaller Extension'; +$lang->extension->activate = 'Activer'; +$lang->extension->activateAction = 'Activer Extension'; +$lang->extension->deactivate = 'Désactiver'; +$lang->extension->deactivateAction = 'Désactiver Extension'; +$lang->extension->obtain = 'Obtenir Extension'; +$lang->extension->view = 'Détail'; +$lang->extension->downloadAB = 'Téléchargement'; +$lang->extension->upload = 'Installation Locale'; +$lang->extension->erase = 'Effacer'; +$lang->extension->eraseAction = 'Effacer Extension'; +$lang->extension->upgrade = 'Upgrade Extension'; +$lang->extension->agreeLicense = 'Accepter le contrat de license.'; + +$lang->extension->structure = 'Structure Extension'; +$lang->extension->structureAction = 'Extension Structure'; +$lang->extension->installed = 'Installée'; +$lang->extension->deactivated = 'Désctivatée'; +$lang->extension->available = 'Téléchargée'; + +$lang->extension->name = 'Nom Extension'; +$lang->extension->code = 'Code'; +$lang->extension->desc = 'Description'; +$lang->extension->type = 'Type'; +$lang->extension->dirs = 'Répertoire Installation'; +$lang->extension->files = 'Fichiers Installation'; +$lang->extension->status = 'Statut'; +$lang->extension->version = 'Version'; +$lang->extension->latest = 'Dernière:%s,a besoin de zentao %s'; +$lang->extension->author = 'Auteur'; +$lang->extension->license = 'License'; +$lang->extension->site = 'Website'; +$lang->extension->downloads = 'Téléchargements'; +$lang->extension->compatible = 'Compatibilité'; +$lang->extension->grade = 'Score'; +$lang->extension->depends = 'Dépendence'; +$lang->extension->expireDate = 'Expire le'; +$lang->extension->zentaoCompatible = 'Version Compatible'; +$lang->extension->installedTime = 'Date Installation'; + +$lang->extension->publicList[0] = 'Manuel'; +$lang->extension->publicList[1] = 'Auto'; + +$lang->extension->compatibleList[0] = 'Inconnu'; +$lang->extension->compatibleList[1] = 'Compatible'; + +$lang->extension->obtainOfficial[0] = 'Third-party'; +$lang->extension->obtainOfficial[1] = 'Officiel'; + +$lang->extension->byDownloads = 'Téléchargements'; +$lang->extension->byAddedTime = 'Derniers Ajouts'; +$lang->extension->byUpdatedTime = 'Dernier Update'; +$lang->extension->bySearch = 'Rechercher'; +$lang->extension->byCategory = 'Category'; + +$lang->extension->installFailed = '%s a choué. Erreur:'; +$lang->extension->uninstallFailed = 'Echec de désinstallation. Erreur:'; +$lang->extension->confirmUninstall = 'La désinstallation va supprimer ou changer la base de données. Voulez-vous la désinstaller malgré tout ?'; +$lang->extension->installFinished = "Bravo ! L'extension est %sée !"; +$lang->extension->refreshPage = 'Rafraichir'; +$lang->extension->uninstallFinished = 'Cette extension est désinstallée.'; +$lang->extension->deactivateFinished = 'Cette extension est désactivée.'; +$lang->extension->activateFinished = 'Cette extension est active.'; +$lang->extension->eraseFinished = 'Cette extension est supprimée.'; +$lang->extension->unremovedFiles = 'Fichier ou répertoire ne peuvent pas être supprimés. Vous devez le faire manuellement'; +$lang->extension->executeCommands = '

Executez les lignes de commande ci-dessous pour résoudre le problème :

'; +$lang->extension->successDownloadedPackage = 'Cette extension est téléchargée !'; +$lang->extension->successCopiedFiles = 'Fichier copié !'; +$lang->extension->successInstallDB = 'Base de données installée !'; +$lang->extension->viewInstalled = 'Extensions Installées'; +$lang->extension->viewAvailable = 'Extensions Possibles'; +$lang->extension->viewDeactivated = 'Extensions Désactivées'; +$lang->extension->backDBFile = 'Les données de cette extension ont été sauvegardées dans %s!'; +$lang->extension->noticeOkFile = '
Pour des raisons de sécurité, votre compte Administrateur doit être confirmé.
+
Connectez-vous à votre serveur ZenTao et créez %s.
+

Note

+
    +
  1. Le fichier que vous allez créer doit être vide.
  2. +
  3. Si le fichier existe déjà, supprimez-le et créez-le à nouveau.
  4. +
'; + +$lang->extension->upgradeExt = 'Upgrader'; +$lang->extension->installExt = 'Installer'; +$lang->extension->upgradeVersion = '(Upgrade %s vers %s.)'; + +$lang->extension->waring = 'Attention !'; + +$lang->extension->errorOccurs = 'Erreur:'; +$lang->extension->errorGetModules = 'Get Extension Category from www.zentao.pm failed. It could be network error. Plase check your network and refresh it.'; +$lang->extension->errorGetExtensions = 'Get Extensions from www.zentao.pm failed. It could be network error. Please go to
www.zentao.pm and download the extension, and then upload it to install.'; +$lang->extension->errorDownloadPathNotFound = 'Le répertoire de téléchargement %s semble inconnu.
Please run mkdir -p %s in Linux to fix it.'; +$lang->extension->errorDownloadPathNotWritable = 'Le chemin de téléchargement Extensions %s est non inscriptible.
Please run sudo chmod 777 %s in Linux to fix it.'; +$lang->extension->errorPackageFileExists = '%s existe déjà dans le répertoire de téléchargement.
Please %s it again, CLICK HERE
'; +$lang->extension->errorDownloadFailed = 'Echec au téléchargement. Réessayez. If still not OK, try to download it manually and upload it to install.'; +$lang->extension->errorMd5Checking = 'Fichier Incomplet. Téléchargez-le à nouveau. If still not OK, try to download it manually and upload it to install.'; +$lang->extension->errorCheckIncompatible = 'Incompatible avec votre ZenTao. It may not be used %s later.
You can choose to force%s or cancel
'; +$lang->extension->errorFileConflicted = '
%s
est en conflit avec d\'autres. Choose Override or Cancel
'; +$lang->extension->errorPackageNotFound = '%s non trouvé. Le téléchargement a peut-être échoué. Téléchargez à nouveau.'; +$lang->extension->errorTargetPathNotWritable = '%s non inscriptible.'; +$lang->extension->errorTargetPathNotExists = '%s non trouvé.'; +$lang->extension->errorInstallDB = 'Database report execution failed. Erreur: %s'; +$lang->extension->errorConflicts = 'Conflit avec “%s”!'; +$lang->extension->errorDepends = 'Dependent extension has not been installed or the version is incorrect:

%s'; +$lang->extension->errorIncompatible = 'Incompatible avec votre ZenTao.'; +$lang->extension->errorUninstallDepends = '“%s” is dependent on ts extension. Please do not install it.'; diff --git a/module/file/lang/fr.php b/module/file/lang/fr.php new file mode 100644 index 0000000000..93bf036386 --- /dev/null +++ b/module/file/lang/fr.php @@ -0,0 +1,60 @@ + + * @package file + * @version $Id: en.php 4129 2013-01-18 01:58:14Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->file = new stdclass(); +$lang->file->common = 'Fichier'; +$lang->file->uploadImages = 'Charger Images en Lot'; +$lang->file->download = 'Télécharger Fichiers'; +$lang->file->uploadDate = 'Chargé le'; +$lang->file->edit = 'Renommer'; +$lang->file->inputFileName = 'Entrez Nom Fichier'; +$lang->file->delete = 'Supprimer Fichier'; +$lang->file->label = 'Label :'; +$lang->file->maxUploadSize = "%s"; +$lang->file->applyTemplate = "Appliquer Modèle"; +$lang->file->tplTitle = "Nom Modèle"; +$lang->file->tplTitleAB = "Modèles"; +$lang->file->setPublic = "Rendre Public le Modèle"; +$lang->file->exportFields = "Champs"; +$lang->file->exportRange = "Données"; +$lang->file->defaultTPL = "Défaut"; +$lang->file->setExportTPL = "Paramétrages"; +$lang->file->preview = "Apperçu"; +$lang->file->addFile = 'Ajouter'; +$lang->file->beginUpload = 'Clic pour Charger'; +$lang->file->uploadSuccess = 'Chargé !'; + +$lang->file->pathname = 'Nom Chemin'; +$lang->file->title = 'Titre'; +$lang->file->fileName = 'Nom Fichier'; +$lang->file->untitled = 'Sans Titre'; +$lang->file->extension = 'Format'; +$lang->file->size = 'Taille'; +$lang->file->encoding = 'Encodage'; +$lang->file->addedBy = 'Ajouté par'; +$lang->file->addedDate = 'Ajouté le'; +$lang->file->downloads = 'Téléchargements'; +$lang->file->extra = 'Commentaires'; + +$lang->file->dragFile = 'Faites glisser images ici.'; +$lang->file->childTaskTips = 'Il s\'agit d\'une sous-tâche s\'il y a un \'>\' devant le nom.'; +$lang->file->errorNotExists = "'%s' non trouvé."; +$lang->file->errorCanNotWrite = "'%s' non inscriptible. Changez les permissions. Entre sudo chmod -R 777 '%s' dans Linux."; +$lang->file->confirmDelete = " Voulez-vous le supprimer ?"; +$lang->file->errorFileSize = " Taille du fichier excédant la limite. Il ne peut être chargé !"; +$lang->file->errorFileUpload = " Echec du chargement. La taille du fichier peut excéder la limte."; +$lang->file->errorFileFormate = " Echec du chargement. Le format du fichier est non autorisé."; +$lang->file->errorFileMove = " Echec du chargement. Une erreur est survenue lors du chargement."; +$lang->file->dangerFile = " Le fichier n'a pas pu être chargé pour des raisons de sécurité."; +$lang->file->errorSuffix = 'Format incorrect. Fichiers .zip SEULEMENT !'; +$lang->file->errorExtract = "Echec de l'extraction des fichiers. Les fichiers peuvent être endommagé ou il y a un fichier invalide dans le zip."; +$lang->file->uploadImagesExplain = "Note : Chargez images au format .jpg, .jpeg, .gif, ou .png. Le nom de l'image sera le nom de la Story et l'image en sera sa description."; +$lang->file->fileNotFound = 'Fichier non trouvé. Le fichier physique a peut-être été supprimé par innadvertance !'; diff --git a/module/git/lang/fr.php b/module/git/lang/fr.php new file mode 100644 index 0000000000..80878d1075 --- /dev/null +++ b/module/git/lang/fr.php @@ -0,0 +1,16 @@ + + * @package git + * @version $Id$ + * @link https://www.zentao.pm + */ +/* Methods. */ +$lang->git->common = 'Git'; +$lang->git->cat = 'Voir Code Source'; +$lang->git->diff = 'Comparer Code Source'; +$lang->git->apiSync = 'API: Synchroniser Logs Git'; diff --git a/module/group/lang/fr.php b/module/group/lang/fr.php new file mode 100644 index 0000000000..5083cc3447 --- /dev/null +++ b/module/group/lang/fr.php @@ -0,0 +1,104 @@ + + * @package group + * @version $Id: en.php 4719 2013-05-03 02:20:28Z chencongzhi520@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->group->common = 'Privilège'; +$lang->group->browse = 'Groupes de Privilèges'; +$lang->group->create = 'Créer un Groupe'; +$lang->group->edit = 'Editer Groupe'; +$lang->group->copy = 'Copier Groupe'; +$lang->group->delete = 'Supprimer Groupe'; +$lang->group->manageView = 'Gérer droits consultation'; +$lang->group->managePriv = 'Gérer Privilèges'; +$lang->group->managePrivByGroup = 'Gérer Privilèges par Groupe'; +$lang->group->managePrivByModule = 'Gérer Privilèges par Module'; +$lang->group->byModuleTips = '(Shift/Ctrl pour sélection multiple)'; +$lang->group->manageMember = 'Gérer Membres'; +$lang->group->confirmDelete = "Voulez-vous supprimer ce groupe d'utilisateurs ?"; +$lang->group->successSaved = 'Sauvé.'; +$lang->group->errorNotSaved = 'Echec. Veuillez sélectionner actions et groupes.'; +$lang->group->viewList = 'Accès Consultation'; +$lang->group->productList = 'Accès ' . $lang->productCommon . 's'; +$lang->group->projectList = 'Accès ' . $lang->projectCommon . 's'; +$lang->group->dynamic = 'Accès Historique'; +$lang->group->noticeVisit = "Blanc signifie « pas de limitation d'accès »."; + +$lang->group->id = 'ID'; +$lang->group->name = 'Groupe'; +$lang->group->desc = 'Description'; +$lang->group->role = 'Rôle'; +$lang->group->acl = 'Right'; +$lang->group->users = 'Membres Groupe'; +$lang->group->module = 'Module'; +$lang->group->method = 'Méthode'; +$lang->group->priv = 'Groupe de Privilèges'; +$lang->group->option = 'Option'; +$lang->group->inside = "Groupe d'utilisateurs"; +$lang->group->outside = 'Autres utilisateurs'; +$lang->group->other = 'Autres'; +$lang->group->all = 'Tous les Privilèges'; + +$lang->group->copyOptions['copyPriv'] = 'Copier Privilèges'; +$lang->group->copyOptions['copyUser'] = 'Copier Utilisateurs'; + +$lang->group->versions[''] = 'History'; +$lang->group->versions['11_6_2'] = 'ZenTao11.6.2'; +$lang->group->versions['10_6'] = 'ZenTao10.6'; +$lang->group->versions['10_1'] = 'ZenTao10.1'; +$lang->group->versions['10_0_alpha']= 'ZenTao10.0.alpha'; +$lang->group->versions['9_8'] = 'ZenTao9.8'; +$lang->group->versions['9_6'] = 'ZenTao9.6'; +$lang->group->versions['9_5'] = 'ZenTao9.5'; +$lang->group->versions['9_2'] = 'ZenTao9.2'; +$lang->group->versions['9_1'] = 'ZenTao9.1'; +$lang->group->versions['9_0'] = 'ZenTao9.0'; +$lang->group->versions['8_4'] = 'ZenTao8.4'; +$lang->group->versions['8_3'] = 'ZenTao8.3'; +$lang->group->versions['8_2_beta'] = 'ZenTao8.2.beta'; +$lang->group->versions['8_0_1'] = 'ZenTao8.0.1'; +$lang->group->versions['8_0'] = 'ZenTao8.0'; +$lang->group->versions['7_4_beta'] = 'ZenTao7.4.beta'; +$lang->group->versions['7_3'] = 'ZenTao7.3'; +$lang->group->versions['7_2'] = 'ZenTao7.2'; +$lang->group->versions['7_1'] = 'ZenTao7.1'; +$lang->group->versions['6_4'] = 'ZenTao6.4'; +$lang->group->versions['6_3'] = 'ZenTao6.3'; +$lang->group->versions['6_2'] = 'ZenTao6.2'; +$lang->group->versions['6_1'] = 'ZenTao6.1'; +$lang->group->versions['5_3'] = 'ZenTao5.3'; +$lang->group->versions['5_1'] = 'ZenTao5.1'; +$lang->group->versions['5_0_beta2'] = 'ZenTao5.0.beta2'; +$lang->group->versions['5_0_beta1'] = 'ZenTao5.0.beta1'; +$lang->group->versions['4_3_beta'] = 'ZenTao4.3.beta'; +$lang->group->versions['4_2_beta'] = 'ZenTao4.2.beta'; +$lang->group->versions['4_1'] = 'ZenTao4.1'; +$lang->group->versions['4_0_1'] = 'ZenTao4.0.1'; +$lang->group->versions['4_0'] = 'ZenTao4.0'; +$lang->group->versions['4_0_beta2'] = 'ZenTao4.0.beta2'; +$lang->group->versions['4_0_beta1'] = 'ZenTao4.0.beta1'; +$lang->group->versions['3_3'] = 'ZenTao3.3'; +$lang->group->versions['3_2_1'] = 'ZenTao3.2.1'; +$lang->group->versions['3_2'] = 'ZenTao3.2'; +$lang->group->versions['3_1'] = 'ZenTao3.1'; +$lang->group->versions['3_0_beta2'] = 'ZenTao3.0.beta2'; +$lang->group->versions['3_0_beta1'] = 'ZenTao3.0.beta1'; +$lang->group->versions['2_4'] = 'ZenTao2.4'; +$lang->group->versions['2_3'] = 'ZenTao2.3'; +$lang->group->versions['2_2'] = 'ZenTao2.2'; +$lang->group->versions['2_1'] = 'ZenTao2.1'; +$lang->group->versions['2_0'] = 'ZenTao2.0'; +$lang->group->versions['1_5'] = 'ZenTao1.5'; +$lang->group->versions['1_4'] = 'ZenTao1.4'; +$lang->group->versions['1_3'] = 'ZenTao1.3'; +$lang->group->versions['1_2'] = 'ZenTao1.2'; +$lang->group->versions['1_1'] = 'ZenTao1.1'; +$lang->group->versions['1_0_1'] = 'ZenTao1.0.1'; + +include (dirname(__FILE__) . '/resource.php'); diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 8f4c84c6a4..d0a71e1404 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -658,25 +658,29 @@ $lang->testsuite->methodOrder[35] = 'unlinkCase'; $lang->testsuite->methodOrder[40] = 'batchUnlinkCases'; $lang->resource->caselib = new stdclass(); +$lang->resource->caselib->index = 'index'; $lang->resource->caselib->browse = 'browse'; $lang->resource->caselib->create = 'create'; $lang->resource->caselib->edit = 'edit'; -$lang->resource->caselib->createCase = 'createCase'; +$lang->resource->caselib->delete = 'delete'; $lang->resource->caselib->view = 'view'; +$lang->resource->caselib->createCase = 'createCase'; $lang->resource->caselib->batchCreateCase = 'batchCreateCase'; $lang->resource->caselib->exportTemplet = 'exportTemplet'; $lang->resource->caselib->import = 'importAction'; $lang->resource->caselib->showImport = 'showImport'; -$lang->caselib->methodOrder[0] = 'browse'; -$lang->caselib->methodOrder[5] = 'create'; -$lang->caselib->methodOrder[10] = 'edit'; -$lang->caselib->methodOrder[15] = 'createCase'; -$lang->caselib->methodOrder[20] = 'batchCreateCase'; +$lang->caselib->methodOrder[0] = 'index'; +$lang->caselib->methodOrder[5] = 'browse'; +$lang->caselib->methodOrder[10] = 'create'; +$lang->caselib->methodOrder[15] = 'edit'; +$lang->caselib->methodOrder[20] = 'delete'; $lang->caselib->methodOrder[25] = 'view'; -$lang->caselib->methodOrder[30] = 'exportTemplet'; -$lang->caselib->methodOrder[35] = 'import'; -$lang->caselib->methodOrder[40] = 'showImport'; +$lang->caselib->methodOrder[30] = 'createCase'; +$lang->caselib->methodOrder[35] = 'batchCreateCase'; +$lang->caselib->methodOrder[40] = 'exportTemplet'; +$lang->caselib->methodOrder[45] = 'import'; +$lang->caselib->methodOrder[50] = 'showImport'; /* Doc. */ $lang->resource->doc = new stdclass(); diff --git a/module/index/lang/fr.php b/module/index/lang/fr.php new file mode 100644 index 0000000000..12a473a936 --- /dev/null +++ b/module/index/lang/fr.php @@ -0,0 +1,3 @@ +index->common = 'Accueil'; +$lang->index->index = 'Accueil'; diff --git a/module/install/lang/fr.php b/module/install/lang/fr.php new file mode 100644 index 0000000000..31aee3bcc6 --- /dev/null +++ b/module/install/lang/fr.php @@ -0,0 +1,205 @@ + + * @package install + * @version $Id: en.php 4972 2013-07-02 06:50:10Z zhujinyonging@gmail.com $ + * @link https://www.zentao.pm + */ +$lang->install = new stdclass(); + +$lang->install->common = 'Installer'; +$lang->install->next = 'Suivant'; +$lang->install->pre = 'Retour'; +$lang->install->reload = 'Rafraichir'; +$lang->install->error = 'Erreur '; + +$lang->install->officeDomain = 'https://www.zentao.pm'; + +$lang->install->start = 'Commencez'; +$lang->install->keepInstalling = "Continuez l'installation de cette version"; +$lang->install->seeLatestRelease = 'Voir dernière version'; +$lang->install->welcome = "Merci d'avoir choisi ZenTao !"; +$lang->install->license = 'ZenTao est sous Z PUBLIC LICENSE(ZPL) 1.2'; +$lang->install->desc = <<Z Public License. It integrates with Product Management, Project Management, QA Management, Document Management, Todos Management, Company Management etc. ZenTao is the best choice for software project management. + +ZenTao ALM is built on PHP + MySQL and based on ZenTaoPHP framework, an independent framework developed by our team. Third-party developers/organizations can develop extensions or customize for their requirements. +EOT; +$lang->install->links = <<Nature Easy Soft Co., LTD
. +Official Website : https://www.zentao.pm +Technical Support : https://www.zentao.pm/forum/ +WhatsApp Group : https://chat.whatsapp.com/B6pi6b3gv0S7x7jqMxwhbF +LinkedIn Group: ZenTao Project Management Software +Facebook: Nature Easy Soft +Twitter: cneasysoft + +You are installing ZenTao %s. +EOT; + +$lang->install->newReleased= "Notice:Official Website has the latest version%s, released on %s."; +$lang->install->or = 'Or'; +$lang->install->checking = 'System Checkup'; +$lang->install->ok = 'Passed(√)'; +$lang->install->fail = 'Failed(×)'; +$lang->install->loaded = 'Loaded'; +$lang->install->unloaded = 'Not Loaded'; +$lang->install->exists = 'Found '; +$lang->install->notExists = 'Not found '; +$lang->install->writable = 'Writable '; +$lang->install->notWritable= 'Not Writable '; +$lang->install->phpINI = 'PHP ini File'; +$lang->install->checkItem = 'Item'; +$lang->install->current = 'Current Setting'; +$lang->install->result = 'Result'; +$lang->install->action = 'Action'; + +$lang->install->phpVersion = 'PHP Version'; +$lang->install->phpFail = 'PHP Version should be 5.2.0+'; + +$lang->install->pdo = 'PDO'; +$lang->install->pdoFail = 'Edit php.ini to load PDO extension.'; +$lang->install->pdoMySQL = 'PDO_MySQL'; +$lang->install->pdoMySQLFail = 'Edit php.ini to load PDO_MySQL extension.'; +$lang->install->json = 'JSON Extension'; +$lang->install->jsonFail = 'Edit php.ini to load JSON extension.'; +$lang->install->openssl = 'OpenSSL Extension'; +$lang->install->opensslFail = 'Edit php.ini to load openssl extension.'; +$lang->install->mbstring = 'Mbstring Extension'; +$lang->install->mbstringFail = 'Edit php.ini to load mbstring extension.'; +$lang->install->zlib = 'Zlib Extension'; +$lang->install->zlibFail = 'Edit php.ini to load zlib extension.'; +$lang->install->curl = 'Curl Extension'; +$lang->install->curlFail = 'Edit php.ini to load curl extension.'; +$lang->install->filter = 'Filter Extension'; +$lang->install->filterFail = 'Edit the php.ini file to load filter extension.'; +$lang->install->gd = 'GD Extension'; +$lang->install->gdFail = 'Edit the php.ini file to load gd extension.'; +$lang->install->iconv = 'Iconv Extension'; +$lang->install->iconvFail = 'Edit the php.ini file to load iconv extension.'; +$lang->install->tmpRoot = 'Temp Directory'; +$lang->install->dataRoot = 'Uploaded File Directory'; +$lang->install->session = 'Session Save Path'; +$lang->install->sessionFail = 'Edit the php.ini file to set session.save_path.'; +$lang->install->mkdirWin = '

%s directory has to be created.
Run mkdir %s to create it.

'; +$lang->install->chmodWin = ' "%s" privilege has to be changed.'; +$lang->install->mkdirLinux = '

%s directory has to be created.
Run mkdir -p %s to create it.

'; +$lang->install->chmodLinux = ' "%s" permison has to be changed.
Run chmod o=rwx -R %s to change it.'; + +$lang->install->timezone = 'Set Timezone'; +$lang->install->defaultLang = 'Default Language'; +$lang->install->dbHost = 'Database Host'; +$lang->install->dbHostNote = 'If 127.0.0.1 is not accessible, try localhost.'; +$lang->install->dbPort = 'Host Port'; +$lang->install->dbEncoding = 'Database Charset'; +$lang->install->dbUser = 'Database Username'; +$lang->install->dbPassword = 'Database Password'; +$lang->install->dbName = 'Database Name'; +$lang->install->dbPrefix = 'Table Prefix'; +$lang->install->clearDB = 'Clean up existing data'; +$lang->install->importDemoData = 'Import Demo Data'; +$lang->install->working = 'Operation Mode'; + +$lang->install->requestTypes['GET'] = 'GET'; +$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO'; + +$lang->install->workingList['full'] = 'Application Lifecycle Management'; +$lang->install->workingList['onlyTest'] = 'Only Test Management'; +$lang->install->workingList['onlyStory'] = 'Only Story Management'; +$lang->install->workingList['onlyTask'] = 'Only Task Management'; + +$lang->install->errorConnectDB = 'Echec de connexion à la base. '; +$lang->install->errorDBName = 'Le nom de la base ne doit pas contenir de “.” '; +$lang->install->errorCreateDB = 'Echec de création de la base.'; +$lang->install->errorTableExists = "La base existe. Si ZenTao a été installé précédemment, revenez à l'étape précédente et supprimez les données. Ensuite continuez l'installation."; +$lang->install->errorCreateTable = 'Echec en création de la base.'; +$lang->install->errorImportDemoData = "Echec de l'importation des données de démo."; + +$lang->install->setConfig = 'Créer fichier de configuration'; +$lang->install->key = 'Objet'; +$lang->install->value = 'Valeur'; +$lang->install->saveConfig = 'Sauver config'; +$lang->install->save2File = '
Copy the content in the text box above and save it to " %s ". You can change this configuration file later.
'; +$lang->install->saved2File = 'The configuration file has been saved to " %s ". You can change this file later.'; +$lang->install->errorNotSaveConfig = 'The configuration file is not saved.'; + +$lang->install->getPriv = 'Paramétrage Admin'; +$lang->install->company = 'Nom Entreprise'; +$lang->install->account = 'Compte Admin'; +$lang->install->password = 'Mot de Passe Admin'; +$lang->install->errorEmptyPassword = 'Password ne doit pas être vide.'; + +$lang->install->groupList['ADMIN']['name'] = 'Admin'; +$lang->install->groupList['ADMIN']['desc'] = 'Administrateur'; +$lang->install->groupList['DEV']['name'] = 'Dev.'; +$lang->install->groupList['DEV']['desc'] = 'Développeur'; +$lang->install->groupList['QA']['name'] = 'QA'; +$lang->install->groupList['QA']['desc'] = 'Testeur'; +$lang->install->groupList['PM']['name'] = 'PM'; +$lang->install->groupList['PM']['desc'] = 'Project Manager'; +$lang->install->groupList['PO']['name'] = 'PO'; +$lang->install->groupList['PO']['desc'] = 'Product Owner'; +$lang->install->groupList['TD']['name'] = 'Dev. Manager'; +$lang->install->groupList['TD']['desc'] = 'Développement Manager'; +$lang->install->groupList['PD']['name'] = 'PD'; +$lang->install->groupList['PD']['desc'] = 'Product Director'; +$lang->install->groupList['QD']['name'] = 'QD'; +$lang->install->groupList['QD']['desc'] = 'Test Manager'; +$lang->install->groupList['TOP']['name'] = 'Senior'; +$lang->install->groupList['TOP']['desc'] = 'Senior Manager'; +$lang->install->groupList['OTHERS']['name'] = 'Autres'; +$lang->install->groupList['OTHERS']['desc'] = 'Autres utilisateurs'; +$lang->install->groupList['LIMITED']['name'] = 'Utilisateur restreint'; +$lang->install->groupList['LIMITED']['desc'] = 'Les utilisateurs peuvent seulement éditer ce qui les concernent.'; + +$lang->install->cronList[''] = 'Moniteur Cron'; +$lang->install->cronList['moduleName=project&methodName=computeburn'] = 'Mise à jour Graphe Burndown'; +$lang->install->cronList['moduleName=report&methodName=remind'] = 'Rappel Tâches quotidiennes'; +$lang->install->cronList['moduleName=svn&methodName=run'] = 'Synchroniser SVN'; +$lang->install->cronList['moduleName=git&methodName=run'] = 'Synchroniser GIT'; +$lang->install->cronList['moduleName=backup&methodName=backup'] = 'Sauvegardes'; +$lang->install->cronList['moduleName=mail&methodName=asyncSend'] = 'Désynchroniser envoi Messages'; +$lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = 'Désynchroniser envoi Webhooks'; +$lang->install->cronList['moduleName=admin&methodName=deleteLog'] = 'Suppression Logs échus'; +$lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Créer tâches récurrentes'; + +$lang->install->success = "Installé !"; +$lang->install->login = 'Login ZenTao'; +$lang->install->register = "S'enregistrer sur la Communauté ZenTao"; + +$lang->install->joinZentao = <<Vous avez installé ZenTao %s. Supprimez install.php asap.

Note : Afin d'obtenir les dernières infos de ZenTao, enregistrz-vous chez ZenTao(www.zentao.pm).

+EOT; + +$lang->install->product = array('chanzhi', 'ranzhi'); + +$lang->install->promotion = "Products also from Nature Easy Soft team:"; +$lang->install->chanzhi = new stdclass(); +$lang->install->chanzhi->name = 'ZSITE'; +$lang->install->chanzhi->logo = 'images/main/chanzhi.ico'; +$lang->install->chanzhi->url = 'http://www.zsite.net'; +$lang->install->chanzhi->desc = << +
  • Article, Blog, Manual, Member, Shop, Forum, Feedback……
  • +
  • Customize page freely by theme, effect, widget, css, js and layout
  • +
  • Support desktop and mobile in one system
  • +
  • Deeply optimized for search engine
  • + +EOD; + +$lang->install->ranzhi = new stdclass(); +$lang->install->ranzhi->name = 'ZDOO'; +$lang->install->ranzhi->logo = 'images/main/ranzhi.ico'; +$lang->install->ranzhi->url = 'http://www.zdoo.org'; +$lang->install->ranzhi->desc = << +
  • CRM: Customer Management and Order Tracking
  • +
  • OA: Approve, Announce, Trip, Leave and so on.
  • +
  • Project,Task and Document management
  • +
  • Money: Income, Expense, Transfer, Invest and Debt
  • + +EOD; diff --git a/module/install/lang/zh-cn.php b/module/install/lang/zh-cn.php index 233ca7007d..e43cb88927 100644 --- a/module/install/lang/zh-cn.php +++ b/module/install/lang/zh-cn.php @@ -223,10 +223,10 @@ $lang->install->ydisk->logo = 'images/main/ydisk.ico'; $lang->install->ydisk->url = 'http://www.ydisk.cn'; $lang->install->ydisk->desc = << -
  • 绝对私有,只部署在自己的机器上。
  • -
  • 海量存储,只取决于您的硬盘大小。
  • -
  • 极限传输,只取决于您的网络带宽。
  • -
  • 极度安全,十二种权限组合。
  • +
  • 绝对私有:只部署在自己的机器上
  • +
  • 海量存储:只取决于您的硬盘大小
  • +
  • 极限传输:只取决于您的网络带宽
  • +
  • 极度安全:十二种权限组合
  • EOD; @@ -236,9 +236,9 @@ $lang->install->meshiot->logo = 'images/main/meshiot.ico'; $lang->install->meshiot->url = 'https://www.meshiot.com'; $lang->install->meshiot->desc = << -
  • 超性能网关,一个就可管65536个设备。
  • -
  • 独创无线电通讯协议,2500米穿墙无障碍。
  • -
  • 200余款传感器控制器,独创调光系统。
  • -
  • 可配电池,对既有场地设备无任何要求。
  • +
  • 超性能网关,一个可管6万个设备
  • +
  • 自研通讯协议,2.5公里穿墙无障碍
  • +
  • 上百款传感器控制器,独创调光系统
  • +
  • 可配电池,对既有场地无任何要求
  • EOD; diff --git a/module/install/lang/zh-tw.php b/module/install/lang/zh-tw.php index 408f77d992..d9bf487247 100644 --- a/module/install/lang/zh-tw.php +++ b/module/install/lang/zh-tw.php @@ -223,10 +223,10 @@ $lang->install->ydisk->logo = 'images/main/ydisk.ico'; $lang->install->ydisk->url = 'http://www.ydisk.cn'; $lang->install->ydisk->desc = << -
  • 絶對私有,只部署在自己的機器上。
  • -
  • 海量存儲,只取決於您的硬碟大小。
  • -
  • 極限傳輸,只取決於您的網絡頻寬。
  • -
  • 極度安全,十二種權限組合。
  • +
  • 絶對私有:只部署在自己的機器上
  • +
  • 海量存儲:只取決於您的硬碟大小
  • +
  • 極限傳輸:只取決於您的網絡頻寬
  • +
  • 極度安全:十二種權限組合
  • EOD; @@ -236,9 +236,9 @@ $lang->install->meshiot->logo = 'images/main/meshiot.ico'; $lang->install->meshiot->url = 'https://www.meshiot.com'; $lang->install->meshiot->desc = << -
  • 超性能網關,一個就可管65536個設備。
  • -
  • 獨創無線電通訊協議,2500米穿牆無障礙。
  • -
  • 200餘款感測器控製器,獨創調光系統。
  • -
  • 可配電池,對既有場地設備無任何要求。
  • +
  • 超性能網關,一個可管6萬個設備
  • +
  • 自研通訊協議,2.5公里穿牆無障礙
  • +
  • 上百款感測器控製器,獨創調光系統
  • +
  • 可配電池,對既有場地無任何要求
  • EOD; diff --git a/module/mail/lang/de.php b/module/mail/lang/de.php index 515f18fa30..5a6e7998dd 100644 --- a/module/mail/lang/de.php +++ b/module/mail/lang/de.php @@ -55,6 +55,7 @@ $lang->mail->sendTime = 'Gesendet am'; $lang->mail->status = 'Status'; $lang->mail->failReason = 'Problem'; +$lang->mail->statusList['wait'] = 'Wait'; $lang->mail->statusList['sended'] = 'Senden'; $lang->mail->statusList['fail'] = 'Fehlgeschlagen'; diff --git a/module/mail/lang/en.php b/module/mail/lang/en.php index 07b54eea35..3c4ec719a8 100755 --- a/module/mail/lang/en.php +++ b/module/mail/lang/en.php @@ -55,6 +55,7 @@ $lang->mail->sendTime = 'Sent'; $lang->mail->status = 'Status'; $lang->mail->failReason = 'Reason'; +$lang->mail->statusList['wait'] = 'Wait'; $lang->mail->statusList['sended'] = 'Sent'; $lang->mail->statusList['fail'] = 'Failed'; diff --git a/module/mail/lang/fr.php b/module/mail/lang/fr.php new file mode 100644 index 0000000000..58fb7b3589 --- /dev/null +++ b/module/mail/lang/fr.php @@ -0,0 +1,117 @@ +mail->common = 'Paramétrage Email'; +$lang->mail->index = 'Accueil Email'; +$lang->mail->detect = 'Détecter'; +$lang->mail->detectAction = 'Détecter par Adresse mail'; +$lang->mail->edit = 'Editer Paramétrages'; +$lang->mail->save = 'Sauver'; +$lang->mail->saveAction = 'Saver Paramétrages'; +$lang->mail->test = 'Test Envoi Email'; +$lang->mail->reset = 'Réinitialiser'; +$lang->mail->resetAction = 'Réinitialiser Paramétrages'; +$lang->mail->resend = 'Renvoyer'; +$lang->mail->resendAction = 'Renvoyer mail'; +$lang->mail->browse = 'Liste Email'; +$lang->mail->delete = 'Supprimer mail'; +$lang->mail->ztCloud = 'ZenTao CloudMail'; +$lang->mail->gmail = 'Gmail'; +$lang->mail->sendCloud = 'Notice SendCloud'; +$lang->mail->batchDelete = 'Suppression par Lot'; +$lang->mail->sendcloudUser = 'Sync. Contact'; +$lang->mail->agreeLicense = 'Oui'; +$lang->mail->disagree = 'Non'; + +$lang->mail->turnon = 'Notification Email'; +$lang->mail->async = 'Envoi Async'; +$lang->mail->fromAddress = 'Expéditeur mail'; +$lang->mail->fromName = 'Expéditeur'; +$lang->mail->domain = 'Domaine ZenTao'; +$lang->mail->host = 'Serveur SMTP'; +$lang->mail->port = 'Port SMTP'; +$lang->mail->auth = 'Validation SMTP'; +$lang->mail->username = 'Compte SMTP'; +$lang->mail->password = 'Mot de passe SMTP'; +$lang->mail->secure = 'Cryptage'; +$lang->mail->debug = 'Debug'; +$lang->mail->charset = 'Charset'; +$lang->mail->accessKey = "Clé d'Accès"; +$lang->mail->secretKey = "Clé Secrète"; +$lang->mail->license = 'ZenTao CloudMail Notice'; + +$lang->mail->selectMTA = 'Sélect Type'; +$lang->mail->smtp = 'SMTP'; + +$lang->mail->syncedUser = 'Synchronis'; +$lang->mail->unsyncUser = 'Non Synchronis'; +$lang->mail->sync = 'Synchronisation'; +$lang->mail->remove = 'Retirer'; + +$lang->mail->toList = 'Destinataire'; +$lang->mail->ccList = 'Copie '; +$lang->mail->subject = 'Sujet'; +$lang->mail->createdBy = 'Expéditeur'; +$lang->mail->createdDate = 'Création'; +$lang->mail->sendTime = 'Envoi'; +$lang->mail->status = 'Statut'; +$lang->mail->failReason = 'Raison'; + +$lang->mail->statusList['wait'] = 'Wait'; +$lang->mail->statusList['sended'] = 'Envoy'; +$lang->mail->statusList['fail'] = 'Echec'; + +$lang->mail->turnonList[1] = 'On'; +$lang->mail->turnonList[0] = 'Off'; + +$lang->mail->asyncList[1] = 'Oui'; +$lang->mail->asyncList[0] = 'Non'; + +$lang->mail->debugList[0] = 'Off'; +$lang->mail->debugList[1] = 'Normal'; +$lang->mail->debugList[2] = 'Haute'; + +$lang->mail->authList[1] = 'Oui'; +$lang->mail->authList[0] = 'Non'; + +$lang->mail->secureList[''] = 'Plain'; +$lang->mail->secureList['ssl'] = 'ssl'; +$lang->mail->secureList['tls'] = 'tls'; + +$lang->mail->more = 'Plus'; +$lang->mail->noticeResend = 'Le mail a été renvoyé !'; +$lang->mail->inputFromEmail = 'Expéditeur Email'; +$lang->mail->nextStep = 'Suivant'; +$lang->mail->successSaved = 'Paramétrage Email sauvegardés.'; +$lang->mail->testSubject = 'mail de test'; +$lang->mail->testContent = 'Les Paramétrages Email sont ok !'; +$lang->mail->successSended = 'Envoyé !'; +$lang->mail->confirmDelete = 'Voulez-vous le supprimer ?'; +$lang->mail->sendmailTips = "Note : l'expéditeur ne recevra pas ce mail."; +$lang->mail->needConfigure = "Les paramétrages Email n'ont pas été trouvés. Commencez par paramétrer l'Email."; +$lang->mail->connectFail = 'Echec de Connexion à ZenTao.'; +$lang->mail->centifyFail = 'Echec de Vérification. La clé secrète peut avoir été changée. Essayez à nouveau !'; +$lang->mail->nofsocket = 'Les fonctions fsocket sont désactivées. Les mails ne peuvent pas être envoyés. Modifiez allow_url_fopen dans php.ini pour ouvrir Onopenssl, et redémarrez Apache.'; +$lang->mail->noOpenssl = 'Activez Onopenssl, et redémarrez Apache.'; +$lang->mail->disableSecure = 'Pas de openssl. ssl et tls sont inactifs.'; +$lang->mail->sendCloudFail = 'Echec. Raison :'; +$lang->mail->sendCloudHelp = <<mail->sendCloudSuccess = 'Envoy'; +$lang->mail->closeSendCloud = 'Fermer SendCloud'; +$lang->mail->addressWhiteList = "Ajoutez le à la liste blanche de votre serveur de mail pour éviter d'être bloqué."; +$lang->mail->ztCloudNotice = <<mail->placeholder = new stdclass(); +$lang->mail->placeholder->password = "Certains serveurs de mails demandent un code d'autorisation, consultez le service d'Emails de votre provider."; diff --git a/module/mail/lang/zh-cn.php b/module/mail/lang/zh-cn.php index 5dbfa3dd91..d2bc8f2e77 100755 --- a/module/mail/lang/zh-cn.php +++ b/module/mail/lang/zh-cn.php @@ -55,6 +55,7 @@ $lang->mail->sendTime = '发送时间'; $lang->mail->status = '状态'; $lang->mail->failReason = '失败原因'; +$lang->mail->statusList['wait'] = '待发送'; $lang->mail->statusList['sended'] = '成功'; $lang->mail->statusList['fail'] = '失败'; diff --git a/module/mail/lang/zh-tw.php b/module/mail/lang/zh-tw.php index 614609d0df..ba1243728b 100644 --- a/module/mail/lang/zh-tw.php +++ b/module/mail/lang/zh-tw.php @@ -55,6 +55,7 @@ $lang->mail->sendTime = '發送時間'; $lang->mail->status = '狀態'; $lang->mail->failReason = '失敗原因'; +$lang->mail->statusList['wait'] = '待發送'; $lang->mail->statusList['sended'] = '成功'; $lang->mail->statusList['fail'] = '失敗'; diff --git a/module/message/lang/fr.php b/module/message/lang/fr.php new file mode 100644 index 0000000000..a51d788807 --- /dev/null +++ b/module/message/lang/fr.php @@ -0,0 +1,18 @@ +message->common = 'Notification'; +$lang->message->index = 'Accueil'; +$lang->message->setting = 'Paramétrage'; +$lang->message->browser = 'Browser Notification'; + +$lang->message->typeList['mail'] = 'Email'; +$lang->message->typeList['message'] = 'Notifications du navigateur'; +$lang->message->typeList['webhook'] = 'Webhook'; + +$lang->message->browserSetting = new stdclass(); +$lang->message->browserSetting->turnon = 'Notification'; +$lang->message->browserSetting->pollTime = 'Polling Time'; + +$lang->message->browserSetting->pollTimePlaceholder = 'Notify the time intervals for the search by seconds.'; + +$lang->message->browserSetting->turnonList[1] = 'On'; +$lang->message->browserSetting->turnonList[0] = 'Off'; diff --git a/module/misc/lang/de.php b/module/misc/lang/de.php index 20ab27477b..e1c9ae2d71 100644 --- a/module/misc/lang/de.php +++ b/module/misc/lang/de.php @@ -44,6 +44,7 @@ $lang->misc->zentao->support['manual'] = "Benutzer Handbuch"; $lang->misc->zentao->cowin['reportbug'] = "Bug melden "; $lang->misc->zentao->cowin['feedback'] = "Feedback"; +$lang->misc->zentao->cowin['translate'] = "Translate"; $lang->misc->zentao->cowin['recommend'] = "More"; $lang->misc->zentao->service['zentaotrain']= 'Zentao Training'; @@ -82,6 +83,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Letzte Version'; $lang->misc->feature->detailed = 'Details'; +$lang->misc->releaseDate['11.6.4'] = '2019-10-17'; $lang->misc->releaseDate['11.6.3'] = '2019-09-24'; $lang->misc->releaseDate['11.6.2'] = '2019-09-06'; $lang->misc->releaseDate['11.6.1'] = '2019-08-23'; @@ -115,6 +117,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.6.4'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.3'][] = array('title'=>'Fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.2'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.1'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php index cef9eadc8a..99f24b33a0 100644 --- a/module/misc/lang/en.php +++ b/module/misc/lang/en.php @@ -18,7 +18,7 @@ $lang->misc->enApi = 'http://api.zentao.pm'; $lang->misc->zentao = new stdclass(); $lang->misc->zentao->version = 'Version %s'; $lang->misc->zentao->labels['about'] = 'About'; -$lang->misc->zentao->labels['support'] = 'Technical Support'; +$lang->misc->zentao->labels['support'] = 'Support'; $lang->misc->zentao->labels['cowin'] = 'Help Us'; $lang->misc->zentao->labels['service'] = 'Service'; $lang->misc->zentao->labels['others'] = 'Other Products'; @@ -44,6 +44,7 @@ $lang->misc->zentao->support['manual'] = "User Manual"; $lang->misc->zentao->cowin['reportbug'] = "Report Bug "; $lang->misc->zentao->cowin['feedback'] = "Feedback"; +$lang->misc->zentao->cowin['translate'] = "Translate"; $lang->misc->zentao->cowin['recommend'] = "More"; $lang->misc->zentao->service['zentaotrain']= 'Zentao Training'; @@ -82,6 +83,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Latest Version'; $lang->misc->feature->detailed = 'Detail'; +$lang->misc->releaseDate['11.6.4'] = '2019-10-17'; $lang->misc->releaseDate['11.6.3'] = '2019-09-24'; $lang->misc->releaseDate['11.6.2'] = '2019-09-06'; $lang->misc->releaseDate['11.6.1'] = '2019-08-23'; @@ -115,6 +117,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.6.4'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.3'][] = array('title'=>'Fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.2'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); $lang->misc->feature->all['11.6.1'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); diff --git a/module/misc/lang/fr.php b/module/misc/lang/fr.php new file mode 100644 index 0000000000..62e00453c8 --- /dev/null +++ b/module/misc/lang/fr.php @@ -0,0 +1,205 @@ + + * @package misc + * @version $Id: English.php 824 2010-05-02 15:32:06Z wwccss $ + * @link https://www.zentao.pm + */ +$lang->misc = new stdclass(); +$lang->misc->common = 'Misc'; +$lang->misc->ping = 'Ping'; +$lang->misc->api = 'https://api.zentao.pm'; +$lang->misc->enApi = 'http://api.zentao.pm'; + +$lang->misc->zentao = new stdclass(); +$lang->misc->zentao->version = 'Version %s'; +$lang->misc->zentao->labels['about'] = 'A Propos'; +$lang->misc->zentao->labels['support'] = 'Support Technique'; +$lang->misc->zentao->labels['cowin'] = 'Aider ZenTao'; +$lang->misc->zentao->labels['service'] = 'Services'; +$lang->misc->zentao->labels['others'] = 'Other Products'; + +$lang->misc->zentao->icons['about'] = 'group'; +$lang->misc->zentao->icons['support'] = 'question-sign'; +$lang->misc->zentao->icons['cowin'] = 'hand-right'; +$lang->misc->zentao->icons['service'] = 'heart'; + +$lang->misc->zentao->about['proversion'] = 'ZenTao Pro'; +$lang->misc->zentao->about['official'] = "Site Officiel"; +$lang->misc->zentao->about['changelog'] = "Change Log"; +$lang->misc->zentao->about['license'] = "Licence"; + + + +$lang->misc->zentao->support['vip'] = "Support VIP"; +$lang->misc->zentao->support['manual'] = "English User Manual"; + + + + + +$lang->misc->zentao->cowin['reportbug'] = "Signaler un Bug"; +$lang->misc->zentao->cowin['feedback'] = "Feedback"; +$lang->misc->zentao->cowin['translate'] = "Translate"; +$lang->misc->zentao->cowin['recommend'] = "Plus..."; + +$lang->misc->zentao->service['zentaotrain']= 'Zentao Train'; +$lang->misc->zentao->service['idc'] = 'Zentao Cloud'; +$lang->misc->zentao->service['custom'] = 'Zentao Custom'; +$lang->misc->zentao->service['servicemore']= 'Plus...'; + +global $config; +$lang->misc->zentao->others['chanzhi'] = " Zsite"; +$lang->misc->zentao->others['ranzhi'] = " Zdoo"; + +$lang->misc->zentao->others['ydisk'] = " Y Disk"; +$lang->misc->zentao->others['meshiot' ] = " MeshioT"; + +$lang->misc->mobile = "Accès Mobile"; +$lang->misc->noGDLib = "SVP visitez %s via le navigateur de votre smartphone."; +$lang->misc->copyright = "© 2009 - 2019 Nature Easy Soft Email Renee@easysoft.ltd"; +$lang->misc->checkTable = "Vérifiez les Données de la Table"; +$lang->misc->needRepair = "Réparer la Table"; +$lang->misc->repairTable = "La Base de Données est peut-être endommagée. Elle a besoin d'être vérifiée et éventuellement réparée !"; +$lang->misc->repairFail = "La réparation a échoué. Allez dans le répertoire de données de votre table et essayez d'exécuter myisamchk -r -f %s.MYI pour la réparer. Mais on ne promet rien :-("; +$lang->misc->connectFail = "Echec de connexion à la Base de données. Erreur: %s,
    Vérifiez la log des erreurs MySQL et des dysfonctionnements."; +$lang->misc->tableName = "Nom de la Table"; +$lang->misc->tableStatus = "Statut"; +$lang->misc->novice = "Nouveau dans ZenTao ? Voulez-vous commencer le Tutoriel ?"; + +$lang->misc->noticeRepair = "
    Si vous n'êtes pas l'administrateur, contactez votre administrateur ZenTao pour réparer les tables.
    +
    Si vous êtes l'administrateur, connectez-vous à votre serveur ZenTao et créez un fichier vide dont le nom est %s.
    +

    Note :

    +
      +
    1. Laissez surtout le fichier vide.
    2. +
    3. Si le fichier existe déjà, supprimez-le et créez un nouveau fichier.
    4. Il y a bon espoir d'y arriver.
    5. +
    "; + +$lang->misc->feature = new stdclass(); +$lang->misc->feature->lastest = 'Dernière Version'; +$lang->misc->feature->detailed = 'Détail'; + +$lang->misc->releaseDate['11.6.4'] = '2019-10-17'; +$lang->misc->releaseDate['11.6.3'] = '2019-09-24'; +$lang->misc->releaseDate['11.6.2'] = '2019-09-06'; +$lang->misc->releaseDate['11.6.1'] = '2019-08-23'; +$lang->misc->releaseDate['11.6.stable'] = '2019-07-12'; +$lang->misc->releaseDate['11.5.2'] = '2019-06-26'; +$lang->misc->releaseDate['11.5.1'] = '2019-06-24'; +$lang->misc->releaseDate['11.5.stable'] = '2019-05-08'; +$lang->misc->releaseDate['11.4.1'] = '2019-04-08'; +$lang->misc->releaseDate['11.4.stable'] = '2019-03-25'; +$lang->misc->releaseDate['11.3.stable'] = '2019-02-27'; +$lang->misc->releaseDate['11.2.stable'] = '2019-01-30'; +$lang->misc->releaseDate['11.1.stable'] = '2019-01-04'; +$lang->misc->releaseDate['11.0.stable'] = '2018-12-21'; +$lang->misc->releaseDate['10.6.stable'] = '2018-11-20'; +$lang->misc->releaseDate['10.5.stable'] = '2018-10-25'; +$lang->misc->releaseDate['10.4.stable'] = '2018-09-28'; +$lang->misc->releaseDate['10.3.stable'] = '2018-08-10'; +$lang->misc->releaseDate['10.2.stable'] = '2018-08-02'; +$lang->misc->releaseDate['10.0.stable'] = '2018-06-26'; +$lang->misc->releaseDate['9.8.stable'] = '2018-01-17'; +$lang->misc->releaseDate['9.7.stable'] = '2017-12-22'; +$lang->misc->releaseDate['9.6.stable'] = '2017-11-06'; +$lang->misc->releaseDate['9.5.1'] = '2017-09-27'; +$lang->misc->releaseDate['9.3.beta'] = '2017-06-21'; +$lang->misc->releaseDate['9.1.stable'] = '2017-03-23'; +$lang->misc->releaseDate['9.0.beta'] = '2017-01-03'; +$lang->misc->releaseDate['8.3.stable'] = '2016-11-09'; +$lang->misc->releaseDate['8.2.stable'] = '2016-05-17'; +$lang->misc->releaseDate['7.4.beta'] = '2015-11-13'; +$lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; +$lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; +$lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; + +$lang->misc->feature->all['11.6.4'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); +$lang->misc->feature->all['11.6.3'][] = array('title'=>'Fix bug.', 'desc' => ''); +$lang->misc->feature->all['11.6.2'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); +$lang->misc->feature->all['11.6.1'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); + +$lang->misc->feature->all['11.6.stable'][] = array('title'=>'Improving the International Edition Interface', 'desc' => ''); +$lang->misc->feature->all['11.6.stable'][] = array('title'=>'Add translate function', 'desc' => ''); + +$lang->misc->feature->all['11.5.2'][] = array('title'=>'Increase the security of ZenTao and increase the login password for weak password check', 'desc' => ''); +$lang->misc->feature->all['11.5.1'][] = array('title'=>'Add a third-party authentication and fix bugs.', 'desc' => ''); + +$lang->misc->feature->all['11.5.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); +$lang->misc->feature->all['11.5.stable'][] = array('title'=>'Added filters to Dynamics', 'desc' => ''); +$lang->misc->feature->all['11.5.stable'][] = array('title'=>'Integrated the latest ZenTao client', 'desc' => ''); + +$lang->misc->feature->all['11.4.1'][] = array('title'=>'Optimize details and fix bug.', 'desc' => ''); + +$lang->misc->feature->all['11.4.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => '

    Enhanced test management.

    Optimized the UI of Plan, Release, and Build linked stories and bugs.

    Customize the feature whether to display files in child category.

    Optimize details and fix bug.

    '); + +$lang->misc->feature->all['11.3.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => '

    Add Child Plan to a Plan

    Optimize the chosen

    Add Timezone settings

    Optimize Document Library and Document modules

    '); + +$lang->misc->feature->all['11.2.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => '

    Add upgrade logs and database checkup after upgrading

    Fixed ZenTao client and other bugs, and optimized details.

    '); + +$lang->misc->feature->all['11.1.stable'][] = array('title'=>'Fix Bug.', 'desc' => ''); + +$lang->misc->feature->all['11.0.stable'][] = array('title'=>'ZenTao integrated desktop.', 'desc' => ''); + +$lang->misc->feature->all['10.6.stable'][] = array('title'=>'Adjust backup mechanism', 'desc' => '

    Increase backup settings and make backup more flexible

    Show backup progress

    Change the backup directory

    '); +$lang->misc->feature->all['10.6.stable'][] = array('title'=>'Optimize and adjust menu', 'desc' => '

    Adjust admin menu

    Adjust the secondary menu of My and Project

    '); + +$lang->misc->feature->all['10.5.stable'][] = array('title'=>'Adjust document layout', 'desc' => "

    Adjust the layout method on the left side of the document library.

    Add filter conditions at the bottom of the document library menu.

    "); +$lang->misc->feature->all['10.5.stable'][] = array('title'=>'Adjust the child task logic and optimize the display of parent-child task.', 'desc' => ''); + +$lang->misc->feature->all['10.4.stable'][] = array('title'=>'Optimize and adjust new interface', 'desc' => '

    Detail page restore to the previous layout.

    Refactore forms to add user pages

    When use cases are executed, do not update the use case stause if the user manually chooses to pass and write the results.

    '); +$lang->misc->feature->all['10.4.stable'][] = array('title'=>'After the user machine hibernates and the login fails, the session will be refreshed again.', 'desc' => ''); +$lang->misc->feature->all['10.4.stable'][] = array('title'=>'Upgrade existing interface mechanisms', 'desc' => ''); + +$lang->misc->feature->all['10.3.stable'][] = array('title'=>'Fix Bug.', 'desc' => ''); +$lang->misc->feature->all['10.2.stable'][] = array('title'=>'ZenTao desktop is integrated!', 'desc' => ''); + +$lang->misc->feature->all['10.0.stable'][] = array('title'=>'New UI/UX and new experience', 'desc' => '
    1. My Dashboard
    2. Dynamics
    3. Product Home
    4. Product Overview
    5. Roadmap
    6. Project Home
    7. Project overview
    8. QA Home
    9. Document Home
    10. Added work report on My Dashboard
    11. Add/Edit/Finish todos on My Dashboard
    12. Add prodcut report on Product Home
    13. Add prodcut overview on Product Home
    14. Add project report on Project Home
    15. Add project overview on Project Home
    16. Add Testing report on QA Home
    17. All Product/product Home/All Project/Project Home/QA Home is moved from the right of the secondary Navbar to the left.
    18. Kanban/Burndown/Tree/ByGroup of Project/Task has been moved from the third Navbar to the secondary one; Tree/ByGroup/Task List has been integrated to a drop-down.
    19. Bug/Build of Project on the secondary Navbar has been integrated to a drop-down.
    20. Display build and list by group, which is more reasonable.
    21. Added tree to display document on the left of the page.
    22. Added quick entry to document, including Last Update, My Doc and My Favorite
    23. Added My Favorite to Doc module.
    '); + +$lang->misc->feature->all['9.8.stable'][] = array('title'=>'Message centralized management', 'desc' => '

    Gather Mail,SMS,webhook into Message

    '); +$lang->misc->feature->all['9.8.stable'][] = array('title'=>'Add recurred Todo', 'desc' => ''); +$lang->misc->feature->all['9.8.stable'][] = array('title'=>"Add Block of 'AssignedToMe'", 'desc' => ''); +$lang->misc->feature->all['9.8.stable'][] = array('title'=>'Support generating reports on Test Builds', 'desc' => ''); + +$lang->misc->feature->all['9.7.stable'][] = array('title'=>'Optimize International package. Added Demo data.', 'desc' => ''); + +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'Added Webhook Interface feature', 'desc' => 'Support communication with BearyChat, Dingding'); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'Added Point', 'desc' => 'More skilled application, more score'); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'Added multiple user task and child tasks to Project', 'desc' => ''); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'Added Product line management to Product', 'desc' => ''); + +$lang->misc->feature->all['9.5.1'][] = array('title'=>'Added restricted actions.', 'desc' => ''); + +$lang->misc->feature->all['9.3.beta'][] = array('title'=>'Upgraded ZenTao framework,enhanced security', 'desc' => ''); + +$lang->misc->feature->all['9.1.stable'][] = array('title'=>'optimize Test View', 'desc' => '

    Added TestSuite, CaseLibrary and QA Report

    '); +$lang->misc->feature->all['9.1.stable'][] = array('title'=>'Support Group steps of TestCase', 'desc' => ''); + +$lang->misc->feature->all['9.0.beta'][] = array('title'=>'ZenTao CloudMail has been added.', 'desc' => '

    ZenTao CloudMail is a free Email service launched jointly with SendCloud. Once binded with ZenTao and passed verification, users can use this service.

    '); +$lang->misc->feature->all['9.0.beta'][] = array('title'=>'Optimized Rich Text Editor and Markdown Editor.', 'desc' => ''); + +$lang->misc->feature->all['8.3.stable'][] = array('title'=>'Improved Documentation.', 'desc' => '

    Added Document Home, restructured document library, and added privileges.

    Markdown Editor is supported,and privilege and version managment is added.

    '); + +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Custom Home', 'desc' => '

    You can add blocks to Dashboard and arrange the layout.

    My Zone, Product, Project, and QA all support home custom mentioned before.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Custom Navigation', 'desc' => '

    You can decide which project show in navigation bar and the order of projects shown in the bar.

    Hover on the navigation bar and a sign will show to its right. Click the sign and a dialog box "Custom Navigation" will show. Drag the block name to switch its order on navigation bar.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Batch Add/Edit Custom', 'desc' => '

    You can batch add and edit fields on custom pages.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Custom Story/Task/Bug/Case', 'desc' => '

    You can custom fileds when add a Story/Task/Bug/Case.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Custom Export', 'desc' => '

    You can custom fileds when export a Story/Task/Bug/Case pages. You can also save it as template for next export.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>'Story/Task/Bug/Case Search ', 'desc' => '

    On Story/Task/Bug/Case List page, you can do a combined search on Modules and Tabs.

    '); +$lang->misc->feature->all['8.2.stable'][] = array('title'=>"ZenTao Tutorial", 'desc' => '

    Tutorial for rookies is added for first-time users to know how to use ZenTao.

    '); + +$lang->misc->feature->all['7.4.beta'][] = array('title'=>'Product branch feature is added.', 'desc' => '

    Product branch/platform is added, and its related Story/Plan/Bug/Case/Module has Branch added too.

    '); +$lang->misc->feature->all['7.4.beta'][] = array('title'=>'Release Module is improved.', 'desc' => '

    Stop action has been added. If Stop to manage it, the Release will not show when Report Bug.

    Bugs that have been omitted in the Release will be related manually.

    '); +$lang->misc->feature->all['7.4.beta'][] = array('title'=>'Create pages of Story and Bug are improved.', 'desc' => ''); + +$lang->misc->feature->all['7.2.stable'][] = array('title'=>'Security Enhanced', 'desc' => '

    Admin weak passwork check is enhanced.

    ok file is required when code/upload an extension.

    Sensitive action requires Admin password.

    Do striptags, specialchars to content entered in ZenTao.

    '); +$lang->misc->feature->all['7.2.stable'][] = array('title'=>'Details Improved', 'desc' => ''); + +$lang->misc->feature->all['7.1.stable'][] = array('title'=>'Framework of Cron is added.', 'desc' => 'Framework of Cron is added. Daily notification, Burndown Update, Backup, Send Email and so on have been added.'); +$lang->misc->feature->all['7.1.stable'][] = array('title'=>'rpm and deb packages are provided.', 'desc' => ''); + +$lang->misc->feature->all['6.3.stable'][] = array('title'=>'Data table is added.', 'desc' => '

    Fields can be customized in data table and data will be displayed according to customized fields.

    '); +$lang->misc->feature->all['6.3.stable'][] = array('title'=>'Continue improving details', 'desc' => ''); diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index 97d1bbf48b..455bb103b9 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -44,6 +44,7 @@ $lang->misc->zentao->support['qqgroup'] = "官方QQ群"; $lang->misc->zentao->cowin['reportbug'] = "汇报Bug"; $lang->misc->zentao->cowin['feedback'] = "反馈需求"; +$lang->misc->zentao->cowin['translate'] = "参与翻译"; $lang->misc->zentao->cowin['recommend'] = "推荐给朋友"; $lang->misc->zentao->service['zentaotrain']= '禅道使用培训'; @@ -82,6 +83,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '详情'; +$lang->misc->releaseDate['11.6.4'] = '2019-10-17'; $lang->misc->releaseDate['11.6.3'] = '2019-09-24'; $lang->misc->releaseDate['11.6.2'] = '2019-09-06'; $lang->misc->releaseDate['11.6.1'] = '2019-08-23'; @@ -115,6 +117,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.6.4'][] = array('title'=>'完善细节,修复Bug', 'desc' => ''); $lang->misc->feature->all['11.6.3'][] = array('title'=>'修复Bug', 'desc' => ''); $lang->misc->feature->all['11.6.2'][] = array('title'=>'完善细节,修复Bug', 'desc' => ''); $lang->misc->feature->all['11.6.1'][] = array('title'=>'完善细节,修复Bug', 'desc' => ''); diff --git a/module/misc/lang/zh-tw.php b/module/misc/lang/zh-tw.php index b4fa438a82..86e91c33c4 100644 --- a/module/misc/lang/zh-tw.php +++ b/module/misc/lang/zh-tw.php @@ -44,6 +44,7 @@ $lang->misc->zentao->support['qqgroup'] = "官方QQ群"; $lang->misc->zentao->cowin['reportbug'] = "彙報Bug"; $lang->misc->zentao->cowin['feedback'] = "反饋需求"; +$lang->misc->zentao->cowin['translate'] = "參與翻譯"; $lang->misc->zentao->cowin['recommend'] = "推薦給朋友"; $lang->misc->zentao->service['zentaotrain']= '禪道使用培訓'; @@ -82,6 +83,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '詳情'; +$lang->misc->releaseDate['11.6.4'] = '2019-10-17'; $lang->misc->releaseDate['11.6.3'] = '2019-09-24'; $lang->misc->releaseDate['11.6.2'] = '2019-09-06'; $lang->misc->releaseDate['11.6.1'] = '2019-08-23'; @@ -115,6 +117,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.6.4'][] = array('title'=>'完善細節,修復Bug', 'desc' => ''); $lang->misc->feature->all['11.6.3'][] = array('title'=>'修復Bug', 'desc' => ''); $lang->misc->feature->all['11.6.2'][] = array('title'=>'完善細節,修復Bug', 'desc' => ''); $lang->misc->feature->all['11.6.1'][] = array('title'=>'完善細節,修復Bug', 'desc' => ''); diff --git a/module/my/control.php b/module/my/control.php index a9559267ec..9bd379a8b0 100644 --- a/module/my/control.php +++ b/module/my/control.php @@ -399,6 +399,7 @@ class my extends control $this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->changePassword; $this->view->position[] = $this->lang->my->changePassword; $this->view->user = $this->user->getById($this->app->user->account); + $this->view->rand = $this->user->updateSessionRandom(); $this->display(); } diff --git a/module/my/js/changepassword.js b/module/my/js/changepassword.js new file mode 100644 index 0000000000..46546c5ecf --- /dev/null +++ b/module/my/js/changepassword.js @@ -0,0 +1,25 @@ +$(document).ready(function() +{ + var originalEncrypted = false; + $('#originalPassword').change(function(){originalEncrypted = false}); + + var password1Encrypted = false + var password2Encrypted = false + $('#password1').change(function(){password1Encrypted = false}); + $('#password2').change(function(){password2Encrypted = false}); + + $('#submit').click(function() + { + var password = $('input#originalPassword').val(); + var rand = $('input#verifyRand').val(); + if(!originalEncrypted && password) $('input#originalPassword').val(md5(md5(password) + rand)); + originalEncrypted = true; + + var password1 = $('#password1').val(); + var password2 = $('#password2').val(); + if(password1 && !password1Encrypted) $('#password1').val(md5(password1) + rand); + if(password2 && !password2Encrypted) $('#password2').val(md5(password2) + rand); + password1Encrypted = true; + password2Encrypted = true; + }); +}); diff --git a/module/my/js/editprofile.js b/module/my/js/editprofile.js index e585d83bcd..6a25980c4f 100644 --- a/module/my/js/editprofile.js +++ b/module/my/js/editprofile.js @@ -1,9 +1,25 @@ $(document).ready(function() { + var verifyEncrypted = false; + $('#verifyPassword').change(function(){verifyEncrypted = false}); + + var password1Encrypted = false + var password2Encrypted = false + $('#password1').change(function(){password1Encrypted = false}); + $('#password2').change(function(){password2Encrypted = false}); + $('#dataform').submit(function() { var password = $('input#verifyPassword').val(); var rand = $('input#verifyRand').val(); - $('input#verifyPassword').val(md5(md5(password) + rand)); + if(!verifyEncrypted && password) $('input#verifyPassword').val(md5(md5(password) + rand)); + verifyEncrypted = true; + + var password1 = $('#password1').val(); + var password2 = $('#password2').val(); + if(password1 && !password1Encrypted) $('#password1').val(md5(password1) + rand); + if(password2 && !password2Encrypted) $('#password2').val(md5(password2) + rand); + password1Encrypted = true; + password2Encrypted = true; }); }); diff --git a/module/my/lang/fr.php b/module/my/lang/fr.php new file mode 100644 index 0000000000..2b098562c2 --- /dev/null +++ b/module/my/lang/fr.php @@ -0,0 +1,53 @@ +my->common = 'Tableau de Bord'; + +/* Method List。*/ +$lang->my->index = 'Accueil'; +$lang->my->todo = 'Mon Agenda'; +$lang->my->calendar = 'Calendrier'; +$lang->my->task = 'Mes Tâches'; +$lang->my->bug = 'Mes Bugs'; +$lang->my->testTask = 'Mes Builds'; +$lang->my->testCase = 'Mes CasTests'; +$lang->my->story = 'Mes Stories'; +$lang->my->myProject = "Mes {$lang->projectCommon}s"; +$lang->my->profile = 'Mon Profil'; +$lang->my->dynamic = 'Mon Historique'; +$lang->my->editProfile = 'Edit Profil'; +$lang->my->changePassword = 'Changer le Mot de Passe'; +$lang->my->unbind = 'Dissocier de Zdoo'; +$lang->my->manageContacts = 'Gérer Contact'; +$lang->my->deleteContacts = 'Supprimer Contact'; +$lang->my->shareContacts = 'Public'; +$lang->my->limited = 'Actions Limitées (Les utilisateurs peuvent seulement éditer le contenu de ce qui leur est affecté.)'; +$lang->my->score = 'Mes Points'; +$lang->my->scoreRule = 'Règles Point'; +$lang->my->noTodo = "Je n'ai rien à faire pour l'instant."; + +$lang->my->taskMenu = new stdclass(); +$lang->my->taskMenu->assignedToMe = "Tâches qui me sont affectées"; +$lang->my->taskMenu->openedByMe = "Tâches que j'ai créées"; +$lang->my->taskMenu->finishedByMe = "Tâches que j'ai terminées"; +$lang->my->taskMenu->closedByMe = "Tâches que j'ai fermées"; +$lang->my->taskMenu->canceledByMe = "Tâches que j'ai annulées"; + +$lang->my->storyMenu = new stdclass(); +$lang->my->storyMenu->assignedToMe = 'Stories qui me sont affectées'; +$lang->my->storyMenu->openedByMe = "Stories que j'ai créées"; +$lang->my->storyMenu->reviewedByMe = "Stories que j'ai acceptées"; +$lang->my->storyMenu->closedByMe = "Stories que j'ai fermées"; + +$lang->my->home = new stdclass(); +$lang->my->home->latest = 'Historique'; +$lang->my->home->action = "%s, %s %s %s %s."; +$lang->my->home->projects = $lang->projectCommon; +$lang->my->home->products = $lang->productCommon; +$lang->my->home->createProject = "Créer un {$lang->projectCommon}"; +$lang->my->home->createProduct = "Créer un {$lang->productCommon}"; +$lang->my->home->help = "Aide"; +$lang->my->home->noProductsTip = "Aucun {$lang->productCommon} ici."; + +$lang->my->form = new stdclass(); +$lang->my->form->lblBasic = 'Infos Basiques'; +$lang->my->form->lblContact = 'Infos Contact'; +$lang->my->form->lblAccount = 'Infos Compte'; diff --git a/module/my/view/changepassword.html.php b/module/my/view/changepassword.html.php index 610357e045..62cd33577c 100755 --- a/module/my/view/changepassword.html.php +++ b/module/my/view/changepassword.html.php @@ -11,6 +11,7 @@ */ ?> +