Compare commits

...

28 Commits

Author SHA1 Message Date
Timothee
0cac103e7d N°7383 Show data table even when there is no data after filtering 2024-12-27 18:06:07 +01:00
Eric Espie
32ef639ce1 N°7803 - MTP from itophub/designer failing in itop 3.2.0 2024-12-16 16:44:59 +01:00
Purple Grape
8647a76dbf 🌐 Translations - improved translation for zh cn 20241108 (#679)
* improved translation for zh cn
2024-12-16 11:39:26 +01:00
jf-cbd
47cd8bce31 Security hardening 2024-12-16 11:05:16 +01:00
jf-cbd
86c677b2ca Merge remote-tracking branch 'origin/support/3.1' into support/3.2
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php
2024-12-16 11:02:37 +01:00
Eric Espie
960129316d N°8050 - Fix regression due to directories filter changes 2024-12-16 10:56:06 +01:00
jf-cbd
1fa50f695d Security hardening 2024-12-16 10:47:06 +01:00
jf-cbd
692cf4f635 Merge branch 'support/2.7' into support/3.1 2024-12-16 10:27:00 +01:00
jf-cbd
95aa444ee6 Security hardening 2024-12-13 16:48:13 +01:00
jf-cbd
f5de808c7c Security hardening (#685)
* security hardening
2024-12-13 15:09:18 +01:00
Eric Espie
fc388313d7 N°8050 - Problems with interface discovery from itop 2024-12-13 10:14:17 +01:00
odain
d544ee5498 N°7750 - ci enhance test 2024-12-13 09:35:35 +01:00
odain
ce187550f6 N°7750 - Fix display regression 2024-12-12 12:21:57 +01:00
Eric Espie
5d15a08824 🥅 Fast setup error display 2024-12-12 09:55:16 +01:00
odain
8135316119 N°7750 - Bug with OQL set as Shortcut 2024-12-11 16:05:15 +01:00
Eric Espie
868c0ae836 N°7997 - Sharing Base incompatible with iTop >= 3.1 (code review) 2024-12-11 15:51:36 +01:00
Eric Espie
d03d4fce5f N°7997 - Sharing Base incompatible with iTop >= 3.1 2024-12-11 13:35:15 +01:00
Eric Espie
aa55c2b30f N°7997 - Sharing Base incompatible with iTop >= 3.1 2024-12-11 13:28:37 +01:00
Eric Espie
9d3b46b919 🥅 Fast setup error display 2024-12-11 11:40:03 +01:00
Eric Espie
01b4dbba71 🥅 Fast setup error display 2024-12-11 11:20:32 +01:00
Eric Espie
72ac4096c1 N°7854 - ⬆️ Bump twig version 2024-12-10 17:08:48 +01:00
Eric Espie
19559b08a7 N°7854 - ⬆️ Bump twig version 2024-12-10 10:52:30 +01:00
Eric Espie
346564ca0e N°7854 - ⬆️ Bump twig version 2024-12-10 10:11:28 +01:00
Eric Espie
1bf53bae2a N°7871 - unable to migrate to itop3.2 if a trigger on object mention without "mentioned filter" exists 2024-12-09 17:05:07 +01:00
Eric Espie
29ce042916 N°7867 - Issue with MTP offline (reset cache in metamodel) 2024-12-09 10:38:50 +01:00
odain
83539d6d4c N°7446 - Make ItopCustomDatamodelTestCase work with modules in production-modules 2024-12-05 11:29:05 +01:00
Eric Espie
e6a7b926f6 N°7852 - Issue on Class groups definition when checking EventNotification class 2024-12-05 11:14:19 +01:00
Eric Espie
b30e053236 N°8020 - Bugs MFA and designer incompatibility 2024-12-03 16:42:27 +01:00
268 changed files with 16777 additions and 9284 deletions

View File

@@ -825,49 +825,38 @@ class UserRightsProfile extends UserRightsAddOnAPI
{
// We are protected by GetSelectFilter: the object set contains objects allowed or shared for reading
// We have to answer NO for objects shared for reading purposes
if (self::HasSharing())
{
$aClassProps = SharedObject::GetSharedClassProperties($sClass);
if ($aClassProps)
{
// This class is shared, GetSelectFilter may allow some objects for read only
// But currently we are checking wether the objects might be written...
// Let's exclude the objects based on the relevant criteria
if (self::HasSharing() && SharedObject::GetSharedClassProperties($sClass)) {
// This class is shared, GetSelectFilter may allow some objects for read only
// But currently we are checking whether the objects might be written...
// Let's exclude the objects based on the relevant criteria
$sOrgAttCode = self::GetOwnerOrganizationAttCode($sClass);
if (!is_null($sOrgAttCode))
{
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
if (!is_null($aUserOrgs) && count($aUserOrgs) > 0)
{
$iCountNO = 0;
$iCountYES = 0;
$oInstanceSet->Rewind();
while($oObject = $oInstanceSet->Fetch())
{
$iOrg = $oObject->Get($sOrgAttCode);
if (in_array($iOrg, $aUserOrgs))
{
$iCountYES++;
}
else
{
$iCountNO++;
}
}
if ($iCountNO == 0)
{
$iPermission = UR_ALLOWED_YES;
}
elseif ($iCountYES == 0)
{
$iPermission = UR_ALLOWED_NO;
}
else
{
$iPermission = UR_ALLOWED_DEPENDS;
// Use $oInstanceSet only if sClass is the main class
if (!is_a($oInstanceSet->GetClass(), $sClass, true)) {
/** @var \DBObjectSet $oInstanceSet */
throw new CoreException(__FUNCTION__.': Expecting object set to be of class '.$sClass.' but it is of class '.$oInstanceSet->GetClass(), ['OQL_Query' => $oInstanceSet->GetFilter()->ToOQL(), 'classes' => $oInstanceSet->GetSelectedClasses()]);
}
$sOrgAttCode = self::GetOwnerOrganizationAttCode($sClass);
if (!is_null($sOrgAttCode)) {
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
if (!is_null($aUserOrgs) && count($aUserOrgs) > 0) {
$iCountNO = 0;
$iCountYES = 0;
$oInstanceSet->Rewind();
while ($oObject = $oInstanceSet->Fetch()) {
$iOrg = $oObject->Get($sOrgAttCode);
if (in_array($iOrg, $aUserOrgs)) {
$iCountYES++;
} else {
$iCountNO++;
}
}
if ($iCountNO == 0) {
$iPermission = UR_ALLOWED_YES;
} elseif ($iCountYES == 0) {
$iPermission = UR_ALLOWED_NO;
} else {
$iPermission = UR_ALLOWED_DEPENDS;
}
}
}
}
@@ -982,4 +971,3 @@ class UserRightsProfile extends UserRightsAddOnAPI
UserRights::SelectModule('UserRightsProfile');
?>

View File

@@ -2024,8 +2024,8 @@ class MenuBlock extends DisplayBlock
$sSelectedClassName = MetaModel::GetName($sSelectedClass);
// Check rights on class
$bIsBulkModifyAllowed = (!MetaModel::IsAbstract($sSelectedClass)) && UserRights::IsActionAllowed($sSelectedClass, UR_ACTION_BULK_MODIFY, $oSet) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
$bIsBulkDeleteAllowed = (bool) UserRights::IsActionAllowed($sSelectedClass, UR_ACTION_BULK_DELETE, $sSelectedClass);
$bIsBulkModifyAllowed = (!MetaModel::IsAbstract($sSelectedClass)) && UserRights::IsActionAllowed($sSelectedClass, UR_ACTION_BULK_MODIFY) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
$bIsBulkDeleteAllowed = (bool) UserRights::IsActionAllowed($sSelectedClass, UR_ACTION_BULK_DELETE);
// Refine filter on selected class so bullk actions occur on the right class
$oSelectedClassFilter = $this->GetFilter()->DeepClone();

View File

@@ -1159,11 +1159,11 @@ class OQLMenuNode extends MenuNode
{
$sUsageId = utils::GetSafeId($sUsageId);
$oSearch = DBObjectSearch::FromOQL($sOql);
$sClass= $oSearch->GetClass();
$sClass= $oSearch->GetClass();
$sIcon = MetaModel::GetClassIcon($sClass, false);
if ($bSearchPane) {
$aParams = array_merge(['open' => $bSearchOpen, 'table_id' => $sUsageId, 'submit_on_load' => false], $aExtraParams);
$oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams);
$oBlock = new DisplayBlock($oSearch, DisplayBlock::ENUM_STYLE_SEARCH, false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, 0);
$oPage->add("<div class='sf_results_area ibo-add-margin-top-250' data-target='search_results'>");
}

View File

@@ -1451,9 +1451,12 @@ class utils
* @return string A path to a folder into which any module can store cache data
* The corresponding folder is created or cleaned upon code compilation
*/
public static function GetCachePath()
public static function GetCachePath(string $sEnvironment = null): string
{
return static::GetDataPath().'cache-'.MetaModel::GetEnvironment().'/';
if (is_null($sEnvironment)) {
$sEnvironment = MetaModel::GetEnvironment();
}
return static::GetDataPath()."cache-$sEnvironment/";
}
/**

102
composer.lock generated
View File

@@ -3929,6 +3929,82 @@
],
"time": "2023-01-26T09:26:14+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php81\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-php83",
"version": "v1.28.0",
@@ -4976,30 +5052,38 @@
},
{
"name": "twig/twig",
"version": "v3.8.0",
"version": "v3.16.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561",
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.0.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php80": "^1.22"
"symfony/polyfill-php81": "^1.29"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"type": "library",
"autoload": {
"files": [
"src/Resources/core.php",
"src/Resources/debug.php",
"src/Resources/escaper.php",
"src/Resources/string_loader.php"
],
"psr-4": {
"Twig\\": "src/"
}
@@ -5032,7 +5116,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.8.0"
"source": "https://github.com/twigphp/Twig/tree/v3.16.0"
},
"funding": [
{
@@ -5044,7 +5128,7 @@
"type": "tidelift"
}
],
"time": "2023-11-21T18:54:41+00:00"
"time": "2024-11-29T08:27:05+00:00"
},
{
"name": "webmozart/assert",

View File

@@ -1715,8 +1715,8 @@ class AttributeLinkedSet extends AttributeDefinition
public function GetEditMode()
{
return $this->GetOptional('edit_mode', LINKSET_EDITMODE_ACTIONS);
}
}
/**
* @return int see LINKSET_EDITWHEN_* constants
* @since 3.1.1 3.2.0 N°6385
@@ -1758,7 +1758,7 @@ class AttributeLinkedSet extends AttributeDefinition
{
return $this->GetOptional('with_php_computation', false);
}
public function GetLinkedClass()
{
return $this->Get('linked_class');
@@ -9433,8 +9433,13 @@ class AttributeStopWatch extends AttributeDefinition
case 'deadline':
if ($value)
{
$sDate = date(AttributeDateTime::GetInternalFormat(), $value);
$sRet = AttributeDeadline::FormatDeadline($sDate);
if (is_int($value))
{
$sDate = date(AttributeDateTime::GetInternalFormat(), $value);
$sRet = AttributeDeadline::FormatDeadline($sDate);
} else {
$sRet = $value;
}
}
else
{

View File

@@ -850,6 +850,18 @@
<field id="language" xsi:type="AttributeApplicationLanguage"/>
</fields>
</class>
<class id="Event" _delta="define">
<!-- Generated by toolkit/export-class-to-meta.php -->
<parent>DBObject</parent>
<properties>
<category>core/cmdb,view_in_gui</category>
</properties>
<fields>
<field id="message" xsi:type="AttributeText"/>
<field id="date" xsi:type="AttributeDateTime"/>
<field id="userinfo" xsi:type="AttributeString"/>
</fields>
</class>
<class id="EventNotification" _delta="define">
<!-- Generated by toolkit/export-class-to-meta.php -->
<parent>Event</parent>

View File

@@ -7532,8 +7532,41 @@ abstract class MetaModel
return $aEntries;
}
public static function ResetAllCaches($sEnvironment = null)
{
if (is_null($sEnvironment)) {
$sEnvironment = MetaModel::GetEnvironment();
}
$sEnvironmentId = md5(APPROOT).'-'.$sEnvironment;
$sAppIdentity = 'itop-'.$sEnvironmentId;
require_once(APPROOT.'/core/dict.class.inc.php');
Dict::ResetCache($sAppIdentity);
if (function_exists('apc_delete')) {
foreach (self::GetCacheEntries($sEnvironmentId) as $sKey => $aAPCInfo) {
$sAPCKey = $aAPCInfo['info'];
apc_delete($sAPCKey);
}
}
require_once(APPROOT.'core/userrights.class.inc.php');
UserRights::FlushPrivileges();
// Reset the opcache since otherwise the PHP "model" files may still be cached !!
if (function_exists('opcache_reset')) {
// Zend opcode cache
opcache_reset();
}
require_once(APPROOT.'setup/setuputils.class.inc.php');
SetupUtils::rrmdir(utils::GetCachePath($sEnvironment));
}
/**
* @internal
* @param string $sEnvironmentId
* @deprecated 3.2.1
*/
public static function ResetCache($sEnvironmentId = null)
{
@@ -7557,6 +7590,13 @@ abstract class MetaModel
require_once(APPROOT.'core/userrights.class.inc.php');
UserRights::FlushPrivileges();
// Reset the opcache since otherwise the PHP "model" files may still be cached !!
if (function_exists('opcache_reset'))
{
// Zend opcode cache
opcache_reset();
}
}
/**

View File

@@ -4,11 +4,8 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'CAS:Error:UserNotAllowed' => '用户被禁止登录',
'CAS:Login:SignIn' => '使用CAS登录',

View File

@@ -4,12 +4,39 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*
*/
/**
* @author Robert Deng <denglx@gmail.com>
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserExternal
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserExternal' => '外部用户',
'Class:UserExternal+' => '用户在'.ITOP_APPLICATION_SHORT.'外部验证身份',

View File

@@ -4,12 +4,38 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Robert Deng <denglx@gmail.com>
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLDAP
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserLDAP' => 'LDAP用户',
'Class:UserLDAP+' => '用户身份由LDAP认证',

View File

@@ -4,15 +4,44 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Robert Deng <denglx@gmail.com>
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserLocal
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserLocal' => ITOP_APPLICATION_SHORT.' 用户',
'Class:UserLocal+' => '用户由'.ITOP_APPLICATION_SHORT.'验证身份',
'Class:UserLocal/Attribute:password' => '密码',
'Class:UserLocal/Attribute:password+' => '用于验证用户身份的字符串',
'Class:UserLocal/Attribute:expiration' => '密码过期',
'Class:UserLocal/Attribute:expiration+' => '密码过期状态 (需要一个扩展才能生效)',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => '允许过期',
@@ -23,11 +52,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserLocal/Attribute:expiration/Value:never_expire+' => '',
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => '一次性密码',
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => '用户不允许修改密码.',
'Class:UserLocal/Attribute:password' => '密码',
'Class:UserLocal/Attribute:password+' => '用于验证用户身份的字符串',
'Class:UserLocal/Attribute:password_renewed_date' => '密码更新',
'Class:UserLocal/Attribute:password_renewed_date+' => '上次修改密码的时间',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => '不允许用户为自己设置 "一次性密码" 的失效期限',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => '密码必须至少8个字符, 包含大小写, 数字和特殊字符.',
'UserLocal:password:expiration' => '下面的区域需要插件扩展',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => '不允许用户为自己设置 "一次性密码" 的失效期限',
]);

View File

@@ -4,11 +4,23 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:darkmoon' => '暗月',
]);

View File

@@ -170,7 +170,7 @@ class DatabaseAnalyzer
$this->CheckHK($sClass, $sAttCode, $aErrorsAndFixes);
}
}
elseif ($oAttDef->IsDirectField() && !($oAttDef instanceof AttributeTagSet))
elseif ($oAttDef->IsDirectField() && !($oAttDef instanceof AttributeSet))
{
$this->CheckAllowedValues($sClass, $sAttCode, $oAttDef, $sTable, $sKeyField, $aErrorsAndFixes);
}

View File

@@ -4,63 +4,93 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'DBAnalyzer-Fetch-Count-Error' => '读取计数出错于 `%1$s`, %2$d个记录已读取 / %3$d已',
'DBAnalyzer-Integrity-FinalClass' => '字段 `%2$s`.`%1$s` 必须是相同的值, 而不是 `%3$s`.`%1$s`',
'DBAnalyzer-Integrity-HKInvalid' => '损坏的层级链 `%1$s`',
'DBAnalyzer-Integrity-InvalidExtKey' => '无效的外键%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-InvalidValue' => '无效的值%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-MissingExtKey' => '外键丢失%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-OrphanRecord' => '孤立记录位于 `%1$s`, 其应该有副本位于表 `%2$s`',
'DBAnalyzer-Integrity-RootFinalClass' => '字段 `%2$s`.`%1$s` 必须包含一个有效的类型',
'DBAnalyzer-Integrity-UsersWithoutProfile' => '一些用户账号没有角色',
'DBTools:Analyze' => '分析',
'DBTools:Base' => '数据库',
// Database inconsistencies
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
'Menu:DBToolsMenu' => '数据库工具',
'DBTools:Class' => '类型',
'DBTools:Count' => '数',
'DBTools:DatabaseInfo' => '数据库信息',
'DBTools:DetailedErrorLimit' => '列表限制为%1$s错误',
'DBTools:DetailedErrorTitle' => '%2$s个错误在类型%1$s: %3$s',
'DBTools:Details' => '显示详情',
'DBTools:Title' => '数据库维护工具',
'DBTools:ErrorsFound' => '发现错误',
'DBTools:Indication' => '重要: 修复数据库错误后, 可能会出现新的不一致, 您必须重新运行一次分析.',
'DBTools:Disclaimer' => '免责申明: 在应用修复之前, 应先备份数据库',
'DBTools:Error' => '错误',
'DBTools:ErrorsFound' => '发现错误',
'DBTools:FetchCheck' => '提取检查 (耗时长)',
'DBTools:FixitSQLquery' => '修复问题的SQL查询 (指示)',
'DBTools:HideIds' => '错误列表',
'DBTools:Inconsistencies' => '数据库不一致',
'DBTools:Indication' => '重要: 修复数据库错误后, 可能会出现新的不一致, 您必须重新运行一次分析.',
'DBTools:IntegrityCheck' => '完整性检查',
'DBTools:LostAttachments' => '附件缺失',
'DBTools:LostAttachments:Button:Analyze' => '分析',
'DBTools:LostAttachments:Button:Busy' => '请稍后...',
'DBTools:LostAttachments:Button:Restore' => '还原',
'DBTools:LostAttachments:Button:Restore:Confirm' => '此操作无法回退, 请确认是否继续还原.',
'DBTools:LostAttachments:Disclaimer' => '可以在此搜索数据库中丢失或错放的附件. 这不是数据恢复工具, 其无法恢复已删除的数据.',
'DBTools:LostAttachments:History' => '附件 "%1$s" 已使用数据库工具还原',
'DBTools:LostAttachments:Step:Analyze' => '首先, 通过分析数据库来搜索丢失或误挪动的附件.',
'DBTools:LostAttachments:Step:AnalyzeResults' => '分析结果:',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:CurrentLocation' => '当前位置',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:Filename' => '文件名',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:TargetLocation' => '移动到...',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => '非常好! 所有附件都是正常的.',
'DBTools:LostAttachments:Step:AnalyzeResults:Some' => '某些附件 (%1$d) 看起来放错了位置. 请检查下面的列表并选择要挪动的文件.',
'DBTools:LostAttachments:Step:RestoreResults' => '还原结果:',
'DBTools:LostAttachments:Step:RestoreResults:Results' => '%1$d/%2$d的附件被还原.',
'DBTools:LostAttachments:StoredAsInlineImage' => '存储为内嵌图像',
'DBTools:NoError' => '数据库正确',
'DBTools:Count' => '个数',
'DBTools:SQLquery' => 'SQL查询',
'DBTools:FixitSQLquery' => '修复问题的SQL查询 (指示)',
'DBTools:SQLresult' => 'SQL结果',
'DBTools:SelectAnalysisType' => '请选择分析类型',
'DBTools:ShowAll' => '显示所有错误',
'DBTools:NoError' => '数据库正确',
'DBTools:HideIds' => '错误列表',
'DBTools:ShowIds' => '详细视图',
'DBTools:ShowReport' => '报告',
'DBTools:IntegrityCheck' => '完整性检查',
'DBTools:FetchCheck' => '提取检查 (耗时长)',
'DBTools:SelectAnalysisType' => '请选择分析类型',
'DBTools:Analyze' => '分析',
'DBTools:Details' => '显示详情',
'DBTools:ShowAll' => '显示所有错误',
'DBTools:Inconsistencies' => '数据库不一致',
'DBTools:DetailedErrorTitle' => '%2$s个错误在类型%1$s: %3$s',
'DBTools:DetailedErrorLimit' => '列表限制为%1$s错误',
'DBAnalyzer-Integrity-OrphanRecord' => '孤立记录位于 `%1$s`, 其应该有副本位于表 `%2$s`',
'DBAnalyzer-Integrity-InvalidExtKey' => '无效的外键%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-MissingExtKey' => '外键丢失%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-InvalidValue' => '无效的值%1$s (列: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-UsersWithoutProfile' => '一些用户账号没有角色',
'DBAnalyzer-Integrity-HKInvalid' => '损坏的层级链 `%1$s`',
'DBAnalyzer-Fetch-Count-Error' => '读取计数出错于 `%1$s`, %2$d个记录已读取 / %3$d已',
'DBAnalyzer-Integrity-FinalClass' => '字段 `%2$s`.`%1$s` 必须是相同的值, 而不是 `%3$s`.`%1$s`',
'DBAnalyzer-Integrity-RootFinalClass' => '字段 `%2$s`.`%1$s` 必须包含一个有效的类型',
));
// Database Info
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'DBTools:DatabaseInfo' => '数据库信息',
'DBTools:Base' => '数据库',
'DBTools:Size' => '大小',
'DBTools:Title' => '数据库维护工具',
'Menu:DBToolsMenu' => '数据库工具',
]);
));
// Lost attachments
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'DBTools:LostAttachments' => '附件缺失',
'DBTools:LostAttachments:Disclaimer' => '可以在此搜索数据库中丢失或错放的附件. 这不是数据恢复工具, 其无法恢复已删除的数据.',
'DBTools:LostAttachments:Button:Analyze' => '分析',
'DBTools:LostAttachments:Button:Restore' => '还原',
'DBTools:LostAttachments:Button:Restore:Confirm' => '此操作无法回退, 请确认是否继续还原.',
'DBTools:LostAttachments:Button:Busy' => '请稍候...',
'DBTools:LostAttachments:Step:Analyze' => '首先, 通过分析数据库来搜索丢失或误挪动的附件.',
'DBTools:LostAttachments:Step:AnalyzeResults' => '分析结果:',
'DBTools:LostAttachments:Step:AnalyzeResults:None' => '非常好! 所有附件都是正常的.',
'DBTools:LostAttachments:Step:AnalyzeResults:Some' => '某些附件 (%1$d) 看起来放错了位置. 请检查下面的列表并选择要挪动的文件.',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:Filename' => '文件名',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:CurrentLocation' => '当前位置',
'DBTools:LostAttachments:Step:AnalyzeResults:Item:TargetLocation' => '移动到...',
'DBTools:LostAttachments:Step:RestoreResults' => '还原结果:',
'DBTools:LostAttachments:Step:RestoreResults:Results' => '%1$d/%2$d的附件被还原.',
'DBTools:LostAttachments:StoredAsInlineImage' => '存储为内嵌图像',
'DBTools:LostAttachments:History' => '附件 "%1$s" 已使用数据库工具还原',
));

View File

@@ -4,57 +4,83 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*
*/
/**
*
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Attachments:TabTitle_Count' => '附件 (%1$d)',
'Attachments:EmptyTabTitle' => '附件',
'Attachments:FieldsetTitle' => '附件',
'Attachments:DeleteBtn' => '删除',
'Attachments:History_File_Added' => '附件%1$s已添加.',
'Attachments:History_File_Removed' => '附件%1$s已移除.',
'Attachments:AddAttachment' => '添加附件: ',
'Attachments:UploadNotAllowedOnThisSystem' => '本系统不支持文件上传.',
'Attachment:Max_Go' => '(最大文件尺寸: %1$s GB)',
'Attachment:Max_Ko' => '(最大文件尺寸: %1$s KB)',
'Attachment:Max_Mo' => '(最大文件尺寸: %1$s MB)',
'Attachments:AddAttachment' => '添加附件: ',
'Attachments:DeleteBtn' => '删除',
'Attachments:EmptyTabTitle' => '附件',
'Attachments:Error:FileTooLarge' => '上传的文件过大. %1$s',
'Attachments:Error:UploadedFileEmpty' => '收到的文件为空, 无法添加. 可能是因为您发送的是空文件,或者咨询'.ITOP_APPLICATION_SHORT.'管理员服务器磁盘是否已满.',
'Attachments:FieldsetTitle' => '附件',
'Attachments:File:Date' => '上传日期',
'Attachments:File:DownloadsCount' => '下载',
'Attachments:File:MimeType' => '类型',
'Attachments:File:Name' => '文件名',
'Attachments:File:Size' => '大小',
'Attachments:File:Thumbnail' => '图标',
'Attachments:File:Uploader' => '上传者',
'Attachments:History_File_Added' => '附件%1$s已添加.',
'Attachments:History_File_Removed' => '附件%1$s已移除.',
'Attachments:NoAttachment' => '没有附件. ',
'Attachments:PreviewNotAvailable' => '此附件类型不支持预览.',
'Attachments:Error:FileTooLarge' => '上传的文件过大. %1$s',
'Attachments:Error:UploadedFileEmpty' => '收到的文件为空, 无法添加.
可能是因为您发送的是空文件,
或者咨询 '.ITOP_APPLICATION_SHORT.' 管理员,检查 '.ITOP_APPLICATION_SHORT.' 服务器硬盘是否满了.',
'Attachments:Render:Icons' => '显示为图标',
'Attachments:Render:Table' => '显示为列表',
'Attachments:TabTitle_Count' => '附件 (%1$d)',
'Attachments:UploadNotAllowedOnThisSystem' => '本系统不支持文件上传.',
'Class:Attachment' => '附件',
'Class:Attachment+' => '',
'Class:Attachment/Attribute:contact_id' => '联系人编号',
'Class:Attachment/Attribute:contact_id+' => '~~',
'Class:Attachment/Attribute:contents' => '内容',
'Class:Attachment/Attribute:contents+' => '',
'Class:Attachment/Attribute:creation_date' => '创建日期',
'Class:Attachment/Attribute:creation_date+' => '~~',
'Class:Attachment/Attribute:expire' => '过期',
'Class:Attachment/Attribute:expire+' => '~~',
'Class:Attachment/Attribute:item_class' => '项目类型',
'Class:Attachment/Attribute:item_class+' => '~~',
'Class:Attachment/Attribute:item_id' => '项目',
'Class:Attachment/Attribute:item_id+' => '~~',
'Class:Attachment/Attribute:item_org_id' => '项目组织',
'Class:Attachment/Attribute:item_org_id+' => '',
'Class:Attachment/Attribute:temp_id' => '临时编号',
'Class:Attachment/Attribute:temp_id+' => '~~',
'Class:Attachment/Attribute:user_id' => '用户编号',
'Class:Attachment/Attribute:user_id+' => '~~',
'Class:TriggerOnAttachmentDownload' => '触发器 (于对象附件下载时)',
'Class:TriggerOnAttachmentDownload+' => '触发器于指定类型 [子类型] 对象附件下载时',
'UI:Attachments:DropYourFileHint' => '将文件拖放到此区域的任意位置',
]);
//
// Class: Attachment
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Attachment' => '附件',
'Class:Attachment+' => '',
'Class:Attachment/Attribute:expire' => '过期',
'Class:Attachment/Attribute:expire+' => '',
'Class:Attachment/Attribute:temp_id' => '临时编号',
'Class:Attachment/Attribute:temp_id+' => '',
'Class:Attachment/Attribute:item_class' => '项目类型',
'Class:Attachment/Attribute:item_class+' => '',
'Class:Attachment/Attribute:item_id' => '项目',
'Class:Attachment/Attribute:item_id+' => '',
'Class:Attachment/Attribute:item_org_id' => '项目组织',
'Class:Attachment/Attribute:item_org_id+' => '',
'Class:Attachment/Attribute:contents' => '内容',
'Class:Attachment/Attribute:contents+' => '',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Attachments:File:Thumbnail' => '图标',
'Attachments:File:Name' => '文件名',
'Attachments:File:Date' => '上传日期',
'Attachments:File:Uploader' => '上传者',
'Attachments:File:Size' => '大小',
'Attachments:File:MimeType' => '类型',
'Attachments:File:DownloadsCount' => '下载',
]);
//
// Class: Attachment
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Attachment/Attribute:creation_date' => '创建日期',
'Class:Attachment/Attribute:creation_date+' => '~~',
'Class:Attachment/Attribute:user_id' => '用户编号',
'Class:Attachment/Attribute:user_id+' => '~~',
'Class:Attachment/Attribute:contact_id' => '联系人编号',
'Class:Attachment/Attribute:contact_id+' => '~~',
]);
//
// Class: TriggerOnAttachmentDownload
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:TriggerOnAttachmentDownload' => '触发器 (于对象附件下载时)',
'Class:TriggerOnAttachmentDownload+' => '触发器于指定类型 [子类型] 对象附件下载时',
]);

View File

@@ -4,44 +4,58 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:BackupStatus' => '定时备份',
'bkp-backup-running' => '备份正在进行, 请稍...',
'bkp-button-backup-now' => '立即备份!',
'bkp-button-restore-now' => '还原!',
'bkp-confirm-backup' => '请确认是否立即开始备份.',
'bkp-confirm-restore' => '请确认要还原的备份文件是 %1$s.',
'bkp-dir-not-writeable' => '%1$s没有写入权限',
'bkp-free-disk-space' => '<b>%1$s可用空间</b>位于<code>%2$s</code>',
'bkp-missing-dir' => '目标目录<code>%1$s</code>找不到',
'bkp-mysqldump-issue' => 'mysqldump无法运行 (retcode=%1$d): 请确认它安装在正确的路径, 或者调整'.ITOP_APPLICATION_SHORT.'配置文件的参数mysql_bindir',
'bkp-mysqldump-notfound' => 'mysqldump找不到: %1$s - 请确认它安装在正确的路径, 或者调整'.ITOP_APPLICATION_SHORT.'配置文件的参数mysql_bindir.',
'bkp-mysqldump-ok' => '已找到mysqldump : %1$s',
'bkp-name-sample' => '备份文件将以数据库名, 日期和时间进行命名. 例如: %1$s',
'bkp-next-backup' => '下一次备份将发生在<b>%1$s</b> (%2$s) 的%3$s',
'bkp-next-backup-unknown' => '下一次备份<b>尚未被计划</b>.',
'bkp-next-to-delete' => '当下一次备份时将被删除 (参阅设置 "retention_count")',
'bkp-backup-running' => '备份正在进行, 请稍...',
'bkp-restore-running' => '还原正在进行, 请稍等...',
'bkp-retention' => '最多<b>%1$d份备份文件</b>在目标目录.',
'bkp-status-backups-auto' => '定时备份',
'bkp-status-backups-manual' => '手动备份',
'bkp-status-backups-none' => '尚未开始备份',
'bkp-status-checks' => '设置与检查',
'Menu:BackupStatus' => '定时备份',
'bkp-status-title' => '定时备份',
'bkp-success-restore' => '还原成功.',
'bkp-table-actions' => '操作',
'bkp-table-actions+' => '',
'bkp-status-checks' => '设置与检查',
'bkp-mysqldump-ok' => '已找到 mysqldump : %1$s',
'bkp-mysqldump-notfound' => 'mysqldump找不到: %1$s - 请确认它安装在正确的路径, 或者调整'.ITOP_APPLICATION_SHORT.'配置文件的参数mysql_bindir.',
'bkp-mysqldump-issue' => 'mysqldump无法运行 (retcode=%1$d): 请确认它安装在正确的路径, 或者调整'.ITOP_APPLICATION_SHORT.'配置文件的参数mysql_bindir',
'bkp-missing-dir' => '目标目录<code>%1$s</code>找不到',
'bkp-free-disk-space' => '<b>%1$s可用空间</b>位于<code>%2$s</code>',
'bkp-dir-not-writeable' => '%1$s没有写入权限',
'bkp-wrong-format-spec' => '当前文件名格式错误 (%1$s). 默认格式应该是: %2$s',
'bkp-name-sample' => '备份文件将以数据库名, 日期和时间进行命名. 例如: %1$s',
'bkp-week-days' => '在每个<b>%1$s的%2$s</b>进行备份',
'bkp-retention' => '最多<b>%1$d份备份文件</b>在目标目录.',
'bkp-next-to-delete' => '当下一次备份时将被删除 (参阅设置 "retention_count")',
'bkp-table-file' => '文件',
'bkp-table-file+' => '只有扩展名是.zip的文件才被认为是备份文件',
'bkp-table-size' => '大小',
'bkp-table-size+' => '',
'bkp-table-actions' => '操作',
'bkp-table-actions+' => '',
'bkp-status-backups-auto' => '定时备份',
'bkp-status-backups-manual' => '手动备份',
'bkp-status-backups-none' => '尚未开始备份',
'bkp-next-backup' => '下一次备份将发生在<b>%1$s</b> (%2$s) 的%3$s',
'bkp-next-backup-unknown' => '下一次备份<b>尚未被计划</b>.',
'bkp-button-backup-now' => '立即备份!',
'bkp-button-restore-now' => '还原!',
'bkp-confirm-backup' => '请确认是否立即开始备份.',
'bkp-confirm-restore' => '请确认要还原的备份文件是 %1$s.',
'bkp-wait-backup' => '请等待备份完成...',
'bkp-wait-restore' => '请等待还原完成...',
'bkp-week-days' => '在每个<b>%1$s的%2$s</b>进行备份',
'bkp-wrong-format-spec' => '当前文件名格式错误 (%1$s). 默认格式应该是: %2$s',
'bkp-success-restore' => '还原成功.',
]);

View File

@@ -1,44 +1,86 @@
<?php
// Copyright (C) 2010-2024 Combodo SAS
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Benjamin Planque <benjamin.planque@combodo.com>
*
*/
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
//
// Class: lnkFunctionalCIToProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '',
]);
//
// Class: lnkFunctionalCIToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToService' => '关联 功能配置项/服务',
'Class:lnkFunctionalCIToService+' => '',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToService/Attribute:service_id' => '服务',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:service_name' => '服务名称',
'Class:lnkFunctionalCIToService/Attribute:service_name+' => '',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name+' => '',
]);
//
// Class: FunctionalCI
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FunctionalCI/Attribute:providercontracts_list' => '供应商合同',
'Class:FunctionalCI/Attribute:providercontracts_list+' => '此配置项的所有供应商合同',
'Class:FunctionalCI/Attribute:services_list' => '服务',
'Class:FunctionalCI/Attribute:services_list+' => '此配置项影响的所有服务',
]);
//
// Class: Document
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Document/Attribute:contracts_list' => '合同',
'Class:Document/Attribute:contracts_list+' => '此文档关联的所有合同',
'Class:Document/Attribute:services_list' => '服务',
'Class:Document/Attribute:services_list+' => '此文档关联的所有服务',
'Class:FunctionalCI/Attribute:providercontracts_list' => '供应商合同',
'Class:FunctionalCI/Attribute:providercontracts_list+' => '此配置项的所有供应商合同',
'Class:FunctionalCI/Attribute:services_list' => '服务',
'Class:FunctionalCI/Attribute:services_list+' => '此配置项影响的所有服务',
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToService' => '关联功能配置项/服务',
'Class:lnkFunctionalCIToService+' => '',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToService/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToService/Attribute:functionalci_name+' => '',
'Class:lnkFunctionalCIToService/Attribute:service_id' => '服务',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:service_name' => '服务名称',
'Class:lnkFunctionalCIToService/Attribute:service_name+' => '',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s~~',
]);

View File

@@ -1,20 +1,48 @@
<?php
// Copyright (C) 2010-2024 Combodo SAS
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Benjamin Planque <benjamin.planque@combodo.com>
*
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
//
// Class: lnkFunctionalCIToTicket
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FunctionalCI/Attribute:tickets_list' => '工单',
'Class:FunctionalCI/Attribute:tickets_list+' => '此配置项包含的所有工单',
'Class:lnkFunctionalCIToTicket' => '关联功能配置项/工单',
'Class:lnkFunctionalCIToTicket' => '关联 功能配置项/工单',
'Class:lnkFunctionalCIToTicket+' => '',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => '工单',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => '工单编号',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => '工单标题',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:functionalci_name' => '配置项名称',
@@ -22,14 +50,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToTicket/Attribute:impact' => '影响 (文本)',
'Class:lnkFunctionalCIToTicket/Attribute:impact+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => '影响',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:computed' => '自动添加',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:manual' => '手动添加',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:computed' => '自动添加',
'Class:lnkFunctionalCIToTicket/Attribute:impact_code/Value:not_impacted' => '不通知',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => '工单',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => '工单编号',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => '工单标题',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title+' => '~~',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s~~',
]);
//
// Class: FunctionalCI
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FunctionalCI/Attribute:tickets_list' => '工单',
'Class:FunctionalCI/Attribute:tickets_list+' => '此配置项包含的所有工单',
]);

View File

@@ -4,233 +4,291 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ChangeManagement' => '变更管理',
'Menu:Change:Overview' => '概况',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => '新建变更',
'Menu:NewChange+' => '新建变更',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => '等待审核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批准的变更',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类型)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
'Tickets:Related:OpenChanges' => '打开的变更',
'Tickets:Related:RecentChanges' => '最近的变更 (72小时)',
]);
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ApprovedChange' => '已批准的变更',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => '批准说明',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Attribute:approval_date' => '批准日期',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => '批准',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => '分配',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => '完成',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => '实施',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => '验收',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => '不批准',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => '计划',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => '驳回',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => '重新打开',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => '重新计划',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => '同意',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:Change' => '变更',
'Class:Change+' => '',
'Class:Change/Attribute:child_changes_list' => '子变更',
'Class:Change/Attribute:child_changes_list+' => '此变更相关的字变更',
'Class:Change/Attribute:creation_date' => '创建时间',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:fallback' => '回滚计划',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:impact' => '影响',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:manager_email' => '邮箱',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:manager_group_id' => '管理团队',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => '管理团队名称',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => '经理',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:outage' => '停机',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => '否',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => '是',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:parent_id' => '父级变更',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => '变更类型',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
'Class:Change/Attribute:parent_id_friendlyname' => '父级变更昵称',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_name' => '变更编号',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:reason' => '驳回原因',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:related_incident_list' => '相关事件',
'Class:Change/Attribute:related_incident_list+' => '此变更相关的所有事件',
'Class:Change/Attribute:related_problems_list' => '相关问题',
'Class:Change/Attribute:related_problems_list+' => '此变更相关的所有问题',
'Class:Change/Attribute:related_request_list' => '相关需求',
'Class:Change/Attribute:related_request_list+' => '此变更相关的所有用户需求',
'Class:Change/Attribute:requestor_email' => '邮箱',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:requestor_id' => '发起人',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:status' => '状态',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:approved' => '已批准',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:new' => '新建',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:validated' => '已确认',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:status/Value:rejected' => '已驳回',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:assigned' => '已分配',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:closed' => '已关闭',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => '已计划和安排',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:approved' => '已批准',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => '未批准',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => '已实施',
'Class:Change/Attribute:status/Value:implemented+' => '',
'Class:Change/Attribute:status/Value:monitored' => '已验收',
'Class:Change/Attribute:status/Value:monitored+' => '',
'Class:Change/Attribute:status/Value:new' => '新建',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:notapproved' => '未批准',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:plannedscheduled' => '已计划和安排',
'Class:Change/Attribute:status/Value:plannedscheduled+' => '',
'Class:Change/Attribute:status/Value:rejected' => '已驳回',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:validated' => '已确认',
'Class:Change/Attribute:status/Value:validated+' => '',
'Class:Change/Attribute:supervisor_email' => '邮箱',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:status/Value:closed' => '已关闭',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:reason' => '驳回原因',
'Class:Change/Attribute:reason+' => '',
'Class:Change/Attribute:requestor_id' => '发起人',
'Class:Change/Attribute:requestor_id+' => '',
'Class:Change/Attribute:requestor_email' => '邮箱',
'Class:Change/Attribute:requestor_email+' => '',
'Class:Change/Attribute:creation_date' => '创建时间',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:impact' => '影响',
'Class:Change/Attribute:impact+' => '',
'Class:Change/Attribute:supervisor_group_id' => '监督团队',
'Class:Change/Attribute:supervisor_group_id+' => '',
'Class:Change/Attribute:supervisor_group_name' => '监督团队名称',
'Class:Change/Attribute:supervisor_group_name+' => '',
'Class:Change/Attribute:supervisor_id' => '监督人',
'Class:Change/Attribute:supervisor_id+' => '',
'Class:Change/Stimulus:ev_approve' => '批准',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Attribute:supervisor_email' => '邮箱',
'Class:Change/Attribute:supervisor_email+' => '',
'Class:Change/Attribute:manager_group_id' => '管理团队',
'Class:Change/Attribute:manager_group_id+' => '',
'Class:Change/Attribute:manager_group_name' => '管理团队名称',
'Class:Change/Attribute:manager_group_name+' => '',
'Class:Change/Attribute:manager_id' => '经理',
'Class:Change/Attribute:manager_id+' => '',
'Class:Change/Attribute:manager_email' => '邮箱',
'Class:Change/Attribute:manager_email+' => '',
'Class:Change/Attribute:outage' => '停机',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => '否',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => '是',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:fallback' => '回滚计划',
'Class:Change/Attribute:fallback+' => '',
'Class:Change/Attribute:parent_id' => '父级变更',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => '变更编号',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:related_request_list' => '相关需求',
'Class:Change/Attribute:related_request_list+' => '此变更相关的所有用户需求',
'Class:Change/Attribute:related_problems_list' => '相关问题',
'Class:Change/Attribute:related_problems_list+' => '此变更相关的所有问题',
'Class:Change/Attribute:related_incident_list' => '相关事件',
'Class:Change/Attribute:related_incident_list+' => '此变更相关的所有事件',
'Class:Change/Attribute:child_changes_list' => '子变更',
'Class:Change/Attribute:child_changes_list+' => '此变更相关的字变更',
'Class:Change/Attribute:parent_id_friendlyname' => '父级变更昵称',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => '变更类型',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',
'Class:Change/Stimulus:ev_validate' => '同意',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_reject' => '驳回',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_assign' => '分配',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_finish' => '完成',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change/Stimulus:ev_reopen' => '重新打开',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_plan' => '计划',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_approve' => '批准',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_replan' => '重新计划',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_notapprove' => '不批准',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => '实施',
'Class:Change/Stimulus:ev_implement+' => '',
'Class:Change/Stimulus:ev_monitor' => '验收',
'Class:Change/Stimulus:ev_monitor+' => '',
'Class:Change/Stimulus:ev_notapprove' => '不批准',
'Class:Change/Stimulus:ev_notapprove+' => '',
'Class:Change/Stimulus:ev_plan' => '计划',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_reject' => '驳回',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_reopen' => '重新打开',
'Class:Change/Stimulus:ev_reopen+' => '',
'Class:Change/Stimulus:ev_replan' => '重新计划',
'Class:Change/Stimulus:ev_replan+' => '',
'Class:Change/Stimulus:ev_validate' => '同意',
'Class:Change/Stimulus:ev_validate+' => '',
'Class:EmergencyChange' => '紧急变更',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => '批准',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => '分配',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => '完成',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => '实施',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => '验收',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => '不批准',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => '计划',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => '驳回',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => '重新打开',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => '重新计划',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => '同意',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:NormalChange' => '正常变更',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => '审核说明',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Attribute:acceptance_date' => '审核日期',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Stimulus:ev_approve' => '批准',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_assign' => '分配',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_finish' => '完成',
'Class:NormalChange/Stimulus:ev_finish+' => '',
'Class:NormalChange/Stimulus:ev_implement' => '实施',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => '验收',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => '不批准',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_plan' => '计划',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_reject' => '驳回',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => '重新打开',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_replan' => '重新计划',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_validate' => '同意',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:Change/Stimulus:ev_finish' => '完成',
'Class:Change/Stimulus:ev_finish+' => '',
]);
//
// Class: RoutineChange
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:RoutineChange' => '例行变更',
'Class:RoutineChange+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => '批准',
'Class:RoutineChange/Stimulus:ev_approve+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => '同意',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => '驳回',
'Class:RoutineChange/Stimulus:ev_reject+' => '',
'Class:RoutineChange/Stimulus:ev_assign' => '分配',
'Class:RoutineChange/Stimulus:ev_assign+' => '',
'Class:RoutineChange/Stimulus:ev_finish' => '完成',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => '重新打开',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => '计划',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_approve' => '批准',
'Class:RoutineChange/Stimulus:ev_approve+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => '重新计划',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => '不批准',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => '实施',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
'Class:RoutineChange/Stimulus:ev_monitor' => '验收',
'Class:RoutineChange/Stimulus:ev_monitor+' => '',
'Class:RoutineChange/Stimulus:ev_notapprove' => '不批准',
'Class:RoutineChange/Stimulus:ev_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_plan' => '计划',
'Class:RoutineChange/Stimulus:ev_plan+' => '',
'Class:RoutineChange/Stimulus:ev_reject' => '驳回',
'Class:RoutineChange/Stimulus:ev_reject+' => '',
'Class:RoutineChange/Stimulus:ev_reopen' => '重新打开',
'Class:RoutineChange/Stimulus:ev_reopen+' => '',
'Class:RoutineChange/Stimulus:ev_replan' => '重新计划',
'Class:RoutineChange/Stimulus:ev_replan+' => '',
'Class:RoutineChange/Stimulus:ev_validate' => '同意',
'Class:RoutineChange/Stimulus:ev_validate+' => '',
'Menu:Change:Overview' => '概况',
'Menu:Change:Overview+' => '',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:ChangeManagement' => '变更管理',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'Menu:NewChange' => '新建变更',
'Menu:NewChange+' => '新建变更',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:WaitingAcceptance' => '等待审核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批准的变更',
'Menu:WaitingApproval+' => '',
'Tickets:Related:OpenChanges' => '打开的变更',
'Tickets:Related:RecentChanges' => '最近的变更 (72小时)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类型)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'Class:RoutineChange/Stimulus:ev_finish' => '完成',
'Class:RoutineChange/Stimulus:ev_finish+' => '',
]);
//
// Class: ApprovedChange
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ApprovedChange' => '已批准的变更',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => '批准日期',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => '批准说明',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => '同意',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
'Class:ApprovedChange/Stimulus:ev_reject' => '驳回',
'Class:ApprovedChange/Stimulus:ev_reject+' => '',
'Class:ApprovedChange/Stimulus:ev_assign' => '分配',
'Class:ApprovedChange/Stimulus:ev_assign+' => '',
'Class:ApprovedChange/Stimulus:ev_reopen' => '重新打开',
'Class:ApprovedChange/Stimulus:ev_reopen+' => '',
'Class:ApprovedChange/Stimulus:ev_plan' => '计划',
'Class:ApprovedChange/Stimulus:ev_plan+' => '',
'Class:ApprovedChange/Stimulus:ev_approve' => '批准',
'Class:ApprovedChange/Stimulus:ev_approve+' => '',
'Class:ApprovedChange/Stimulus:ev_replan' => '重新计划',
'Class:ApprovedChange/Stimulus:ev_replan+' => '',
'Class:ApprovedChange/Stimulus:ev_notapprove' => '不批准',
'Class:ApprovedChange/Stimulus:ev_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => '实施',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
'Class:ApprovedChange/Stimulus:ev_monitor' => '验收',
'Class:ApprovedChange/Stimulus:ev_monitor+' => '',
'Class:ApprovedChange/Stimulus:ev_finish' => '完成',
'Class:ApprovedChange/Stimulus:ev_finish+' => '',
]);
//
// Class: NormalChange
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:NormalChange' => '正常变更',
'Class:NormalChange+' => '',
'Class:NormalChange/Attribute:acceptance_date' => '审核日期',
'Class:NormalChange/Attribute:acceptance_date+' => '',
'Class:NormalChange/Attribute:acceptance_comment' => '审核说明',
'Class:NormalChange/Attribute:acceptance_comment+' => '',
'Class:NormalChange/Stimulus:ev_validate' => '同意',
'Class:NormalChange/Stimulus:ev_validate+' => '',
'Class:NormalChange/Stimulus:ev_reject' => '驳回',
'Class:NormalChange/Stimulus:ev_reject+' => '',
'Class:NormalChange/Stimulus:ev_assign' => '分配',
'Class:NormalChange/Stimulus:ev_assign+' => '',
'Class:NormalChange/Stimulus:ev_reopen' => '重新打开',
'Class:NormalChange/Stimulus:ev_reopen+' => '',
'Class:NormalChange/Stimulus:ev_plan' => '计划',
'Class:NormalChange/Stimulus:ev_plan+' => '',
'Class:NormalChange/Stimulus:ev_approve' => '批准',
'Class:NormalChange/Stimulus:ev_approve+' => '',
'Class:NormalChange/Stimulus:ev_replan' => '重新计划',
'Class:NormalChange/Stimulus:ev_replan+' => '',
'Class:NormalChange/Stimulus:ev_notapprove' => '不批准',
'Class:NormalChange/Stimulus:ev_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => '实施',
'Class:NormalChange/Stimulus:ev_implement+' => '',
'Class:NormalChange/Stimulus:ev_monitor' => '验收',
'Class:NormalChange/Stimulus:ev_monitor+' => '',
'Class:NormalChange/Stimulus:ev_finish' => '完成',
'Class:NormalChange/Stimulus:ev_finish+' => '',
]);
//
// Class: EmergencyChange
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:EmergencyChange' => '紧急变更',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => '同意',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',
'Class:EmergencyChange/Stimulus:ev_reject' => '驳回',
'Class:EmergencyChange/Stimulus:ev_reject+' => '',
'Class:EmergencyChange/Stimulus:ev_assign' => '分配',
'Class:EmergencyChange/Stimulus:ev_assign+' => '',
'Class:EmergencyChange/Stimulus:ev_reopen' => '重新打开',
'Class:EmergencyChange/Stimulus:ev_reopen+' => '',
'Class:EmergencyChange/Stimulus:ev_plan' => '计划',
'Class:EmergencyChange/Stimulus:ev_plan+' => '',
'Class:EmergencyChange/Stimulus:ev_approve' => '批准',
'Class:EmergencyChange/Stimulus:ev_approve+' => '',
'Class:EmergencyChange/Stimulus:ev_replan' => '重新计划',
'Class:EmergencyChange/Stimulus:ev_replan+' => '',
'Class:EmergencyChange/Stimulus:ev_notapprove' => '不批准',
'Class:EmergencyChange/Stimulus:ev_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => '实施',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',
'Class:EmergencyChange/Stimulus:ev_monitor' => '验收',
'Class:EmergencyChange/Stimulus:ev_monitor+' => '',
'Class:EmergencyChange/Stimulus:ev_finish' => '完成',
'Class:EmergencyChange/Stimulus:ev_finish+' => '',
]);

View File

@@ -4,16 +4,81 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ChangeManagement' => '变更管理',
'Menu:Change:Overview' => '概况',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => '新建变更',
'Menu:NewChange+' => '新建变更',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => '等待审核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批准的变更',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类型)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
'Tickets:Related:OpenChanges' => '打开的变更',
'Tickets:Related:RecentChanges' => '最近的变更 (72小时)',
]);
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Change
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Change' => '变更',
'Class:Change+' => '',
'Class:Change/Attribute:approval_date' => '审批日期',
'Class:Change/Attribute:approval_date+' => '',
'Class:Change/Attribute:status' => '状态',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:new' => '新建',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:assigned' => '已分配',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:planned' => '已计划',
'Class:Change/Attribute:status/Value:planned+' => '',
'Class:Change/Attribute:status/Value:rejected' => '已驳回',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Attribute:status/Value:approved' => '已批准',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:closed' => '已关闭',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:category' => '类型',
'Class:Change/Attribute:category+' => '',
'Class:Change/Attribute:category/Value:application' => '应用',
@@ -28,83 +93,48 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Change/Attribute:category/Value:software+' => '软件',
'Class:Change/Attribute:category/Value:system' => '系统',
'Class:Change/Attribute:category/Value:system+' => '系统',
'Class:Change/Attribute:changemanager_email' => '邮箱',
'Class:Change/Attribute:changemanager_email+' => '',
'Class:Change/Attribute:changemanager_id' => '变更经理',
'Class:Change/Attribute:changemanager_id+' => '',
'Class:Change/Attribute:child_changes_list' => '子变更',
'Class:Change/Attribute:child_changes_list+' => '此变更相关的所有子变更',
'Class:Change/Attribute:creation_date' => '创建日期',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:fallback_plan' => '回滚计划',
'Class:Change/Attribute:fallback_plan+' => '',
'Class:Change/Attribute:outage' => '停机',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => '否',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => '是',
'Class:Change/Attribute:outage/Value:yes+' => '',
'Class:Change/Attribute:parent_id' => '父级变更',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_id_friendlyname' => '父级变更昵称',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_name' => '变更编号',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:reject_reason' => '驳回原因',
'Class:Change/Attribute:reject_reason+' => '',
'Class:Change/Attribute:changemanager_id' => '变更经理',
'Class:Change/Attribute:changemanager_id+' => '',
'Class:Change/Attribute:changemanager_email' => '邮箱',
'Class:Change/Attribute:changemanager_email+' => '',
'Class:Change/Attribute:parent_id' => '父级变更',
'Class:Change/Attribute:parent_id+' => '',
'Class:Change/Attribute:parent_name' => '变更编号',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:creation_date' => '创建日期',
'Class:Change/Attribute:creation_date+' => '',
'Class:Change/Attribute:approval_date' => '审批日期',
'Class:Change/Attribute:approval_date+' => '',
'Class:Change/Attribute:fallback_plan' => '回滚计划',
'Class:Change/Attribute:fallback_plan+' => '',
'Class:Change/Attribute:related_request_list' => '相关需求',
'Class:Change/Attribute:related_request_list+' => '此变更相关的所有用户需求',
'Class:Change/Attribute:related_incident_list' => '相关事件',
'Class:Change/Attribute:related_incident_list+' => '此变更相关的所有事件',
'Class:Change/Attribute:related_problems_list' => '相关问题',
'Class:Change/Attribute:related_problems_list+' => '此变更相关的所有问题',
'Class:Change/Attribute:related_request_list' => '相关需求',
'Class:Change/Attribute:related_request_list+' => '此变更相关的所有用户需求',
'Class:Change/Attribute:status' => '状态',
'Class:Change/Attribute:status+' => '',
'Class:Change/Attribute:status/Value:approved' => '已批准',
'Class:Change/Attribute:status/Value:approved+' => '',
'Class:Change/Attribute:status/Value:assigned' => '已分配',
'Class:Change/Attribute:status/Value:assigned+' => '',
'Class:Change/Attribute:status/Value:closed' => '已关闭',
'Class:Change/Attribute:status/Value:closed+' => '',
'Class:Change/Attribute:status/Value:new' => '新建',
'Class:Change/Attribute:status/Value:new+' => '',
'Class:Change/Attribute:status/Value:planned' => '已计划',
'Class:Change/Attribute:status/Value:planned+' => '',
'Class:Change/Attribute:status/Value:rejected' => '已驳回',
'Class:Change/Attribute:status/Value:rejected+' => '',
'Class:Change/Stimulus:ev_approve' => '批准',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Attribute:child_changes_list' => '子变更',
'Class:Change/Attribute:child_changes_list+' => '此变更相关的所有子变更',
'Class:Change/Attribute:parent_id_friendlyname' => '父级变更昵称',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Stimulus:ev_assign' => '分配',
'Class:Change/Stimulus:ev_assign+' => '',
'Class:Change/Stimulus:ev_finish' => '关闭',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change/Stimulus:ev_plan' => '计划',
'Class:Change/Stimulus:ev_plan+' => '',
'Class:Change/Stimulus:ev_reject' => '驳回',
'Class:Change/Stimulus:ev_reject+' => '',
'Class:Change/Stimulus:ev_reopen' => '重新打开',
'Class:Change/Stimulus:ev_reopen+' => '',
'Menu:Change:Overview' => '概况',
'Menu:Change:Overview+' => '',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:ChangeManagement' => '变更管理',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'Menu:NewChange' => '新建变更',
'Menu:NewChange+' => '新建变更',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:WaitingAcceptance' => '等待审核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批准的变更',
'Menu:WaitingApproval+' => '',
'Tickets:Related:OpenChanges' => '打开的变更',
'Tickets:Related:RecentChanges' => '最近的变更 (72小时)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类型)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'Class:Change/Stimulus:ev_approve' => '批准',
'Class:Change/Stimulus:ev_approve+' => '',
'Class:Change/Stimulus:ev_finish' => '关闭',
'Class:Change/Stimulus:ev_finish+' => '',
'Class:Change/Attribute:outage' => '停机',
'Class:Change/Attribute:outage+' => '',
'Class:Change/Attribute:outage/Value:no' => '',
'Class:Change/Attribute:outage/Value:no+' => '',
'Class:Change/Attribute:outage/Value:yes' => '是',
'Class:Change/Attribute:outage/Value:yes+' => '',
]);

View File

@@ -4,27 +4,40 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ConfigEditor' => '编辑配置文件',
'config-edit-title' => '配置文件编辑器',
'config-edit-intro' => '编辑配置文件时请务必格外小心.',
'config-apply' => '应用',
'config-apply-title' => '应用 (Ctrl+S)',
'config-cancel' => '重置',
'config-confirm-cancel' => '您的修改将被丢弃.',
'config-current-line' => '正在编辑第%1$s行',
'config-edit-intro' => '编辑配置文件时请务必格外小心.',
'config-edit-title' => '配置文件编辑器',
'config-error-file-changed' => '错误: 配置文件在您打开以后已被更改, 无法保存. 请刷新并再次保存.',
'config-error-transaction' => '错误: 无效的事务编号. 配置<b>没有</b>被更新.',
'config-interactive-not-allowed' => ITOP_APPLICATION_SHORT.'交互式配置编辑器已禁用. 请在配置文件中查看 <code>\'config_editor\' => \'disabled\'</code>.',
'config-no-change' => '没有变化: 配置文件将保持不变.',
'config-not-allowed-in-demo' => '抱歉, '.ITOP_APPLICATION_SHORT.'处于<b>演示模式</b>: 不能编辑配置文件.',
'config-parse-error' => '第%2$d行: %1$s.<br/>配置文件尚未更新.',
'config-reverted' => '配置文件已恢复.',
'config-saved' => '保存成功.',
'config-confirm-cancel' => '您的修改将被丢弃.',
'config-no-change' => '没有变化: 配置文件将保持不变.',
'config-reverted' => '配置文件已恢复.',
'config-parse-error' => '第%2$d行: %1$s.<br/>配置文件尚未更新.',
'config-current-line' => '正在编辑第%1$s行',
'config-saved-warning-db-password' => '保存成功, 但因为数据库密码中包含不支持的字符, 配置文件备份不会成功.',
'config-error-transaction' => '错误: 无效的事务编号. 配置<b>没有</b>被更新.',
'config-error-file-changed' => '错误: 配置文件在您打开以后已被更改, 无法保存. 请刷新并再次保存.',
'config-not-allowed-in-demo' => '抱歉, '.ITOP_APPLICATION_SHORT.'处于<b>演示模式</b>: 不能编辑配置文件.',
'config-interactive-not-allowed' => ITOP_APPLICATION_SHORT.'交互式配置编辑器已禁用. 请在配置文件中查看 <code>\'config_editor\' => \'disabled\'</code>.',
]);

View File

@@ -4,94 +4,123 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ModuleInstallation/Attribute:comment' => '备注',
'Class:ModuleInstallation/Attribute:installed' => '安装时间',
'Class:ModuleInstallation/Attribute:name' => '名称',
'Class:ModuleInstallation/Attribute:version' => '版本',
'Menu:iTopUpdate' => '应用升级',
'Menu:iTopUpdate+' => '应用升级',
'iTopUpdate:Error:BadFileContent' => '升级文件不是程序升级包',
'iTopUpdate:Error:BadFileFormat' => '上传的不是zip格式的文件',
'iTopUpdate:Error:BadItopProduct' => '升级文件与您的系统不兼容',
'iTopUpdate:Error:Copy' => '错误, 无法复制 \'%1$s\' 到 \'%2$s\'',
'iTopUpdate:Error:CorruptedFile' => '文件%1$s已损坏',
'iTopUpdate:Error:FileNotFound' => '文件找不到',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => '上传上限太小. 请调整PHP配置.',
'iTopUpdate:Error:InvalidToken' => '无效的token',
'iTopUpdate:Error:MissingFile' => '缺少文件: %1$s',
'iTopUpdate:Error:MissingFunction' => '无法开始升级, 功能缺失',
'iTopUpdate:Error:NoFile' => '没有提供文件',
'iTopUpdate:Error:UpdateFailed' => '升级失败',
'iTopUpdate:UI:Action' => '升级',
'iTopUpdate:UI:Back' => '返回',
'iTopUpdate:UI:Backup' => '升级之前执行备份',
'iTopUpdate:UI:CanCoreUpdate:Error' => '文件系统检查失败 (%1$s)',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => '文件系统检查失败 (%1$s文件不存在)',
'iTopUpdate:UI:CanCoreUpdate:Failed' => '文件系统检查失败',
'iTopUpdate:UI:CanCoreUpdate:Loading' => '正在文件系统',
'iTopUpdate:UI:CanCoreUpdate:No' => '应用无法升级: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => '警告: 应用升级可能失败: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Yes' => '应用无法升级',
'iTopUpdate:UI:Cancel' => '取消',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>检测到一些文件被修改</b>, 无法进行局部升级.</br>请按照<a target="_blank" href="%2$s">指南</a>一步步操作以手动升级系统. 您必须使用<a href="%1$s">安装</a>已升级应用.',
'iTopUpdate:UI:CheckInProgress' => '完整性检查中, 请稍后',
'iTopUpdate:UI:CheckUpdate' => '校验升级文件',
'iTopUpdate:UI:ConfirmInstallFile' => '即将安装%1$s',
'iTopUpdate:UI:Continue' => '继续',
'iTopUpdate:UI:CurrentVersion' => '当前版本',
'iTopUpdate:UI:DBDiskSpace' => '数据库的磁盘空间',
'iTopUpdate:UI:DiskFreeSpace' => '磁盘剩余空间',
'iTopUpdate:UI:DoBackup:Label' => '备份文件和数据库',
'iTopUpdate:UI:DoBackup:Warning' => '由于磁盘空间不足, 不建议备份',
'iTopUpdate:UI:DoFilesArchive' => '打包应用文件',
'iTopUpdate:UI:DoUpdate' => '升级',
'iTopUpdate:UI:FileUploadMaxSize' => '文件上传大小上限',
'iTopUpdate:UI:History' => '版本历史',
'iTopUpdate:UI:ItopDiskSpace' => ITOP_APPLICATION_SHORT.'的磁盘空间',
'iTopUpdate:UI:MaintenanceModeActive' => '此应用当前维护中, 不允许任何用户访问. 必须运行安装或恢复归档来使其处于正常模式.',
'iTopUpdate:UI:NewVersion' => '新安装的版本',
'iTopUpdate:UI:PageTitle' => '应用升级',
'iTopUpdate:UI:PostMaxSize' => 'PHP ini值post_max_size: %1$s',
'iTopUpdate:UI:Progress' => '升级进度',
'iTopUpdate:UI:RestoreArchive' => '您可以从归档文件 \'%1$s\' 还原应用程序',
'iTopUpdate:UI:RestoreBackup' => '您可以从 \'%1$s\' 还原数据库',
'iTopUpdate:UI:RunSetup' => '运行向导',
'itop-core-update:UI:SelectUpdateFile' => '应用升级',
'itop-core-update:UI:ConfirmUpdate' => ' 升级',
'itop-core-update:UI:UpdateCoreFiles' => '应用升级',
'iTopUpdate:UI:MaintenanceModeActive' => '此应用当前维护中, 不允许任何用户访问. 必须运行安装或恢复归档来使其处于正常模式.',
'itop-core-update:UI:UpdateDone' => '应用升级',
'itop-core-update/Operation:SelectUpdateFile/Title' => '应用升级',
'itop-core-update/Operation:ConfirmUpdate/Title' => '请确认升级应用',
'itop-core-update/Operation:UpdateCoreFiles/Title' => '应用正在升级',
'itop-core-update/Operation:UpdateDone/Title' => '应用升级完毕',
'iTopUpdate:UI:SelectUpdateFile' => '请选择要上传的升级文件',
'iTopUpdate:UI:ServerFile' => '服务器上的软件包路径已存在',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.'安装',
'iTopUpdate:UI:SetupLaunch' => '启动'.ITOP_APPLICATION_SHORT.'安装',
'iTopUpdate:UI:SetupLaunchConfirm' => '将启动'.ITOP_APPLICATION_SHORT.'安装, 确定吗?',
'iTopUpdate:UI:FastSetupLaunch' => 'Fast Setup~~',
'iTopUpdate:UI:SetupMessage:Backup' => '数据库备份',
'iTopUpdate:UI:SetupMessage:CheckCompile' => '检查更新',
'iTopUpdate:UI:SetupMessage:Compile' => '升级应用程序和数据库',
'iTopUpdate:UI:SetupMessage:CopyFiles' => '复制新文件',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => '正在进入维护模式',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => '正在退出维护模式',
'iTopUpdate:UI:SetupMessage:FilesArchive' => '打包应用文件',
'iTopUpdate:UI:SetupMessage:Ready' => '准备开始',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => '升级数据库',
'iTopUpdate:UI:SetupMessage:UpdateDone' => '升级完成',
'iTopUpdate:UI:Status' => '状态',
'iTopUpdate:UI:UpdateDone' => '升级成功',
'iTopUpdate:UI:UploadArchive' => '请选择要上传的软件包',
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini值upload_max_filesize: %1$s',
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => '升级期间, 应用会变成只读状态.',
'iTopUpdate:UI:CheckUpdate' => '校验升级文件',
'iTopUpdate:UI:ConfirmInstallFile' => '即将安装 %1$s',
'iTopUpdate:UI:DoUpdate' => '升级',
'iTopUpdate:UI:CurrentVersion' => '当前版本',
'iTopUpdate:UI:NewVersion' => '新安装的版本',
'iTopUpdate:UI:Back' => '返回',
'iTopUpdate:UI:Cancel' => '取消',
'iTopUpdate:UI:Continue' => '继续',
'iTopUpdate:UI:RunSetup' => '运行向导',
'iTopUpdate:UI:WithDBBackup' => '数据库备份',
'iTopUpdate:UI:WithFilesBackup' => '应用文件备份',
'iTopUpdate:UI:WithoutBackup' => '无需备份',
'itop-core-update/Operation:ConfirmUpdate/Title' => '请确认升级应用',
'itop-core-update/Operation:SelectUpdateFile/Title' => '应用升级',
'itop-core-update/Operation:UpdateCoreFiles/Title' => '应用正在升级',
'itop-core-update/Operation:UpdateDone/Title' => '应用升级完毕',
'itop-core-update:UI:ConfirmUpdate' => ' 升级',
'itop-core-update:UI:SelectUpdateFile' => '应用升级',
'itop-core-update:UI:UpdateCoreFiles' => '应用升级',
'itop-core-update:UI:UpdateDone' => '应用升级',
'iTopUpdate:UI:Backup' => '升级之前执行备份',
'iTopUpdate:UI:DoFilesArchive' => '打包应用文件',
'iTopUpdate:UI:UploadArchive' => '请选择要上传的软件包',
'iTopUpdate:UI:ServerFile' => '服务器上的软件包路径已存在',
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => '升级期间, 应用会变成只读状态.',
'iTopUpdate:UI:Status' => '状态',
'iTopUpdate:UI:Action' => '升级',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.'安装',
'iTopUpdate:UI:History' => '版本历史',
'iTopUpdate:UI:Progress' => '升级进度',
'iTopUpdate:UI:DoBackup:Label' => '备份文件和数据库',
'iTopUpdate:UI:DoBackup:Warning' => '由于磁盘空间不足, 不建议备份',
'iTopUpdate:UI:DiskFreeSpace' => '磁盘剩余空间',
'iTopUpdate:UI:ItopDiskSpace' => ITOP_APPLICATION_SHORT.'的磁盘空间',
'iTopUpdate:UI:DBDiskSpace' => '数据库的磁盘空间',
'iTopUpdate:UI:FileUploadMaxSize' => '文件上传大小上限',
'iTopUpdate:UI:PostMaxSize' => 'PHP ini值post_max_size: %1$s',
'iTopUpdate:UI:UploadMaxFileSize' => 'PHP ini 值 upload_max_filesize: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Loading' => '正在检查文件',
'iTopUpdate:UI:CanCoreUpdate:Error' => '文件检查失败 (%1$s)',
'iTopUpdate:UI:CanCoreUpdate:ErrorFileNotExist' => '文件检查失败 (%1$s 文件不存在)',
'iTopUpdate:UI:CanCoreUpdate:Failed' => '文件检查失败',
'iTopUpdate:UI:CanCoreUpdate:Yes' => '应用可以升级',
'iTopUpdate:UI:CanCoreUpdate:No' => '应用无法升级: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => '警告: 应用升级可能失败: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>检测到一些文件被修改</b>, 无法进行局部升级.</br>请按照<a target="_blank" href="%2$s">指南</a>一步步操作以手动升级系统. 您必须使用<a href="%1$s">安装</a>已升级应用.',
'iTopUpdate:UI:CheckInProgress' => '完整性检查中, 请稍候',
'iTopUpdate:UI:SetupLaunch' => '启动'.ITOP_APPLICATION_SHORT.'安装',
'iTopUpdate:UI:SetupLaunchConfirm' => '将启动'.ITOP_APPLICATION_SHORT.'安装, 确定吗?',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => '准备开始',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => '正在进入维护模式',
'iTopUpdate:UI:SetupMessage:Backup' => '数据库备份',
'iTopUpdate:UI:SetupMessage:FilesArchive' => '打包应用文件',
'iTopUpdate:UI:SetupMessage:CopyFiles' => '复制新文件',
'iTopUpdate:UI:SetupMessage:CheckCompile' => '检查更新',
'iTopUpdate:UI:SetupMessage:Compile' => '升级应用程序和数据库',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => '升级数据库',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => '正在退出维护模式',
'iTopUpdate:UI:SetupMessage:UpdateDone' => '升级完成',
// Errors
'iTopUpdate:Error:MissingFunction' => '无法开始升级, 功能缺失',
'iTopUpdate:Error:MissingFile' => '缺少文件: %1$s',
'iTopUpdate:Error:CorruptedFile' => '文件 %1$s 已损坏',
'iTopUpdate:Error:BadFileFormat' => '升级包不是 zip 格式',
'iTopUpdate:Error:BadFileContent' => '文件不是程序升级包',
'iTopUpdate:Error:BadItopProduct' => '升级包与您的系统不兼容',
'iTopUpdate:Error:Copy' => '错误, 无法复制 \'%1$s\' 到 \'%2$s\'',
'iTopUpdate:Error:FileNotFound' => '文件找不到',
'iTopUpdate:Error:NoFile' => '没有提供文件',
'iTopUpdate:Error:InvalidToken' => '无效的 token',
'iTopUpdate:Error:UpdateFailed' => '升级失败',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => '上传上限太小. 请调整 PHP 配置.',
'iTopUpdate:UI:RestoreArchive' => '您可以从归档文件 \'%1$s\' 还原应用程序',
'iTopUpdate:UI:RestoreBackup' => '您可以从 \'%1$s\' 还原数据库',
'iTopUpdate:UI:UpdateDone' => '升级成功',
'Menu:iTopUpdate' => '应用升级',
'Menu:iTopUpdate+' => '应用升级',
// Missing itop entries
'Class:ModuleInstallation/Attribute:installed' => '安装时间',
'Class:ModuleInstallation/Attribute:name' => '名称',
'Class:ModuleInstallation/Attribute:version' => '版本',
'Class:ModuleInstallation/Attribute:comment' => '备注',
]);

View File

@@ -120,6 +120,8 @@ $("#launch-fast-setup").on("click", function(e) {
var oMessage = $("#fast-setup-alert");
var oContent = $("#fast-setup-content");
oMessage.removeClass("ibo-is-hidden");
oMessage.removeClass("ibo-is-failure");
oMessage.removeClass("ibo-is-success");
oMessage.addClass("ibo-is-information");
oContent.html("{{ 'iTopUpdate:UI:SetupMessage:Compile'|dict_s }}");
@@ -134,20 +136,29 @@ $("#launch-fast-setup").on("click", function(e) {
route: "core_update_ajax.rebuild_toolkit_environment"
},
dataType: "json",
complete: function(jqXHR, textStatus) {
$("#fast-setup-wait").addClass("ibo-is-hidden");
$("#launch-fast-setup").prop("disabled", false);
fast_setup_wait.addClass("ibo-is-hidden");
},
success: function (data) {
oMessage.removeClass("ibo-is-information");
if (data.bStatus) {
oMessage.removeClass("ibo-is-failure");
oMessage.addClass("ibo-is-success");
oContent.html("{{ 'iTopUpdate:UI:SetupMessage:UpdateDone'|dict_s }}");
} else {
oMessage.removeClass("ibo-is-success");
oMessage.addClass("ibo-is-failure");
oContent.html(data.sError);
}
$("#fast-setup-wait").addClass("ibo-is-hidden");
$("#launch-fast-setup").prop("disabled", false);
fast_setup_wait.addClass("ibo-is-hidden");
},
error: function(jqXHR, textStatus, errorThrown) {
oMessage.removeClass("ibo-is-information");
oMessage.removeClass("ibo-is-success");
oMessage.addClass("ibo-is-failure");
oContent.html(textStatus + ' ' + errorThrown);
}
});

View File

@@ -20,6 +20,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -20,6 +20,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -4,43 +4,93 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: FAQ
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:FAQ:Menu' => 'FAQ',
'Brick:Portal:FAQ:Title' => 'FAQ',
'Brick:Portal:FAQ:Title+' => '<p>需要帮助?</p><p>查阅列表中的常见问题, 或许可以立即找到令您满意的答案.</p>',
'Class:FAQ' => 'FAQ',
'Class:FAQ+' => 'FAQ',
'Class:FAQ+' => '常见问题',
'Class:FAQ/Attribute:title' => '标题',
'Class:FAQ/Attribute:title+' => '',
'Class:FAQ/Attribute:summary' => '概要',
'Class:FAQ/Attribute:summary+' => '',
'Class:FAQ/Attribute:description' => '描述',
'Class:FAQ/Attribute:description+' => '',
'Class:FAQ/Attribute:category_id' => '类别',
'Class:FAQ/Attribute:category_id+' => '',
'Class:FAQ/Attribute:category_name' => '类别名称',
'Class:FAQ/Attribute:category_name+' => '',
'Class:FAQ/Attribute:description' => '描述',
'Class:FAQ/Attribute:description+' => '',
'Class:FAQ/Attribute:domains' => '范围',
'Class:FAQ/Attribute:error_code' => '错误编码',
'Class:FAQ/Attribute:error_code+' => '',
'Class:FAQ/Attribute:key_words' => '关键字',
'Class:FAQ/Attribute:key_words+' => '',
'Class:FAQ/Attribute:summary' => '概要',
'Class:FAQ/Attribute:summary+' => '',
'Class:FAQ/Attribute:title' => '标题',
'Class:FAQ/Attribute:title+' => '',
'Class:FAQCategory' => 'FAQ类别',
'Class:FAQCategory+' => 'FAQ类别',
'Class:FAQCategory/Attribute:faq_list' => 'FAQ',
'Class:FAQCategory/Attribute:faq_list+' => '此类别FAQ相关的所有常见问题',
'Class:FAQ/Attribute:domains' => '范围',
]);
//
// Class: FAQCategory
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FAQCategory' => 'FAQ 类别',
'Class:FAQCategory+' => 'FAQ 类别',
'Class:FAQCategory/Attribute:name' => '名称',
'Class:FAQCategory/Attribute:name+' => '',
'Menu:FAQ' => 'FAQ',
'Menu:FAQ+' => '所有FAQ',
'Menu:FAQCategory' => 'FAQ类别',
'Menu:FAQCategory+' => '所有FAQ类别',
'Menu:Problem:Shortcuts' => '快捷方式',
'Class:FAQCategory/Attribute:faq_list' => 'FAQ',
'Class:FAQCategory/Attribute:faq_list+' => '此类别 FAQ 相关的所有常见问题',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ProblemManagement' => '问题管理',
'Menu:ProblemManagement+' => '问题管理',
'Menu:Problem:Shortcuts' => '快捷方式',
'Menu:FAQCategory' => 'FAQ 类别',
'Menu:FAQCategory+' => '所有 FAQ 类别',
'Menu:FAQ' => 'FAQ',
'Menu:FAQ+' => '所有 FAQ',
'Brick:Portal:FAQ:Menu' => 'FAQ',
'Brick:Portal:FAQ:Title' => '常见问题',
'Brick:Portal:FAQ:Title+' => '<p>需要帮助?</p><p>查阅列表中的常见问题, 或许可以立即找到令您满意的答案.</p>',
]);

View File

@@ -4,14 +4,29 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'FilesInformation:Error:CantWriteToFile' => '文件%1$s无法写入',
'FilesInformation:Error:CorruptedFile' => '文件%1$s已损坏',
'FilesInformation:Error:ListCorruptedFile' => '已损坏的文件: %1$s',
// Errors
'FilesInformation:Error:MissingFile' => '文件丢失: %1$s',
'FilesInformation:Error:CorruptedFile' => '文件 %1$s 已损坏',
'FilesInformation:Error:ListCorruptedFile' => '已损坏的文件: %1$s',
'FilesInformation:Error:CantWriteToFile' => '文件 %1$s 无法写入',
]);

View File

@@ -4,64 +4,84 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
// Dictionary entries go here
'Menu:iTopHub' => 'iTop Hub',
'Menu:iTopHub:Register' => '进入iTop Hub',
'Menu:iTopHub:Register+' => '进入iTop Hub 更新您的组件',
'Menu:iTopHub:Register:Description' => '<p>进入iTop Hub社区平台!</br>寻找您想要的内容和信息, 管理本机扩展或安装新的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到iTop Hub上.</p>',
'Menu:iTopHub:MyExtensions' => '已安装的扩展',
'Menu:iTopHub:MyExtensions+' => '查看本机已安装的扩展',
'Menu:iTopHub:BrowseExtensions' => '从iTop Hub获取扩展',
'Menu:iTopHub:BrowseExtensions+' => '去iTop Hub浏览更多的扩展',
'Menu:iTopHub:BrowseExtensions:Description' => '<p>进入iTop Hub商店, 一站式查找各种iTop扩展的地方 !</br>寻找符合您要求的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到iTop Hub上.</p>',
'Menu:iTopHub:MyExtensions' => '已安装的扩展',
'Menu:iTopHub:MyExtensions+' => '查看本机已安装的扩展',
'Menu:iTopHub:Register' => '进入iTop Hub',
'Menu:iTopHub:Register+' => '进入iTop Hub更新您的组件',
'Menu:iTopHub:Register:Description' => '<p>进入iTop Hub社区平台!</br>寻找您想要的内容和信息, 管理本机扩展或安装新的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到iTop Hub上.</p>',
'UI:About:RemoteExtensionSource' => 'iTop Hub',
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入iTop Hub.',
'iTopHub:BackupFailed' => '备份失败!',
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s可用磁盘空间位于%2$s.',
'iTopHub:BackupOk' => '备份成功.',
'iTopHub:GoBtn' => '进入 iTop Hub',
'iTopHub:CloseBtn' => '关闭',
'iTopHub:GoBtn:Tooltip' => '跳到 www.itophub.io',
'iTopHub:OpenInNewWindow' => '从新窗口打开iTop Hub',
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入iTop Hub.',
'UI:About:RemoteExtensionSource' => 'iTop Hub',
'iTopHub:Explanation' => '点击这个按钮您将被引导至iTop Hub.',
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s 可用磁盘空间位于 %2$s.',
'iTopHub:FailedToCheckFreeDiskSpace' => '检查可用磁盘空间失败.',
'iTopHub:BackupOk' => '备份成功.',
'iTopHub:BackupFailed' => '备份失败!',
'iTopHub:Landing:Status' => '部署状态',
'iTopHub:Landing:Install' => '扩展安装进行中...',
'iTopHub:CompiledOK' => '编译成功.',
'iTopHub:ConfigurationSafelyReverted' => '安装时发生错误!<br/>系统配置将不会改变.',
'iTopHub:FailAuthent' => '认证失败.',
'iTopHub:InstalledExtensions' => '本机已安装的扩展',
'iTopHub:ExtensionCategory:Manual' => '手动安装的扩展',
'iTopHub:ExtensionCategory:Manual+' => '下列已安装的扩展是手动将文件放置到 %1$s 目录的:',
'iTopHub:ExtensionCategory:Remote' => '从 iTop Hub 安装的扩展',
'iTopHub:ExtensionCategory:Remote+' => '下列已安装的扩展是来自 iTop Hub:',
'iTopHub:NoExtensionInThisCategory' => '尚未安装扩展',
'iTopHub:NoExtensionInThisCategory+' => '浏览 iTop Hub, 去寻找符合您喜欢的扩展吧.',
'iTopHub:ExtensionNotInstalled' => '未安装',
'iTopHub:GetMoreExtensions' => '从 iTop Hub 获取扩展...',
'iTopHub:LandingWelcome' => '恭喜! 下列来自 iTop Hub 的扩展已被下载并安装到本机.',
'iTopHub:GoBackToITopBtn' => '返回'.ITOP_APPLICATION_SHORT,
'iTopHub:Uncompressing' => '扩展解压中...',
'iTopHub:InstallationWelcome' => '安装来自 iTop Hub 的扩展',
'iTopHub:DBBackupLabel' => '本机备份',
'iTopHub:DBBackupSentence' => '在升级之前,备份数据库和'.ITOP_APPLICATION_SHORT.'配置文件',
'iTopHub:DatabaseBackupProgress' => '本机备份...',
'iTopHub:DeployBtn' => '安装!',
'iTopHub:Explanation' => '点击这个按钮您将被引导至iTop Hub.',
'iTopHub:ExtensionCategory:Manual' => '手动安装的扩展',
'iTopHub:ExtensionCategory:Manual+' => '下列已安装的扩展是手动将文件放置到%1$s目录的:',
'iTopHub:ExtensionCategory:Remote' => '从iTop Hub安装的扩展',
'iTopHub:ExtensionCategory:Remote+' => '下列已安装的扩展是来自iTop Hub:',
'iTopHub:ExtensionNotInstalled' => '未安装',
'iTopHub:FailAuthent' => '认证失败.',
'iTopHub:FailedToCheckFreeDiskSpace' => '检查可用磁盘空间失败.',
'iTopHub:GetMoreExtensions' => '从iTop Hub获取扩展...',
'iTopHub:GoBackToITopBtn' => '返回'.ITOP_APPLICATION_SHORT,
'iTopHub:GoBtn' => '进入iTop Hub',
'iTopHub:GoBtn:Tooltip' => '跳到www.itophub.io',
'iTopHub:InstallationEffect:Downgrade' => '将从版本%1$s<b>降级</b>到版本%2$s.',
'iTopHub:InstallationEffect:Install' => '版本: %1$s将被安装.',
'iTopHub:DatabaseBackupProgress' => '实例备份...',
'iTopHub:InstallationEffect:Install' => '版本: %1$s 将被安装.',
'iTopHub:InstallationEffect:NoChange' => '版本: %1$s 已安装. 保持不变.',
'iTopHub:InstallationEffect:Upgrade' => '将从版本 %1$s <b>升级</b>到版本 %2$s.',
'iTopHub:InstallationEffect:Downgrade' => '将从版本 %1$s <b>降级</b>到版本 %2$s.',
'iTopHub:InstallationProgress:DatabaseBackup' => ITOP_APPLICATION_SHORT.'实例备份...',
'iTopHub:InstallationProgress:ExtensionsInstallation' => '安装扩展',
'iTopHub:InstallationEffect:MissingDependencies' => '扩展无法安装, 因为未知的依赖.',
'iTopHub:InstallationEffect:MissingDependencies_Details' => '此扩展依赖模块: %1$s',
'iTopHub:InstallationEffect:NoChange' => '版本: %1$s已安装. 保持不变.',
'iTopHub:InstallationEffect:Upgrade' => '将从版本%1$s<b>升级</b>到版本%2$s.',
'iTopHub:InstallationProgress:DatabaseBackup' => ITOP_APPLICATION_SHORT.'本机备份...',
'iTopHub:InstallationProgress:ExtensionsInstallation' => '安装扩展',
'iTopHub:InstallationProgress:InstallationSuccessful' => '安装成功!',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s 版本: %2$s.',
'iTopHub:InstallationStatus:Installed' => '已安装',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s版本: %2$s.',
'iTopHub:InstallationStatus:Version_NotInstalled' => '版本%1$s<b>未</b>安装.',
'iTopHub:InstallationWelcome' => '安装来自iTop Hub的扩展',
'iTopHub:InstalledExtensions' => '本机已安装的扩展',
'iTopHub:Landing:Install' => '扩展安装进行中...',
'iTopHub:Landing:Status' => '安装状态',
'iTopHub:LandingWelcome' => '恭喜! 下列来自iTop Hub的扩展已被下载并安装到本机.',
'iTopHub:NoExtensionInThisCategory' => '尚未安装扩展',
'iTopHub:NoExtensionInThisCategory+' => '浏览iTop Hub, 去寻找符合您喜欢的扩展吧.',
'iTopHub:OpenInNewWindow' => '从新窗口打开iTop Hub',
'iTopHub:Uncompressing' => '扩展解压中...',
'iTopHub:InstallationStatus:Version_NotInstalled' => '版本 %1$s <b>未被</b> 安装.',
]);

View File

@@ -4,70 +4,93 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:IncidentManagement' => '事件管理',
'Menu:IncidentManagement+' => '事件管理',
'Menu:Incident:Overview' => '概况',
'Menu:Incident:Overview+' => '概况',
'Menu:NewIncident' => '新建事件',
'Menu:NewIncident+' => '新建事件工单',
'Menu:SearchIncidents' => '搜索事件',
'Menu:SearchIncidents+' => '搜索事件',
'Menu:Incident:Shortcuts' => '快捷方式',
'Menu:Incident:Shortcuts+' => '',
'Menu:Incident:MyIncidents' => '分配给我的事件',
'Menu:Incident:MyIncidents+' => '分配给我的事件',
'Menu:Incident:EscalatedIncidents' => '已升级的事件',
'Menu:Incident:EscalatedIncidents+' => '已升级的事件',
'Menu:Incident:OpenIncidents' => '所有打开的事件',
'Menu:Incident:OpenIncidents+' => '所有打开的事件',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => '最近两周的事件 (按优先级)',
'UI-IncidentManagementOverview-Last-14-days' => '最近两周的事件 (按数量)',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => '打开的事件 (按状态)',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => '打开的事件 (按办理人)',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => '打开的事件 (按客户)',
]);
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Incident
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident' => '事件',
'Class:Incident+' => '',
'Class:Incident/Attribute:assignment_date' => '分配日期',
'Class:Incident/Attribute:assignment_date+' => '',
'Class:Incident/Attribute:child_incidents_list' => '子事件',
'Class:Incident/Attribute:child_incidents_list+' => '此事件相关的所有衍生事件',
'Class:Incident/Attribute:cumulatedpending' => '累计待定',
'Class:Incident/Attribute:cumulatedpending+' => '',
'Class:Incident/Attribute:escalation_flag' => '是否升级',
'Class:Incident/Attribute:escalation_flag+' => '',
'Class:Incident/Attribute:escalation_flag/Value:no' => '',
'Class:Incident/Attribute:escalation_flag/Value:no+' => '',
'Class:Incident/Attribute:escalation_flag/Value:yes' => '',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => '',
'Class:Incident/Attribute:escalation_reason' => '升级原因',
'Class:Incident/Attribute:escalation_reason+' => '',
'Class:Incident/Attribute:status' => '状态',
'Class:Incident/Attribute:status+' => '',
'Class:Incident/Attribute:status/Value:new' => '新建',
'Class:Incident/Attribute:status/Value:new+' => '',
'Class:Incident/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '',
'Class:Incident/Attribute:status/Value:assigned' => '已分配',
'Class:Incident/Attribute:status/Value:assigned+' => '',
'Class:Incident/Attribute:status/Value:escalated_ttr' => '已升级TTR',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '',
'Class:Incident/Attribute:status/Value:pending' => '待定',
'Class:Incident/Attribute:status/Value:pending+' => '',
'Class:Incident/Attribute:status/Value:resolved' => '已解决',
'Class:Incident/Attribute:status/Value:resolved+' => '',
'Class:Incident/Attribute:status/Value:closed' => '已关闭',
'Class:Incident/Attribute:status/Value:closed+' => '',
'Class:Incident/Attribute:impact' => '影响范围',
'Class:Incident/Attribute:impact+' => '',
'Class:Incident/Attribute:impact+' => '事件的影响范围,多少用户受影响',
'Class:Incident/Attribute:impact/Value:1' => '部门',
'Class:Incident/Attribute:impact/Value:1+' => '',
'Class:Incident/Attribute:impact/Value:2' => '服务',
'Class:Incident/Attribute:impact/Value:2+' => '',
'Class:Incident/Attribute:impact/Value:3' => '个体',
'Class:Incident/Attribute:impact/Value:3+' => '',
'Class:Incident/Attribute:last_pending_date' => '最近待定日期',
'Class:Incident/Attribute:last_pending_date+' => '',
'Class:Incident/Attribute:origin' => '来源',
'Class:Incident/Attribute:origin+' => '',
'Class:Incident/Attribute:origin/Value:chat' => '聊天工具',
'Class:Incident/Attribute:origin/Value:chat+' => '创建于聊天工具沟通后的事件',
'Class:Incident/Attribute:origin/Value:in_person' => '当面',
'Class:Incident/Attribute:origin/Value:in_person+' => '创建于当面沟通后的事件',
'Class:Incident/Attribute:origin/Value:mail' => '邮件',
'Class:Incident/Attribute:origin/Value:mail+' => '邮件',
'Class:Incident/Attribute:origin/Value:monitoring' => '监控',
'Class:Incident/Attribute:origin/Value:monitoring+' => '监控',
'Class:Incident/Attribute:origin/Value:phone' => '电话',
'Class:Incident/Attribute:origin/Value:phone+' => '电话',
'Class:Incident/Attribute:origin/Value:portal' => '门户',
'Class:Incident/Attribute:origin/Value:portal+' => '门户',
'Class:Incident/Attribute:parent_change_id' => '父级变更',
'Class:Incident/Attribute:parent_change_id+' => '',
'Class:Incident/Attribute:parent_change_ref' => '变更编号',
'Class:Incident/Attribute:parent_change_ref+' => '',
'Class:Incident/Attribute:parent_incident_id' => '父级事件',
'Class:Incident/Attribute:parent_incident_id+' => '',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => '父级事件名称',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Attribute:parent_incident_ref' => '事件编号',
'Class:Incident/Attribute:parent_incident_ref+' => '',
'Class:Incident/Attribute:parent_problem_id' => '父级问题',
'Class:Incident/Attribute:parent_problem_id+' => '~~',
'Class:Incident/Attribute:parent_problem_ref' => '父级问题编号',
'Class:Incident/Attribute:parent_problem_ref+' => '~~',
'Class:Incident/Attribute:pending_reason' => '待定原因',
'Class:Incident/Attribute:pending_reason+' => '',
'Class:Incident/Attribute:priority' => '优先级',
'Class:Incident/Attribute:priority+' => '',
'Class:Incident/Attribute:priority+' => '哪个工单应该优先处理',
'Class:Incident/Attribute:priority/Value:1' => '紧急',
'Class:Incident/Attribute:priority/Value:1+' => '紧急',
'Class:Incident/Attribute:priority/Value:2' => '高',
@@ -76,10 +99,72 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:priority/Value:3+' => '中',
'Class:Incident/Attribute:priority/Value:4' => '低',
'Class:Incident/Attribute:priority/Value:4+' => '低',
'Class:Incident/Attribute:public_log' => '评论',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:related_request_list' => '相关需求',
'Class:Incident/Attribute:related_request_list+' => '此事件相关的所有需求',
'Class:Incident/Attribute:urgency' => '紧急度',
'Class:Incident/Attribute:urgency+' => '问题应该多快解决',
'Class:Incident/Attribute:urgency/Value:1' => '紧急',
'Class:Incident/Attribute:urgency/Value:1+' => '紧急',
'Class:Incident/Attribute:urgency/Value:2' => '高',
'Class:Incident/Attribute:urgency/Value:2+' => '高',
'Class:Incident/Attribute:urgency/Value:3' => '中',
'Class:Incident/Attribute:urgency/Value:3+' => '中',
'Class:Incident/Attribute:urgency/Value:4' => '低',
'Class:Incident/Attribute:urgency/Value:4+' => '低',
'Class:Incident/Attribute:origin' => '来源',
'Class:Incident/Attribute:origin+' => '事件工单由谁发起或触发的',
'Class:Incident/Attribute:origin/Value:in_person' => '当面',
'Class:Incident/Attribute:origin/Value:in_person+' => '创建于当面沟通后的事件',
'Class:Incident/Attribute:origin/Value:chat' => '聊天工具',
'Class:Incident/Attribute:origin/Value:chat+' => '创建于聊天工具沟通后的事件',
'Class:Incident/Attribute:origin/Value:mail' => '邮件',
'Class:Incident/Attribute:origin/Value:mail+' => '邮件',
'Class:Incident/Attribute:origin/Value:monitoring' => '监控',
'Class:Incident/Attribute:origin/Value:monitoring+' => '监控',
'Class:Incident/Attribute:origin/Value:phone' => '电话',
'Class:Incident/Attribute:origin/Value:phone+' => '电话',
'Class:Incident/Attribute:origin/Value:portal' => '门户',
'Class:Incident/Attribute:origin/Value:portal+' => '门户',
'Class:Incident/Attribute:service_id' => '服务',
'Class:Incident/Attribute:service_id+' => '',
'Class:Incident/Attribute:service_name' => '服务名称',
'Class:Incident/Attribute:service_name+' => '',
'Class:Incident/Attribute:servicesubcategory_id' => '子服务',
'Class:Incident/Attribute:servicesubcategory_id+' => '',
'Class:Incident/Attribute:servicesubcategory_name' => '子服务名称',
'Class:Incident/Attribute:servicesubcategory_name+' => '',
'Class:Incident/Attribute:escalation_flag' => '是否升级',
'Class:Incident/Attribute:escalation_flag+' => '',
'Class:Incident/Attribute:escalation_flag/Value:no' => '否',
'Class:Incident/Attribute:escalation_flag/Value:no+' => '否',
'Class:Incident/Attribute:escalation_flag/Value:yes' => '是',
'Class:Incident/Attribute:escalation_flag/Value:yes+' => '是',
'Class:Incident/Attribute:escalation_reason' => '升级原因',
'Class:Incident/Attribute:escalation_reason+' => '',
'Class:Incident/Attribute:assignment_date' => '分配日期',
'Class:Incident/Attribute:assignment_date+' => '',
'Class:Incident/Attribute:resolution_date' => '解决日期',
'Class:Incident/Attribute:resolution_date+' => '',
'Class:Incident/Attribute:last_pending_date' => '最近待定日期',
'Class:Incident/Attribute:last_pending_date+' => '',
'Class:Incident/Attribute:cumulatedpending' => '累计待定',
'Class:Incident/Attribute:cumulatedpending+' => '',
'Class:Incident/Attribute:tto' => 'TTO',
'Class:Incident/Attribute:tto+' => '响应时间',
'Class:Incident/Attribute:ttr' => 'TTR',
'Class:Incident/Attribute:ttr+' => '解决时限',
'Class:Incident/Attribute:tto_escalation_deadline' => 'TTO截止日期',
'Class:Incident/Attribute:tto_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_tto_passed' => 'SLA TTO合格',
'Class:Incident/Attribute:sla_tto_passed+' => '',
'Class:Incident/Attribute:sla_tto_over' => 'SLA TTO超时',
'Class:Incident/Attribute:sla_tto_over+' => '',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'TTR截止日期',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '',
'Class:Incident/Attribute:sla_ttr_passed' => 'SLA TTR合格',
'Class:Incident/Attribute:sla_ttr_passed+' => '',
'Class:Incident/Attribute:sla_ttr_over' => 'SLA TTR超时',
'Class:Incident/Attribute:sla_ttr_over+' => '',
'Class:Incident/Attribute:time_spent' => '耗时',
'Class:Incident/Attribute:time_spent+' => '',
'Class:Incident/Attribute:resolution_code' => '解决方式',
'Class:Incident/Attribute:resolution_code+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance' => '外部支持',
@@ -96,66 +181,28 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:resolution_code/Value:system update+' => '系统更新',
'Class:Incident/Attribute:resolution_code/Value:training' => '培训',
'Class:Incident/Attribute:resolution_code/Value:training+' => '培训',
'Class:Incident/Attribute:resolution_date' => '解决日期',
'Class:Incident/Attribute:resolution_date+' => '',
'Class:Incident/Attribute:service_id' => '服务',
'Class:Incident/Attribute:service_id+' => '',
'Class:Incident/Attribute:service_name' => '服务名称',
'Class:Incident/Attribute:service_name+' => '',
'Class:Incident/Attribute:servicesubcategory_id' => '子服务',
'Class:Incident/Attribute:servicesubcategory_id+' => '',
'Class:Incident/Attribute:servicesubcategory_name' => '子服务名称',
'Class:Incident/Attribute:servicesubcategory_name+' => '',
'Class:Incident/Attribute:sla_tto_over' => 'SLA TTO超时',
'Class:Incident/Attribute:sla_tto_over+' => '',
'Class:Incident/Attribute:sla_tto_passed' => 'SLA TTO合格',
'Class:Incident/Attribute:sla_tto_passed+' => '',
'Class:Incident/Attribute:sla_ttr_over' => 'SLA TTR超时',
'Class:Incident/Attribute:sla_ttr_over+' => '',
'Class:Incident/Attribute:sla_ttr_passed' => 'SLA TTR合格',
'Class:Incident/Attribute:sla_ttr_passed+' => '',
'Class:Incident/Attribute:solution' => '解决方案',
'Class:Incident/Attribute:solution+' => '',
'Class:Incident/Attribute:status' => '状态',
'Class:Incident/Attribute:status+' => '',
'Class:Incident/Attribute:status/Value:assigned' => '已分配',
'Class:Incident/Attribute:status/Value:assigned+' => '',
'Class:Incident/Attribute:status/Value:closed' => '已关闭',
'Class:Incident/Attribute:status/Value:closed+' => '',
'Class:Incident/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:Incident/Attribute:status/Value:escalated_tto+' => '',
'Class:Incident/Attribute:status/Value:escalated_ttr' => '已升级TTR',
'Class:Incident/Attribute:status/Value:escalated_ttr+' => '',
'Class:Incident/Attribute:status/Value:new' => '新建',
'Class:Incident/Attribute:status/Value:new+' => '',
'Class:Incident/Attribute:status/Value:pending' => '待定',
'Class:Incident/Attribute:status/Value:pending+' => '',
'Class:Incident/Attribute:status/Value:resolved' => '已解决',
'Class:Incident/Attribute:status/Value:resolved+' => '',
'Class:Incident/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:Incident/Attribute:status/Value:waiting_for_approval+' => '',
'Class:Incident/Attribute:time_spent' => '耗时',
'Class:Incident/Attribute:time_spent+' => '',
'Class:Incident/Attribute:tto' => 'TTO',
'Class:Incident/Attribute:tto+' => '响应时间',
'Class:Incident/Attribute:tto_escalation_deadline' => 'TTO截止日期',
'Class:Incident/Attribute:tto_escalation_deadline+' => '',
'Class:Incident/Attribute:ttr' => 'TTR',
'Class:Incident/Attribute:ttr+' => '解决时限',
'Class:Incident/Attribute:ttr_escalation_deadline' => 'TTR截止日期',
'Class:Incident/Attribute:ttr_escalation_deadline+' => '',
'Class:Incident/Attribute:urgency' => '紧急度',
'Class:Incident/Attribute:urgency+' => '',
'Class:Incident/Attribute:urgency/Value:1' => '紧急',
'Class:Incident/Attribute:urgency/Value:1+' => '紧急',
'Class:Incident/Attribute:urgency/Value:2' => '高',
'Class:Incident/Attribute:urgency/Value:2+' => '高',
'Class:Incident/Attribute:urgency/Value:3' => '中',
'Class:Incident/Attribute:urgency/Value:3+' => '中',
'Class:Incident/Attribute:urgency/Value:4' => '低',
'Class:Incident/Attribute:urgency/Value:4+' => '低',
'Class:Incident/Attribute:user_comment' => '用户评论',
'Class:Incident/Attribute:user_comment+' => '',
'Class:Incident/Attribute:pending_reason' => '待定原因',
'Class:Incident/Attribute:pending_reason+' => '',
'Class:Incident/Attribute:parent_incident_id' => '父级事件',
'Class:Incident/Attribute:parent_incident_id+' => '',
'Class:Incident/Attribute:parent_incident_ref' => '事件编号',
'Class:Incident/Attribute:parent_incident_ref+' => '',
'Class:Incident/Attribute:parent_change_id' => '父级变更',
'Class:Incident/Attribute:parent_change_id+' => '',
'Class:Incident/Attribute:parent_change_ref' => '变更编号',
'Class:Incident/Attribute:parent_change_ref+' => '',
'Class:Incident/Attribute:parent_problem_id' => '父级问题',
'Class:Incident/Attribute:parent_problem_id+' => '~~',
'Class:Incident/Attribute:parent_problem_ref' => '父级问题编号',
'Class:Incident/Attribute:parent_problem_ref+' => '~~',
'Class:Incident/Attribute:related_request_list' => '相关需求',
'Class:Incident/Attribute:related_request_list+' => '此事件相关的所有需求',
'Class:Incident/Attribute:child_incidents_list' => '子事件',
'Class:Incident/Attribute:child_incidents_list+' => '此事件相关的所有衍生事件',
'Class:Incident/Attribute:public_log' => '评论',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => '用户满意度',
'Class:Incident/Attribute:user_satisfaction+' => '',
'Class:Incident/Attribute:user_satisfaction/Value:1' => '非常满意',
@@ -166,47 +213,31 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:user_satisfaction/Value:3+' => '不满意',
'Class:Incident/Attribute:user_satisfaction/Value:4' => '非常不满意',
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '非常不满意',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => '无法分配父级事件给自己',
'Class:Incident/Method:ResolveChildTickets' => '解决子工单',
'Class:Incident/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案',
'Class:Incident/Attribute:user_comment' => '用户评论',
'Class:Incident/Attribute:user_comment+' => '',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => '父级事件名称',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Stimulus:ev_assign' => '分配',
'Class:Incident/Stimulus:ev_assign+' => '',
'Class:Incident/Stimulus:ev_autoclose' => '自动关闭',
'Class:Incident/Stimulus:ev_autoclose+' => '',
'Class:Incident/Stimulus:ev_autoresolve' => '自动解决',
'Class:Incident/Stimulus:ev_autoresolve+' => '',
'Class:Incident/Stimulus:ev_close' => '关闭',
'Class:Incident/Stimulus:ev_close+' => '',
'Class:Incident/Stimulus:ev_pending' => '待定',
'Class:Incident/Stimulus:ev_pending+' => '',
'Class:Incident/Stimulus:ev_reassign' => '重新分配',
'Class:Incident/Stimulus:ev_reassign+' => '',
'Class:Incident/Stimulus:ev_reopen' => '重新打开',
'Class:Incident/Stimulus:ev_reopen+' => '',
'Class:Incident/Stimulus:ev_resolve' => '标记为已解决',
'Class:Incident/Stimulus:ev_resolve+' => '',
'Class:Incident/Stimulus:ev_pending' => '待定',
'Class:Incident/Stimulus:ev_pending+' => '',
'Class:Incident/Stimulus:ev_timeout' => '超时',
'Class:Incident/Stimulus:ev_timeout+' => '',
'Menu:Incident:EscalatedIncidents' => '已升级的事件',
'Menu:Incident:EscalatedIncidents+' => '已升级的事件',
'Menu:Incident:MyIncidents' => '分配给我的事件',
'Menu:Incident:MyIncidents+' => '分配给我的事件',
'Menu:Incident:OpenIncidents' => '所有打开的事件',
'Menu:Incident:OpenIncidents+' => '所有打开的事件',
'Menu:Incident:Overview' => '概况',
'Menu:Incident:Overview+' => '概况',
'Menu:Incident:Shortcuts' => '快捷方式',
'Menu:Incident:Shortcuts+' => '',
'Menu:IncidentManagement' => '事件管理',
'Menu:IncidentManagement+' => '事件管理',
'Menu:NewIncident' => '新建事件',
'Menu:NewIncident+' => '新建事件',
'Menu:SearchIncidents' => '搜索事件',
'Menu:SearchIncidents+' => '搜索事件',
'Class:Incident/Stimulus:ev_autoresolve' => '自动解决',
'Class:Incident/Stimulus:ev_autoresolve+' => '',
'Class:Incident/Stimulus:ev_autoclose' => '自动关闭',
'Class:Incident/Stimulus:ev_autoclose+' => '',
'Class:Incident/Stimulus:ev_resolve' => '标记为已解决',
'Class:Incident/Stimulus:ev_resolve+' => '',
'Class:Incident/Stimulus:ev_close' => '关闭',
'Class:Incident/Stimulus:ev_close+' => '',
'Class:Incident/Stimulus:ev_reopen' => '重新打开',
'Class:Incident/Stimulus:ev_reopen+' => '',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => '无法分配父级事件给自己',
'Class:Incident/Method:ResolveChildTickets' => '解决子工单',
'Class:Incident/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案',
'Tickets:Related:OpenIncidents' => '打开的事件',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => '最近两周的事件 (按优先级)',
'UI-IncidentManagementOverview-Last-14-days' => '最近两周的事件 (按数量)',
'UI-IncidentManagementOverview-OpenIncidentByAgent' => '打开的事件 (按办理人)',
'UI-IncidentManagementOverview-OpenIncidentByCustomer' => '打开的事件 (按客户)',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => '打开的事件 (按状态)',
]);

View File

@@ -4,20 +4,75 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: KnownError
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:KnownError' => '已知错误',
'Class:KnownError+' => '记录一个已知错误',
'Class:KnownError/Attribute:ci_list' => '配置项',
'Class:KnownError/Attribute:ci_list+' => '此已知错误相关的所有配置项',
'Class:KnownError/Attribute:name' => '名称',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => '客户',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:cust_name' => '客户名称',
'Class:KnownError/Attribute:cust_name+' => '',
'Class:KnownError/Attribute:document_list' => '文档',
'Class:KnownError/Attribute:document_list+' => '此已知错误相关的所有文档',
'Class:KnownError/Attribute:problem_id' => '相关问题',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => '问题编号',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:symptom' => '现象',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:root_cause' => '问题根源',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:workaround' => '解决过程',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:solution' => '解决方案',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:error_code' => '错误编码',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:domain' => '类型',
'Class:KnownError/Attribute:domain+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => '应用',
@@ -28,32 +83,46 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:KnownError/Attribute:domain/Value:Network+' => '网络',
'Class:KnownError/Attribute:domain/Value:Server' => '服务器',
'Class:KnownError/Attribute:domain/Value:Server+' => '服务器',
'Class:KnownError/Attribute:error_code' => '错误编码',
'Class:KnownError/Attribute:error_code+' => '',
'Class:KnownError/Attribute:model' => '型号',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:name' => '名称',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => '客户',
'Class:KnownError/Attribute:org_id+' => '',
'Class:KnownError/Attribute:problem_id' => '相关问题',
'Class:KnownError/Attribute:problem_id+' => '',
'Class:KnownError/Attribute:problem_ref' => '问题编号',
'Class:KnownError/Attribute:problem_ref+' => '',
'Class:KnownError/Attribute:root_cause' => '问题根源',
'Class:KnownError/Attribute:root_cause+' => '',
'Class:KnownError/Attribute:solution' => '解决方案',
'Class:KnownError/Attribute:solution+' => '',
'Class:KnownError/Attribute:symptom' => '现象',
'Class:KnownError/Attribute:symptom+' => '',
'Class:KnownError/Attribute:vendor' => '厂商',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => '型号',
'Class:KnownError/Attribute:model+' => '',
'Class:KnownError/Attribute:version' => '版本',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:workaround' => '解决过程',
'Class:KnownError/Attribute:workaround+' => '',
'Class:KnownError/Attribute:ci_list' => '配置项',
'Class:KnownError/Attribute:ci_list+' => '此已知错误相关的所有配置项',
'Class:KnownError/Attribute:document_list' => '文档',
'Class:KnownError/Attribute:document_list+' => '此已知错误相关的所有文档',
]);
//
// Class: lnkErrorToFunctionalCI
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkErrorToFunctionalCI' => '关联已知问题/功能配置项',
'Class:lnkErrorToFunctionalCI+' => '已知问题和功能配置项之间的关联',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => '配置项',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => '配置项名称',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => '已知问题',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => '已知问题名称',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => '原因',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '',
]);
//
// Class: lnkDocumentToError
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToError' => '关联文档/已知问题',
'Class:lnkDocumentToError+' => '文档和已知问题之间的关联',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s',
'Class:lnkDocumentToError/Attribute:document_id' => '文档',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
'Class:lnkDocumentToError/Attribute:document_name' => '文档名称',
@@ -64,27 +133,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToError/Attribute:error_name+' => '',
'Class:lnkDocumentToError/Attribute:link_type' => '关联类型',
'Class:lnkDocumentToError/Attribute:link_type+' => '',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s~~',
'Class:lnkErrorToFunctionalCI' => '关联已知问题/功能配置项',
'Class:lnkErrorToFunctionalCI+' => '已知问题和功能配置项之间的关联',
'Class:lnkErrorToFunctionalCI/Attribute:error_id' => '已知问题',
'Class:lnkErrorToFunctionalCI/Attribute:error_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:error_name' => '已知问题名称',
'Class:lnkErrorToFunctionalCI/Attribute:error_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => '配置项',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => '配置项名称',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:reason' => '原因',
'Class:lnkErrorToFunctionalCI/Attribute:reason+' => '',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s~~',
'Menu:NewError' => '新建已知问题',
'Menu:NewError+' => '新建已知问题',
'Menu:Problem:KnownErrors' => '所有已知错误',
'Menu:Problem:KnownErrors+' => '所有已知错误',
'Menu:Problem:Shortcuts' => '快捷方式',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ProblemManagement' => '问题管理',
'Menu:ProblemManagement+' => '问题管理',
'Menu:Problem:Shortcuts' => '快捷方式',
'Menu:NewError' => '新建已知问题',
'Menu:NewError+' => '新建已知问题',
'Menu:SearchError' => '搜索已知问题',
'Menu:SearchError+' => '搜索已知问题',
'Menu:Problem:KnownErrors' => '所有已知错误',
'Menu:Problem:KnownErrors+' => '所有已知错误',
]);

View File

@@ -4,99 +4,122 @@
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:CreateMailbox' => '创建邮箱...',
'Menu:OAuthClient' => 'OAuth客户端',
'Menu:OAuthClient+' => '',
'Menu:GenerateTokens' => '生成访问令牌...',
'Menu:RegenerateTokens' => '重新生成访问令牌...',
'itop-oauth-client/Operation:CreateMailBox/Title' => '邮箱创建',
'itop-oauth-client:UsedForSMTP' => '此OAuth客户端用户SMTP',
'itop-oauth-client:TestSMTP' => '发送测试邮件',
'itop-oauth-client:MissingOAuthClient' => '没有Oauth客户端给用户%1$s',
'itop-oauth-client:Message:MissingToken' => '使用OAuth客户端前生成访问令牌',
'itop-oauth-client:Message:RegenerateToken' => '重新生成访问令牌以适用更改',
'itop-oauth-client:Message:TokenCreated' => '访问令牌已生成',
'itop-oauth-client:Message:TokenRecreated' => '访问令牌已重新生成',
'itop-oauth-client:Message:TokenError' => '由于服务错误没有生成访问令牌',
'OAuthClient:Name/UseForSMTPMustBeUnique' => '此组合登录 (%1$s) 和使用于SMTP (%2$s) 已经在OAuth客户端使用',
'OAuthClient:baseinfo' => '基本信息',
'OAuthClient:scope' => '范围',
]);
//
// Class: OAuthClient
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OAuthClient' => 'OAuth客户端',
'Class:OAuthClient/Attribute:client_id' => '客户端编号',
'Class:OAuthClient/Attribute:client_id+' => 'A long string of characters provided by your OAuth2 provider~~',
'Class:OAuthClient/Attribute:client_secret' => '客户端密码',
'Class:OAuthClient/Attribute:client_secret+' => 'Another long string of characters provided by your OAuth2 provider~~',
'Class:OAuthClient/Attribute:description' => '备注',
'Class:OAuthClient/Attribute:description+' => '~~',
'Class:OAuthClient/Attribute:mailbox_list' => '邮箱列表',
'Class:OAuthClient/Attribute:mailbox_list+' => '~~',
'Class:OAuthClient/Attribute:name' => '登录',
'Class:OAuthClient/Attribute:name+' => 'In general, this is your email address~~',
'Class:OAuthClient/Attribute:provider' => '提供商',
'Class:OAuthClient/Attribute:provider+' => '~~',
'Class:OAuthClient/Attribute:redirect_url' => '重定向URL',
'Class:OAuthClient/Attribute:redirect_url+' => 'This url must be copied in the OAuth2 configuration of the provider
Erase the field to recalculate default value~~',
'Class:OAuthClient/Attribute:refresh_token' => '刷新令牌',
'Class:OAuthClient/Attribute:refresh_token+' => '~~',
'Class:OAuthClient/Attribute:refresh_token_expiration' => '刷新令牌有效期',
'Class:OAuthClient/Attribute:refresh_token_expiration+' => '~~',
'Class:OAuthClient/Attribute:scope' => '范围',
'Class:OAuthClient/Attribute:scope+' => '~~',
'Class:OAuthClient/Attribute:name' => '登录',
'Class:OAuthClient/Attribute:name+' => 'In general, this is your email address~~',
'Class:OAuthClient/Attribute:status' => '状态',
'Class:OAuthClient/Attribute:status+' => '创建后, 通过 "生成访问令牌" 来使用此OAuth 客户端',
'Class:OAuthClient/Attribute:status/Value:active' => '已生成访问令牌',
'Class:OAuthClient/Attribute:status/Value:inactive' => '没有访问令牌',
'Class:OAuthClient/Attribute:description' => '备注',
'Class:OAuthClient/Attribute:description+' => '~~',
'Class:OAuthClient/Attribute:client_id' => '客户端编号',
'Class:OAuthClient/Attribute:client_id+' => 'A long string of characters provided by your OAuth2 provider~~',
'Class:OAuthClient/Attribute:client_secret' => '客户端密码',
'Class:OAuthClient/Attribute:client_secret+' => 'Another long string of characters provided by your OAuth2 provider~~',
'Class:OAuthClient/Attribute:refresh_token' => '刷新令牌',
'Class:OAuthClient/Attribute:refresh_token+' => '~~',
'Class:OAuthClient/Attribute:refresh_token_expiration' => '刷新令牌有效期',
'Class:OAuthClient/Attribute:refresh_token_expiration+' => '~~',
'Class:OAuthClient/Attribute:token' => '访问令牌',
'Class:OAuthClient/Attribute:token+' => '~~',
'Class:OAuthClient/Attribute:token_expiration' => '访问令牌有效期',
'Class:OAuthClient/Attribute:token_expiration+' => '~~',
'Class:OAuthClient/Attribute:redirect_url' => 'Redirect url',
'Class:OAuthClient/Attribute:redirect_url+' => <<<EOF
This url must be copied in the OAuth2 configuration of the provider
Erase the field to recalculate default value
EOF
,
'Class:OAuthClient/Attribute:mailbox_list' => '邮箱列表',
'Class:OAuthClient/Attribute:mailbox_list+' => '~~',
]);
//
// Class: OAuthClientAzure
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OAuthClientAzure' => '用于微软Azure的OAuth客户端',
'Class:OAuthClientAzure/Attribute:advanced_scope' => '高级范围',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => '您在此输入的内容将优先于 "范围" 选择并导致其被忽略',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
'Class:OAuthClientAzure/Attribute:scope' => '范围',
'Class:OAuthClientAzure/Attribute:scope+' => '通常情况下使用默认选择最合适',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP+' => '~~',
'Class:OAuthClientAzure/Attribute:tenant' => 'Tenant~~',
'Class:OAuthClientAzure/Attribute:tenant+' => 'Tenant ID of the configured application. For multi-tenant application, use "common".~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => '使用于SMTP',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => '如果您需要系统使用其发送邮件, 则至少需要有一个OAuth客户端标记为 "是"',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => '否',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => '是',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientAzure/Attribute:advanced_scope' => '高级范围',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => '您在此输入的内容将优先于 "范围" 选择并导致其被忽略',
'Class:OAuthClientAzure/Attribute:used_scope' => '使用范围',
'Class:OAuthClientAzure/Attribute:used_scope+' => '~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => '高级',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => '精简',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple+' => '~~',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => '高级',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => '使用于SMTP',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => '如果您需要系统使用其发送邮件, 则至少需要有一个OAuth客户端标记为 "是"',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => '是',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => '否',
'Class:OAuthClientAzure/Attribute:tenant' => 'Tenant~~',
'Class:OAuthClientAzure/Attribute:tenant+' => 'Tenant ID of the configured application. For multi-tenant application, use "common".~~',
]);
//
// Class: OAuthClientGoogle
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OAuthClientGoogle' => '用于Google的OAuth客户端',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => '高级范围',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => '您在此输入的内容将优先于 "范围" 选择并导致其被忽略',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
'Class:OAuthClientGoogle/Attribute:scope' => '范围',
'Class:OAuthClientGoogle/Attribute:scope+' => '通常情况下使用默认选择最合适',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => '使用与SMTP',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => '如果您需要系统使用其发送邮件, 则至少需要有一个OAuth客户端标记为 "是"',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => '是',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => '高级范围',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => '您在此输入的内容将优先于 "范围" 选择并导致其被忽略',
'Class:OAuthClientGoogle/Attribute:used_scope' => '使用范围',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => '高级',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => '精简',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '~~',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
'Menu:CreateMailbox' => '创建邮箱...',
'Menu:GenerateTokens' => '生成访问令牌...',
'Menu:OAuthClient' => 'OAuth客户端',
'Menu:OAuthClient+' => '~~',
'Menu:RegenerateTokens' => '重新生成访问令牌...',
'OAuthClient:Name/UseForSMTPMustBeUnique' => '此组合登录 (%1$s) 和使用于SMTP (%2$s) 已经在OAuth客户端使用',
'OAuthClient:baseinfo' => '基本信息',
'OAuthClient:scope' => '范围',
'itop-oauth-client/Operation:CreateMailBox/Title' => '邮箱创建',
'itop-oauth-client:Message:MissingToken' => '使用OAuth客户端前生成访问令牌',
'itop-oauth-client:Message:RegenerateToken' => '重新生成访问令牌以适用更改',
'itop-oauth-client:Message:TokenCreated' => '访问令牌已生成',
'itop-oauth-client:Message:TokenError' => '由于服务错误没有生成访问令牌',
'itop-oauth-client:Message:TokenRecreated' => '访问令牌已重新生成',
'itop-oauth-client:MissingOAuthClient' => '没有Oauth客户端给用户%1$s',
'itop-oauth-client:TestSMTP' => '发送测试邮件',
'itop-oauth-client:UsedForSMTP' => '此OAuth客户端用户SMTP',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => '高级',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => '使用与SMTP',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => '如果您需要系统使用其发送邮件, 则至少需要有一个OAuth客户端标记为 "是"',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => '否',
]);

View File

@@ -1,114 +1,156 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Portal
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:AggregatePage:DefaultTitle' => '仪表盘',
'Brick:Portal:Browse:Action:Create' => '新建',
'Brick:Portal:Browse:Action:CreateObjectFromThis' => '新建%1$s',
'Brick:Portal:Browse:Action:Drilldown' => '明细',
'Brick:Portal:Browse:Action:Edit' => '编辑',
'Brick:Portal:Browse:Action:View' => '详情',
'Brick:Portal:Browse:Filter:NoData' => '没有项目',
'Brick:Portal:Browse:Mode:List' => '列表',
'Brick:Portal:Browse:Mode:Mosaic' => '嵌套',
'Brick:Portal:Browse:Mode:Tree' => '树形',
'Brick:Portal:Browse:Name' => '浏览项目',
'Brick:Portal:Browse:Tree:CollapseAll' => '全部收起',
'Brick:Portal:Browse:Tree:ExpandAll' => '全部展开',
'Brick:Portal:Create:ChooseType' => '请选择类型',
'Brick:Portal:Create:Name' => '快速创建',
'Brick:Portal:Filter:Name' => '预筛选组件',
'Brick:Portal:Filter:SearchInput:Placeholder' => '例如. 连接wifi',
'Brick:Portal:Filter:SearchInput:Submit' => '搜索',
'Brick:Portal:Manage:All' => '全部',
'Brick:Portal:Manage:DisplayMode:bar-chart' => '条形图',
'Brick:Portal:Manage:DisplayMode:list' => '列表',
'Brick:Portal:Manage:DisplayMode:pie-chart' => '饼图',
'Brick:Portal:Manage:Group' => '分组',
'Brick:Portal:Manage:Name' => '管理项目',
'Brick:Portal:Manage:Others' => 'Others',
'Brick:Portal:Manage:Table:ItemActions' => '操作',
'Brick:Portal:Manage:Table:NoData' => '没有项目.',
'Brick:Portal:Manage:fct:avg' => '平均',
'Brick:Portal:Manage:fct:count' => '个数',
'Brick:Portal:Manage:fct:max' => '最大',
'Brick:Portal:Manage:fct:min' => '最小',
'Brick:Portal:Manage:fct:sum' => '总数',
'Brick:Portal:Object:Copy:CopiedTooltip' => '已复制',
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
'Brick:Portal:Object:Copy:Tooltip' => '复制对象链接',
'Brick:Portal:Object:Form:Create:Title' => '新建%1$s',
'Brick:Portal:Object:Form:Edit:Title' => '正在更新%2$s (%1$s)',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '已保存%1$s',
'Brick:Portal:Object:Form:Message:Saved' => '已保存',
'Brick:Portal:Object:Form:Stimulus:Title' => '请填写下列信息:',
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s',
'Brick:Portal:Object:Name' => '对象',
'Brick:Portal:Object:Search:Hierarchy:Title' => '选择%1$s (%2$s)',
'Brick:Portal:Object:Search:Regular:Title' => '选择%1$s (%2$s)',
'Brick:Portal:UserProfile:Name' => '用户资料',
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => '注销',
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => '我的资料',
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => '要修改密码, 请联系管理员',
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => '无法修改密码, 请联系管理员',
'Brick:Portal:UserProfile:Password:ChoosePassword' => '新密码',
'Brick:Portal:UserProfile:Password:ConfirmPassword' => '确认密码',
'Brick:Portal:UserProfile:Password:Title' => '密码',
'Brick:Portal:UserProfile:PersonalInformations:Title' => '人员信息',
'Brick:Portal:UserProfile:Photo:Title' => '头像',
'Page:DefaultTitle' => '%1$s 用户门户',
'Page:PleaseWait' => '请稍候...',
'Page:Home' => '主页',
'Page:GoPortalHome' => '主页面',
'Page:GoPreviousPage' => '上一页',
'Page:ReloadPage' => '重新加载',
'Portal:Button:Submit' => '提交',
'Portal:Button:Apply' => '更新',
'Portal:Button:Cancel' => '取消',
'Portal:Button:Close' => '关闭',
'Portal:Button:Add' => '添加',
'Portal:Button:Remove' => '移除',
'Portal:Button:Delete' => '删除',
'Portal:EnvironmentBanner:Title' => '您目前处于<strong>%1$s</strong>模式',
'Portal:EnvironmentBanner:GoToProduction' => '回到产品模式',
'Error:HTTP:400' => '请求错误',
'Error:HTTP:401' => '认证错误',
'Error:HTTP:404' => '页面找不到',
'Error:HTTP:500' => '啊! 发生了错误.',
'Error:HTTP:GetHelp' => '如果问题仍然存在,请联系管理员.',
'Error:XHR:Fail' => '无法加载数据, 请联系管理员',
'Page:DefaultTitle' => ITOP_APPLICATION_SHORT.'用户门户',
'Page:GoPortalHome' => '主页面',
'Page:GoPreviousPage' => '上一页',
'Page:Home' => '主页',
'Page:PleaseWait' => '请稍后...',
'Page:ReloadPage' => '重新加载',
'Portal:Attachments:DropZone:Message' => '把文件添加为附件',
'Portal:Autocomplete:NoResult' => '没有数据',
'Portal:Button:Add' => '添加',
'Portal:Button:Apply' => '更新',
'Portal:Button:Cancel' => '取消',
'Portal:Button:Close' => '关闭',
'Portal:Button:Delete' => '删除',
'Portal:Button:Remove' => '移除',
'Portal:Button:Submit' => '提交',
'Portal:Calendar-FirstDayOfWeek' => 'zh-cn',
'Portal:Datatables:Language:DisplayLength:All' => '全部',
'Portal:Datatables:Language:EmptyTable' => '表格中没有数据',
'Portal:ErrorUserLoggedOut' => '您已退出,请重新登录.',
'Portal:Datatables:Language:Processing' => '请稍候...',
'Portal:Datatables:Language:Search' => '筛选器:',
'Portal:Datatables:Language:LengthMenu' => '每页显示 _MENU_ 项',
'Portal:Datatables:Language:ZeroRecords' => '没有结果',
'Portal:Datatables:Language:Info' => '第 _PAGE_ 页,共 _PAGES_ 页',
'Portal:Datatables:Language:InfoEmpty' => '没有信息',
'Portal:Datatables:Language:InfoFiltered' => '最多筛选 _MAX_ 项',
'Portal:Datatables:Language:LengthMenu' => '每页显示 _MENU_ 项',
'Portal:Datatables:Language:EmptyTable' => '表格中没有数据',
'Portal:Datatables:Language:DisplayLength:All' => '全部',
'Portal:Datatables:Language:Paginate:First' => '首页',
'Portal:Datatables:Language:Paginate:Last' => '尾页',
'Portal:Datatables:Language:Paginate:Next' => '下一页',
'Portal:Datatables:Language:Paginate:Previous' => '上一页',
'Portal:Datatables:Language:Processing' => '请稍后...',
'Portal:Datatables:Language:Search' => '筛选器:',
'Portal:Datatables:Language:Paginate:Next' => '下一页',
'Portal:Datatables:Language:Paginate:Last' => '尾页',
'Portal:Datatables:Language:Sort:Ascending' => '升序',
'Portal:Datatables:Language:Sort:Descending' => '降序',
'Portal:Datatables:Language:ZeroRecords' => '没有结果',
'Portal:EnvironmentBanner:GoToProduction' => '回到产品模式',
'Portal:EnvironmentBanner:Title' => '您目前处于<strong>%1$s</strong>模式',
'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.',
'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.',
'Portal:ErrorUserLoggedOut' => '您已退出,请重新登录.',
'Portal:Autocomplete:NoResult' => '没有数据',
'Portal:Attachments:DropZone:Message' => '把文件添加为附件',
'Portal:File:None' => '没有文件',
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
'Portal:File:DisplayInfo+' => '%1$s (%2$s) <a href="%3$s" class="file_open_link" target="_blank">打开</a> / <a href="%4$s" class="file_download_link">下载</a>',
'Portal:File:None' => '没有文件',
'Portal:Calendar-FirstDayOfWeek' => 'zh-cn',
]);
// Object form
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:Form:Caselog:Entry:Close:Tooltip' => '关闭此条目',
'Portal:Form:Close:Warning' => '确定要离开表单吗? 已输入数据会丢失',
'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.',
'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.',
]);
// UserProfile brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:UserProfile:Name' => '用户资料',
'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil' => '我的资料',
'Brick:Portal:UserProfile:Navigation:Dropdown:Logout' => '注销',
'Brick:Portal:UserProfile:Password:Title' => '密码',
'Brick:Portal:UserProfile:Password:ChoosePassword' => '新密码',
'Brick:Portal:UserProfile:Password:ConfirmPassword' => '确认密码',
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => '要修改密码, 请联系管理员',
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => '无法修改密码, 请联系管理员',
'Brick:Portal:UserProfile:PersonalInformations:Title' => '人员信息',
'Brick:Portal:UserProfile:Photo:Title' => '头像',
]);
// AggregatePageBrick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:AggregatePage:DefaultTitle' => '仪表盘',
]);
// BrowseBrick brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Browse:Name' => '浏览项目',
'Brick:Portal:Browse:Mode:List' => '列表',
'Brick:Portal:Browse:Mode:Tree' => '树形',
'Brick:Portal:Browse:Mode:Mosaic' => '嵌套',
'Brick:Portal:Browse:Action:Drilldown' => '明细',
'Brick:Portal:Browse:Action:View' => '详情',
'Brick:Portal:Browse:Action:Edit' => '编辑',
'Brick:Portal:Browse:Action:Create' => '新建',
'Brick:Portal:Browse:Action:CreateObjectFromThis' => '新建 %1$s',
'Brick:Portal:Browse:Tree:ExpandAll' => '全部展开',
'Brick:Portal:Browse:Tree:CollapseAll' => '全部收起',
'Brick:Portal:Browse:Filter:NoData' => '没有项目',
]);
// ManageBrick brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Manage:Name' => '管理项目',
'Brick:Portal:Manage:Table:NoData' => '没有项目.',
'Brick:Portal:Manage:Table:ItemActions' => '操作',
'Brick:Portal:Manage:DisplayMode:list' => '列表',
'Brick:Portal:Manage:DisplayMode:pie-chart' => '饼图',
'Brick:Portal:Manage:DisplayMode:bar-chart' => '条形图',
'Brick:Portal:Manage:Others' => 'Others',
'Brick:Portal:Manage:All' => '全部',
'Brick:Portal:Manage:Group' => '分组',
'Brick:Portal:Manage:fct:count' => '个数',
'Brick:Portal:Manage:fct:sum' => '总数',
'Brick:Portal:Manage:fct:avg' => '平均',
'Brick:Portal:Manage:fct:min' => '最小',
'Brick:Portal:Manage:fct:max' => '最大',
]);
// ObjectBrick brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Object:Name' => '对象',
'Brick:Portal:Object:Form:Create:Title' => '新建 %1$s',
'Brick:Portal:Object:Form:Edit:Title' => '正在更新 %2$s (%1$s)',
'Brick:Portal:Object:Form:View:Title' => '%1$s: %2$s',
'Brick:Portal:Object:Form:Stimulus:Title' => '请填写下列信息:',
'Brick:Portal:Object:Form:Message:Saved' => '已保存',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '已保存 %1$s',
'Brick:Portal:Object:Search:Regular:Title' => '选择 %1$s (%2$s)',
'Brick:Portal:Object:Search:Hierarchy:Title' => '选择 %1$s (%2$s)',
'Brick:Portal:Object:Copy:TextToCopy' => '%2$s',
'Brick:Portal:Object:Copy:Tooltip' => '复制对象链接',
'Brick:Portal:Object:Copy:CopiedTooltip' => '已复制',
]);
// CreateBrick brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Create:Name' => '快速创建',
'Brick:Portal:Create:ChooseType' => '请选择类型',
]);
// Filter brick
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Filter:Name' => '预筛选组件',
'Brick:Portal:Filter:SearchInput:Placeholder' => '例如. 连接wifi',
'Brick:Portal:Filter:SearchInput:Submit' => '搜索',
]);

View File

@@ -1299,6 +1299,11 @@ class ObjectController extends BrickController
$bIgnoreSilos = $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass);
$aParams = array('objects_id' => $aObjectIds);
$oSearch = DBObjectSearch::FromOQL("SELECT $sObjectClass WHERE id IN (:objects_id)");
if (!$this->oScopeValidatorHelper->AddScopeToQuery($oSearch, $sObjectClass)
) {
IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to read '.$sObjectClass.' object.');
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
}
if ($bIgnoreSilos === true) {
$oSearch->AllowAllData();
}
@@ -1349,7 +1354,10 @@ class ObjectController extends BrickController
$aObjectAttCodes = $this->oRequestManipulatorHelper->ReadParam('aObjectAttCodes', array(), FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY);
$aLinkAttCodes = $this->oRequestManipulatorHelper->ReadParam('aLinkAttCodes', array(), FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY);
$sDateTimePickerWidgetParent = $this->oRequestManipulatorHelper->ReadParam('sDateTimePickerWidgetParent', array(), FILTER_UNSAFE_RAW, FILTER_REQUIRE_ARRAY);
if (!MetaModel::IsLinkClass($sLinkClass)) {
IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' asked for wrong lnk class '.$sLinkClass);
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
}
if (empty($sObjectClass) || empty($aObjectIds) || empty($aObjectAttCodes)) {
IssueLog::Info(__METHOD__.' at line '.__LINE__.' : sObjectClass, aObjectIds and aObjectAttCodes expected, "'.$sObjectClass.'", "'.implode('/',
$aObjectIds).'" given.');
@@ -1360,6 +1368,10 @@ class ObjectController extends BrickController
$bIgnoreSilos = $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass);
$aParams = array('objects_id' => $aObjectIds);
$oSearch = DBObjectSearch::FromOQL("SELECT $sObjectClass WHERE id IN (:objects_id)");
if (!$this->oScopeValidatorHelper->AddScopeToQuery($oSearch, $sObjectClass)) {
IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to read '.$sObjectClass.' object.');
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
}
if ($bIgnoreSilos === true)
{
$oSearch->AllowAllData();
@@ -1378,10 +1390,35 @@ class ObjectController extends BrickController
// Prepare link data
$aObjectData = $this->PrepareObjectInformation($oObject, $aObjectAttCodes);
// New link object (needed for renderers)
$oNewLink = new $sLinkClass();
$aAttCodes = MetaModel::GetAttributesList($sLinkClass, ['AttributeExternalKey']);
$sAttCodeToObject = '';
foreach ($aAttCodes as $sAttCode) {
$oAttDef = MetaModel::GetAttributeDef($sLinkClass, $sAttCode);
/** @var \AttributeExternalKey $oAttDef */
if ($oAttDef->GetTargetClass() === $sObjectClass) {
$sAttCodeToObject = $sAttCode;
}
}
if ($sAttCodeToObject === '') {
IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' asked for incoherent lnk class '.$sLinkClass.' with object class '.$sObjectClass);
throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist'));
}
$oNewLink = MetaModel::NewObject($sLinkClass, [
$sAttCodeToObject => $oObject->GetKey(), // so later placeholders in filters will be applied on external keys on the same link
]);
foreach ($aLinkAttCodes as $sAttCode) {
$oAttDef = MetaModel::GetAttributeDef($sLinkClass, $sAttCode);
/** @var \Combodo\iTop\Form\Field\SelectObjectField $oField */
$oField = $oAttDef->MakeFormField($oNewLink);
if ($oAttDef::GetFormFieldClass() === '\\Combodo\\iTop\\Form\\Field\\SelectObjectField') {
$oFieldSearch = $oField->GetSearch();
$sFieldClass = $oFieldSearch->GetClass();
if ($this->oScopeValidatorHelper->AddScopeToQuery($oFieldSearch, $sFieldClass)){
$oField->SetSearch($oFieldSearch);
} else {
$oField->SetSearch(DBObjectSearch::FromOQL("SELECT $sFieldClass WHERE 1=0"));
}
}
// Prevent datetimepicker popup to be truncated
if ($oField instanceof DateTimeField) {
$oField->SetDateTimePickerWidgetParent($sDateTimePickerWidgetParent);

View File

@@ -23,25 +23,23 @@
{% set iTableCount = 0 %}
{% if aGroupingAreasData|length > 0 %}
{% for aAreaData in aGroupingAreasData %}
{% if aAreaData.iItemsCount > 0 %}
{% set iTableCount = iTableCount + 1 %}
<div class="panel panel-default">
<div class="panel-heading clearfix">
<h3 class="panel-title" style="float: left;">{{ aAreaData.sTitle }}</h3>
{% if bCanExport %}
<a href="{{ app.url_generator.generate('p_manage_brick_excel_export_start', {'sBrickId': sBrickId, 'sGroupingTab': sGroupingTab, 'sGroupingArea': aAreaData.sId})|raw }}"
id="btn_export_excel_for_{{ aAreaData.sId }}"
data-toggle="modal" data-target="#modal-for-all">
<span class="fas fa-download fa-lg" style="float: right;"
data-tooltip-content="{{ 'ExcelExporter:ExportMenu'|dict_s }}"></span>
</a>
{% endif %}
</div>
<div class="panel-body">
<table id="table-{{ aAreaData.sId }}" class="object-list table table-striped table-bordered responsive" width="100%"></table>
</div>
{% set iTableCount = iTableCount + 1 %}
<div class="panel panel-default">
<div class="panel-heading clearfix">
<h3 class="panel-title" style="float: left;">{{ aAreaData.sTitle }}</h3>
{% if bCanExport %}
<a href="{{ app.url_generator.generate('p_manage_brick_excel_export_start', {'sBrickId': sBrickId, 'sGroupingTab': sGroupingTab, 'sGroupingArea': aAreaData.sId})|raw }}"
id="btn_export_excel_for_{{ aAreaData.sId }}"
data-toggle="modal" data-target="#modal-for-all">
<span class="fas fa-download fa-lg" style="float: right;"
data-tooltip-content="{{ 'ExcelExporter:ExportMenu'|dict_s }}"></span>
</a>
{% endif %}
</div>
{% endif %}
<div class="panel-body">
<table id="table-{{ aAreaData.sId }}" class="object-list table table-striped table-bordered responsive" width="100%"></table>
</div>
</div>
{% endfor %}
{% endif %}

View File

@@ -1,29 +1,48 @@
<?php
// Copyright (C) 2010-2024 Combodo SAS
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @author Benjamin Planque <benjamin.planque@combodo.com>
*
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:ClosedRequests:Title' => '已关闭的工单',
'Brick:Portal:ListAllRequests:Tab' => 'On-going and closed~~',
'Brick:Portal:ListAllRequests:Title' => 'All requests~~',
'Brick:Portal:ListAllRequests:Title+' => '<p>View all requests regardless of their status.</p>~~',
'portal:itop-portal' => '标准门户', // This is the portal name that will be displayed in portal dispatcher (eg. URL in menus)
'Page:DefaultTitle' => '%1$s - 用户门户',
'Brick:Portal:UserProfile:Title' => '我的设置',
'Brick:Portal:NewRequest:Title' => '新建工单',
'Brick:Portal:NewRequest:Title+' => '<p>需要帮助?</p><p>选择子服务, 然后提交工单给我们的支持团队.</p>',
'Brick:Portal:OngoingRequests:Tab:OnGoing' => '正在处理',
'Brick:Portal:OngoingRequests:Tab:Resolved' => '已解决',
'Brick:Portal:OngoingRequests:Title' => '正在处理的工单',
'Brick:Portal:OngoingRequests:Title+' => '<p>跟踪正在处理的工单.</p><p>查询进度, 添加评论, 添加附件, 确认解决方案.</p>',
'Brick:Portal:OngoingRequests:Tab:OnGoing' => '正在处理',
'Brick:Portal:OngoingRequests:Tab:Resolved' => '已解决',
'Brick:Portal:ClosedRequests:Title' => '已关闭的工单',
'Brick:Portal:ListAllRequests:Title' => 'All requests~~',
'Brick:Portal:ListAllRequests:Title+' => '<p>View all requests regardless of their status.</p>~~',
'Brick:Portal:ListAllRequests:Tab' => 'On-going and closed~~',
'Brick:Portal:SearchInAllRequests:Title' => 'Search in all requests~~',
'Brick:Portal:SearchInAllRequests:Title+' => '<p>Regardless of their status.</p>~~',
'Brick:Portal:UserProfile:Title' => '我的设置',
'Page:DefaultTitle' => ITOP_APPLICATION_SHORT.' - 用户门户',
'portal:itop-portal' => '标准门户',
]);

View File

@@ -3,49 +3,91 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ProblemManagement' => '问题管理',
'Menu:ProblemManagement+' => '问题管理',
'Menu:Problem:Overview' => '概况',
'Menu:Problem:Overview+' => '概况',
'Menu:NewProblem' => '新建问题',
'Menu:NewProblem+' => '新建问题',
'Menu:SearchProblems' => '搜索问题',
'Menu:SearchProblems+' => '搜索问题',
'Menu:Problem:Shortcuts' => '快捷方式',
'Menu:Problem:MyProblems' => '我的问题',
'Menu:Problem:MyProblems+' => '我的问题',
'Menu:Problem:OpenProblems' => '所有打开的问题',
'Menu:Problem:OpenProblems+' => '所有打开的问题',
'UI-ProblemManagementOverview-ProblemByService' => '按服务划分的问题',
'UI-ProblemManagementOverview-ProblemByService+' => '按服务划分的问题',
'UI-ProblemManagementOverview-ProblemByPriority' => '按优先级划分的问题',
'UI-ProblemManagementOverview-ProblemByPriority+' => '按优先级划分的问题',
'UI-ProblemManagementOverview-ProblemUnassigned' => '未分配的问题',
'UI-ProblemManagementOverview-ProblemUnassigned+' => '未分配的问题',
'UI:ProblemMgmtMenuOverview:Title' => '问题管理仪表盘',
'UI:ProblemMgmtMenuOverview:Title+' => '问题管理仪表盘',
]);
//
// Class: Problem
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Problem' => '问题',
'Class:Problem+' => '',
'Class:Problem/Attribute:assignment_date' => '分配日期',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:impact' => '影响范围',
'Class:Problem/Attribute:impact+' => '',
'Class:Problem/Attribute:impact/Value:1' => '部门',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => '服务',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => '个体',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:knownerrors_list' => '已知问题',
'Class:Problem/Attribute:knownerrors_list+' => '此问题相关的所有已知问题',
'Class:Problem/Attribute:priority' => '优先级',
'Class:Problem/Attribute:priority+' => '',
'Class:Problem/Attribute:priority/Value:1' => '紧急',
'Class:Problem/Attribute:priority/Value:1+' => '紧急',
'Class:Problem/Attribute:priority/Value:2' => '高',
'Class:Problem/Attribute:priority/Value:2+' => '高',
'Class:Problem/Attribute:priority/Value:3' => '中',
'Class:Problem/Attribute:priority/Value:3+' => '中',
'Class:Problem/Attribute:priority/Value:4' => '低',
'Class:Problem/Attribute:priority/Value:4+' => '低',
'Class:Problem/Attribute:product' => '产品',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:related_change_id' => '相关变更',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => '变更编号',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:related_incident_list' => '相关事件',
'Class:Problem/Attribute:related_incident_list+' => '此问题相关的所有事件',
'Class:Problem/Attribute:related_request_list' => '相关需求',
'Class:Problem/Attribute:related_request_list+' => '此问题相关的所有需求',
'Class:Problem/Attribute:resolution_date' => '解决日期',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:status' => '状态',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:new' => '新建',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:assigned' => '已分配',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:resolved' => '已解决',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:status/Value:closed' => '已关闭',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:service_id' => '服务',
'Class:Problem/Attribute:service_id+' => '',
'Class:Problem/Attribute:service_name' => '服务名称',
@@ -54,18 +96,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Problem/Attribute:servicesubcategory_id+' => '',
'Class:Problem/Attribute:servicesubcategory_name' => '子服务名称',
'Class:Problem/Attribute:servicesubcategory_name+' => '',
'Class:Problem/Attribute:status' => '状态',
'Class:Problem/Attribute:status+' => '',
'Class:Problem/Attribute:status/Value:assigned' => '已分配',
'Class:Problem/Attribute:status/Value:assigned+' => '',
'Class:Problem/Attribute:status/Value:closed' => '已关闭',
'Class:Problem/Attribute:status/Value:closed+' => '',
'Class:Problem/Attribute:status/Value:new' => '新建',
'Class:Problem/Attribute:status/Value:new+' => '',
'Class:Problem/Attribute:status/Value:resolved' => '已解决',
'Class:Problem/Attribute:status/Value:resolved+' => '',
'Class:Problem/Attribute:product' => '产品',
'Class:Problem/Attribute:product+' => '',
'Class:Problem/Attribute:impact' => '影响范围',
'Class:Problem/Attribute:impact+' => '问题影响的范围,多少人受影响',
'Class:Problem/Attribute:impact/Value:1' => '部门',
'Class:Problem/Attribute:impact/Value:1+' => '',
'Class:Problem/Attribute:impact/Value:2' => '服务',
'Class:Problem/Attribute:impact/Value:2+' => '',
'Class:Problem/Attribute:impact/Value:3' => '个体',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => '紧急度',
'Class:Problem/Attribute:urgency+' => '',
'Class:Problem/Attribute:urgency+' => '问题得多快解决',
'Class:Problem/Attribute:urgency/Value:1' => '紧急',
'Class:Problem/Attribute:urgency/Value:1+' => '紧急',
'Class:Problem/Attribute:urgency/Value:2' => '高',
@@ -74,33 +116,36 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Problem/Attribute:urgency/Value:3+' => '中',
'Class:Problem/Attribute:urgency/Value:4' => '低',
'Class:Problem/Attribute:urgency/Value:4+' => '低',
'Class:Problem/Attribute:priority' => '优先级',
'Class:Problem/Attribute:priority+' => '优先处理哪个问题',
'Class:Problem/Attribute:priority/Value:1' => '紧急',
'Class:Problem/Attribute:priority/Value:1+' => '紧急',
'Class:Problem/Attribute:priority/Value:2' => '高',
'Class:Problem/Attribute:priority/Value:2+' => '高',
'Class:Problem/Attribute:priority/Value:3' => '中',
'Class:Problem/Attribute:priority/Value:3+' => '中',
'Class:Problem/Attribute:priority/Value:4' => '低',
'Class:Problem/Attribute:priority/Value:4+' => '低',
'Class:Problem/Attribute:related_change_id' => '相关变更',
'Class:Problem/Attribute:related_change_id+' => '',
'Class:Problem/Attribute:related_change_ref' => '变更编号',
'Class:Problem/Attribute:related_change_ref+' => '',
'Class:Problem/Attribute:assignment_date' => '分配日期',
'Class:Problem/Attribute:assignment_date+' => '',
'Class:Problem/Attribute:resolution_date' => '解决日期',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => '已知问题',
'Class:Problem/Attribute:knownerrors_list+' => '此问题相关的所有已知问题',
'Class:Problem/Attribute:related_request_list' => '相关需求',
'Class:Problem/Attribute:related_request_list+' => '此问题相关的所有需求',
'Class:Problem/Attribute:related_incident_list' => '相关事件',
'Class:Problem/Attribute:related_incident_list+' => '此问题相关的所有事件',
'Class:Problem/Stimulus:ev_assign' => '分配',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_close' => '关闭',
'Class:Problem/Stimulus:ev_close+' => '',
'Class:Problem/Stimulus:ev_reassign' => '重新分配',
'Class:Problem/Stimulus:ev_reassign+' => '',
'Class:Problem/Stimulus:ev_resolve' => '解决',
'Class:Problem/Stimulus:ev_resolve+' => '',
'Menu:NewProblem' => '新建问题',
'Menu:NewProblem+' => '新建问题',
'Menu:Problem:MyProblems' => '我的问题',
'Menu:Problem:MyProblems+' => '我的问题',
'Menu:Problem:OpenProblems' => '所有打开的问题',
'Menu:Problem:OpenProblems+' => '所有打开的问题',
'Menu:Problem:Overview' => '概况',
'Menu:Problem:Overview+' => '概况',
'Menu:Problem:Shortcuts' => '快捷方式',
'Menu:ProblemManagement' => '问题管理',
'Menu:ProblemManagement+' => '问题管理',
'Menu:SearchProblems' => '搜索问题',
'Menu:SearchProblems+' => '搜索问题',
'UI-ProblemManagementOverview-ProblemByPriority' => '按优先级划分的问题',
'UI-ProblemManagementOverview-ProblemByPriority+' => '按优先级划分的问题',
'UI-ProblemManagementOverview-ProblemByService' => '按服务划分的问题',
'UI-ProblemManagementOverview-ProblemByService+' => '按服务划分的问题',
'UI-ProblemManagementOverview-ProblemUnassigned' => '未分配的问题',
'UI-ProblemManagementOverview-ProblemUnassigned+' => '未分配的问题',
'UI:ProblemMgmtMenuOverview:Title' => '问题管理仪表盘',
'UI:ProblemMgmtMenuOverview:Title+' => '问题管理仪表盘',
'Class:Problem/Stimulus:ev_close' => '关闭',
'Class:Problem/Stimulus:ev_close+' => '',
]);

View File

@@ -1,33 +1,86 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '',
'Menu:RequestManagementProvider' => '服务台提供者',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => '转交给供应商的打开的需求',
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求工单',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
'Menu:UserRequest:MyRequests+' => '分配给我的需求 (作为办理人)',
'Menu:UserRequest:MySupportRequests' => '我办理的需求',
'Menu:UserRequest:MySupportRequests+' => '',
'Menu:UserRequest:EscalatedRequests' => '已升级的需求',
'Menu:UserRequest:EscalatedRequests+' => '',
'Menu:UserRequest:OpenRequests' => '所有打开的需求',
'Menu:UserRequest:OpenRequests+' => '',
'UI:WelcomeMenu:MyAssignedCalls' => '分配给我的需求',
'UI-RequestManagementOverview-RequestByType-last-14-days' => '最近两周的需求 (按类型)',
'UI-RequestManagementOverview-Last-14-days' => '最近两周的需求 (按数量)',
'UI-RequestManagementOverview-OpenRequestByStatus' => '打开的需求 (按状态)',
'UI-RequestManagementOverview-OpenRequestByAgent' => '打开的需求 (按办理人)',
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '和当前工单关联的功能配置项相关的已知错误',
]);
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserRequest
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest' => '用户需求',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
'Class:UserRequest/Attribute:approver_email+' => '',
'Class:UserRequest/Attribute:approver_id' => '批准人',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:assignment_date' => '分配日期',
'Class:UserRequest/Attribute:assignment_date+' => '',
'Class:UserRequest/Attribute:cumulatedpending' => '累计待定',
'Class:UserRequest/Attribute:cumulatedpending+' => '',
'Class:UserRequest/Attribute:escalation_flag' => '升级标签',
'Class:UserRequest/Attribute:escalation_flag+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:yes' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:yes+' => '',
'Class:UserRequest/Attribute:escalation_reason' => '升级原因',
'Class:UserRequest/Attribute:escalation_reason+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
'Class:UserRequest/Attribute:status/Value:new' => '新建',
'Class:UserRequest/Attribute:status/Value:new+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:UserRequest/Attribute:status/Value:escalated_tto+' => '',
'Class:UserRequest/Attribute:status/Value:assigned' => '已分配',
'Class:UserRequest/Attribute:status/Value:assigned+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_ttr' => '升级TTR',
'Class:UserRequest/Attribute:status/Value:escalated_ttr+' => '',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批准',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
'Class:UserRequest/Attribute:status/Value:pending' => '待定',
'Class:UserRequest/Attribute:status/Value:pending+' => '',
'Class:UserRequest/Attribute:status/Value:resolved' => '已解决',
'Class:UserRequest/Attribute:status/Value:resolved+' => '',
'Class:UserRequest/Attribute:status/Value:closed' => '已关闭',
'Class:UserRequest/Attribute:status/Value:closed+' => '',
'Class:UserRequest/Attribute:request_type' => '需求类型',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:service_request' => '服务需求',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:UserRequest/Attribute:impact' => '影响范围',
'Class:UserRequest/Attribute:impact+' => '',
'Class:UserRequest/Attribute:impact/Value:1' => '部门',
@@ -36,42 +89,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:impact/Value:2+' => '',
'Class:UserRequest/Attribute:impact/Value:3' => '个体',
'Class:UserRequest/Attribute:impact/Value:3+' => '',
'Class:UserRequest/Attribute:last_pending_date' => '最后更新',
'Class:UserRequest/Attribute:last_pending_date+' => '',
'Class:UserRequest/Attribute:origin' => '来自',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:chat' => '聊天工具',
'Class:UserRequest/Attribute:origin/Value:chat+' => '创建于聊天工具沟通后的需求',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
'Class:UserRequest/Attribute:origin/Value:in_person+' => '创建于当面讨论后的需求',
'Class:UserRequest/Attribute:origin/Value:mail' => '邮件',
'Class:UserRequest/Attribute:origin/Value:mail+' => '邮件',
'Class:UserRequest/Attribute:origin/Value:monitoring' => '监控',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '监控',
'Class:UserRequest/Attribute:origin/Value:phone' => '电话',
'Class:UserRequest/Attribute:origin/Value:phone+' => '电话',
'Class:UserRequest/Attribute:origin/Value:portal' => ITOP_APPLICATION_SHORT,
'Class:UserRequest/Attribute:origin/Value:portal+' => ITOP_APPLICATION_SHORT,
'Class:UserRequest/Attribute:parent_change_id' => '父级变更',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => '变更编号',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:parent_incident_id' => '父级事件',
'Class:UserRequest/Attribute:parent_incident_id+' => '',
'Class:UserRequest/Attribute:parent_incident_ref' => '父级事件编号',
'Class:UserRequest/Attribute:parent_incident_ref+' => '~~',
'Class:UserRequest/Attribute:parent_problem_id' => '父级问题',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => '问题编号',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_request_id' => '父级需求',
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'parent_request_id_friendlyname',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => '需求编号',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:pending_reason' => '待定原因',
'Class:UserRequest/Attribute:pending_reason+' => '',
'Class:UserRequest/Attribute:priority' => '优先级',
'Class:UserRequest/Attribute:priority+' => '',
'Class:UserRequest/Attribute:priority/Value:1' => '紧急',
@@ -82,82 +99,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:priority/Value:3+' => '中',
'Class:UserRequest/Attribute:priority/Value:4' => '低',
'Class:UserRequest/Attribute:priority/Value:4+' => '低',
'Class:UserRequest/Attribute:public_log' => '评论',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:related_request_list' => '子需求',
'Class:UserRequest/Attribute:related_request_list+' => '此父级需求相关的所有衍生需求',
'Class:UserRequest/Attribute:request_type' => '需求类型',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:service_request' => '服务需求',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:UserRequest/Attribute:resolution_code' => '解决编码',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => '帮助',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '帮助',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'bug修复',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed+' => 'bug修复',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair+' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:other' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:other+' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:software patch' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:software patch+' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:system update' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:system update+' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:training' => '培训',
'Class:UserRequest/Attribute:resolution_code/Value:training+' => '培训',
'Class:UserRequest/Attribute:resolution_date' => '解决日期',
'Class:UserRequest/Attribute:resolution_date+' => '',
'Class:UserRequest/Attribute:service_id' => '服务',
'Class:UserRequest/Attribute:service_id+' => '',
'Class:UserRequest/Attribute:service_name' => '服务名称',
'Class:UserRequest/Attribute:service_name+' => '',
'Class:UserRequest/Attribute:servicesubcategory_id' => '子服务',
'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
'Class:UserRequest/Attribute:servicesubcategory_name' => '子服务名称',
'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
'Class:UserRequest/Attribute:sla_tto_over' => 'SLA TTO 超时',
'Class:UserRequest/Attribute:sla_tto_over+' => '',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO 合格',
'Class:UserRequest/Attribute:sla_tto_passed+' => '',
'Class:UserRequest/Attribute:sla_ttr_over' => 'SLA TTR超时',
'Class:UserRequest/Attribute:sla_ttr_over+' => '',
'Class:UserRequest/Attribute:sla_ttr_passed' => 'SLA TTR合格',
'Class:UserRequest/Attribute:sla_ttr_passed+' => '',
'Class:UserRequest/Attribute:solution' => '解决方案',
'Class:UserRequest/Attribute:solution+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批准',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:assigned' => '已分配',
'Class:UserRequest/Attribute:status/Value:assigned+' => '',
'Class:UserRequest/Attribute:status/Value:closed' => '已关闭',
'Class:UserRequest/Attribute:status/Value:closed+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:UserRequest/Attribute:status/Value:escalated_tto+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_ttr' => '已升级TTR',
'Class:UserRequest/Attribute:status/Value:escalated_ttr+' => '',
'Class:UserRequest/Attribute:status/Value:new' => '新建',
'Class:UserRequest/Attribute:status/Value:new+' => '',
'Class:UserRequest/Attribute:status/Value:pending' => '待定',
'Class:UserRequest/Attribute:status/Value:pending+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
'Class:UserRequest/Attribute:status/Value:resolved' => '已解决',
'Class:UserRequest/Attribute:status/Value:resolved+' => '',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:time_spent' => '耗时',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => '',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'TTO截止日期',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => '',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => '',
'Class:UserRequest/Attribute:ttr_escalation_deadline' => 'TTR截止日期',
'Class:UserRequest/Attribute:ttr_escalation_deadline+' => '',
'Class:UserRequest/Attribute:urgency' => '紧急度',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency/Value:1' => '紧急',
@@ -168,8 +109,106 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:urgency/Value:3+' => '中',
'Class:UserRequest/Attribute:urgency/Value:4' => '低',
'Class:UserRequest/Attribute:urgency/Value:4+' => '低',
'Class:UserRequest/Attribute:user_comment' => '用户评论',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:origin' => '来自',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
'Class:UserRequest/Attribute:origin/Value:in_person+' => '通过面对面交谈收到的需求',
'Class:UserRequest/Attribute:origin/Value:chat' => '聊天工具',
'Class:UserRequest/Attribute:origin/Value:chat+' => '通过聊天工具收到的需求',
'Class:UserRequest/Attribute:origin/Value:mail' => '邮件',
'Class:UserRequest/Attribute:origin/Value:mail+' => '通过邮件收到的需求',
'Class:UserRequest/Attribute:origin/Value:monitoring' => '监控',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '通过监控报警收到的需求',
'Class:UserRequest/Attribute:origin/Value:phone' => '电话',
'Class:UserRequest/Attribute:origin/Value:phone+' => '通过电话收到的需求',
'Class:UserRequest/Attribute:origin/Value:portal' => '门户',
'Class:UserRequest/Attribute:origin/Value:portal+' => '通过门户收到的需求',
'Class:UserRequest/Attribute:approver_id' => '批准人',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
'Class:UserRequest/Attribute:approver_email+' => '',
'Class:UserRequest/Attribute:service_id' => '服务',
'Class:UserRequest/Attribute:service_id+' => '',
'Class:UserRequest/Attribute:service_name' => '服务名称',
'Class:UserRequest/Attribute:service_name+' => '',
'Class:UserRequest/Attribute:servicesubcategory_id' => '子服务',
'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
'Class:UserRequest/Attribute:servicesubcategory_name' => '子服务名称',
'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
'Class:UserRequest/Attribute:escalation_flag' => '升级标签',
'Class:UserRequest/Attribute:escalation_flag+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:yes' => '是',
'Class:UserRequest/Attribute:escalation_flag/Value:yes+' => '是',
'Class:UserRequest/Attribute:escalation_reason' => '升级原因',
'Class:UserRequest/Attribute:escalation_reason+' => '',
'Class:UserRequest/Attribute:assignment_date' => '分配日期',
'Class:UserRequest/Attribute:assignment_date+' => '',
'Class:UserRequest/Attribute:resolution_date' => '解决日期',
'Class:UserRequest/Attribute:resolution_date+' => '',
'Class:UserRequest/Attribute:last_pending_date' => '最后更新',
'Class:UserRequest/Attribute:last_pending_date+' => '',
'Class:UserRequest/Attribute:cumulatedpending' => '累计待定',
'Class:UserRequest/Attribute:cumulatedpending+' => '',
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => '',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => '',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'TTO 截止日期',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => '',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO 合格',
'Class:UserRequest/Attribute:sla_tto_passed+' => '',
'Class:UserRequest/Attribute:sla_tto_over' => 'SLA TTO 超时',
'Class:UserRequest/Attribute:sla_tto_over+' => '',
'Class:UserRequest/Attribute:ttr_escalation_deadline' => 'TTR 截止日期',
'Class:UserRequest/Attribute:ttr_escalation_deadline+' => '',
'Class:UserRequest/Attribute:sla_ttr_passed' => 'SLA TTR 合格',
'Class:UserRequest/Attribute:sla_ttr_passed+' => '',
'Class:UserRequest/Attribute:sla_ttr_over' => 'SLA TTR 超时',
'Class:UserRequest/Attribute:sla_ttr_over+' => '',
'Class:UserRequest/Attribute:time_spent' => '耗时',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:resolution_code' => '解决编码',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => '帮助',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'bug 修复',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:other' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:other+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:software patch' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:software patch+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:system update' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:system update+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:training' => '培训',
'Class:UserRequest/Attribute:resolution_code/Value:training+' => '',
'Class:UserRequest/Attribute:solution' => '解决方案',
'Class:UserRequest/Attribute:solution+' => '',
'Class:UserRequest/Attribute:pending_reason' => '待定原因',
'Class:UserRequest/Attribute:pending_reason+' => '',
'Class:UserRequest/Attribute:parent_request_id' => '父级需求',
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_incident_id' => '父级事件',
'Class:UserRequest/Attribute:parent_incident_id+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => '需求编号',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:parent_problem_id' => '父级问题',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => '问题编号',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_change_id' => '父级变更',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => '变更编号',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:parent_incident_ref' => '父级事件编号',
'Class:UserRequest/Attribute:parent_incident_ref+' => '~~',
'Class:UserRequest/Attribute:related_request_list' => '子需求',
'Class:UserRequest/Attribute:related_request_list+' => '此父级需求相关的所有衍生需求',
'Class:UserRequest/Attribute:public_log' => '评论',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:user_satisfaction' => '用户满意度',
'Class:UserRequest/Attribute:user_satisfaction+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:1' => '非常满意',
@@ -180,65 +219,43 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => '非常不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '非常不满意',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '无法分配父级需求给自己',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案信息',
'Class:UserRequest/Stimulus:ev_approve' => '批准',
'Class:UserRequest/Stimulus:ev_approve+' => '',
'Class:UserRequest/Attribute:user_comment' => '用户评论',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'parent_request_id_friendlyname',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => '分配',
'Class:UserRequest/Stimulus:ev_assign+' => '',
'Class:UserRequest/Stimulus:ev_autoclose' => '自动关闭',
'Class:UserRequest/Stimulus:ev_autoclose+' => '',
'Class:UserRequest/Stimulus:ev_autoresolve' => '自动解决',
'Class:UserRequest/Stimulus:ev_autoresolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => '关闭',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_pending' => '待定',
'Class:UserRequest/Stimulus:ev_pending+' => '',
'Class:UserRequest/Stimulus:ev_reassign' => '重新分配',
'Class:UserRequest/Stimulus:ev_reassign+' => '',
'Class:UserRequest/Stimulus:ev_approve' => '批准',
'Class:UserRequest/Stimulus:ev_approve+' => '',
'Class:UserRequest/Stimulus:ev_reject' => '驳回',
'Class:UserRequest/Stimulus:ev_reject+' => '',
'Class:UserRequest/Stimulus:ev_reopen' => '重新打开',
'Class:UserRequest/Stimulus:ev_reopen+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => '标记为已解决',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_pending' => '待定',
'Class:UserRequest/Stimulus:ev_pending+' => '',
'Class:UserRequest/Stimulus:ev_timeout' => '超时',
'Class:UserRequest/Stimulus:ev_timeout+' => '',
'Class:UserRequest/Stimulus:ev_autoresolve' => '自动解决',
'Class:UserRequest/Stimulus:ev_autoresolve+' => '',
'Class:UserRequest/Stimulus:ev_autoclose' => '自动关闭',
'Class:UserRequest/Stimulus:ev_autoclose+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => '标记为已解决',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => '关闭',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_reopen' => '重新打开',
'Class:UserRequest/Stimulus:ev_reopen+' => '',
'Class:UserRequest/Stimulus:ev_wait_for_approval' => '等待批准',
'Class:UserRequest/Stimulus:ev_wait_for_approval+' => '',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '和当前工单关联的功能配置项相关的已知错误',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求',
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '服务台',
'Menu:RequestManagementProvider' => '服务台提供者',
'Menu:RequestManagementProvider+' => '服务台提供者',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:UserRequest:EscalatedRequests' => '已升级的需求',
'Menu:UserRequest:EscalatedRequests+' => '已升级的需求',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
'Menu:UserRequest:MyRequests+' => '分配给我的需求 (作为办理人)',
'Menu:UserRequest:MySupportRequests' => '我办理的需求',
'Menu:UserRequest:MySupportRequests+' => '我办理的需求',
'Menu:UserRequest:OpenRequests' => '所有打开的需求',
'Menu:UserRequest:OpenRequests+' => '所有打开的需求',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '概况',
'Menu:UserRequest:Provider' => '转交给供应商的打开的需求',
'Menu:UserRequest:Provider+' => '转交给供应商的打开的需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '无法分配父级需求给自己',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案信息',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Organization:Overview:MyUserRequests' => '我在此组织发起的需求',
'Organization:Overview:Tickets' => '此组织内的所有工单',
'Organization:Overview:UserRequests' => '此组织的所有用户需求',
'UI-RequestManagementOverview-Last-14-days' => '最近两周的需求 (按数量)',
'UI-RequestManagementOverview-OpenRequestByAgent' => '打开的需求 (按办理人)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'UI-RequestManagementOverview-OpenRequestByStatus' => '打开的需求 (按状态)',
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-RequestByType-last-14-days' => '最近两周的需求 (按类型)',
'UI:WelcomeMenu:MyAssignedCalls' => '分配给我的需求',
]);

View File

@@ -1,34 +1,92 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
*
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '',
'Menu:RequestManagementProvider' => '服务台供应商',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => '转交给供应商的打开的需求',
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求工单',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
'Menu:UserRequest:MyRequests+' => '分配给我的需求 (作为办理人)',
'Menu:UserRequest:MySupportRequests' => '我办理的需求',
'Menu:UserRequest:MySupportRequests+' => '',
'Menu:UserRequest:EscalatedRequests' => '已升级的需求',
'Menu:UserRequest:EscalatedRequests+' => '',
'Menu:UserRequest:OpenRequests' => '所有打开的需求',
'Menu:UserRequest:OpenRequests+' => '',
'UI:WelcomeMenu:MyAssignedCalls' => '分配给我的需求',
'UI-RequestManagementOverview-RequestByType-last-14-days' => '最近两周的需求 (按类型)',
'UI-RequestManagementOverview-Last-14-days' => '最近两周的需求 (按数量)',
'UI-RequestManagementOverview-OpenRequestByStatus' => '打开的需求 (按状态)',
'UI-RequestManagementOverview-OpenRequestByAgent' => '打开的需求 (按办理人)',
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '和当前工单关联的功能配置项相关的已知错误',
'Menu:UserRequest:MyWorkOrders' => '分配给我的工作任务',
'Menu:UserRequest:MyWorkOrders+' => '分配给我的所有工单',
'Class:Problem:KnownProblemList' => '已知问题',
'Tickets:Related:OpenIncidents' => '打开的事件',
]);
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: UserRequest
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest' => '用户需求',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
'Class:UserRequest/Attribute:approver_email+' => '',
'Class:UserRequest/Attribute:approver_id' => '审核人',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:assignment_date' => '分配日期',
'Class:UserRequest/Attribute:assignment_date+' => '',
'Class:UserRequest/Attribute:cumulatedpending' => '累计待定',
'Class:UserRequest/Attribute:cumulatedpending+' => '',
'Class:UserRequest/Attribute:escalation_flag' => '是否升级',
'Class:UserRequest/Attribute:escalation_flag+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:yes' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:yes+' => '',
'Class:UserRequest/Attribute:escalation_reason' => '升级原因',
'Class:UserRequest/Attribute:escalation_reason+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
'Class:UserRequest/Attribute:status/Value:new' => '新建',
'Class:UserRequest/Attribute:status/Value:new+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:UserRequest/Attribute:status/Value:escalated_tto+' => '',
'Class:UserRequest/Attribute:status/Value:assigned' => '已分配',
'Class:UserRequest/Attribute:status/Value:assigned+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_ttr' => '已升级TTR',
'Class:UserRequest/Attribute:status/Value:escalated_ttr+' => '',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批准',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
'Class:UserRequest/Attribute:status/Value:pending' => '待定',
'Class:UserRequest/Attribute:status/Value:pending+' => '',
'Class:UserRequest/Attribute:status/Value:resolved' => '已解决',
'Class:UserRequest/Attribute:status/Value:resolved+' => '',
'Class:UserRequest/Attribute:status/Value:closed' => '已关闭',
'Class:UserRequest/Attribute:status/Value:closed+' => '',
'Class:UserRequest/Attribute:request_type' => '需求类型',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:incident' => '事件',
'Class:UserRequest/Attribute:request_type/Value:incident+' => '事件',
'Class:UserRequest/Attribute:request_type/Value:service_request' => '服务需求',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:UserRequest/Attribute:impact' => '影响范围',
'Class:UserRequest/Attribute:impact+' => '',
'Class:UserRequest/Attribute:impact/Value:1' => '部门',
@@ -37,38 +95,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:impact/Value:2+' => '',
'Class:UserRequest/Attribute:impact/Value:3' => '个体',
'Class:UserRequest/Attribute:impact/Value:3+' => '',
'Class:UserRequest/Attribute:last_pending_date' => '最近待定日期',
'Class:UserRequest/Attribute:last_pending_date+' => '',
'Class:UserRequest/Attribute:origin' => '来源',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:chat' => '聊天工具',
'Class:UserRequest/Attribute:origin/Value:chat+' => '创建于聊天工具沟通后的需求',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
'Class:UserRequest/Attribute:origin/Value:in_person+' => '创建于当面讨论后的需求',
'Class:UserRequest/Attribute:origin/Value:mail' => '邮件',
'Class:UserRequest/Attribute:origin/Value:mail+' => '邮件',
'Class:UserRequest/Attribute:origin/Value:monitoring' => '监控',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '监控',
'Class:UserRequest/Attribute:origin/Value:phone' => '电话',
'Class:UserRequest/Attribute:origin/Value:phone+' => '电话',
'Class:UserRequest/Attribute:origin/Value:portal' => ITOP_APPLICATION_SHORT,
'Class:UserRequest/Attribute:origin/Value:portal+' => ITOP_APPLICATION_SHORT,
'Class:UserRequest/Attribute:parent_change_id' => '父级变更',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => '变更编号',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:parent_problem_id' => '父级问题',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => '问题编号',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_request_id' => '父级需求',
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'parent_request_id_friendlyname',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => '需求编号',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:pending_reason' => '待定原因',
'Class:UserRequest/Attribute:pending_reason+' => '',
'Class:UserRequest/Attribute:priority' => '优先级',
'Class:UserRequest/Attribute:priority+' => '',
'Class:UserRequest/Attribute:priority/Value:1' => '紧急',
@@ -79,84 +105,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:priority/Value:3+' => '中',
'Class:UserRequest/Attribute:priority/Value:4' => '低',
'Class:UserRequest/Attribute:priority/Value:4+' => '低',
'Class:UserRequest/Attribute:public_log' => '评论',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:related_request_list' => '衍生事件',
'Class:UserRequest/Attribute:related_request_list+' => '此事件相关的所有子事件',
'Class:UserRequest/Attribute:request_type' => '需求类型',
'Class:UserRequest/Attribute:request_type+' => '',
'Class:UserRequest/Attribute:request_type/Value:incident' => '事件',
'Class:UserRequest/Attribute:request_type/Value:incident+' => '事件',
'Class:UserRequest/Attribute:request_type/Value:service_request' => '服务需求',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:UserRequest/Attribute:resolution_code' => '解决方式',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => '外部支持',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '外部支持',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'bug修复',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed+' => 'bug修复',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair+' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:other' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:other+' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:software patch' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:software patch+' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:system update' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:system update+' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:training' => '培训',
'Class:UserRequest/Attribute:resolution_code/Value:training+' => '培训',
'Class:UserRequest/Attribute:resolution_date' => '开始时间',
'Class:UserRequest/Attribute:resolution_date+' => '',
'Class:UserRequest/Attribute:service_id' => '服务',
'Class:UserRequest/Attribute:service_id+' => '',
'Class:UserRequest/Attribute:service_name' => '服务名称',
'Class:UserRequest/Attribute:service_name+' => '',
'Class:UserRequest/Attribute:servicesubcategory_id' => '子服务',
'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
'Class:UserRequest/Attribute:servicesubcategory_name' => '子服务名称',
'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
'Class:UserRequest/Attribute:sla_tto_over' => 'SLA TTO 超时',
'Class:UserRequest/Attribute:sla_tto_over+' => '',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO 合格',
'Class:UserRequest/Attribute:sla_tto_passed+' => '',
'Class:UserRequest/Attribute:sla_ttr_over' => 'SLA TTR超时',
'Class:UserRequest/Attribute:sla_ttr_over+' => '',
'Class:UserRequest/Attribute:sla_ttr_passed' => 'SLA TTR合格',
'Class:UserRequest/Attribute:sla_ttr_passed+' => '',
'Class:UserRequest/Attribute:solution' => '解决方案',
'Class:UserRequest/Attribute:solution+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批准',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:assigned' => '已分配',
'Class:UserRequest/Attribute:status/Value:assigned+' => '',
'Class:UserRequest/Attribute:status/Value:closed' => '已关闭',
'Class:UserRequest/Attribute:status/Value:closed+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_tto' => '已升级TTO',
'Class:UserRequest/Attribute:status/Value:escalated_tto+' => '',
'Class:UserRequest/Attribute:status/Value:escalated_ttr' => '已升级TTR',
'Class:UserRequest/Attribute:status/Value:escalated_ttr+' => '',
'Class:UserRequest/Attribute:status/Value:new' => '新建',
'Class:UserRequest/Attribute:status/Value:new+' => '',
'Class:UserRequest/Attribute:status/Value:pending' => '待定',
'Class:UserRequest/Attribute:status/Value:pending+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
'Class:UserRequest/Attribute:status/Value:resolved' => '已解决',
'Class:UserRequest/Attribute:status/Value:resolved+' => '',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval' => '等待批准',
'Class:UserRequest/Attribute:status/Value:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:time_spent' => '耗时',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => '响应时间',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'TTO截止日期',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => '',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => '解决时限',
'Class:UserRequest/Attribute:ttr_escalation_deadline' => 'TTR截止日期',
'Class:UserRequest/Attribute:ttr_escalation_deadline+' => '',
'Class:UserRequest/Attribute:urgency' => '紧急度',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency/Value:1' => '紧急',
@@ -167,102 +115,175 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:urgency/Value:3+' => '中',
'Class:UserRequest/Attribute:urgency/Value:4' => '低',
'Class:UserRequest/Attribute:urgency/Value:4+' => '低',
'Class:UserRequest/Attribute:user_comment' => '用户留言',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:origin' => '来源',
'Class:UserRequest/Attribute:origin+' => '工单创建由什么触发',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
'Class:UserRequest/Attribute:origin/Value:in_person+' => '创建于当面讨论后的需求',
'Class:UserRequest/Attribute:origin/Value:chat' => '聊天工具',
'Class:UserRequest/Attribute:origin/Value:chat+' => '创建于聊天工具沟通后的需求',
'Class:UserRequest/Attribute:origin/Value:mail' => '邮件',
'Class:UserRequest/Attribute:origin/Value:mail+' => '邮件',
'Class:UserRequest/Attribute:origin/Value:monitoring' => '监控',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '监控',
'Class:UserRequest/Attribute:origin/Value:phone' => '电话',
'Class:UserRequest/Attribute:origin/Value:phone+' => '电话',
'Class:UserRequest/Attribute:origin/Value:portal' => '门户',
'Class:UserRequest/Attribute:origin/Value:portal+' => 'Request created on the user portal~~',
'Class:UserRequest/Attribute:approver_id' => '审核人',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
'Class:UserRequest/Attribute:approver_email+' => '',
'Class:UserRequest/Attribute:service_id' => '服务',
'Class:UserRequest/Attribute:service_id+' => '',
'Class:UserRequest/Attribute:service_name' => '服务名称',
'Class:UserRequest/Attribute:service_name+' => '',
'Class:UserRequest/Attribute:servicesubcategory_id' => '子服务',
'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
'Class:UserRequest/Attribute:servicesubcategory_name' => '子服务名称',
'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
'Class:UserRequest/Attribute:escalation_flag' => '是否升级',
'Class:UserRequest/Attribute:escalation_flag+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:yes' => '是',
'Class:UserRequest/Attribute:escalation_flag/Value:yes+' => '是',
'Class:UserRequest/Attribute:escalation_reason' => '升级原因',
'Class:UserRequest/Attribute:escalation_reason+' => '',
'Class:UserRequest/Attribute:assignment_date' => '分配日期',
'Class:UserRequest/Attribute:assignment_date+' => '',
'Class:UserRequest/Attribute:resolution_date' => '开始时间',
'Class:UserRequest/Attribute:resolution_date+' => '',
'Class:UserRequest/Attribute:last_pending_date' => '最近待定日期',
'Class:UserRequest/Attribute:last_pending_date+' => '',
'Class:UserRequest/Attribute:cumulatedpending' => '累计待定',
'Class:UserRequest/Attribute:cumulatedpending+' => '',
'Class:UserRequest/Attribute:tto' => 'TTO',
'Class:UserRequest/Attribute:tto+' => '响应时间',
'Class:UserRequest/Attribute:ttr' => 'TTR',
'Class:UserRequest/Attribute:ttr+' => '解决时限',
'Class:UserRequest/Attribute:tto_escalation_deadline' => 'TTO截止日期',
'Class:UserRequest/Attribute:tto_escalation_deadline+' => '',
'Class:UserRequest/Attribute:sla_tto_passed' => 'SLA TTO 合格',
'Class:UserRequest/Attribute:sla_tto_passed+' => '',
'Class:UserRequest/Attribute:sla_tto_over' => 'SLA TTO 超时',
'Class:UserRequest/Attribute:sla_tto_over+' => '',
'Class:UserRequest/Attribute:ttr_escalation_deadline' => 'TTR截止日期',
'Class:UserRequest/Attribute:ttr_escalation_deadline+' => '',
'Class:UserRequest/Attribute:sla_ttr_passed' => 'SLA TTR合格',
'Class:UserRequest/Attribute:sla_ttr_passed+' => '',
'Class:UserRequest/Attribute:sla_ttr_over' => 'SLA TTR超时',
'Class:UserRequest/Attribute:sla_ttr_over+' => '',
'Class:UserRequest/Attribute:time_spent' => '耗时',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:resolution_code' => '解决方式',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => '外部支持',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'bug修复',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair' => '硬件维修',
'Class:UserRequest/Attribute:resolution_code/Value:hardware repair+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:other' => '其它',
'Class:UserRequest/Attribute:resolution_code/Value:other+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:software patch' => '软件补丁',
'Class:UserRequest/Attribute:resolution_code/Value:software patch+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:system update' => '系统更新',
'Class:UserRequest/Attribute:resolution_code/Value:system update+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:training' => '培训',
'Class:UserRequest/Attribute:resolution_code/Value:training+' => '',
'Class:UserRequest/Attribute:solution' => '解决方案',
'Class:UserRequest/Attribute:solution+' => '',
'Class:UserRequest/Attribute:pending_reason' => '待定原因',
'Class:UserRequest/Attribute:pending_reason+' => '',
'Class:UserRequest/Attribute:parent_request_id' => '父级需求',
'Class:UserRequest/Attribute:parent_request_id+' => '',
'Class:UserRequest/Attribute:parent_request_ref' => '需求编号',
'Class:UserRequest/Attribute:parent_request_ref+' => '',
'Class:UserRequest/Attribute:parent_problem_id' => '父级问题',
'Class:UserRequest/Attribute:parent_problem_id+' => '',
'Class:UserRequest/Attribute:parent_problem_ref' => '问题编号',
'Class:UserRequest/Attribute:parent_problem_ref+' => '',
'Class:UserRequest/Attribute:parent_change_id' => '父级变更',
'Class:UserRequest/Attribute:parent_change_id+' => '',
'Class:UserRequest/Attribute:parent_change_ref' => '变更编号',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => '衍生事件',
'Class:UserRequest/Attribute:related_request_list+' => '此事件相关的所有子事件',
'Class:UserRequest/Attribute:public_log' => '评论',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:user_satisfaction' => '用户满意度',
'Class:UserRequest/Attribute:user_satisfaction+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:1' => '非常满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '非常满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:1+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:2' => '基本满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '基本满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:2+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:3' => '不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => '非常不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '非常不满意',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '不能分配父级需求给自己',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案',
'Class:UserRequest/Stimulus:ev_approve' => '批准',
'Class:UserRequest/Stimulus:ev_approve+' => '',
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
'Class:UserRequest/Attribute:user_comment' => '用户留言',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'parent_request_id_friendlyname',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => '分配',
'Class:UserRequest/Stimulus:ev_assign+' => '',
'Class:UserRequest/Stimulus:ev_autoclose' => '自动关闭',
'Class:UserRequest/Stimulus:ev_autoclose+' => '',
'Class:UserRequest/Stimulus:ev_autoresolve' => '自动解决',
'Class:UserRequest/Stimulus:ev_autoresolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => '关闭',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_pending' => '待定',
'Class:UserRequest/Stimulus:ev_pending+' => '',
'Class:UserRequest/Stimulus:ev_reassign' => '重新分配',
'Class:UserRequest/Stimulus:ev_reassign+' => '',
'Class:UserRequest/Stimulus:ev_approve' => '批准',
'Class:UserRequest/Stimulus:ev_approve+' => '',
'Class:UserRequest/Stimulus:ev_reject' => '驳回',
'Class:UserRequest/Stimulus:ev_reject+' => '',
'Class:UserRequest/Stimulus:ev_reopen' => '重新打开',
'Class:UserRequest/Stimulus:ev_reopen+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => '标记为已解决',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_pending' => '待定',
'Class:UserRequest/Stimulus:ev_pending+' => '',
'Class:UserRequest/Stimulus:ev_timeout' => '超时',
'Class:UserRequest/Stimulus:ev_timeout+' => '',
'Class:UserRequest/Stimulus:ev_autoresolve' => '自动解决',
'Class:UserRequest/Stimulus:ev_autoresolve+' => '',
'Class:UserRequest/Stimulus:ev_autoclose' => '自动关闭',
'Class:UserRequest/Stimulus:ev_autoclose+' => '',
'Class:UserRequest/Stimulus:ev_resolve' => '标记为已解决',
'Class:UserRequest/Stimulus:ev_resolve+' => '',
'Class:UserRequest/Stimulus:ev_close' => '关闭',
'Class:UserRequest/Stimulus:ev_close+' => '',
'Class:UserRequest/Stimulus:ev_reopen' => '重新打开',
'Class:UserRequest/Stimulus:ev_reopen+' => '',
'Class:UserRequest/Stimulus:ev_wait_for_approval' => '等待审核',
'Class:UserRequest/Stimulus:ev_wait_for_approval+' => '',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '和当前工单关联的功能配置项相关的已知错误',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求',
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '服务台',
'Menu:RequestManagementProvider' => '服务台供应商',
'Menu:RequestManagementProvider+' => '服务台供应商',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:UserRequest:EscalatedRequests' => '已升级的需求',
'Menu:UserRequest:EscalatedRequests+' => '已升级的需求',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
'Menu:UserRequest:MyRequests+' => '分配给我的需求 (作为办理人)',
'Menu:UserRequest:MySupportRequests' => '我办理的需求',
'Menu:UserRequest:MySupportRequests+' => '我办理的需求',
'Menu:UserRequest:MyWorkOrders' => '分配给我的工作任务',
'Menu:UserRequest:MyWorkOrders+' => '分配给我的所有工单',
'Menu:UserRequest:OpenRequests' => '所有打开的需求',
'Menu:UserRequest:OpenRequests+' => '所有打开的需求',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '概况',
'Menu:UserRequest:Provider' => '转交给供应商的打开的需求',
'Menu:UserRequest:Provider+' => '转交给供应商的打开的需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Organization:Overview:MyUserRequests' => '我在此组织的用户需求',
'Organization:Overview:Tickets' => '来自此组织的工单',
'Organization:Overview:UserRequests' => '来自此组织的用户需求',
'Portal:Button:CreateRequestFromService' => '新建服务需求',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '不能分配父级需求给自己',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:TitleDetailsFor_Request' => '需求详情',
'Portal:ButtonUpdate' => '更新',
'Portal:ButtonClose' => '关闭',
'Portal:ButtonReopen' => '重新打开',
'Portal:ButtonUpdate' => '更新',
'Portal:ChooseYourFavoriteLanguage' => '选择您喜欢的语言',
'Portal:Details-Service-Element' => '服务元素',
'Portal:LanguageChangedTo_Lang' => '语言更改为',
'Portal:ListOpenProblems' => '处理中的问题',
'Portal:ListOpenRequests' => '列出打开需求',
'Portal:ListServices' => '服务列表',
'Portal:NoClosedTicket' => '没有关闭的需求',
'Portal:NoOpenProblem' => '没有打开的问题',
'Portal:NoService' => '',
'Portal:SelectLanguage' => '更改您的语言',
'Portal:SelectRequestType' => '选择一种类型的需求',
'Portal:SelectServiceElementFrom_Service' => '为%1$s选择服务元素',
'Portal:ShowFaqs' => 'FAQ',
'Portal:ShowProblem' => '问题',
'Portal:ShowServices' => '显示所有服务',
'Portal:TitleDetailsFor_Request' => '对于需求的详细信息',
'Portal:TitleDetailsFor_Service' => '服务详细信息',
'Portal:SelectRequestType' => '选择一种类型的需求',
'Portal:SelectServiceElementFrom_Service' => '为 %1$s 选择服务元素',
'Portal:ListServices' => '服务列表',
'Portal:TitleDetailsFor_Service' => '服务详情',
'Portal:Button:CreateRequestFromService' => '新建服务需求',
'Portal:ListOpenRequests' => '列出打开需求',
'Portal:UserRequest:MoreInfo' => '更多详细信息',
'Tickets:Related:OpenIncidents' => '打开的事件',
'UI-RequestManagementOverview-Last-14-days' => '最近两周的需求 (按数量)',
'UI-RequestManagementOverview-OpenRequestByAgent' => '打开的需求 (按办理人)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'UI-RequestManagementOverview-OpenRequestByStatus' => '打开的需求 (按状态)',
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-RequestByType-last-14-days' => '最近两周的需求 (按类型)',
'UI:WelcomeMenu:MyAssignedCalls' => '分配给我的需求',
'Portal:Details-Service-Element' => '服务元素',
'Portal:NoClosedTicket' => '没有关闭的需求',
'Portal:NoService' => '',
'Portal:ListOpenProblems' => '处理中的问题',
'Portal:ShowProblem' => '问题',
'Portal:ShowFaqs' => 'FAQ',
'Portal:NoOpenProblem' => '没有打开的问题',
'Portal:SelectLanguage' => '更改您的语言',
'Portal:LanguageChangedTo_Lang' => '语言更改为',
'Portal:ChooseYourFavoriteLanguage' => '选择您喜欢的语言',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Organization:Overview:UserRequests' => '来自此组织的用户需求',
'Organization:Overview:MyUserRequests' => '我在此组织的用户需求',
'Organization:Overview:Tickets' => '来自此组织的工单',
]);

View File

@@ -3,23 +3,125 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Menu, fieldsets, UI, messages translations
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ServiceManagement' => '服务管理',
'Menu:ServiceManagement+' => '服务管理概况',
'Menu:Service:Overview' => '概况',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务等级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '近30天内截止的合同',
'Menu:ProviderContract' => '供应商合同',
'Menu:ProviderContract+' => '供应商合同',
'Menu:CustomerContract' => '客户合同',
'Menu:CustomerContract+' => '客户合同',
'Menu:ServiceSubcategory' => '子服务',
'Menu:ServiceSubcategory+' => '子服务',
'Menu:Service' => '服务',
'Menu:Service+' => '服务',
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务等级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务等级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Contract:baseinfo' => '常规信息',
'Contract:moreinfo' => '合同信息',
'Contract:cost' => '费用信息',
]);
/*
'UI:ServiceManagementMenu' => 'Gestion des Services',
'UI:ServiceManagementMenu+' => 'Gestion des Services',
'UI:ServiceManagementMenu:Title' => 'Résumé des services & contrats',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Contrats par niveau de service',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Contrats par état',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Contrats se terminant dans moins de 30 jours',
*/
//
// Class: Organization
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
'Class:Organization/Attribute:deliverymodel_name+' => '',
]);
//
// Class: ContractType
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ContractType' => '合同类型',
'Class:ContractType+' => '',
]);
//
// Class: Contract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract' => '合同',
'Class:Contract+' => '',
'Class:Contract/Attribute:billing_frequency' => '付款周期',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:name' => '名称',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => '组织',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => '组织名称',
'Class:Contract/Attribute:organization_name+' => '通用名称',
'Class:Contract/Attribute:contacts_list' => '联系人',
'Class:Contract/Attribute:contacts_list+' => '此客户合同相关的所有联系人',
'Class:Contract/Attribute:contracttype_id' => '合同类型',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => '合同类型名称',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:documents_list' => '文档',
'Class:Contract/Attribute:documents_list+' => '此客户合同相关的所有文档',
'Class:Contract/Attribute:description' => '描述',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => '开始日期',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:end_date' => '结束日期',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:cost' => '计费',
'Class:Contract/Attribute:cost+' => '',
'Class:Contract/Attribute:cost_currency' => '结算货币',
@@ -28,28 +130,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
'Class:Contract/Attribute:cost_currency/Value:euros' => '欧元',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:contracttype_id' => '合同类型',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => '合同类型名称',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:billing_frequency' => '付款周期',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:cost_unit' => '计费单位',
'Class:Contract/Attribute:cost_unit+' => '',
'Class:Contract/Attribute:description' => '描述',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:documents_list' => '文档',
'Class:Contract/Attribute:documents_list+' => '此客户合同相关的所有文档',
'Class:Contract/Attribute:end_date' => '结束日期',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:finalclass' => '合同类型',
'Class:Contract/Attribute:finalclass+' => '',
'Class:Contract/Attribute:name' => '名称',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => '组织',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => '组织名称',
'Class:Contract/Attribute:organization_name+' => '通用名称',
'Class:Contract/Attribute:provider_id' => '供应商',
'Class:Contract/Attribute:provider_id+' => '',
'Class:Contract/Attribute:provider_name' => '供应商名称',
'Class:Contract/Attribute:provider_name+' => '',
'Class:Contract/Attribute:start_date' => '开始日期',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:status' => '状态',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => '启用',
@@ -58,65 +150,248 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:status/Value:obsolete+' => '废弃',
'Class:Contract/Attribute:status/Value:production' => '正式',
'Class:Contract/Attribute:status/Value:production+' => '正式',
'Class:ContractType' => '合同类型',
'Class:ContractType+' => '',
'Class:Contract/Attribute:finalclass' => '合同类型',
'Class:Contract/Attribute:finalclass+' => '',
]);
//
// Class: CustomerContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:CustomerContract' => '客户合同',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => '服务',
'Class:CustomerContract/Attribute:services_list+' => '此合同包含的所有服务',
'Class:CustomerContract/Attribute:functionalcis_list' => '配置项',
'Class:CustomerContract/Attribute:functionalcis_list+' => '此合同包含的所有配置项',
'Class:CustomerContract/Attribute:providercontracts_list' => '供应商合同',
'Class:CustomerContract/Attribute:providercontracts_list+' => '所有提供服务的供应商合同 (支持合同)',
'Class:CustomerContract/Attribute:services_list' => '服务',
'Class:CustomerContract/Attribute:services_list+' => '此合同包含的所有服务',
'Class:DeliveryModel' => '交付模式',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => '联系人',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式的所有联系人 (包括团队和人员)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '使用此交付模式的所有客户',
'Class:DeliveryModel/Attribute:description' => '描述',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:name' => '名称',
'Class:DeliveryModel/Attribute:name+' => '',
'Class:DeliveryModel/Attribute:org_id' => '组织',
'Class:DeliveryModel/Attribute:org_id+' => '',
'Class:DeliveryModel/Attribute:organization_name' => '组织名称',
'Class:DeliveryModel/Attribute:organization_name+' => '',
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
'Class:Organization/Attribute:deliverymodel_name+' => '',
]);
//
// Class: ProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ProviderContract' => '供应商合同',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => '配置项',
'Class:ProviderContract/Attribute:functionalcis_list+' => '此合同包含的所有配置项',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '服务等级协议',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
]);
//
// Class: lnkContactToContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract' => '关联联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => '合同名称',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => '联系人',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
]);
//
// Class: lnkContractToDocument
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => '合同名称',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => '文档',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => '文档名称',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
]);
//
// Class: lnkFunctionalCIToProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '',
]);
//
// Class: ServiceFamily
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:icon' => '图标',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => '服务',
'Class:ServiceFamily/Attribute:services_list+' => '列表中包含的所有服务',
]);
//
// Class: Service
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Service' => '服务',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => '名称',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => '供应商',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => '供应商名称',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:description' => '描述',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:servicefamily_id' => '服务系列',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:documents_list' => '文档',
'Class:Service/Attribute:documents_list+' => '此服务相关的所有文档',
'Class:Service/Attribute:contacts_list' => '联系人',
'Class:Service/Attribute:contacts_list+' => '此服务相关的所有联系人',
'Class:Service/Attribute:status' => '状态',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => '启用',
'Class:Service/Attribute:status/Value:implementation+' => '启用',
'Class:Service/Attribute:status/Value:obsolete' => '废弃',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => '生产',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => '图标',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => '客户合同',
'Class:Service/Attribute:customercontracts_list+' => '购买此服务的所有客户合同',
'Class:Service/Attribute:servicesubcategories_list' => '子服务',
'Class:Service/Attribute:servicesubcategories_list+' => '此服务的所有子服务',
]);
//
// Class: lnkDocumentToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => '服务名称',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => '文档',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => '文档名称',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
]);
//
// Class: lnkContactToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => '服务',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => '服务名称',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Attribute:contact_id' => '联系人',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToService/Attribute:contact_name+' => '',
]);
//
// Class: ServiceSubcategory
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceSubcategory' => '子服务',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => '名称',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => '描述',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:service_id' => '服务',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => '服务名称',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:status' => '状态',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:production' => '生产',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => '生产',
'Class:ServiceSubcategory/Attribute:request_type' => '需求类型',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => '服务需求',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:ServiceSubcategory/Attribute:service_provider' => '供应商名称',
'Class:ServiceSubcategory/Attribute:service_org_id' => '供应商',
]);
//
// Class: SLA
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLA' => 'SLA',
'Class:SLA+' => '',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此SLA的所有客户合同',
'Class:SLA/Attribute:description' => '描述',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:name' => '名称',
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:description' => '描述',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:org_id' => '组织',
'Class:SLA/Attribute:org_id+' => '',
'Class:SLA/Attribute:organization_name' => '组织名称',
'Class:SLA/Attribute:organization_name+' => '',
'Class:SLA/Attribute:slts_list' => 'SLT',
'Class:SLA/Attribute:slts_list+' => '此SLA 包含的所有服务等级目标',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '不能保存客户合同%1$s于服务%2$s的关联: SLA已存在',
'Class:SLA/Attribute:slts_list+' => '此 SLA 包含的所有服务等级目标',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此 SLA 的所有客户合同',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '不能保存客户合同 %1$s 于服务 %2$s 的关联: SLA 已存在',
]);
//
// Class: SLT
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLT' => 'SLT',
'Class:SLT+' => '',
'Class:SLT/Attribute:metric' => '衡量指标',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => '响应时间',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => '解决时限',
'Class:SLT/Attribute:name' => '名称',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => '优先级',
@@ -135,139 +410,58 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLT/Attribute:request_type/Value:incident+' => '事件',
'Class:SLT/Attribute:request_type/Value:service_request' => '服务需求',
'Class:SLT/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:SLT/Attribute:metric' => '衡量指标',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => '响应时间',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => '解决时限',
'Class:SLT/Attribute:value' => '值',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:unit' => '度量单位',
'Class:SLT/Attribute:unit+' => '',
'Class:SLT/Attribute:unit/Value:hours' => '小时',
'Class:SLT/Attribute:unit/Value:hours+' => '小时',
'Class:SLT/Attribute:unit/Value:minutes' => '分钟',
'Class:SLT/Attribute:unit/Value:minutes+' => '分钟',
'Class:SLT/Attribute:value' => '值',
'Class:SLT/Attribute:value+' => '',
'Class:Service' => '服务',
'Class:Service+' => '',
'Class:Service/Attribute:contacts_list' => '联系人',
'Class:Service/Attribute:contacts_list+' => '此服务相关的所有联系人',
'Class:Service/Attribute:customercontracts_list' => '客户合同',
'Class:Service/Attribute:customercontracts_list+' => '购买此服务的所有客户合同',
'Class:Service/Attribute:description' => '描述',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => '文档',
'Class:Service/Attribute:documents_list+' => '此服务相关的所有文档',
'Class:Service/Attribute:icon' => '图标',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:name' => '名称',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => '供应商',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => '供应商名称',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:servicefamily_id' => '服务系列',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:servicesubcategories_list' => '子服务',
'Class:Service/Attribute:servicesubcategories_list+' => '此服务的所有子服务',
'Class:Service/Attribute:status' => '状态',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => '启用',
'Class:Service/Attribute:status/Value:implementation+' => '启用',
'Class:Service/Attribute:status/Value:obsolete' => '废弃',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => '生产',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:icon' => '图标',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:services_list' => '服务',
'Class:ServiceFamily/Attribute:services_list+' => '列表中包含的所有服务',
'Class:ServiceSubcategory' => '子服务',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/Attribute:description' => '描述',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:name' => '名称',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:request_type' => '需求类型',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => '服务需求',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:ServiceSubcategory/Attribute:service_id' => '服务',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => '服务名称',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:service_org_id' => '供应商',
'Class:ServiceSubcategory/Attribute:service_provider' => '供应商名称',
'Class:ServiceSubcategory/Attribute:status' => '状态',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:production' => '生产',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => '生产',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:lnkContactToContract' => '关联联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => '联系人',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => '合同名称',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Attribute:contact_id' => '联系人',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToService/Attribute:contact_name+' => '',
'Class:lnkContactToService/Attribute:service_id' => '服务',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => '服务名称',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => '合同名称',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => '文档',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => '文档名称',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToFunctionalCI' => '关联客户合同/功能配置项',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name' => '客户合同名称',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_id' => '配置项',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_name' => '配置项名称',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_name+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToProviderContract' => '关联客户合同/供应商合同',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name' => '客户合同名称',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s~~',
]);
//
// Class: lnkSLAToSLT
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSLAToSLT' => '关联 SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA 名称',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'SLT 名称',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'SLT 指标',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'SLT 类别',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'SLT 工单优先级',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'SLT 值',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'SLT 单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '~~',
]);
//
// Class: lnkCustomerContractToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService' => '关联客户合同/服务',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => '客户合同名称',
@@ -280,91 +474,83 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService/Attribute:sla_id+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'SLA名称',
'Class:lnkCustomerContractToService/Attribute:sla_name+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact' => '关联交付模式/联系人',
]);
//
// Class: lnkCustomerContractToProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToProviderContract' => '关联 客户合同/供应商合同',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name' => '客户合同名称',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkCustomerContractToProviderContract/Attribute:providercontract_name+' => '',
]);
//
// Class: lnkCustomerContractToFunctionalCI
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToFunctionalCI' => '关联客户合同/功能配置项',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name' => '客户合同名称',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_id' => '配置项',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_name' => '配置项名称',
'Class:lnkCustomerContractToFunctionalCI/Attribute:functionalci_name+' => '',
]);
//
// Class: DeliveryModel
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DeliveryModel' => '交付模式',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => '名称',
'Class:DeliveryModel/Attribute:name+' => '',
'Class:DeliveryModel/Attribute:org_id' => '组织',
'Class:DeliveryModel/Attribute:org_id+' => '',
'Class:DeliveryModel/Attribute:organization_name' => '组织名称',
'Class:DeliveryModel/Attribute:organization_name+' => '',
'Class:DeliveryModel/Attribute:description' => '描述',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => '联系人',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式的所有联系人 (包括团队和人员)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '使用此交付模式的所有客户',
]);
//
// Class: lnkDeliveryModelToContact
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDeliveryModelToContact' => '关联 交付模式/联系人',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => '联系人',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => '联系人名称',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => '交付模式',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => '交付模式名称',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => '联系人',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => '联系人名称',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_id' => '角色',
'Class:lnkDeliveryModelToContact/Attribute:role_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_name' => '角色名称',
'Class:lnkDeliveryModelToContact/Attribute:role_name+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => '文档',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => '文档名称',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => '服务名称',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id' => '配置项',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name' => '配置项名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:functionalci_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT' => '关联SLA/SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA名称',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'SLT指标',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'SLT名称',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'SLT类别',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'SLT工单优先级',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'SLT值',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'SLT单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Contract:baseinfo' => '常规信息',
'Contract:cost' => '费用信息',
'Contract:moreinfo' => '合同信息',
'Menu:CustomerContract' => '客户合同',
'Menu:CustomerContract+' => '客户合同',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ProviderContract' => '供应商合同',
'Menu:ProviderContract+' => '供应商合同',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务等级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务等级目标',
'Menu:Service' => '服务',
'Menu:Service+' => '服务',
'Menu:Service:Overview' => '概况',
'Menu:Service:Overview+' => '',
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Menu:ServiceManagement' => '服务管理',
'Menu:ServiceManagement+' => '服务管理概况',
'Menu:ServiceSubcategory' => '子服务',
'Menu:ServiceSubcategory+' => '子服务',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务等级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '近30天内截止的合同',
]);

View File

@@ -3,24 +3,115 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
// Menu, fieldsets, UI, messages translations
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ServiceManagement' => '服务管理',
'Menu:ServiceManagement+' => '服务管理概况',
'Menu:Service:Overview' => '概况',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务等级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '未来30天内截止的合同',
'Menu:ProviderContract' => '供应商合同',
'Menu:ProviderContract+' => '供应商合同',
'Menu:CustomerContract' => '客户合同',
'Menu:CustomerContract+' => '客户合同',
'Menu:ServiceSubcategory' => '子服务',
'Menu:ServiceSubcategory+' => '子服务',
'Menu:Service' => '服务',
'Menu:Service+' => '服务',
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务等级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务等级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Menu:Procedure' => '流程清单',
'Menu:Procedure+' => '所有流程清单',
'Contract:baseinfo' => '常规信息',
'Contract:moreinfo' => '合同信息',
'Contract:cost' => '费用信息',
]);
//
// Class: Organization
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => 'This is required for Tickets handling.
The delivery model specifies the teams to which tickets can be assigned.~~',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
]);
//
// Class: ContractType
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ContractType' => '合同类型',
'Class:ContractType+' => '',
]);
//
// Class: Contract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract' => '合同',
'Class:Contract+' => '',
'Class:Contract/Attribute:billing_frequency' => '付款周期',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:name' => '名称',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => '客户',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => '客户名称',
'Class:Contract/Attribute:organization_name+' => '通用名称',
'Class:Contract/Attribute:contacts_list' => '联系人',
'Class:Contract/Attribute:contacts_list+' => '此客户合同相关的所有联系人',
'Class:Contract/Attribute:contracttype_id' => '合同类型',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => '合同类型名称',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:cost' => '计费',
'Class:Contract/Attribute:documents_list' => '文档',
'Class:Contract/Attribute:documents_list+' => '此客户合同相关的所有文档',
'Class:Contract/Attribute:description' => '描述',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => '开始日期',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:end_date' => '结束日期',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:cost' => '费用',
'Class:Contract/Attribute:cost+' => '',
'Class:Contract/Attribute:cost_currency' => '结算货币',
'Class:Contract/Attribute:cost_currency+' => '',
@@ -28,28 +119,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:cost_currency/Value:dollars+' => '',
'Class:Contract/Attribute:cost_currency/Value:euros' => '欧元',
'Class:Contract/Attribute:cost_currency/Value:euros+' => '',
'Class:Contract/Attribute:contracttype_id' => '合同类型',
'Class:Contract/Attribute:contracttype_id+' => '',
'Class:Contract/Attribute:contracttype_name' => '合同类型名称',
'Class:Contract/Attribute:contracttype_name+' => '',
'Class:Contract/Attribute:billing_frequency' => '付款周期',
'Class:Contract/Attribute:billing_frequency+' => '',
'Class:Contract/Attribute:cost_unit' => '计费单位',
'Class:Contract/Attribute:cost_unit+' => '',
'Class:Contract/Attribute:description' => '描述',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:documents_list' => '文档',
'Class:Contract/Attribute:documents_list+' => '此客户合同相关的所有文档',
'Class:Contract/Attribute:end_date' => '结束日期',
'Class:Contract/Attribute:end_date+' => '',
'Class:Contract/Attribute:finalclass' => '类型',
'Class:Contract/Attribute:finalclass+' => '',
'Class:Contract/Attribute:name' => '名称',
'Class:Contract/Attribute:name+' => '',
'Class:Contract/Attribute:org_id' => '客户',
'Class:Contract/Attribute:org_id+' => '',
'Class:Contract/Attribute:organization_name' => '客户名称',
'Class:Contract/Attribute:organization_name+' => '通用名称',
'Class:Contract/Attribute:provider_id' => '供应商',
'Class:Contract/Attribute:provider_id+' => '',
'Class:Contract/Attribute:provider_name' => '供应商名称',
'Class:Contract/Attribute:provider_name+' => '通用名称',
'Class:Contract/Attribute:start_date' => '开始日期',
'Class:Contract/Attribute:start_date+' => '',
'Class:Contract/Attribute:status' => '状态',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => '启用',
@@ -58,67 +139,233 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:status/Value:obsolete+' => '废弃',
'Class:Contract/Attribute:status/Value:production' => '生产',
'Class:Contract/Attribute:status/Value:production+' => '生产',
'Class:ContractType' => '合同类型',
'Class:ContractType+' => '',
'Class:Contract/Attribute:finalclass' => '类型',
'Class:Contract/Attribute:finalclass+' => '',
]);
//
// Class: CustomerContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:CustomerContract' => '客户合同',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => '服务',
'Class:CustomerContract/Attribute:services_list+' => '此合同包含的所有服务',
'Class:DeliveryModel' => '交付模式',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => '联系人',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式相关的所有联系人 (包括团队和人员)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '所有使用此交付模式的客户',
'Class:DeliveryModel/Attribute:description' => '描述',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:name' => '名称',
'Class:DeliveryModel/Attribute:name+' => 'Don\'t forget to add teams to this delivery model~~',
'Class:DeliveryModel/Attribute:org_id' => '组织',
'Class:DeliveryModel/Attribute:org_id+' => 'Usually the organization that provides the services~~',
'Class:DeliveryModel/Attribute:organization_name' => '组织名称',
'Class:DeliveryModel/Attribute:organization_name+' => '通用名称',
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => 'This is required for Tickets handling.
The delivery model specifies the teams to which tickets can be assigned.~~',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
]);
//
// Class: ProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ProviderContract' => '供应商合同',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => '配置项',
'Class:ProviderContract/Attribute:functionalcis_list+' => '此供应商合同包含的所有配置项',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '服务等级协议',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:contracttype_id' => '合同类型',
'Class:ProviderContract/Attribute:contracttype_id+' => '',
'Class:ProviderContract/Attribute:contracttype_name' => '合同类型名称',
'Class:ProviderContract/Attribute:contracttype_name+' => '',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => '配置项',
'Class:ProviderContract/Attribute:functionalcis_list+' => '此供应商合同包含的所有配置项',
'Class:ProviderContract/Attribute:services_list' => 'Services~~',
'Class:ProviderContract/Attribute:services_list' => '服务',
'Class:ProviderContract/Attribute:services_list+' => 'All the services purchased with this contract~~',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '服务等级协议',
]);
//
// Class: lnkContactToContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract' => '关联 联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => '合同名称',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => '联系人',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
]);
//
// Class: lnkContractToDocument
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => '合同名称',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => '文档',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => '文档名称',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
]);
//
// Class: ServiceFamily
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:icon' => '图标',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => '服务',
'Class:ServiceFamily/Attribute:services_list+' => '所有的服务',
]);
//
// Class: Service
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Service' => '服务',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => '名称',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => '供应商',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => '供应商名称',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:servicefamily_id' => '服务系列',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:description' => '描述',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => '文档',
'Class:Service/Attribute:documents_list+' => '此服务相关的所有文档',
'Class:Service/Attribute:contacts_list' => '联系人',
'Class:Service/Attribute:contacts_list+' => '此服务相关的所有联系人',
'Class:Service/Attribute:status' => '状态',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => '启用',
'Class:Service/Attribute:status/Value:implementation+' => '启用',
'Class:Service/Attribute:status/Value:obsolete' => '废弃',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => '生产',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => '图标',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => '客户合同',
'Class:Service/Attribute:customercontracts_list+' => '所有包含此服务的客户合同',
'Class:Service/Attribute:providercontracts_list' => '供应商合同',
'Class:Service/Attribute:providercontracts_list+' => '所有包含此服务的供应商合同',
'Class:Service/Attribute:functionalcis_list' => '配置项',
'Class:Service/Attribute:functionalcis_list+' => '提供此服务所需的所有配置项',
'Class:Service/Attribute:servicesubcategories_list' => '子服务',
'Class:Service/Attribute:servicesubcategories_list+' => '此服务的所有子服务',
]);
//
// Class: lnkDocumentToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => '服务名称',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => '文档',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => '文档名称',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
]);
//
// Class: lnkContactToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => '服务',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => '服务名称',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Attribute:contact_id' => '联系人',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToService/Attribute:contact_name+' => '',
]);
//
// Class: ServiceSubcategory
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceSubcategory' => '子服务',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => '名称',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => '描述',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:service_id' => '服务',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => '服务名称',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:request_type' => '需求类型',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => '服务需求',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:ServiceSubcategory/Attribute:status' => '状态',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:production' => '生产',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => '生产',
]);
//
// Class: SLA
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLA' => 'SLA',
'Class:SLA+' => '',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此SLA的所有客户合同',
'Class:SLA/Attribute:description' => '描述',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:name' => '名称',
'Class:SLA/Attribute:name+' => '',
'Class:SLA/Attribute:description' => '描述',
'Class:SLA/Attribute:description+' => '',
'Class:SLA/Attribute:org_id' => '供应商',
'Class:SLA/Attribute:org_id+' => '',
'Class:SLA/Attribute:organization_name' => '供应商名称',
'Class:SLA/Attribute:organization_name+' => '通用名称',
'Class:SLA/Attribute:slts_list' => 'SLT',
'Class:SLA/Attribute:slts_list+' => '此SLA包含的所有服务等级目标',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此SLA的所有客户合同',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '不能保存客户合同%1$s与服务%2$s的关联: SLA已存在',
]);
//
// Class: SLT
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLT' => 'SLT',
'Class:SLT+' => '',
'Class:SLT/Attribute:metric' => '衡量指标',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => '响应时间',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => '解决时限',
'Class:SLT/Attribute:name' => '名称',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => '优先级',
@@ -137,121 +384,60 @@ The delivery model specifies the teams to which tickets can be assigned.~~',
'Class:SLT/Attribute:request_type/Value:incident+' => '事件',
'Class:SLT/Attribute:request_type/Value:service_request' => '服务需求',
'Class:SLT/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:SLT/Attribute:slas_list' => 'SLAs~~',
'Class:SLT/Attribute:slas_list+' => '所有使用此SLT的SLA',
'Class:SLT/Attribute:metric' => '衡量指标',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => '响应时间',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => '解决时限',
'Class:SLT/Attribute:value' => '值',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:unit' => '度量单位',
'Class:SLT/Attribute:unit+' => '',
'Class:SLT/Attribute:unit/Value:hours' => '小时',
'Class:SLT/Attribute:unit/Value:hours+' => '小时',
'Class:SLT/Attribute:unit/Value:minutes' => '分钟',
'Class:SLT/Attribute:unit/Value:minutes+' => '分钟',
'Class:SLT/Attribute:value' => '',
'Class:SLT/Attribute:value+' => '',
'Class:Service' => '服务',
'Class:Service+' => '',
'Class:Service/Attribute:contacts_list' => '联系人',
'Class:Service/Attribute:contacts_list+' => '此服务相关的所有联系人',
'Class:Service/Attribute:customercontracts_list' => '客户合同',
'Class:Service/Attribute:customercontracts_list+' => '所有包含此服务的客户合同',
'Class:Service/Attribute:description' => '描述',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => '文档',
'Class:Service/Attribute:documents_list+' => '此服务相关的所有文档',
'Class:Service/Attribute:functionalcis_list' => '配置项',
'Class:Service/Attribute:functionalcis_list+' => '提供此服务所需的所有配置项',
'Class:Service/Attribute:icon' => '图标',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:name' => '名称',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => '供应商',
'Class:Service/Attribute:org_id+' => '',
'Class:Service/Attribute:organization_name' => '供应商名称',
'Class:Service/Attribute:organization_name+' => '',
'Class:Service/Attribute:providercontracts_list' => '供应商合同',
'Class:Service/Attribute:providercontracts_list+' => '所有包含此服务的供应商合同',
'Class:Service/Attribute:servicefamily_id' => '服务系列',
'Class:Service/Attribute:servicefamily_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:servicesubcategories_list' => '子服务',
'Class:Service/Attribute:servicesubcategories_list+' => '此服务的所有子服务',
'Class:Service/Attribute:status' => '状态',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => '启用',
'Class:Service/Attribute:status/Value:implementation+' => '启用',
'Class:Service/Attribute:status/Value:obsolete' => '废弃',
'Class:Service/Attribute:status/Value:obsolete+' => '',
'Class:Service/Attribute:status/Value:production' => '生产',
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:icon' => '图标',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
'Class:ServiceFamily/Attribute:services_list' => '服务',
'Class:ServiceFamily/Attribute:services_list+' => '所有的服务',
'Class:ServiceSubcategory' => '子服务',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/Attribute:description' => '描述',
'Class:ServiceSubcategory/Attribute:description+' => '',
'Class:ServiceSubcategory/Attribute:name' => '名称',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:request_type' => '需求类型',
'Class:ServiceSubcategory/Attribute:request_type+' => '',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:incident+' => '事件',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request' => '服务需求',
'Class:ServiceSubcategory/Attribute:request_type/Value:service_request+' => '服务需求',
'Class:ServiceSubcategory/Attribute:service_id' => '服务',
'Class:ServiceSubcategory/Attribute:service_id+' => '',
'Class:ServiceSubcategory/Attribute:service_name' => '服务名称',
'Class:ServiceSubcategory/Attribute:service_name+' => '',
'Class:ServiceSubcategory/Attribute:status' => '状态',
'Class:ServiceSubcategory/Attribute:status+' => '',
'Class:ServiceSubcategory/Attribute:status/Value:implementation' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:implementation+' => '启用',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:obsolete+' => '废弃',
'Class:ServiceSubcategory/Attribute:status/Value:production' => '生产',
'Class:ServiceSubcategory/Attribute:status/Value:production+' => '生产',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:lnkContactToContract' => '关联 联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Attribute:contact_id' => '联系人',
'Class:lnkContactToContract/Attribute:contact_id+' => '',
'Class:lnkContactToContract/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToContract/Attribute:contact_name+' => '',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => '合同名称',
'Class:lnkContactToContract/Attribute:contract_name+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Attribute:contact_id' => '联系人',
'Class:lnkContactToService/Attribute:contact_id+' => '',
'Class:lnkContactToService/Attribute:contact_name' => '联系人名称',
'Class:lnkContactToService/Attribute:contact_name+' => '',
'Class:lnkContactToService/Attribute:service_id' => '服务',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => '服务名称',
'Class:lnkContactToService/Attribute:service_name+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => '合同名称',
'Class:lnkContractToDocument/Attribute:contract_name+' => '',
'Class:lnkContractToDocument/Attribute:document_id' => '文档',
'Class:lnkContractToDocument/Attribute:document_id+' => '',
'Class:lnkContractToDocument/Attribute:document_name' => '文档名称',
'Class:lnkContractToDocument/Attribute:document_name+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:SLT/Attribute:slas_list' => 'SLA',
'Class:SLT/Attribute:slas_list+' => '所有使用此 SLT 的 SLA',
]);
//
// Class: lnkSLAToSLT
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSLAToSLT' => '关联SLA/SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA名称',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'SLT名称',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'SLT指标',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'SLT类别',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'SLT工单优先级',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'SLT 值',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'SLT 单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
]);
//
// Class: lnkCustomerContractToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService' => '关联客户合同/服务',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => '客户合同',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => '客户合同名称',
@@ -264,93 +450,65 @@ The delivery model specifies the teams to which tickets can be assigned.~~',
'Class:lnkCustomerContractToService/Attribute:sla_id+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'SLA名称',
'Class:lnkCustomerContractToService/Attribute:sla_name+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact' => '关联交付模式/联系人',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => '联系人',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => '联系人名称',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => '交付模式',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => '交付模式名称',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_id' => '角色',
'Class:lnkDeliveryModelToContact/Attribute:role_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_name' => '角色名称',
'Class:lnkDeliveryModelToContact/Attribute:role_name+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Attribute:document_id' => '文档',
'Class:lnkDocumentToService/Attribute:document_id+' => '',
'Class:lnkDocumentToService/Attribute:document_name' => '文档名称',
'Class:lnkDocumentToService/Attribute:document_name+' => '',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => '服务名称',
'Class:lnkDocumentToService/Attribute:service_name+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
]);
//
// Class: lnkProviderContractToService
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkProviderContractToService' => '关联供应商合同/服务',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_id' => '供应商合同',
'Class:lnkProviderContractToService/Attribute:providercontract_id+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkProviderContractToService/Attribute:providercontract_name+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s',
'Class:lnkProviderContractToService/Attribute:service_id' => '服务',
'Class:lnkProviderContractToService/Attribute:service_id+' => '',
'Class:lnkProviderContractToService/Attribute:service_name' => '服务名称',
'Class:lnkProviderContractToService/Attribute:service_name+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT' => '关联SLA/SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA名称',
'Class:lnkSLAToSLT/Attribute:sla_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_id' => 'SLT',
'Class:lnkSLAToSLT/Attribute:slt_id+' => '',
'Class:lnkSLAToSLT/Attribute:slt_metric' => 'SLT指标',
'Class:lnkSLAToSLT/Attribute:slt_metric+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_name' => 'SLT名称',
'Class:lnkSLAToSLT/Attribute:slt_name+' => '',
'Class:lnkSLAToSLT/Attribute:slt_request_type' => 'SLT类别',
'Class:lnkSLAToSLT/Attribute:slt_request_type+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority' => 'SLT工单优先级',
'Class:lnkSLAToSLT/Attribute:slt_ticket_priority+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'SLT值',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'SLT单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Contract:baseinfo' => '常规信息',
'Contract:cost' => '费用信息',
'Contract:moreinfo' => '合同信息',
'Menu:CustomerContract' => '客户合同',
'Menu:CustomerContract+' => '客户合同',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:Procedure' => '流程清单',
'Menu:Procedure+' => '所有流程清单',
'Menu:ProviderContract' => '供应商合同',
'Menu:ProviderContract+' => '供应商合同',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务等级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务等级目标',
'Menu:Service' => '服务',
'Menu:Service+' => '服务',
'Menu:Service:Overview' => '概况',
'Menu:Service:Overview+' => '',
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Menu:ServiceManagement' => '服务管理',
'Menu:ServiceManagement+' => '服务管理概况',
'Menu:ServiceSubcategory' => '子服务',
'Menu:ServiceSubcategory+' => '子服务',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务等级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '未来30天内截止的合同',
'Class:lnkProviderContractToService/Attribute:providercontract_id' => '供应商合同',
'Class:lnkProviderContractToService/Attribute:providercontract_id+' => '',
'Class:lnkProviderContractToService/Attribute:providercontract_name' => '供应商合同名称',
'Class:lnkProviderContractToService/Attribute:providercontract_name+' => '',
]);
//
// Class: DeliveryModel
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DeliveryModel' => '交付模式',
'Class:DeliveryModel+' => '',
'Class:DeliveryModel/Attribute:name' => '名称',
'Class:DeliveryModel/Attribute:name+' => 'Don\'t forget to add teams to this delivery model~~',
'Class:DeliveryModel/Attribute:org_id' => '组织',
'Class:DeliveryModel/Attribute:org_id+' => 'Usually the organization that provides the services~~',
'Class:DeliveryModel/Attribute:organization_name' => '组织名称',
'Class:DeliveryModel/Attribute:organization_name+' => '通用名称',
'Class:DeliveryModel/Attribute:description' => '描述',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => '联系人',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式相关的所有联系人 (包括团队和人员)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '所有使用此交付模式的客户',
]);
//
// Class: lnkDeliveryModelToContact
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDeliveryModelToContact' => '关联交付模式/联系人',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => '交付模式',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => '交付模式名称',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_id' => '联系人',
'Class:lnkDeliveryModelToContact/Attribute:contact_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:contact_name' => '联系人名称',
'Class:lnkDeliveryModelToContact/Attribute:contact_name+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_id' => '角色',
'Class:lnkDeliveryModelToContact/Attribute:role_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:role_name' => '角色名称',
'Class:lnkDeliveryModelToContact/Attribute:role_name+' => '',
]);

View File

@@ -20,6 +20,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -20,6 +20,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -3,64 +3,230 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnary conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
// Class:<class_name>/UniquenessRule:<rule_code>
// Class:<class_name>/UniquenessRule:<rule_code>+
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
//
// Class: Organization
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Organization' => '组织',
'Class:Organization+' => '',
'Class:Organization/Attribute:name' => '名称',
'Class:Organization/Attribute:name+' => '常用名称',
'Class:Organization/Attribute:code' => '编码',
'Class:Organization/Attribute:code+' => '组织编码 (Siret, DUNS,...)',
'Class:Organization/Attribute:status' => '状态',
'Class:Organization/Attribute:status+' => '',
'Class:Organization/Attribute:status/Value:active' => '启用',
'Class:Organization/Attribute:status/Value:active+' => '启用',
'Class:Organization/Attribute:status/Value:inactive' => '停用',
'Class:Organization/Attribute:status/Value:inactive+' => '停用',
'Class:Organization/Attribute:parent_id' => '父级',
'Class:Organization/Attribute:parent_id+' => '父级组织',
'Class:Organization/Attribute:parent_name' => '父级名称',
'Class:Organization/Attribute:parent_name+' => '父级组织名称',
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
'Class:Organization/Attribute:deliverymodel_name+' => '',
'Class:Organization/Attribute:parent_id_friendlyname' => '上级组织',
'Class:Organization/Attribute:parent_id_friendlyname+' => '上级组织',
'Class:Organization/Attribute:overview' => '概览',
'Organization:Overview:FunctionalCIs' => '此组织的所有配置项',
'Organization:Overview:FunctionalCIs:subtitle' => '按类型',
'Organization:Overview:Users' => '此组织里所有的'.ITOP_APPLICATION_SHORT.'用户',
]);
//
// Class: Location
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Location' => '地点',
'Class:Location+' => '任何类型的地点: 区域, 国家, 城市, 位置, 建筑, 楼层, 房间, 机架,...',
'Class:Location/Attribute:name' => '名称',
'Class:Location/Attribute:name+' => '',
'Class:Location/Attribute:status' => '状态',
'Class:Location/Attribute:status+' => '',
'Class:Location/Attribute:status/Value:active' => '启用',
'Class:Location/Attribute:status/Value:active+' => '启用',
'Class:Location/Attribute:status/Value:inactive' => '停用',
'Class:Location/Attribute:status/Value:inactive+' => '停用',
'Class:Location/Attribute:org_id' => '所属组织',
'Class:Location/Attribute:org_id+' => '',
'Class:Location/Attribute:org_name' => '所属组织名称',
'Class:Location/Attribute:org_name+' => '',
'Class:Location/Attribute:address' => '地址',
'Class:Location/Attribute:address+' => '地址',
'Class:Location/Attribute:postal_code' => '邮编',
'Class:Location/Attribute:postal_code+' => '邮政编码',
'Class:Location/Attribute:city' => '城市',
'Class:Location/Attribute:city+' => '',
'Class:Location/Attribute:country' => '国家',
'Class:Location/Attribute:country+' => '',
'Class:Location/Attribute:physicaldevice_list' => '设备',
'Class:Location/Attribute:physicaldevice_list+' => '此位置的所有设备',
'Class:Location/Attribute:person_list' => '联系人',
'Class:Location/Attribute:person_list+' => '此位置的所有联系人',
]);
//
// Class: Contact
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contact' => '联系人',
'Class:Contact+' => '',
'Class:Contact/Attribute:cis_list' => '配置项',
'Class:Contact/Attribute:cis_list+' => '此联系人关联的所有配置项',
'Class:Contact/Attribute:email' => '电子邮件',
'Class:Contact/Attribute:email+' => '',
'Class:Contact/Attribute:finalclass' => '联系人类型',
'Class:Contact/Attribute:finalclass+' => '根本属性的名称',
'Class:Contact/Attribute:function' => '职责',
'Class:Contact/Attribute:function+' => '',
'Class:Contact/ComplementaryName' => '%1$s - %2$s',
'Class:Contact/Attribute:name' => '名称',
'Class:Contact/Attribute:name+' => '',
'Class:Contact/Attribute:notify' => '通知',
'Class:Contact/Attribute:notify+' => '',
'Class:Contact/Attribute:notify/Value:no' => '否',
'Class:Contact/Attribute:notify/Value:no+' => '否',
'Class:Contact/Attribute:notify/Value:yes' => '是',
'Class:Contact/Attribute:notify/Value:yes+' => '是',
'Class:Contact/Attribute:org_id' => '组织',
'Class:Contact/Attribute:org_id+' => '',
'Class:Contact/Attribute:org_name' => '组织',
'Class:Contact/Attribute:org_name+' => '',
'Class:Contact/Attribute:phone' => '电话',
'Class:Contact/Attribute:phone+' => '',
'Class:Contact/Attribute:status' => '状态',
'Class:Contact/Attribute:status+' => '',
'Class:Contact/Attribute:status/Value:active' => '启用',
'Class:Contact/Attribute:status/Value:active+' => '启用',
'Class:Contact/Attribute:status/Value:inactive' => '停用',
'Class:Contact/Attribute:status/Value:inactive+' => '停用',
'Class:Contact/ComplementaryName' => '%1$s - %2$s~~',
'Class:ContactType' => '联系人类型',
'Class:ContactType+' => '',
'Class:Contact/Attribute:org_id' => '组织',
'Class:Contact/Attribute:org_id+' => '',
'Class:Contact/Attribute:org_name' => '组织',
'Class:Contact/Attribute:org_name+' => '',
'Class:Contact/Attribute:email' => '电子邮件',
'Class:Contact/Attribute:email+' => '',
'Class:Contact/Attribute:phone' => '电话',
'Class:Contact/Attribute:phone+' => '',
'Class:Contact/Attribute:notify' => '通知',
'Class:Contact/Attribute:notify+' => '',
'Class:Contact/Attribute:notify/Value:no' => '否',
'Class:Contact/Attribute:notify/Value:no+' => '否',
'Class:Contact/Attribute:notify/Value:yes' => '是',
'Class:Contact/Attribute:notify/Value:yes+' => '是',
'Class:Contact/Attribute:function' => '职责',
'Class:Contact/Attribute:function+' => '',
'Class:Contact/Attribute:cis_list' => '配置项',
'Class:Contact/Attribute:cis_list+' => '此联系人关联的所有配置项',
'Class:Contact/Attribute:finalclass' => '联系人类型',
'Class:Contact/Attribute:finalclass+' => '根本属性的名称',
]);
//
// Class: Person
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Person' => '人员',
'Class:Person+' => '',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/Attribute:name' => '姓',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:first_name' => '名',
'Class:Person/Attribute:first_name+' => '',
'Class:Person/Attribute:employee_number' => '员工编号',
'Class:Person/Attribute:employee_number+' => '',
'Class:Person/Attribute:mobile_phone' => '手机',
'Class:Person/Attribute:mobile_phone+' => '',
'Class:Person/Attribute:location_id' => '地点',
'Class:Person/Attribute:location_id+' => '',
'Class:Person/Attribute:location_name' => '名称',
'Class:Person/Attribute:location_name+' => '',
'Class:Person/Attribute:manager_id' => '直属上级',
'Class:Person/Attribute:manager_id+' => '',
'Class:Person/Attribute:manager_name' => '名称',
'Class:Person/Attribute:manager_name+' => '',
'Class:Person/Attribute:team_list' => '团队',
'Class:Person/Attribute:team_list+' => '这人员归属的所有团队',
'Class:Person/Attribute:tickets_list' => '工单',
'Class:Person/Attribute:tickets_list+' => '此人发起的所有工单',
'Class:Person/Attribute:user_list' => '用户',
'Class:Person/Attribute:user_list+' => '所有关联到此人员的用户',
'Class:Person/Attribute:manager_id_friendlyname' => '直属上级姓名',
'Class:Person/Attribute:manager_id_friendlyname+' => '',
'Class:Person/Attribute:picture' => '头像',
'Class:Person/Attribute:picture+' => '',
'Class:Person/UniquenessRule:employee_number' => '\'$this->org_name$\' 内已经有人占用了这个员工号',
'Class:Person/UniquenessRule:employee_number+' => '同一组织内的员工号必须唯一',
'Class:Person/UniquenessRule:name' => '\'$this->org_name$\' 内已经有人叫这个名字',
'Class:Person/UniquenessRule:name+' => '同一组织内的员工姓名必须唯一',
'Class:Person/Error:ChangingOrgDenied' => '无法移动此人员到组织 \'%1$s\' 因为这将终端其用户门户的访问, 其关联的用户没有被授权访问此组织',
]);
//
// Class: Team
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Team' => '团队',
'Class:Team+' => '',
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => '成员',
'Class:Team/Attribute:persons_list+' => '此团队包含的所有成员',
'Class:Team/Attribute:tickets_list' => '工单',
'Class:Team/Attribute:tickets_list+' => '此团队的所有工单',
]);
//
// Class: Document
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Document' => '文档',
'Class:Document+' => '',
'Class:Document/Attribute:cis_list' => '配置项',
'Class:Document/Attribute:cis_list+' => '此文档关联的所有配置项',
'Class:Document/Attribute:description' => '描述',
'Class:Document/Attribute:description+' => '',
'Class:Document/Attribute:documenttype_id' => '文档类型',
'Class:Document/Attribute:documenttype_id+' => '',
'Class:Document/Attribute:documenttype_name' => '文档类型名称',
'Class:Document/Attribute:documenttype_name+' => '',
'Class:Document/Attribute:finalclass' => '文档类型',
'Class:Document/Attribute:finalclass+' => '根本属性的名称',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s',
'Class:Document/Attribute:name' => '名称',
'Class:Document/Attribute:name+' => '',
'Class:Document/Attribute:org_id' => '组织',
'Class:Document/Attribute:org_id+' => '',
'Class:Document/Attribute:org_name' => '组织名称',
'Class:Document/Attribute:org_name+' => '',
'Class:Document/Attribute:documenttype_id' => '文档类型',
'Class:Document/Attribute:documenttype_id+' => '',
'Class:Document/Attribute:documenttype_name' => '文档类型名称',
'Class:Document/Attribute:documenttype_name+' => '',
'Class:Document/Attribute:version' => '版本',
'Class:Document/Attribute:version+' => '',
'Class:Document/Attribute:description' => '描述',
'Class:Document/Attribute:description+' => '',
'Class:Document/Attribute:status' => '状态',
'Class:Document/Attribute:status+' => '',
'Class:Document/Attribute:status/Value:draft' => '草稿',
@@ -69,122 +235,89 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Document/Attribute:status/Value:obsolete+' => '',
'Class:Document/Attribute:status/Value:published' => '正式',
'Class:Document/Attribute:status/Value:published+' => '',
'Class:Document/Attribute:version' => '版本',
'Class:Document/Attribute:version+' => '',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Document/Attribute:cis_list' => '配置项',
'Class:Document/Attribute:cis_list+' => '此文档关联的所有配置项',
'Class:Document/Attribute:finalclass' => '文档类型',
'Class:Document/Attribute:finalclass+' => '根本属性的名称',
]);
//
// Class: DocumentFile
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DocumentFile' => '文档文件',
'Class:DocumentFile+' => '',
'Class:DocumentFile/Attribute:file' => '文件',
'Class:DocumentFile/Attribute:file+' => '',
]);
//
// Class: DocumentNote
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DocumentNote' => '文档笔记',
'Class:DocumentNote+' => '',
'Class:DocumentNote/Attribute:text' => '正文',
'Class:DocumentNote/Attribute:text+' => '',
'Class:DocumentType' => '文档类型',
'Class:DocumentType+' => '',
]);
//
// Class: DocumentWeb
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DocumentWeb' => '文档网页',
'Class:DocumentWeb+' => '',
'Class:DocumentWeb/Attribute:url' => 'URL',
'Class:DocumentWeb/Attribute:url+' => '',
'Class:Location' => '地点',
'Class:Location+' => '任何类型的地点: 区域, 国家, 城市, 位置, 建筑, 楼层, 房间, 机架,...',
'Class:Location/Attribute:address' => '地址',
'Class:Location/Attribute:address+' => '地址',
'Class:Location/Attribute:city' => '城市',
'Class:Location/Attribute:city+' => '',
'Class:Location/Attribute:country' => '国家',
'Class:Location/Attribute:country+' => '',
'Class:Location/Attribute:name' => '名称',
'Class:Location/Attribute:name+' => '',
'Class:Location/Attribute:org_id' => '所属组织',
'Class:Location/Attribute:org_id+' => '',
'Class:Location/Attribute:org_name' => '所属组织名称',
'Class:Location/Attribute:org_name+' => '',
'Class:Location/Attribute:person_list' => '联系人',
'Class:Location/Attribute:person_list+' => '此位置的所有联系人',
'Class:Location/Attribute:physicaldevice_list' => '设备',
'Class:Location/Attribute:physicaldevice_list+' => '此位置的所有设备',
'Class:Location/Attribute:postal_code' => '邮编',
'Class:Location/Attribute:postal_code+' => '邮政编码',
'Class:Location/Attribute:status' => '状态',
'Class:Location/Attribute:status+' => '',
'Class:Location/Attribute:status/Value:active' => '启用',
'Class:Location/Attribute:status/Value:active+' => '启用',
'Class:Location/Attribute:status/Value:inactive' => '停用',
'Class:Location/Attribute:status/Value:inactive+' => '停用',
'Class:Organization' => '组织',
'Class:Organization+' => '',
'Class:Organization/Attribute:code' => '编码',
'Class:Organization/Attribute:code+' => '组织编码 (Siret, DUNS,...)',
'Class:Organization/Attribute:deliverymodel_id' => '交付模式',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
'Class:Organization/Attribute:deliverymodel_name+' => '',
'Class:Organization/Attribute:name' => '名称',
'Class:Organization/Attribute:name+' => '常用名称',
'Class:Organization/Attribute:overview' => '概览',
'Class:Organization/Attribute:parent_id' => '父级',
'Class:Organization/Attribute:parent_id+' => '父级组织',
'Class:Organization/Attribute:parent_id_friendlyname' => '上级组织',
'Class:Organization/Attribute:parent_id_friendlyname+' => '上级组织',
'Class:Organization/Attribute:parent_name' => '父级名称',
'Class:Organization/Attribute:parent_name+' => '父级组织名称',
'Class:Organization/Attribute:status' => '状态',
'Class:Organization/Attribute:status+' => '',
'Class:Organization/Attribute:status/Value:active' => '启用',
'Class:Organization/Attribute:status/Value:active+' => '启用',
'Class:Organization/Attribute:status/Value:inactive' => '停用',
'Class:Organization/Attribute:status/Value:inactive+' => '停用',
'Class:Person' => '人员',
'Class:Person+' => '',
'Class:Person/Attribute:employee_number' => '员工编号',
'Class:Person/Attribute:employee_number+' => '',
'Class:Person/Attribute:first_name' => '名',
'Class:Person/Attribute:first_name+' => '',
'Class:Person/Attribute:location_id' => '地点',
'Class:Person/Attribute:location_id+' => '',
'Class:Person/Attribute:location_name' => '名称',
'Class:Person/Attribute:location_name+' => '',
'Class:Person/Attribute:manager_id' => '直属上级',
'Class:Person/Attribute:manager_id+' => '',
'Class:Person/Attribute:manager_id_friendlyname' => '直属上级姓名',
'Class:Person/Attribute:manager_id_friendlyname+' => '',
'Class:Person/Attribute:manager_name' => '名称',
'Class:Person/Attribute:manager_name+' => '',
'Class:Person/Attribute:mobile_phone' => '手机',
'Class:Person/Attribute:mobile_phone+' => '',
'Class:Person/Attribute:name' => '姓',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:picture' => '头像',
'Class:Person/Attribute:picture+' => '',
'Class:Person/Attribute:team_list' => '团队',
'Class:Person/Attribute:team_list+' => '这人员归属的所有团队',
'Class:Person/Attribute:tickets_list' => '工单',
'Class:Person/Attribute:tickets_list+' => '此人发起的所有工单',
'Class:Person/Attribute:user_list' => '用户',
'Class:Person/Attribute:user_list+' => '所有关联到此人员的用户',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/Error:ChangingOrgDenied' => '无法移动此人员到组织 \'%1$s\' 因为这将终端其用户门户的访问, 其关联的用户没有被授权访问此组织',
'Class:Person/Name' => '%2$s %1$s',
'Class:Person/UniquenessRule:employee_number' => '\'$this->org_name$\' 内已经有人占用了这个员工号',
'Class:Person/UniquenessRule:employee_number+' => '同一组织内的员工号必须唯一',
'Class:Person/UniquenessRule:name' => '\'$this->org_name$\' 内已经有人叫这个名字',
'Class:Person/UniquenessRule:name+' => '同一组织内的员工姓名必须唯一',
'Class:Team' => '团队',
'Class:Team+' => '',
'Class:Team/Attribute:persons_list' => '成员',
'Class:Team/Attribute:persons_list+' => '此团队包含的所有成员',
'Class:Team/Attribute:tickets_list' => '工单',
'Class:Team/Attribute:tickets_list+' => '此团队的所有工单',
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
]);
//
// Class: Typology
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Typology' => '拓扑',
'Class:Typology+' => '',
'Class:Typology/Attribute:finalclass' => '拓扑类型',
'Class:Typology/Attribute:finalclass+' => '根本属性的名称',
'Class:Typology/Attribute:name' => '名称',
'Class:Typology/Attribute:name+' => '',
'Class:lnkPersonToTeam' => '关联人员/团队',
'Class:Typology/Attribute:finalclass' => '拓扑类型',
'Class:Typology/Attribute:finalclass+' => '根本属性的名称',
]);
//
// Class: DocumentType
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DocumentType' => '文档类型',
'Class:DocumentType+' => '',
]);
//
// Class: ContactType
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ContactType' => '联系人类型',
'Class:ContactType+' => '',
]);
//
// Class: lnkPersonToTeam
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkPersonToTeam' => '关联 人员/团队',
'Class:lnkPersonToTeam+' => '',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s',
'Class:lnkPersonToTeam/Name+' => '',
'Class:lnkPersonToTeam/Attribute:team_id' => '团队',
'Class:lnkPersonToTeam/Attribute:team_id+' => '',
'Class:lnkPersonToTeam/Attribute:team_name' => '团队名称',
'Class:lnkPersonToTeam/Attribute:team_name+' => '',
'Class:lnkPersonToTeam/Attribute:person_id' => '人员',
'Class:lnkPersonToTeam/Attribute:person_id+' => '',
'Class:lnkPersonToTeam/Attribute:person_name' => '姓名',
@@ -193,57 +326,64 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkPersonToTeam/Attribute:role_id+' => '',
'Class:lnkPersonToTeam/Attribute:role_name' => '角色名称',
'Class:lnkPersonToTeam/Attribute:role_name+' => '',
'Class:lnkPersonToTeam/Attribute:team_id' => '团队',
'Class:lnkPersonToTeam/Attribute:team_id+' => '',
'Class:lnkPersonToTeam/Attribute:team_name' => '团队名称',
'Class:lnkPersonToTeam/Attribute:team_name+' => '',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s~~',
'Class:lnkPersonToTeam/Name+' => '~~',
]);
//
// Application Menu
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:DataAdministration' => '数据管理',
'Menu:DataAdministration+' => '数据管理',
'Menu:Catalogs' => '类别',
'Menu:Catalogs+' => '数据类型',
'Menu:Audit' => '审计',
'Menu:Audit+' => '审计',
'Menu:CSVImport' => 'CSV导入',
'Menu:CSVImport+' => '批量创建或更新',
'Menu:Catalogs' => '类别',
'Menu:Catalogs+' => '数据类型',
'Menu:Organization' => '组织',
'Menu:Organization+' => '所有组织',
'Menu:ConfigManagement' => '配置管理',
'Menu:ConfigManagement+' => '配置管理',
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
'Menu:ConfigManagement:Typology' => '类型配置',
'Menu:ConfigManagementCI' => '配置项',
'Menu:ConfigManagementCI+' => '配置项',
'Menu:ConfigManagementOverview' => '概览',
'Menu:ConfigManagementOverview+' => '概览',
'Menu:Contact' => '联系人',
'Menu:Contact+' => '联系人',
'Menu:Contact:Count' => '%1$d个联系人',
'Menu:DataAdministration' => '数据管理',
'Menu:DataAdministration+' => '数据管理',
'Menu:Contact:Count' => '%1$d 个联系人',
'Menu:Person' => '人员',
'Menu:Person+' => '所有人员',
'Menu:Team' => '团队',
'Menu:Team+' => '所有团队',
'Menu:Document' => '文档',
'Menu:Document+' => '所有文档',
'Menu:Location' => '地点',
'Menu:Location+' => '所有位置',
'Menu:NewContact' => '新建联系人',
'Menu:NewContact+' => '新建联系人',
'Menu:Organization' => '组织',
'Menu:Organization+' => '所有组织',
'Menu:Person' => '人员',
'Menu:Person+' => '所有人员',
'Menu:SearchContacts' => '搜索联系人',
'Menu:SearchContacts+' => '搜索联系人',
'Menu:Team' => '团队',
'Menu:Team+' => '所有团队',
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
'Menu:Typology' => '类型配置',
'Menu:Typology+' => '类型配置',
'Organization:Overview:FunctionalCIs' => '此组织的所有配置项',
'Organization:Overview:FunctionalCIs:subtitle' => '按类型',
'Organization:Overview:Users' => '此组织里所有的'.ITOP_APPLICATION_SHORT.'用户',
'Person:info' => '基本信息',
'Person:notifiy' => '通知',
'Person:personal_info' => '个人信息',
'UI_WelcomeMenu_AllConfigItems' => '摘要',
'Menu:ConfigManagement:Typology' => '类型配置',
]);
// Add translation for Fieldsets
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Person:info' => '基本信息',
'User:info' => '基本信息',
'User:profiles' => '角色 (至少一个)',
'Person:personal_info' => '个人信息',
'Person:notifiy' => '通知',
]);
// Themes
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:fullmoon' => '满月',
'theme:test-red' => '测试 (红色)',
]);

View File

@@ -298,11 +298,10 @@ if (!class_exists('StructureInstaller'))
$oTriggersSet = new DBObjectSet($oTriggersSearch);
while ($oTrigger = $oTriggersSet->Fetch()) {
$oMentionedFilter = DBSearch::FromOQL($oTrigger->Get('mentioned_filter'));
$sMentionedClass = $oMentionedFilter->GetClass();
// If mentioned class is not a Person, ignore
if (is_a($sMentionedClass, $sPersonClass, true) === false) {
$oMentionedFilter = DBSearch::FromOQL($oTrigger->Get('mentioned_filter'));
if (!is_null($oMentionedFilter) && is_a($oMentionedFilter->GetClass(), $sPersonClass, true) === false) {
SetupLog::Info("|- Action \"{$oAction->GetName()}\" NOT LINKED to existing trigger \"{$oTrigger->GetName()}\". (mentioned class \"{$oMentionedFilter->GetClass()}\")");
continue;
}

View File

@@ -3,12 +3,9 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:light-grey' => '淡灰 (过时)',
'theme:light-grey' => '淡灰 (废弃)',
]);

View File

@@ -3,202 +3,250 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license http://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
// Class:<class_name>/Attribute:<attribute_code>
// Class:<class_name>/Attribute:<attribute_code>+
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>
// Class:<class_name>/Attribute:<attribute_code>/Value:<value>+
// Class:<class_name>/Stimulus:<stimulus_code>
// Class:<class_name>/Stimulus:<stimulus_code>+
//
// Class: Ticket
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ResponseTicketTTO/Interface:iMetricComputer' => 'TTO',
'Class:ResponseTicketTTO/Interface:iMetricComputer+' => '响应时限',
'Class:ResponseTicketTTR/Interface:iMetricComputer' => 'TTR',
'Class:ResponseTicketTTR/Interface:iMetricComputer+' => '解决时限',
'Class:Ticket' => '工单',
'Class:Ticket+' => '',
'Class:Ticket/Attribute:agent_id' => '办理人',
'Class:Ticket/Attribute:agent_id+' => '',
'Class:Ticket/Attribute:agent_name' => '办理人名称',
'Class:Ticket/Attribute:agent_name+' => '',
'Class:Ticket/Attribute:caller_id' => '发起人',
'Class:Ticket/Attribute:caller_id+' => '',
'Class:Ticket/Attribute:caller_name' => '发起人名称',
'Class:Ticket/Attribute:caller_name+' => '',
'Class:Ticket/Attribute:close_date' => '关闭日期',
'Class:Ticket/Attribute:close_date+' => '',
'Class:Ticket/Attribute:contacts_list' => '联系人',
'Class:Ticket/Attribute:contacts_list+' => '此工单相关的所有联系人',
'Class:Ticket/Attribute:description' => '描述',
'Class:Ticket/Attribute:description+' => '',
'Class:Ticket/Attribute:end_date' => '结束日期',
'Class:Ticket/Attribute:end_date+' => '',
'Class:Ticket/Attribute:finalclass' => '类型',
'Class:Ticket/Attribute:finalclass+' => '',
'Class:Ticket/Attribute:functionalcis_list' => '配置项',
'Class:Ticket/Attribute:functionalcis_list+' => '此工单相关的所有配置项.',
'Class:Ticket/Attribute:last_update' => '最后更新',
'Class:Ticket/Attribute:last_update+' => '',
'Class:Ticket/Attribute:operational_status' => '操作状态',
'Class:Ticket/Attribute:operational_status+' => '按具体状态',
'Class:Ticket/Attribute:operational_status/Value:closed' => '已关闭',
'Class:Ticket/Attribute:operational_status/Value:closed+' => '',
'Class:Ticket/Attribute:operational_status/Value:ongoing' => '进行中',
'Class:Ticket/Attribute:operational_status/Value:ongoing+' => '进行中',
'Class:Ticket/Attribute:operational_status/Value:resolved' => '已解决',
'Class:Ticket/Attribute:operational_status/Value:resolved+' => '',
'Class:Ticket/Attribute:ref' => '编号',
'Class:Ticket/Attribute:ref+' => '',
'Class:Ticket/Attribute:org_id' => '组织',
'Class:Ticket/Attribute:org_id+' => '',
'Class:Ticket/Attribute:org_name' => '组织名称',
'Class:Ticket/Attribute:org_name+' => '',
'Class:Ticket/Attribute:private_log' => '私信',
'Class:Ticket/Attribute:private_log+' => '',
'Class:Ticket/Attribute:ref' => '编号',
'Class:Ticket/Attribute:ref+' => '',
'Class:Ticket/Attribute:start_date' => '开始日期',
'Class:Ticket/Attribute:start_date+' => '',
'Class:Ticket/Attribute:caller_id' => '发起人',
'Class:Ticket/Attribute:caller_id+' => '',
'Class:Ticket/Attribute:caller_name' => '发起人名称',
'Class:Ticket/Attribute:caller_name+' => '',
'Class:Ticket/Attribute:team_id' => '执行团队',
'Class:Ticket/Attribute:team_id+' => '',
'Class:Ticket/Attribute:team_name' => '团队名称',
'Class:Ticket/Attribute:team_name+' => '',
'Class:Ticket/Attribute:agent_id' => '办理人',
'Class:Ticket/Attribute:agent_id+' => '',
'Class:Ticket/Attribute:agent_name' => '办理人名称',
'Class:Ticket/Attribute:agent_name+' => '',
'Class:Ticket/Attribute:title' => '标题',
'Class:Ticket/Attribute:title+' => '',
'Class:Ticket/Attribute:description' => '描述',
'Class:Ticket/Attribute:description+' => '',
'Class:Ticket/Attribute:start_date' => '开始日期',
'Class:Ticket/Attribute:start_date+' => '',
'Class:Ticket/Attribute:end_date' => '结束日期',
'Class:Ticket/Attribute:end_date+' => '',
'Class:Ticket/Attribute:last_update' => '最后更新',
'Class:Ticket/Attribute:last_update+' => '',
'Class:Ticket/Attribute:close_date' => '关闭日期',
'Class:Ticket/Attribute:close_date+' => '',
'Class:Ticket/Attribute:private_log' => '私信',
'Class:Ticket/Attribute:private_log+' => '',
'Class:Ticket/Attribute:contacts_list' => '联系人',
'Class:Ticket/Attribute:contacts_list+' => '此工单相关的所有联系人',
'Class:Ticket/Attribute:functionalcis_list' => '配置项',
'Class:Ticket/Attribute:functionalcis_list+' => '此工单相关的所有配置项.',
'Class:Ticket/Attribute:workorders_list' => '工作任务',
'Class:Ticket/Attribute:workorders_list+' => '此工单相关的所有工作任务',
'Class:WorkOrder' => '工作任务',
'Class:WorkOrder+' => '',
'Class:WorkOrder/Attribute:agent_email' => '邮箱',
'Class:WorkOrder/Attribute:agent_email+' => '',
'Class:WorkOrder/Attribute:agent_id' => '办理人',
'Class:WorkOrder/Attribute:agent_id+' => '',
'Class:WorkOrder/Attribute:description' => '描述',
'Class:WorkOrder/Attribute:description+' => '',
'Class:WorkOrder/Attribute:end_date' => '结束日期',
'Class:WorkOrder/Attribute:end_date+' => '',
'Class:WorkOrder/Attribute:log' => '日志',
'Class:WorkOrder/Attribute:log+' => '',
'Class:WorkOrder/Attribute:name' => '名称',
'Class:WorkOrder/Attribute:name+' => '',
'Class:WorkOrder/Attribute:start_date' => '开始日期',
'Class:WorkOrder/Attribute:start_date+' => '',
'Class:WorkOrder/Attribute:status' => '状态',
'Class:WorkOrder/Attribute:status+' => '',
'Class:WorkOrder/Attribute:status/Value:closed' => '已关闭',
'Class:WorkOrder/Attribute:status/Value:closed+' => '',
'Class:WorkOrder/Attribute:status/Value:open' => '打开',
'Class:WorkOrder/Attribute:status/Value:open+' => '',
'Class:WorkOrder/Attribute:team_id' => '执行团队',
'Class:WorkOrder/Attribute:team_id+' => '',
'Class:WorkOrder/Attribute:team_name' => '团队名称',
'Class:WorkOrder/Attribute:team_name+' => '',
'Class:WorkOrder/Attribute:ticket_id' => '工单',
'Class:WorkOrder/Attribute:ticket_id+' => '',
'Class:WorkOrder/Attribute:ticket_ref' => '工单编号',
'Class:WorkOrder/Attribute:ticket_ref+' => '',
'Class:WorkOrder/Stimulus:ev_close' => '关闭',
'Class:WorkOrder/Stimulus:ev_close+' => '',
'Class:cmdbAbstractObject/Method:AddValue' => '加上值',
'Class:cmdbAbstractObject/Method:AddValue+' => '给字段加上一个固定值',
'Class:cmdbAbstractObject/Method:AddValue/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:AddValue/Param:1+' => '当前对象里要修改的字段',
'Class:cmdbAbstractObject/Method:AddValue/Param:2' => '值',
'Class:cmdbAbstractObject/Method:AddValue/Param:2+' => '要加上的数值, 可以为负',
'Class:cmdbAbstractObject/Method:ApplyStimulus' => '使用激发',
'Class:cmdbAbstractObject/Method:ApplyStimulus+' => '当前对象中要应用的指定激发',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1' => '激发编码',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1+' => '当前对象的合法激发编码',
'Class:cmdbAbstractObject/Method:Copy' => '复制',
'Class:cmdbAbstractObject/Method:Copy+' => '复制当前值到另外一个地方',
'Class:cmdbAbstractObject/Method:Copy/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Copy/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Copy/Param:2' => '源字段',
'Class:cmdbAbstractObject/Method:Copy/Param:2+' => '此字段从当前对象获取值',
'Class:cmdbAbstractObject/Method:Reset' => '重置',
'Class:cmdbAbstractObject/Method:Reset+' => '重置为默认值',
'Class:cmdbAbstractObject/Method:Reset/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Reset/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Set' => '设置',
'Class:cmdbAbstractObject/Method:Set+' => '填写固定值',
'Class:cmdbAbstractObject/Method:Set/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Set/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Set/Param:2' => '值',
'Class:cmdbAbstractObject/Method:Set/Param:2+' => '要设置的值',
'Class:cmdbAbstractObject/Method:SetComputedDate' => '设置计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDate+' => '设置字段为按规则根据另一个字段计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1+' => '当前对象里要设置的字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2' => '修饰符',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2+' => '要修改源日期的文本修饰符, 例如 "+3 days"',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3' => '源字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3+' => '作为源值应用修饰符逻辑的字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull' => '若空则设置计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull+' => '为空时设置字段为按规则根据另一个字段计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2' => '修饰符',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2+' => '要修改源日期的文本修饰符, 例如 "+3 days"',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3' => '源字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3+' => '作为源值应用修饰符逻辑的字段',
'Class:cmdbAbstractObject/Method:SetCurrentDate' => '设置为当前日期',
'Class:cmdbAbstractObject/Method:SetCurrentDate+' => '填写当前日期和时间',
'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull' => '为空则设置为当前日期',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull+' => '设置空字段为当前日期和时间',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetCurrentPerson' => '设置为当前人员',
'Class:cmdbAbstractObject/Method:SetCurrentPerson+' => '设置字段为当前登录的人员 (此 "人员" 关联到当前登录的 "用户").',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1+' => '填写当前对象, 如果填写字符串则是昵称.',
'Class:cmdbAbstractObject/Method:SetCurrentUser' => '设置为当前用户',
'Class:cmdbAbstractObject/Method:SetCurrentUser+' => '填写当前登录用户',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1+' => '当前对象中要设置的字段. 如果此字段为字符串则使用显示名称, 否则将使用标识符. 显示名称为关联到用户的人员的姓名, 如果没有关联人员则为登录名.',
'Class:cmdbAbstractObject/Method:SetElapsedTime' => '设置已过时间',
'Class:cmdbAbstractObject/Method:SetElapsedTime+' => '设置字段为当前时间针对另一个字段设置的日期所用时长 (秒)',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2' => '参考字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2+' => '此字段来自获取相关日期的字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3' => '工作时间',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3+' => '若留空则取决于标准工作时间场景, 或者设置为 "DefaultWorkingTimeComputer" 来强制要求24x7场景',
'Class:cmdbAbstractObject/Method:SetIfNull' => '为空时设置',
'Class:cmdbAbstractObject/Method:SetIfNull+' => '仅当字段为空时设置, 使用此固定值',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:1+' => '当前对象里要设置的字段',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:2' => '值',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:2+' => '要设置的值',
'Class:Ticket/Attribute:finalclass' => '类型',
'Class:Ticket/Attribute:finalclass+' => '',
'Class:Ticket/Attribute:operational_status' => '操作状态',
'Class:Ticket/Attribute:operational_status+' => '按具体状态',
'Class:Ticket/Attribute:operational_status/Value:ongoing' => '进行中',
'Class:Ticket/Attribute:operational_status/Value:ongoing+' => '进行中',
'Class:Ticket/Attribute:operational_status/Value:resolved' => '已解决',
'Class:Ticket/Attribute:operational_status/Value:resolved+' => '',
'Class:Ticket/Attribute:operational_status/Value:closed' => '已关闭',
'Class:Ticket/Attribute:operational_status/Value:closed+' => '',
'Ticket:ImpactAnalysis' => '影响分析',
]);
//
// Class: lnkContactToTicket
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToTicket' => '关联联系人/工单',
'Class:lnkContactToTicket+' => '',
'Class:lnkContactToTicket/Attribute:contact_email' => '邮箱',
'Class:lnkContactToTicket/Attribute:contact_email+' => '',
'Class:lnkContactToTicket/Attribute:contact_id' => '联系人',
'Class:lnkContactToTicket/Attribute:contact_id+' => '',
'Class:lnkContactToTicket/Attribute:contact_name' => '联系人姓名',
'Class:lnkContactToTicket/Attribute:contact_name+' => '~~',
'Class:lnkContactToTicket/Attribute:role' => '角色 (文本)',
'Class:lnkContactToTicket/Attribute:role+' => '',
'Class:lnkContactToTicket/Attribute:role_code' => '角色',
'Class:lnkContactToTicket/Attribute:role_code/Value:computed' => '自动添加',
'Class:lnkContactToTicket/Attribute:role_code/Value:do_not_notify' => '不通知',
'Class:lnkContactToTicket/Attribute:role_code/Value:manual' => '手动添加',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s',
'Class:lnkContactToTicket/Attribute:ticket_id' => '工单',
'Class:lnkContactToTicket/Attribute:ticket_id+' => '',
'Class:lnkContactToTicket/Attribute:ticket_ref' => '工单编号',
'Class:lnkContactToTicket/Attribute:ticket_ref+' => '',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s~~',
'Ticket:ImpactAnalysis' => '影响分析',
'Ticket:SLA' => 'SLA 报告',
'Ticket:Type' => '风险评估',
'Ticket:baseinfo' => '基本信息',
'Ticket:contact' => '联系人',
'Ticket:date' => '日期信息',
'Ticket:log' => '日志',
'Ticket:moreinfo' => '更多信息',
'Ticket:relation' => '相关信息',
'Ticket:resolution' => '解决方案',
'Ticket:support' => '支持信息',
'Tickets:ResolvedFrom' => '由%1$s自动解决',
'WorkOrder:Details' => '详情',
'WorkOrder:Moreinfo' => '更多信息',
'Class:lnkContactToTicket/Attribute:contact_id' => '联系人',
'Class:lnkContactToTicket/Attribute:contact_id+' => '',
'Class:lnkContactToTicket/Attribute:contact_name' => '联系人姓名',
'Class:lnkContactToTicket/Attribute:contact_name+' => '~~',
'Class:lnkContactToTicket/Attribute:contact_email' => '邮箱',
'Class:lnkContactToTicket/Attribute:contact_email+' => '',
'Class:lnkContactToTicket/Attribute:role' => '角色 (文本)',
'Class:lnkContactToTicket/Attribute:role+' => '',
'Class:lnkContactToTicket/Attribute:role_code' => '角色',
'Class:lnkContactToTicket/Attribute:role_code/Value:manual' => '手动添加',
'Class:lnkContactToTicket/Attribute:role_code/Value:computed' => '自动添加',
'Class:lnkContactToTicket/Attribute:role_code/Value:do_not_notify' => '不通知',
]);
//
// Class: WorkOrder
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:WorkOrder' => '工作任务',
'Class:WorkOrder+' => '',
'Class:WorkOrder/Attribute:name' => '名称',
'Class:WorkOrder/Attribute:name+' => '',
'Class:WorkOrder/Attribute:status' => '状态',
'Class:WorkOrder/Attribute:status+' => '',
'Class:WorkOrder/Attribute:status/Value:open' => '打开',
'Class:WorkOrder/Attribute:status/Value:open+' => '',
'Class:WorkOrder/Attribute:status/Value:closed' => '已关闭',
'Class:WorkOrder/Attribute:status/Value:closed+' => '',
'Class:WorkOrder/Attribute:description' => '描述',
'Class:WorkOrder/Attribute:description+' => '',
'Class:WorkOrder/Attribute:ticket_id' => '工单',
'Class:WorkOrder/Attribute:ticket_id+' => '',
'Class:WorkOrder/Attribute:ticket_ref' => '工单编号',
'Class:WorkOrder/Attribute:ticket_ref+' => '',
'Class:WorkOrder/Attribute:team_id' => '执行团队',
'Class:WorkOrder/Attribute:team_id+' => '',
'Class:WorkOrder/Attribute:team_name' => '团队名称',
'Class:WorkOrder/Attribute:team_name+' => '',
'Class:WorkOrder/Attribute:agent_id' => '办理人',
'Class:WorkOrder/Attribute:agent_id+' => '',
'Class:WorkOrder/Attribute:agent_email' => '邮箱',
'Class:WorkOrder/Attribute:agent_email+' => '',
'Class:WorkOrder/Attribute:start_date' => '开始日期',
'Class:WorkOrder/Attribute:start_date+' => '',
'Class:WorkOrder/Attribute:end_date' => '结束日期',
'Class:WorkOrder/Attribute:end_date+' => '',
'Class:WorkOrder/Attribute:log' => '日志',
'Class:WorkOrder/Attribute:log+' => '',
'Class:WorkOrder/Stimulus:ev_close' => '关闭',
'Class:WorkOrder/Stimulus:ev_close+' => '',
]);
// Fieldset translation
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Ticket:baseinfo' => '基本信息',
'Ticket:date' => '日期信息',
'Ticket:contact' => '联系人',
'Ticket:moreinfo' => '更多信息',
'Ticket:relation' => '相关信息',
'Ticket:log' => '日志',
'Ticket:Type' => '风险评估',
'Ticket:support' => '支持信息',
'Ticket:resolution' => '解决方案',
'Ticket:SLA' => 'SLA 报告',
'WorkOrder:Details' => '详情',
'WorkOrder:Moreinfo' => '更多信息',
'Tickets:ResolvedFrom' => '由%1$s自动解决',
'Class:cmdbAbstractObject/Method:Set' => '设置',
'Class:cmdbAbstractObject/Method:Set+' => '填写固定值',
'Class:cmdbAbstractObject/Method:Set/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Set/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Set/Param:2' => '值',
'Class:cmdbAbstractObject/Method:Set/Param:2+' => '要设置的值',
'Class:cmdbAbstractObject/Method:SetCurrentDate' => '设置为当前日期',
'Class:cmdbAbstractObject/Method:SetCurrentDate+' => '填写当前日期和时间',
'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentDate/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull' => '为空则设置为当前日期',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull+' => '设置空字段为当前日期和时间',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentDateIfNull/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetCurrentUser' => '设置为当前用户',
'Class:cmdbAbstractObject/Method:SetCurrentUser+' => '填写当前登录用户',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentUser/Param:1+' => '当前对象中要设置的字段. 如果此字段为字符串则使用显示名称, 否则将使用标识符. 显示名称为关联到用户的人员的姓名, 如果没有关联人员则为登录名.',
'Class:cmdbAbstractObject/Method:SetCurrentPerson' => '设置为当前人员',
'Class:cmdbAbstractObject/Method:SetCurrentPerson+' => '设置字段为当前登录的人员 (此 "人员" 关联到当前登录的 "用户").',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetCurrentPerson/Param:1+' => '填写当前对象, 如果填写字符串则是昵称.',
'Class:cmdbAbstractObject/Method:SetElapsedTime' => '设置已过时间',
'Class:cmdbAbstractObject/Method:SetElapsedTime+' => '设置字段为当前时间针对另一个字段设置的日期所用时长 (秒)',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2' => '参考字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:2+' => '此字段来自获取相关日期的字段',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3' => '工作时间',
'Class:cmdbAbstractObject/Method:SetElapsedTime/Param:3+' => '若留空则取决于标准工作时间场景, 或者设置为 "DefaultWorkingTimeComputer" 来强制要求24x7场景',
'Class:cmdbAbstractObject/Method:SetIfNull' => '为空时设置',
'Class:cmdbAbstractObject/Method:SetIfNull+' => '仅当字段为空时设置, 使用此固定值',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:1+' => '当前对象里要设置的字段',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:2' => '值',
'Class:cmdbAbstractObject/Method:SetIfNull/Param:2+' => '要设置的值',
'Class:cmdbAbstractObject/Method:AddValue' => '加上值',
'Class:cmdbAbstractObject/Method:AddValue+' => '给字段加上一个固定值',
'Class:cmdbAbstractObject/Method:AddValue/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:AddValue/Param:1+' => '当前对象里要修改的字段',
'Class:cmdbAbstractObject/Method:AddValue/Param:2' => '值',
'Class:cmdbAbstractObject/Method:AddValue/Param:2+' => '要加上的数值, 可以为负',
'Class:cmdbAbstractObject/Method:SetComputedDate' => '设置计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDate+' => '设置字段为按规则根据另一个字段计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:1+' => '当前对象里要设置的字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2' => '修饰符',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:2+' => '要修改源日期的文本修饰符, 例如 "+3 days"',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3' => '源字段',
'Class:cmdbAbstractObject/Method:SetComputedDate/Param:3+' => '作为源值应用修饰符逻辑的字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull' => '若空则设置计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull+' => '为空时设置字段为按规则根据另一个字段计算的日期',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:1+' => '当前对象中要设置的字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2' => '修饰符',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:2+' => '要修改源日期的文本修饰符, 例如 "+3 days"',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3' => '源字段',
'Class:cmdbAbstractObject/Method:SetComputedDateIfNull/Param:3+' => '作为源值应用修饰符逻辑的字段',
'Class:cmdbAbstractObject/Method:Reset' => '重置',
'Class:cmdbAbstractObject/Method:Reset+' => '重置为默认值',
'Class:cmdbAbstractObject/Method:Reset/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Reset/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Copy' => '复制',
'Class:cmdbAbstractObject/Method:Copy+' => '复制当前值到另外一个地方',
'Class:cmdbAbstractObject/Method:Copy/Param:1' => '目标字段',
'Class:cmdbAbstractObject/Method:Copy/Param:1+' => '填写当前对象',
'Class:cmdbAbstractObject/Method:Copy/Param:2' => '源字段',
'Class:cmdbAbstractObject/Method:Copy/Param:2+' => '此字段从当前对象获取值',
'Class:cmdbAbstractObject/Method:ApplyStimulus' => '使用调整',
'Class:cmdbAbstractObject/Method:ApplyStimulus+' => '当前对象中要应用的特定调整',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1' => '调整编码',
'Class:cmdbAbstractObject/Method:ApplyStimulus/Param:1+' => '当前对象的有效调整编码',
'Class:ResponseTicketTTO/Interface:iMetricComputer' => 'TTO',
'Class:ResponseTicketTTO/Interface:iMetricComputer+' => '响应时限',
'Class:ResponseTicketTTR/Interface:iMetricComputer' => 'TTR',
'Class:ResponseTicketTTR/Interface:iMetricComputer+' => '解决时限',
]);

View File

@@ -20,6 +20,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
// Dictionary entries go here
));

View File

@@ -3,12 +3,24 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Core:ormValue:ormDocument:DownloadsCount' => '%1s~~',
'Core:ormValue:ormDocument:DownloadsCount+' => '已下载%1$s次',

View File

@@ -3,12 +3,24 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:cmdbAbstractObject/UniquenessRule:no_duplicate' => '%1$s: %2$s已关联至%3$s: %4$s, 此关联不允许重复.',
'Class:cmdbAbstractObject/UniquenessRule:no_duplicate' => '%1$s: %2$s 已关联至 %3$s: %4$s, 不允许重复关联.',
]);

View File

@@ -1,16 +1,26 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Bulk:Export:MaliciousInjection:Alert:Message' => 'Opening a file with untrusted data in Microsoft Excel may lead to formula injection. Ensure that your Excel settings are configured to handle files safely. <a href="%1$s">Learn more in our documentation.</a>~~',
'UI:Bulk:Export:MaliciousInjection:Alert:Title' => 'Excel security warning~~',
// Bulk modify
'UI:Bulk:modify:IncompatibleAttribute' => '此属性无法在批量操作中编辑',
]);
'UI:Bulk:Export:MaliciousInjection:Alert:Title' => 'Excel 安全警告',
'UI:Bulk:Export:MaliciousInjection:Alert:Message' => '在 Microsoft Excel 中打开不信任的文件可能导致公式注入. 请确保 Excel 设置能够安全的处理该文件. <a href="%1$s">进入我们的文档了解更多.</a>',
]);

View File

@@ -1,14 +1,22 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:DisplayBlock:List:AddEntry:Tooltip' => '向列表添加条目',
]);

View File

@@ -1,44 +1,76 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Links:Add:Button' => '添加',
'UI:Links:Add:Button+' => '添加一个%4$s',
'UI:Links:Add:Modal:Title' => '添加一个%4$s至%2$s',
'UI:Links:Bulk:LinkExistForAllObjects' => '所有对象关联',
'UI:Links:Bulk:LinkExistForOneObject' => '一个对象已关联',
'UI:Links:Bulk:LinkExistForXObjects' => '{count} 个对象已关联',
'UI:Links:Bulk:LinkWillBeCreatedFor1Object' => '添加至一个对象',
'UI:Links:Bulk:LinkWillBeCreatedForAllObjects' => '添加至所有对象',
'UI:Links:Bulk:LinkWillBeCreatedForXObjects' => '添加 {count} 个对象',
'UI:Links:Bulk:LinkWillBeDeletedFrom1Object' => '从一个对象移除',
'UI:Links:Bulk:LinkWillBeDeletedFromAllObjects' => '从所有对象移除',
'UI:Links:Bulk:LinkWillBeDeletedFromXObjects' => '移除 {count} 个对象',
'UI:Links:Create:Button' => '创建',
'UI:Links:Create:Button+' => '创建一个%4$s',
'UI:Links:Create:Modal:Title' => '创建一个%4$s至%2$s',
'UI:Links:Delete:Button' => '删除',
'UI:Links:Delete:Button+' => '删除此%4$s',
'UI:Links:Delete:Modal:Message' => '确认删除%5$s?',
'UI:Links:Delete:Modal:Title' => '删除%4$s',
'UI:Links:ModifyLink:Button' => '修改',
'UI:Links:ModifyLink:Button+' => '修改此关联',
'UI:Links:ModifyLink:Modal:Title' => '修改%2$s和%5$s的关联',
'UI:Links:ModifyObject:Button' => '修改',
'UI:Links:ModifyObject:Button+' => '修改此对象',
'UI:Links:ModifyObject:Modal:Title' => '%5$s',
// Placeholders
// $%1s : host object class name
// $%2s : host object friendlyname
// $%3s : current tab name
// $%4s : remote object class name
// $%5s : remote object friendlyname
'UI:Links:Object:New:Modal:Title' => '创建对象',
// Create
'UI:Links:Create:Button' => '创建',
'UI:Links:Create:Button+' => '创建一个 %4$s',
'UI:Links:Create:Modal:Title' => '创建一个 %4$s 至% 2$s',
// Add
'UI:Links:Add:Button' => '添加',
'UI:Links:Add:Button+' => '添加一个 %4$s',
'UI:Links:Add:Modal:Title' => '添加一个 %4$s 至 %2$s',
// Modify link
'UI:Links:ModifyLink:Button' => '修改',
'UI:Links:ModifyLink:Button+' => '修改此关联',
'UI:Links:ModifyLink:Modal:Title' => '修改 %2$s 和 %5$s 的关联',
// Modify object
'UI:Links:ModifyObject:Button' => '修改',
'UI:Links:ModifyObject:Button+' => '修改此对象',
'UI:Links:ModifyObject:Modal:Title' => '%5$s',
// Remove
'UI:Links:Remove:Button' => '移除',
'UI:Links:Remove:Button+' => '移除此 %4$s',
'UI:Links:Remove:Modal:Title' => '从%1$s 移除 %4$s',
'UI:Links:Remove:Modal:Message' => '请确认从 %2$s 移除 %5$s ?',
// Delete
'UI:Links:Delete:Button' => '删除',
'UI:Links:Delete:Button+' => '删除此 %4$s',
'UI:Links:Delete:Modal:Title' => '删除 %4$s',
'UI:Links:Delete:Modal:Message' => '请确认删除 %5$s?',
// Bulk
'UI:Links:Bulk:LinkWillBeCreatedForAllObjects' => '添加至所有对象',
'UI:Links:Bulk:LinkWillBeDeletedFromAllObjects' => '从所有对象删除',
'UI:Links:Bulk:LinkWillBeCreatedFor1Object' => '添加至一个对象',
'UI:Links:Bulk:LinkWillBeDeletedFrom1Object' => '从一个对象移除',
'UI:Links:Bulk:LinkWillBeCreatedForXObjects' => '添加 {count} 个对象',
'UI:Links:Bulk:LinkWillBeDeletedFromXObjects' => '移除 {count} 个对象',
'UI:Links:Bulk:LinkExistForAllObjects' => '已关联所有对象',
'UI:Links:Bulk:LinkExistForOneObject' => '已关联一个对象',
'UI:Links:Bulk:LinkExistForXObjects' => '已关联 {count} 个对象',
// New item
'UI:Links:NewItem' => '新建条目',
'UI:Links:Object:New:Modal:Title' => '创建对象',
'UI:Links:Remove:Button' => '移除',
'UI:Links:Remove:Button+' => '移除此%4$s',
'UI:Links:Remove:Modal:Message' => '确认移除%5$s由%2$s?',
'UI:Links:Remove:Modal:Title' => '移除此%4$s由其%1$s',
]);
]);

View File

@@ -0,0 +1,63 @@
<?php
/**
* Copyright (C) 2013-2024 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'UI:Newsroom:iTopNotification:Label' => ITOP_APPLICATION_SHORT,
'UI:Newsroom:iTopNotification:ViewAllPage:Title' => 'Your ' . ITOP_APPLICATION_SHORT.' news~~',
'UI:Newsroom:iTopNotification:ViewAllPage:SubTitle' => 'Manage your news, flag them as read or unread, delete them, etc.~~',
'UI:Newsroom:iTopNotification:ViewAllPage:Read:Label' => '已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Unread:Label' => '未读',
'UI:Newsroom:iTopNotification:SelectMode:Label' => 'Select mode~~',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAllAsRead:Label' => '全部标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAllAsUnread:Label' => '全部标记为未读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteAll:Label' => '全部删除',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteAll:Success:Message' => '全部 %1$s 条消息已被删除',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteAll:Confirmation:Title' => '删除全部消息',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteAll:Confirmation:Message' => 'Are you sure you want to delete all news?~~',
'UI:Newsroom:iTopNotification:ViewAllPage:Empty:Title' => '没有消息, 已是最新!',
// Actions
// - Unitary buttons
'UI:Newsroom:iTopNotification:ViewAllPage:Action:Delete:Label' => '删除这条消息',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:ViewObject:Label' => 'Go to the news url~~',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsRead:Label' => '标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsUnread:Label' => '标记为未读',
// - Bulk buttons
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkSelectedAsRead:Label' => '标记已选为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkSelectedAsUnread:Label' => '标记已选为未读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteSelected:Label' => '删除已选择',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteSelected:Confirmation:Title' => '删除已选的消息',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteSelected:Confirmation:Message' => 'Are you sure you want to delete selected news?~~',
// Feedback messages
'UI:Newsroom:iTopNotification:ViewAllPage:Action:InvalidAction:Message' => '无效操作: "%1$s"',
// - Mark as read
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsRead:NoEvent:Message' => '没有消息被标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsRead:Success:Message' => '消息被标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsReadMultiple:Success:Message' => '%1$s 条消息被标记为已读',
// - Mark as unread
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsUnread:NoEvent:Message' => '没有消息标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsUnread:Success:Message' => '消息被标记为未读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsUnreadMultiple:Success:Message' => '%1$s 条消息被标记为未读',
// Delete
'UI:Newsroom:iTopNotification:ViewAllPage:Action:Delete:NoEvent:Message' => '没有可删除的消息',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:Delete:Success:Message' => '消息已删除',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteMultiple:Success:Message' => '已删除 %1$s 条消息',
));

View File

@@ -1,17 +1,25 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Object:Modal:Create:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性. 创建/修改此对象可能无法进行, 其需要在页表单中完成.',
'UI:Object:Modal:Modify:Filled:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性.',
'UI:Object:Modal:Modify:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性. 此对象信息不完整, 请在页表单中完成编辑.',
'UI:Object:Modal:Title' => '创建对象',
'UI:Object:Modal:Create:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性. 创建/修改此对象可能无法进行, 其需要在页表单中完成.',
'UI:Object:Modal:Modify:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性. 此对象信息不完整, 请在页表单中完成编辑.',
'UI:Object:Modal:Modify:Filled:MandatoryAttributeBlobInputs:Warning:Text' => '当前表单包含一个模态模式下不支持的必填文件属性.',
]);

View File

@@ -6,14 +6,14 @@
// UI elements
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:WelcomePopup:Button:RemindLater' => 'Remind me later~~',
'UI:WelcomePopup:Button:AcknowledgeAndNext' => 'Next~~',
'UI:WelcomePopup:Button:AcknowledgeAndClose' => 'Close~~',
'UI:WelcomePopup:Button:RemindLater' => '以后再提醒我',
'UI:WelcomePopup:Button:AcknowledgeAndNext' => '下一步',
'UI:WelcomePopup:Button:AcknowledgeAndClose' => '关闭',
]);
// Message
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:WelcomePopup:Message:320_01_Welcome:Title' => 'Welcome to ' . ITOP_APPLICATION_SHORT . ' 3.2~~',
'UI:WelcomePopup:Message:320_01_Welcome:Title' => '欢迎使用 ' . ITOP_APPLICATION_SHORT . ' 3.2',
'UI:WelcomePopup:Message:320_01_Welcome:Description' => '<div>Congratulations, you landed on '.ITOP_APPLICATION.' '.ITOP_VERSION_NAME.'!</div>
<br>
<div>We\'re excited to announce this new release. </div>

View File

@@ -1,14 +1,22 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:Breadcrumbs:PreviousItemsListToggler:Label' => '上一页',
]);

View File

@@ -1,27 +1,36 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Display DataTable
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Datatables:Column:RowActions:Description' => '备注',
'UI:Datatables:Column:RowActions:Label' => '标签',
'UI:Datatables:Language:DisplayLength:All' => '全部',
'UI:Datatables:Language:EmptyTable' => '当前列表没有数据',
'UI:Datatables:Language:Error' => '运行查询时出错',
'UI:Datatables:Language:Info' => '共 _TOTAL_ 项',
'UI:Datatables:Language:InfoEmpty' => '未找到相关信息',
'UI:Datatables:Language:LengthMenu' => '每页 _MENU_ 项',
'UI:Datatables:Language:Processing' => '请稍候...',
'UI:Datatables:Language:Sort:Ascending' => '采用顺序排序',
'UI:Datatables:Language:Sort:Descending' => '采用倒序排序',
'UI:Datatables:Language:ZeroRecords' => '未找到相关结果',
'UI:Datatables:RowActions:ConfirmationDialog' => '操作确认',
'UI:Datatables:RowActions:ConfirmationMessage' => '确认操作?',
]);
'UI:Datatables:Language:Processing' => '请稍候...',
'UI:Datatables:Language:LengthMenu' => '每页 _MENU_ 项',
'UI:Datatables:Language:ZeroRecords' => '未找到相关结果',
'UI:Datatables:Language:Info' => '共 _TOTAL_ 项',
'UI:Datatables:Language:InfoEmpty' => '未找到相关信息',
'UI:Datatables:Language:EmptyTable' => '当前列表没有数据',
'UI:Datatables:Language:Error' => '运行查询时出错',
'UI:Datatables:Language:DisplayLength:All' => '全部',
'UI:Datatables:Language:Sort:Ascending' => '升序',
'UI:Datatables:Language:Sort:Descending' => '序',
'UI:Datatables:Column:RowActions:Label' => '标签',
'UI:Datatables:Column:RowActions:Description' => '备注',
'UI:Datatables:RowActions:ConfirmationDialog' => '操作确认',
'UI:Datatables:RowActions:ConfirmationMessage' => '确认操作?',
]);

View File

@@ -1,14 +1,23 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Global search
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:Field:BulkModify:UnknownValues:Tooltip' => '未知值',
]);

View File

@@ -1,19 +1,28 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Global search
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:GlobalSearch:HistoryDisabled' => '历史记录已禁用',
'UI:Component:GlobalSearch:Input:Placeholder' => '搜索...',
'UI:Component:GlobalSearch:KeyboardShortcut:OpenDrawer' => '打开全局搜索',
'UI:Component:GlobalSearch:LastQueries:NoQuery:Placeholder' => '您尚未运行任何搜索',
'UI:Component:GlobalSearch:Recents:Title' => '最近',
'UI:Component:GlobalSearch:Tooltip' => '全局搜索',
]);
'UI:Component:GlobalSearch:Input:Placeholder' => '搜索...',
'UI:Component:GlobalSearch:Recents:Title' => '最近',
'UI:Component:GlobalSearch:LastQueries:NoQuery:Placeholder' => '您尚未运行任何搜索',
'UI:Component:GlobalSearch:HistoryDisabled' => '历史记录已禁用',
'UI:Component:GlobalSearch:KeyboardShortcut:OpenDrawer' => '打开全局搜索',
]);

View File

@@ -1,16 +1,25 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Input
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:Input:ChangeNotAllowed' => 'This change is not allowed~~',
'UI:Component:Input:Password:DoesNotMatch' => '密码不匹配',
'UI:Component:Input:Set:MinimumItems' => 'Minimum %1$s item(s) required~~',
]);
]);

View File

@@ -1,19 +1,27 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Modal:Confirmation:DefaultTitle' => '确认',
'UI:Modal:Informative:Title' => '信息提示模态窗口',
'UI:Modal:InformativeError:Title' => '错误',
'UI:Modal:InformativeWarning:Title' => '警告',
'UI:Modal:InformativeInformation:Title' => '提示',
'UI:Modal:InformativeSuccess:Title' => '成功',
'UI:Modal:InformativeWarning:Title' => '警告',
]);

View File

@@ -1,19 +1,28 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Quick create
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:QuickCreate:HistoryDisabled' => '历史记录已禁用',
'UI:Component:QuickCreate:Input:Placeholder' => '请选择对象类型...',
'UI:Component:QuickCreate:KeyboardShortcut:OpenDrawer' => '打开快速创建',
'UI:Component:QuickCreate:LastClasses:NoClass:Placeholder' => '您尚未创建任何对象',
'UI:Component:QuickCreate:Recents:Title' => '最近',
'UI:Component:QuickCreate:Tooltip' => '快速创建任意类型的对象',
]);
'UI:Component:QuickCreate:Input:Placeholder' => '请选择对象类型...',
'UI:Component:QuickCreate:Recents:Title' => '最近',
'UI:Component:QuickCreate:LastClasses:NoClass:Placeholder' => '您尚未创建任何对象',
'UI:Component:QuickCreate:HistoryDisabled' => '历史记录已禁用',
'UI:Component:QuickCreate:KeyboardShortcut:OpenDrawer' => '打开快速创建',
]);

View File

@@ -1,38 +1,59 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Activity panel
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:ActivityPanel:ClosedCover:Title' => '活动面板',
'UI:Layout:ActivityPanel:ClosedCover:Tooltip' => '点击打开活动面板',
'UI:Layout:ActivityPanel:ComposeButton:Tooltip' => '撰写新的条目',
'UI:Layout:ActivityPanel:DisplayToggler:Close:Tooltip' => '关闭',
'UI:Layout:ActivityPanel:LoadAllEntries:Tooltip' => '加载全部',
'UI:Layout:ActivityPanel:LoadMoreEntries:Tooltip' => '加载更多',
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Explanation' => '点击 "保存" 按钮, 将会一次性提交所有已编辑的日志.',
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Title' => '保存多个条目',
'UI:Layout:ActivityPanel:NoEntry:Placeholder:Hint' => '暂无任何活动',
'UI:Layout:ActivityPanel:NotificationEntry:MessageLink:Tooltip' => '点击打开通知栏以获得更多信息',
'UI:Layout:ActivityPanel:SizeToggler:Expand:Tooltip' => '展开',
'UI:Layout:ActivityPanel:SizeToggler:Reduce:Tooltip' => '减少',
'UI:Layout:ActivityPanel:DisplayToggler:Close:Tooltip' => '关闭',
'UI:Layout:ActivityPanel:LoadMoreEntries:Tooltip' => '加载更多',
'UI:Layout:ActivityPanel:LoadAllEntries:Tooltip' => '全部加载',
// Tabs
'UI:Layout:ActivityPanel:Tab:Activity:Title' => '活动',
'UI:Layout:ActivityPanel:Tab:Log:DraftIndicator:Tooltip' => '草稿',
'UI:Layout:ActivityPanel:Tab:Toolbar:Action:CloseAll:Tooltip' => '全部关闭',
'UI:Layout:ActivityPanel:Tab:Toolbar:Action:OpenAll:Tooltip' => '全部打开',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Title' => '编辑',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => '显示/隐藏字段编辑',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => '请选择要显示的日志',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Title' => '日志',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => '显示/隐藏日志',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Menu:Hint' => '请选择要显示的日志',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Title' => '状态变化',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Transitions:Tooltip' => '显示/隐藏状态变化',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Title' => '编辑',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => '显示/隐藏字段编辑',
'UI:Layout:ActivityPanel:Tab:Toolbar:Action:OpenAll:Tooltip' => '全部打开',
'UI:Layout:ActivityPanel:Tab:Toolbar:Action:CloseAll:Tooltip' => '全部关闭',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => '正在查看此条目的人数',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:MessagesCount:Tooltip' => '此日志的消息数',
]);
// Compose button
'UI:Layout:ActivityPanel:ComposeButton:Tooltip' => '撰写新的条目',
// Case log entry
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Title' => '保存多个条目',
'UI:Layout:ActivityPanel:MultipleEntriesSaveConfirmation:Explanation' => '点击 "保存" 按钮, 将会一次性提交所有已编辑的日志.',
// Notification entry
'UI:Layout:ActivityPanel:NotificationEntry:MessageLink:Tooltip' => '点击打开通知栏以获得更多信息',
// Placeholder
'UI:Layout:ActivityPanel:NoEntry:Placeholder:Hint' => '暂无任何活动',
// Closed cover
'UI:Layout:ActivityPanel:ClosedCover:Title' => '活动面板',
'UI:Layout:ActivityPanel:ClosedCover:Tooltip' => '点击打开活动面板',
]);

View File

@@ -1,25 +1,35 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Navigation menu
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:NavigationMenu:CompanyLogo:AltText' => '公司标志',
'UI:Layout:NavigationMenu:KeyboardShortcut:FocusFilter' => '筛选菜单',
'UI:Layout:NavigationMenu:MenuFilter:Input:Hint' => '将会显示所有匹配的菜单',
'UI:Layout:NavigationMenu:MenuFilter:Input:Placeholder' => '筛选器...',
'UI:Layout:NavigationMenu:MenuFilter:Input:Tooltip' => '请输入要筛选的关键字',
'UI:Layout:NavigationMenu:MenuFilter:Placeholder:Hint' => '此菜单暂无筛选结果',
'UI:Layout:NavigationMenu:Silo:Label' => '请选择要筛选的组织',
'UI:Layout:NavigationMenu:Toggler:Tooltip' => '展开/折叠',
'UI:Layout:NavigationMenu:Toggler:TooltipWithSiloLabel' => '展开/折叠 (筛选%1$s)',
'UI:Layout:NavigationMenu:UserInfo:Picture:AltText' => '%1$s 的联系人头像',
'UI:Layout:NavigationMenu:MenuFilter:Input:Placeholder' => '筛选器...',
'UI:Layout:NavigationMenu:MenuFilter:Input:Tooltip' => '请输入要筛选的关键字',
'UI:Layout:NavigationMenu:MenuFilter:Input:Hint' => '将会显示所有匹配的菜单',
'UI:Layout:NavigationMenu:MenuFilter:Placeholder:Hint' => '此菜单暂无筛选结果',
'UI:Layout:NavigationMenu:UserInfo:WelcomeMessage:Text' => '您好, %1$s!',
'UI:Layout:NavigationMenu:UserInfo:Picture:AltText' => '%1$s 的联系人头像',
'UI:Layout:NavigationMenu:UserMenu:Toggler:Label' => '打开用户菜单',
]);
'UI:Layout:NavigationMenu:KeyboardShortcut:FocusFilter' => '筛选菜单',
]);

View File

@@ -1,19 +1,14 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
'UI:Layout:ObjectDetails:KeyboardShortcut:DeleteObject' => '删除当前对象',
'UI:Layout:ObjectDetails:KeyboardShortcut:EditObject' => '编辑当前对象',
'UI:Layout:ObjectDetails:KeyboardShortcut:DeleteObject' => '删除当前对象',
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => '创建新对象 (与当前对象相同)',
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => '保存当前对象',
'UI:Layout:ObjectDetails:New:Modal:Title' => '创建对象',
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
]);

View File

@@ -1,14 +1,9 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UIBlock:Error:CannotGetBlocks' => '无法由内容区域 "%1$s" 获取块, 因为其在页面内容 "%2$s" 中不存在',
]);

View File

@@ -1,14 +1,9 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:TabContainer:ExtraTabsListToggler:Label' => '其它标签页',
'UIBlock:Error:AddBlockNotTabForbidden' => '无法添加%1$s到%2$s (仅允许标签)',

View File

@@ -1,14 +1,9 @@
<?php
/**
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UIBlock:Error:AddBlockForbidden' => '无法添加至%1$s',
'UIBlock:Error:AddBlockForbidden' => '无法添加至 %1$s',
]);

View File

@@ -1,17 +1,26 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Navigation menu
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:ErrorPage:UnstableVersion' => '当前正在使用可能包含缺陷的不稳定版本. 如果确信错误是因为缺陷导致请反馈给我们!',
'UI:ErrorPage:KittyDisclaimer' => '请放心, 制作此动画和发行版的时候没有任何猫咪受到伤害.
- 研发团队',
'UI:ErrorPage:UnstableVersion' => '当前正在使用可能包含缺陷的不稳定版本. 如果确信错误是因为缺陷导致请反馈给我们!',
]);
]);

View File

@@ -1,14 +1,23 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Navigation menu
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'core/Operation:Landing/Title' => 'OAuth令牌创建',
]);
]);

View File

@@ -1,48 +1,58 @@
<?php
/**
* Localized data
* Copyright (C) 2013-2024 Combodo SAS
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*
*/
/**
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
// Navigation menu
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Favorites:General:ShowSummaryCards' => '显示汇总卡片',
'UI:Favorites:General:ShowSummaryCards+' => '当鼠标移动到对象链接时, 显示此对象的简要汇总信息, 如果该类型支持',
'UI:Preferences:ActivityPanel:EntryFormOpened' => '默认打开录入表单',
'UI:Preferences:ActivityPanel:EntryFormOpened+' => '在显示对象时是否打开录入表单. 如果不选择, 仍可以点击新建按钮打开录入表单',
'UI:Preferences:ActivityPanel:Title' => '活动面板',
'UI:Preferences:ChooseAPlaceholder' => '用户的默认头像',
'UI:Preferences:ChooseAPlaceholder+' => '选择一个占位图片, 将在用户联系人没有设定头像图片时显示',
'UI:Preferences:ChooseAPlaceholder:Success:Message' => 'Your placeholder image has been successfully updated~~',
'UI:Preferences:General:Theme' => '主题',
'UI:Preferences:General:Theme:DefaultThemeLabel' => '%1$s (默认)',
'UI:Preferences:General:Title' => '概况',
'UI:Preferences:General:Toasts' => 'Toast notifications position~~',
'UI:Preferences:General:Toasts:Bottom' => 'Bottom~~',
'UI:Preferences:General:Toasts:Top' => 'Top~~',
'UI:Preferences:Lists:Title' => '列表',
'UI:Preferences:Notifications' => 'Notifications~~',
'UI:Preferences:Notifications+' => 'Configure the notifications you want to receive <a href="%1$s">on this page</a>.~~',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset' => '重置',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset:Tooltip' => '还原到默认的键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Tooltip' => '录制键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Input:Hint' => '请输入键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Title' => '键盘快捷键',
'UI:Preferences:RichText:Title' => '富文本编辑器',
'UI:Preferences:RichText:ToolbarState' => '工具栏默认状态',
'UI:Preferences:RichText:ToolbarState:Collapsed' => '折叠',
'UI:Preferences:RichText:ToolbarState:Expanded' => '展开',
'UI:Preferences:Tabs:Layout:Horizontal' => '水平',
'UI:Preferences:Tabs:Layout:Label' => '布局',
'UI:Preferences:Tabs:Layout:Vertical' => '垂直',
'UI:Preferences:Tabs:Scrollable:Classic' => '经典',
'UI:Preferences:Tabs:Scrollable:Label' => '导航',
'UI:Preferences:Tabs:Scrollable:Scrollable' => '可滚动',
'UI:Preferences:Tabs:Title' => '标签栏',
'UI:Preferences:Title' => '首选项',
'UI:Preferences:UserInterface:Title' => '用户界面',
'UI:Preferences:Title' => '首选项',
'UI:Preferences:UserInterface:Title' => '用户界面',
'UI:Preferences:General:Title' => '概况',
'UI:Preferences:General:Theme' => '主题',
'UI:Preferences:General:Theme:DefaultThemeLabel' => '%1$s (默认)',
'UI:Favorites:General:ShowSummaryCards' => '显示汇总卡片',
'UI:Favorites:General:ShowSummaryCards+' => '当鼠标移动到对象链接时, 显示此对象的简要汇总信息, 如果该类型支持',
'UI:Preferences:Lists:Title' => '列表',
'UI:Preferences:RichText:Title' => '富文本编辑器',
'UI:Preferences:RichText:ToolbarState' => '工具栏默认状态',
'UI:Preferences:RichText:ToolbarState:Expanded' => '展开',
'UI:Preferences:RichText:ToolbarState:Collapsed' => '折叠',
'UI:Preferences:ActivityPanel:Title' => '活动面板',
'UI:Preferences:ActivityPanel:EntryFormOpened' => '默认打开录入表单',
'UI:Preferences:ActivityPanel:EntryFormOpened+' => '在显示对象时是否打开录入表单. 如果不选择, 仍可以点击新建按钮打开录入表单',
'UI:Preferences:PersonalizeKeyboardShortcuts:Title' => '键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Input:Hint' => '请输入键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Tooltip' => '录制键盘快捷键',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset' => '重置',
'UI:Preferences:PersonalizeKeyboardShortcuts:Button:Reset:Tooltip' => '还原到默认的键盘快捷键',
'UI:Preferences:Tabs:Title' => '标签栏',
'UI:Preferences:Tabs:Layout:Label' => '布局',
'UI:Preferences:Tabs:Layout:Horizontal' => '水平',
'UI:Preferences:Tabs:Layout:Vertical' => '垂直',
'UI:Preferences:Tabs:Scrollable:Label' => '导航',
'UI:Preferences:Tabs:Scrollable:Classic' => '经典',
'UI:Preferences:Tabs:Scrollable:Scrollable' => '可滚动',
'UI:Preferences:General:Toasts' => 'Toast notifications position~~',
'UI:Preferences:General:Toasts:Bottom' => 'Bottom~~',
'UI:Preferences:General:Toasts:Top' => 'Top~~',
'UI:Preferences:ChooseAPlaceholder' => '用户的默认头像',
'UI:Preferences:ChooseAPlaceholder+' => '选择一个占位图片, 将在用户联系人没有设定头像图片时显示',
'UI:Preferences:ChooseAPlaceholder:Success:Message' => 'Your placeholder image has been successfully updated~~',
'UI:Preferences:Notifications' => 'Notifications~~',
'UI:Preferences:Notifications+' => 'Configure the notifications you want to receive <a href="%1$s">on this page</a>.~~',
]);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -178,6 +178,7 @@ return array(
'CSVBulkExport' => $baseDir . '/core/csvbulkexport.class.inc.php',
'CSVParser' => $baseDir . '/core/csvparser.class.inc.php',
'CSVParserException' => $baseDir . '/application/exceptions/CSVParserException.php',
'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CellChangeSpec' => $baseDir . '/core/bulkchange.class.inc.php',
'CellStatus_Ambiguous' => $baseDir . '/core/bulkchange.class.inc.php',
'CellStatus_Issue' => $baseDir . '/core/bulkchange.class.inc.php',
@@ -1503,6 +1504,7 @@ return array(
'RestResultWithObjects' => $baseDir . '/core/restservices.class.inc.php',
'RestResultWithRelations' => $baseDir . '/core/restservices.class.inc.php',
'RestUtils' => $baseDir . '/application/applicationextension.inc.php',
'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'RotatingLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php',
'RowStatus' => $baseDir . '/core/bulkchange.class.inc.php',
'RowStatus_Disappeared' => $baseDir . '/core/bulkchange.class.inc.php',
@@ -2869,6 +2871,7 @@ return array(
'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php',
'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php',
'Symfony\\Polyfill\\Php83\\Php83' => $vendorDir . '/symfony/polyfill-php83/Php83.php',
'Symfony\\Runtime\\Symfony\\Component\\Console\\ApplicationRuntime' => $vendorDir . '/symfony/runtime/Internal/Console/ApplicationRuntime.php',
'Symfony\\Runtime\\Symfony\\Component\\Console\\Command\\CommandRuntime' => $vendorDir . '/symfony/runtime/Internal/Console/Command/CommandRuntime.php',
@@ -2916,10 +2919,17 @@ return array(
'TriggerOnStateLeave' => $baseDir . '/core/trigger.class.inc.php',
'TriggerOnThresholdReached' => $baseDir . '/core/trigger.class.inc.php',
'TrueExpression' => $baseDir . '/core/oql/expression.class.inc.php',
'Twig\\AbstractTwigCallable' => $vendorDir . '/twig/twig/src/AbstractTwigCallable.php',
'Twig\\Attribute\\FirstClassTwigCallableReady' => $vendorDir . '/twig/twig/src/Attribute/FirstClassTwigCallableReady.php',
'Twig\\Attribute\\YieldReady' => $vendorDir . '/twig/twig/src/Attribute/YieldReady.php',
'Twig\\Cache\\CacheInterface' => $vendorDir . '/twig/twig/src/Cache/CacheInterface.php',
'Twig\\Cache\\ChainCache' => $vendorDir . '/twig/twig/src/Cache/ChainCache.php',
'Twig\\Cache\\FilesystemCache' => $vendorDir . '/twig/twig/src/Cache/FilesystemCache.php',
'Twig\\Cache\\NullCache' => $vendorDir . '/twig/twig/src/Cache/NullCache.php',
'Twig\\Cache\\ReadOnlyFilesystemCache' => $vendorDir . '/twig/twig/src/Cache/ReadOnlyFilesystemCache.php',
'Twig\\Cache\\RemovableCacheInterface' => $vendorDir . '/twig/twig/src/Cache/RemovableCacheInterface.php',
'Twig\\Compiler' => $vendorDir . '/twig/twig/src/Compiler.php',
'Twig\\DeprecatedCallableInfo' => $vendorDir . '/twig/twig/src/DeprecatedCallableInfo.php',
'Twig\\Environment' => $vendorDir . '/twig/twig/src/Environment.php',
'Twig\\Error\\Error' => $vendorDir . '/twig/twig/src/Error/Error.php',
'Twig\\Error\\LoaderError' => $vendorDir . '/twig/twig/src/Error/LoaderError.php',
@@ -2939,6 +2949,7 @@ return array(
'Twig\\Extension\\SandboxExtension' => $vendorDir . '/twig/twig/src/Extension/SandboxExtension.php',
'Twig\\Extension\\StagingExtension' => $vendorDir . '/twig/twig/src/Extension/StagingExtension.php',
'Twig\\Extension\\StringLoaderExtension' => $vendorDir . '/twig/twig/src/Extension/StringLoaderExtension.php',
'Twig\\Extension\\YieldNotReadyExtension' => $vendorDir . '/twig/twig/src/Extension/YieldNotReadyExtension.php',
'Twig\\FileExtensionEscapingStrategy' => $vendorDir . '/twig/twig/src/FileExtensionEscapingStrategy.php',
'Twig\\Lexer' => $vendorDir . '/twig/twig/src/Lexer.php',
'Twig\\Loader\\ArrayLoader' => $vendorDir . '/twig/twig/src/Loader/ArrayLoader.php',
@@ -2949,21 +2960,23 @@ return array(
'Twig\\NodeTraverser' => $vendorDir . '/twig/twig/src/NodeTraverser.php',
'Twig\\NodeVisitor\\AbstractNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
'Twig\\NodeVisitor\\EscaperNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
'Twig\\NodeVisitor\\MacroAutoImportNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php',
'Twig\\NodeVisitor\\NodeVisitorInterface' => $vendorDir . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php',
'Twig\\NodeVisitor\\SandboxNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php',
'Twig\\NodeVisitor\\YieldNotReadyNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php',
'Twig\\Node\\AutoEscapeNode' => $vendorDir . '/twig/twig/src/Node/AutoEscapeNode.php',
'Twig\\Node\\BlockNode' => $vendorDir . '/twig/twig/src/Node/BlockNode.php',
'Twig\\Node\\BlockReferenceNode' => $vendorDir . '/twig/twig/src/Node/BlockReferenceNode.php',
'Twig\\Node\\BodyNode' => $vendorDir . '/twig/twig/src/Node/BodyNode.php',
'Twig\\Node\\CaptureNode' => $vendorDir . '/twig/twig/src/Node/CaptureNode.php',
'Twig\\Node\\CheckSecurityCallNode' => $vendorDir . '/twig/twig/src/Node/CheckSecurityCallNode.php',
'Twig\\Node\\CheckSecurityNode' => $vendorDir . '/twig/twig/src/Node/CheckSecurityNode.php',
'Twig\\Node\\CheckToStringNode' => $vendorDir . '/twig/twig/src/Node/CheckToStringNode.php',
'Twig\\Node\\DeprecatedNode' => $vendorDir . '/twig/twig/src/Node/DeprecatedNode.php',
'Twig\\Node\\DoNode' => $vendorDir . '/twig/twig/src/Node/DoNode.php',
'Twig\\Node\\EmbedNode' => $vendorDir . '/twig/twig/src/Node/EmbedNode.php',
'Twig\\Node\\EmptyNode' => $vendorDir . '/twig/twig/src/Node/EmptyNode.php',
'Twig\\Node\\Expression\\AbstractExpression' => $vendorDir . '/twig/twig/src/Node/Expression/AbstractExpression.php',
'Twig\\Node\\Expression\\ArrayExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ArrayExpression.php',
'Twig\\Node\\Expression\\ArrowFunctionExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ArrowFunctionExpression.php',
@@ -2997,15 +3010,20 @@ return array(
'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php',
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
'Twig\\Node\\Expression\\Binary\\SubBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
'Twig\\Node\\Expression\\Binary\\XorBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/XorBinary.php',
'Twig\\Node\\Expression\\BlockReferenceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php',
'Twig\\Node\\Expression\\CallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/CallExpression.php',
'Twig\\Node\\Expression\\ConditionalExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
'Twig\\Node\\Expression\\ConstantExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConstantExpression.php',
'Twig\\Node\\Expression\\FilterExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FilterExpression.php',
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
'Twig\\Node\\Expression\\Filter\\RawFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/RawFilter.php',
'Twig\\Node\\Expression\\FunctionExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FunctionExpression.php',
'Twig\\Node\\Expression\\FunctionNode\\EnumCasesFunction' => $vendorDir . '/twig/twig/src/Node/Expression/FunctionNode/EnumCasesFunction.php',
'Twig\\Node\\Expression\\FunctionNode\\EnumFunction' => $vendorDir . '/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php',
'Twig\\Node\\Expression\\GetAttrExpression' => $vendorDir . '/twig/twig/src/Node/Expression/GetAttrExpression.php',
'Twig\\Node\\Expression\\InlinePrint' => $vendorDir . '/twig/twig/src/Node/Expression/InlinePrint.php',
'Twig\\Node\\Expression\\MacroReferenceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/MacroReferenceExpression.php',
'Twig\\Node\\Expression\\MethodCallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/MethodCallExpression.php',
'Twig\\Node\\Expression\\NameExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NameExpression.php',
'Twig\\Node\\Expression\\NullCoalesceExpression' => $vendorDir . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php',
@@ -3023,6 +3041,13 @@ return array(
'Twig\\Node\\Expression\\Unary\\NegUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NegUnary.php',
'Twig\\Node\\Expression\\Unary\\NotUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/NotUnary.php',
'Twig\\Node\\Expression\\Unary\\PosUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/PosUnary.php',
'Twig\\Node\\Expression\\Unary\\SpreadUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/SpreadUnary.php',
'Twig\\Node\\Expression\\Unary\\StringCastUnary' => $vendorDir . '/twig/twig/src/Node/Expression/Unary/StringCastUnary.php',
'Twig\\Node\\Expression\\Variable\\AssignContextVariable' => $vendorDir . '/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php',
'Twig\\Node\\Expression\\Variable\\AssignTemplateVariable' => $vendorDir . '/twig/twig/src/Node/Expression/Variable/AssignTemplateVariable.php',
'Twig\\Node\\Expression\\Variable\\ContextVariable' => $vendorDir . '/twig/twig/src/Node/Expression/Variable/ContextVariable.php',
'Twig\\Node\\Expression\\Variable\\LocalVariable' => $vendorDir . '/twig/twig/src/Node/Expression/Variable/LocalVariable.php',
'Twig\\Node\\Expression\\Variable\\TemplateVariable' => $vendorDir . '/twig/twig/src/Node/Expression/Variable/TemplateVariable.php',
'Twig\\Node\\Expression\\VariadicExpression' => $vendorDir . '/twig/twig/src/Node/Expression/VariadicExpression.php',
'Twig\\Node\\FlushNode' => $vendorDir . '/twig/twig/src/Node/FlushNode.php',
'Twig\\Node\\ForLoopNode' => $vendorDir . '/twig/twig/src/Node/ForLoopNode.php',
@@ -3032,14 +3057,18 @@ return array(
'Twig\\Node\\IncludeNode' => $vendorDir . '/twig/twig/src/Node/IncludeNode.php',
'Twig\\Node\\MacroNode' => $vendorDir . '/twig/twig/src/Node/MacroNode.php',
'Twig\\Node\\ModuleNode' => $vendorDir . '/twig/twig/src/Node/ModuleNode.php',
'Twig\\Node\\NameDeprecation' => $vendorDir . '/twig/twig/src/Node/NameDeprecation.php',
'Twig\\Node\\Node' => $vendorDir . '/twig/twig/src/Node/Node.php',
'Twig\\Node\\NodeCaptureInterface' => $vendorDir . '/twig/twig/src/Node/NodeCaptureInterface.php',
'Twig\\Node\\NodeOutputInterface' => $vendorDir . '/twig/twig/src/Node/NodeOutputInterface.php',
'Twig\\Node\\Nodes' => $vendorDir . '/twig/twig/src/Node/Nodes.php',
'Twig\\Node\\PrintNode' => $vendorDir . '/twig/twig/src/Node/PrintNode.php',
'Twig\\Node\\SandboxNode' => $vendorDir . '/twig/twig/src/Node/SandboxNode.php',
'Twig\\Node\\SetNode' => $vendorDir . '/twig/twig/src/Node/SetNode.php',
'Twig\\Node\\TextNode' => $vendorDir . '/twig/twig/src/Node/TextNode.php',
'Twig\\Node\\TypesNode' => $vendorDir . '/twig/twig/src/Node/TypesNode.php',
'Twig\\Node\\WithNode' => $vendorDir . '/twig/twig/src/Node/WithNode.php',
'Twig\\OperatorPrecedenceChange' => $vendorDir . '/twig/twig/src/OperatorPrecedenceChange.php',
'Twig\\Parser' => $vendorDir . '/twig/twig/src/Parser.php',
'Twig\\Profiler\\Dumper\\BaseDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BaseDumper.php',
'Twig\\Profiler\\Dumper\\BlackfireDumper' => $vendorDir . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php',
@@ -3052,6 +3081,7 @@ return array(
'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php',
'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => $vendorDir . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php',
'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => $vendorDir . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php',
'Twig\\Runtime\\EscaperRuntime' => $vendorDir . '/twig/twig/src/Runtime/EscaperRuntime.php',
'Twig\\Sandbox\\SecurityError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityError.php',
'Twig\\Sandbox\\SecurityNotAllowedFilterError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php',
'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php',
@@ -3060,6 +3090,7 @@ return array(
'Twig\\Sandbox\\SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
'Twig\\Sandbox\\SecurityPolicy' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicy.php',
'Twig\\Sandbox\\SecurityPolicyInterface' => $vendorDir . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php',
'Twig\\Sandbox\\SourcePolicyInterface' => $vendorDir . '/twig/twig/src/Sandbox/SourcePolicyInterface.php',
'Twig\\Source' => $vendorDir . '/twig/twig/src/Source.php',
'Twig\\Template' => $vendorDir . '/twig/twig/src/Template.php',
'Twig\\TemplateWrapper' => $vendorDir . '/twig/twig/src/TemplateWrapper.php',
@@ -3075,6 +3106,7 @@ return array(
'Twig\\TokenParser\\FlushTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FlushTokenParser.php',
'Twig\\TokenParser\\ForTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ForTokenParser.php',
'Twig\\TokenParser\\FromTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/FromTokenParser.php',
'Twig\\TokenParser\\GuardTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/GuardTokenParser.php',
'Twig\\TokenParser\\IfTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IfTokenParser.php',
'Twig\\TokenParser\\ImportTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ImportTokenParser.php',
'Twig\\TokenParser\\IncludeTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/IncludeTokenParser.php',
@@ -3082,13 +3114,17 @@ return array(
'Twig\\TokenParser\\SandboxTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SandboxTokenParser.php',
'Twig\\TokenParser\\SetTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/SetTokenParser.php',
'Twig\\TokenParser\\TokenParserInterface' => $vendorDir . '/twig/twig/src/TokenParser/TokenParserInterface.php',
'Twig\\TokenParser\\TypesTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/TypesTokenParser.php',
'Twig\\TokenParser\\UseTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/UseTokenParser.php',
'Twig\\TokenParser\\WithTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/WithTokenParser.php',
'Twig\\TokenStream' => $vendorDir . '/twig/twig/src/TokenStream.php',
'Twig\\TwigCallableInterface' => $vendorDir . '/twig/twig/src/TwigCallableInterface.php',
'Twig\\TwigFilter' => $vendorDir . '/twig/twig/src/TwigFilter.php',
'Twig\\TwigFunction' => $vendorDir . '/twig/twig/src/TwigFunction.php',
'Twig\\TwigTest' => $vendorDir . '/twig/twig/src/TwigTest.php',
'Twig\\Util\\CallableArgumentsExtractor' => $vendorDir . '/twig/twig/src/Util/CallableArgumentsExtractor.php',
'Twig\\Util\\DeprecationCollector' => $vendorDir . '/twig/twig/src/Util/DeprecationCollector.php',
'Twig\\Util\\ReflectionCallable' => $vendorDir . '/twig/twig/src/Util/ReflectionCallable.php',
'Twig\\Util\\TemplateDirIterator' => $vendorDir . '/twig/twig/src/Util/TemplateDirIterator.php',
'UIExtKeyWidget' => $baseDir . '/application/ui.extkeywidget.class.inc.php',
'UIHTMLEditorWidget' => $baseDir . '/application/ui.htmleditorwidget.class.inc.php',

View File

@@ -12,6 +12,11 @@ return array(
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
'23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
'89efb1254ef2d1c5d80096acd12c4098' => $vendorDir . '/twig/twig/src/Resources/core.php',
'ffecb95d45175fd40f75be8a23b34f90' => $vendorDir . '/twig/twig/src/Resources/debug.php',
'c7baa00073ee9c61edf148c51917cfb4' => $vendorDir . '/twig/twig/src/Resources/escaper.php',
'f844ccf1d25df8663951193c3fc307c8' => $vendorDir . '/twig/twig/src/Resources/string_loader.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',

View File

@@ -11,6 +11,7 @@ return array(
'TheNetworg\\OAuth2\\Client\\' => array($vendorDir . '/thenetworg/oauth2-azure/src'),
'Symfony\\Runtime\\Symfony\\Component\\' => array($vendorDir . '/symfony/runtime/Internal'),
'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),

View File

@@ -13,6 +13,11 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
'23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
'89efb1254ef2d1c5d80096acd12c4098' => __DIR__ . '/..' . '/twig/twig/src/Resources/core.php',
'ffecb95d45175fd40f75be8a23b34f90' => __DIR__ . '/..' . '/twig/twig/src/Resources/debug.php',
'c7baa00073ee9c61edf148c51917cfb4' => __DIR__ . '/..' . '/twig/twig/src/Resources/escaper.php',
'f844ccf1d25df8663951193c3fc307c8' => __DIR__ . '/..' . '/twig/twig/src/Resources/string_loader.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
@@ -39,6 +44,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
'Symfony\\Runtime\\Symfony\\Component\\' => 34,
'Symfony\\Polyfill\\Php83\\' => 23,
'Symfony\\Polyfill\\Php81\\' => 23,
'Symfony\\Polyfill\\Php80\\' => 23,
'Symfony\\Polyfill\\Php72\\' => 23,
'Symfony\\Polyfill\\Mbstring\\' => 26,
@@ -132,6 +138,10 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php83',
),
'Symfony\\Polyfill\\Php81\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php81',
),
'Symfony\\Polyfill\\Php80\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
@@ -558,6 +568,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'CSVBulkExport' => __DIR__ . '/../..' . '/core/csvbulkexport.class.inc.php',
'CSVParser' => __DIR__ . '/../..' . '/core/csvparser.class.inc.php',
'CSVParserException' => __DIR__ . '/../..' . '/application/exceptions/CSVParserException.php',
'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CellChangeSpec' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php',
'CellStatus_Ambiguous' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php',
'CellStatus_Issue' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php',
@@ -1883,6 +1894,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'RestResultWithObjects' => __DIR__ . '/../..' . '/core/restservices.class.inc.php',
'RestResultWithRelations' => __DIR__ . '/../..' . '/core/restservices.class.inc.php',
'RestUtils' => __DIR__ . '/../..' . '/application/applicationextension.inc.php',
'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'RotatingLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php',
'RowStatus' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php',
'RowStatus_Disappeared' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php',
@@ -3249,6 +3261,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php',
'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php',
'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php',
'Symfony\\Polyfill\\Php83\\Php83' => __DIR__ . '/..' . '/symfony/polyfill-php83/Php83.php',
'Symfony\\Runtime\\Symfony\\Component\\Console\\ApplicationRuntime' => __DIR__ . '/..' . '/symfony/runtime/Internal/Console/ApplicationRuntime.php',
'Symfony\\Runtime\\Symfony\\Component\\Console\\Command\\CommandRuntime' => __DIR__ . '/..' . '/symfony/runtime/Internal/Console/Command/CommandRuntime.php',
@@ -3296,10 +3309,17 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'TriggerOnStateLeave' => __DIR__ . '/../..' . '/core/trigger.class.inc.php',
'TriggerOnThresholdReached' => __DIR__ . '/../..' . '/core/trigger.class.inc.php',
'TrueExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php',
'Twig\\AbstractTwigCallable' => __DIR__ . '/..' . '/twig/twig/src/AbstractTwigCallable.php',
'Twig\\Attribute\\FirstClassTwigCallableReady' => __DIR__ . '/..' . '/twig/twig/src/Attribute/FirstClassTwigCallableReady.php',
'Twig\\Attribute\\YieldReady' => __DIR__ . '/..' . '/twig/twig/src/Attribute/YieldReady.php',
'Twig\\Cache\\CacheInterface' => __DIR__ . '/..' . '/twig/twig/src/Cache/CacheInterface.php',
'Twig\\Cache\\ChainCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/ChainCache.php',
'Twig\\Cache\\FilesystemCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/FilesystemCache.php',
'Twig\\Cache\\NullCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/NullCache.php',
'Twig\\Cache\\ReadOnlyFilesystemCache' => __DIR__ . '/..' . '/twig/twig/src/Cache/ReadOnlyFilesystemCache.php',
'Twig\\Cache\\RemovableCacheInterface' => __DIR__ . '/..' . '/twig/twig/src/Cache/RemovableCacheInterface.php',
'Twig\\Compiler' => __DIR__ . '/..' . '/twig/twig/src/Compiler.php',
'Twig\\DeprecatedCallableInfo' => __DIR__ . '/..' . '/twig/twig/src/DeprecatedCallableInfo.php',
'Twig\\Environment' => __DIR__ . '/..' . '/twig/twig/src/Environment.php',
'Twig\\Error\\Error' => __DIR__ . '/..' . '/twig/twig/src/Error/Error.php',
'Twig\\Error\\LoaderError' => __DIR__ . '/..' . '/twig/twig/src/Error/LoaderError.php',
@@ -3319,6 +3339,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Extension\\SandboxExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/SandboxExtension.php',
'Twig\\Extension\\StagingExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StagingExtension.php',
'Twig\\Extension\\StringLoaderExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/StringLoaderExtension.php',
'Twig\\Extension\\YieldNotReadyExtension' => __DIR__ . '/..' . '/twig/twig/src/Extension/YieldNotReadyExtension.php',
'Twig\\FileExtensionEscapingStrategy' => __DIR__ . '/..' . '/twig/twig/src/FileExtensionEscapingStrategy.php',
'Twig\\Lexer' => __DIR__ . '/..' . '/twig/twig/src/Lexer.php',
'Twig\\Loader\\ArrayLoader' => __DIR__ . '/..' . '/twig/twig/src/Loader/ArrayLoader.php',
@@ -3329,21 +3350,23 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\NodeTraverser' => __DIR__ . '/..' . '/twig/twig/src/NodeTraverser.php',
'Twig\\NodeVisitor\\AbstractNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
'Twig\\NodeVisitor\\EscaperNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
'Twig\\NodeVisitor\\MacroAutoImportNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/MacroAutoImportNodeVisitor.php',
'Twig\\NodeVisitor\\NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
'Twig\\NodeVisitor\\SafeAnalysisNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php',
'Twig\\NodeVisitor\\SandboxNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php',
'Twig\\NodeVisitor\\YieldNotReadyNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/YieldNotReadyNodeVisitor.php',
'Twig\\Node\\AutoEscapeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/AutoEscapeNode.php',
'Twig\\Node\\BlockNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockNode.php',
'Twig\\Node\\BlockReferenceNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BlockReferenceNode.php',
'Twig\\Node\\BodyNode' => __DIR__ . '/..' . '/twig/twig/src/Node/BodyNode.php',
'Twig\\Node\\CaptureNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CaptureNode.php',
'Twig\\Node\\CheckSecurityCallNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckSecurityCallNode.php',
'Twig\\Node\\CheckSecurityNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckSecurityNode.php',
'Twig\\Node\\CheckToStringNode' => __DIR__ . '/..' . '/twig/twig/src/Node/CheckToStringNode.php',
'Twig\\Node\\DeprecatedNode' => __DIR__ . '/..' . '/twig/twig/src/Node/DeprecatedNode.php',
'Twig\\Node\\DoNode' => __DIR__ . '/..' . '/twig/twig/src/Node/DoNode.php',
'Twig\\Node\\EmbedNode' => __DIR__ . '/..' . '/twig/twig/src/Node/EmbedNode.php',
'Twig\\Node\\EmptyNode' => __DIR__ . '/..' . '/twig/twig/src/Node/EmptyNode.php',
'Twig\\Node\\Expression\\AbstractExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/AbstractExpression.php',
'Twig\\Node\\Expression\\ArrayExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ArrayExpression.php',
'Twig\\Node\\Expression\\ArrowFunctionExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ArrowFunctionExpression.php',
@@ -3377,15 +3400,20 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php',
'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php',
'Twig\\Node\\Expression\\Binary\\SubBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SubBinary.php',
'Twig\\Node\\Expression\\Binary\\XorBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/XorBinary.php',
'Twig\\Node\\Expression\\BlockReferenceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/BlockReferenceExpression.php',
'Twig\\Node\\Expression\\CallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/CallExpression.php',
'Twig\\Node\\Expression\\ConditionalExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConditionalExpression.php',
'Twig\\Node\\Expression\\ConstantExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConstantExpression.php',
'Twig\\Node\\Expression\\FilterExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FilterExpression.php',
'Twig\\Node\\Expression\\Filter\\DefaultFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php',
'Twig\\Node\\Expression\\Filter\\RawFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/RawFilter.php',
'Twig\\Node\\Expression\\FunctionExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FunctionExpression.php',
'Twig\\Node\\Expression\\FunctionNode\\EnumCasesFunction' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FunctionNode/EnumCasesFunction.php',
'Twig\\Node\\Expression\\FunctionNode\\EnumFunction' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FunctionNode/EnumFunction.php',
'Twig\\Node\\Expression\\GetAttrExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/GetAttrExpression.php',
'Twig\\Node\\Expression\\InlinePrint' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/InlinePrint.php',
'Twig\\Node\\Expression\\MacroReferenceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/MacroReferenceExpression.php',
'Twig\\Node\\Expression\\MethodCallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/MethodCallExpression.php',
'Twig\\Node\\Expression\\NameExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NameExpression.php',
'Twig\\Node\\Expression\\NullCoalesceExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/NullCoalesceExpression.php',
@@ -3403,6 +3431,13 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Node\\Expression\\Unary\\NegUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NegUnary.php',
'Twig\\Node\\Expression\\Unary\\NotUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/NotUnary.php',
'Twig\\Node\\Expression\\Unary\\PosUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/PosUnary.php',
'Twig\\Node\\Expression\\Unary\\SpreadUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/SpreadUnary.php',
'Twig\\Node\\Expression\\Unary\\StringCastUnary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Unary/StringCastUnary.php',
'Twig\\Node\\Expression\\Variable\\AssignContextVariable' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php',
'Twig\\Node\\Expression\\Variable\\AssignTemplateVariable' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Variable/AssignTemplateVariable.php',
'Twig\\Node\\Expression\\Variable\\ContextVariable' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Variable/ContextVariable.php',
'Twig\\Node\\Expression\\Variable\\LocalVariable' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Variable/LocalVariable.php',
'Twig\\Node\\Expression\\Variable\\TemplateVariable' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Variable/TemplateVariable.php',
'Twig\\Node\\Expression\\VariadicExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/VariadicExpression.php',
'Twig\\Node\\FlushNode' => __DIR__ . '/..' . '/twig/twig/src/Node/FlushNode.php',
'Twig\\Node\\ForLoopNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ForLoopNode.php',
@@ -3412,14 +3447,18 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Node\\IncludeNode' => __DIR__ . '/..' . '/twig/twig/src/Node/IncludeNode.php',
'Twig\\Node\\MacroNode' => __DIR__ . '/..' . '/twig/twig/src/Node/MacroNode.php',
'Twig\\Node\\ModuleNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ModuleNode.php',
'Twig\\Node\\NameDeprecation' => __DIR__ . '/..' . '/twig/twig/src/Node/NameDeprecation.php',
'Twig\\Node\\Node' => __DIR__ . '/..' . '/twig/twig/src/Node/Node.php',
'Twig\\Node\\NodeCaptureInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeCaptureInterface.php',
'Twig\\Node\\NodeOutputInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/NodeOutputInterface.php',
'Twig\\Node\\Nodes' => __DIR__ . '/..' . '/twig/twig/src/Node/Nodes.php',
'Twig\\Node\\PrintNode' => __DIR__ . '/..' . '/twig/twig/src/Node/PrintNode.php',
'Twig\\Node\\SandboxNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SandboxNode.php',
'Twig\\Node\\SetNode' => __DIR__ . '/..' . '/twig/twig/src/Node/SetNode.php',
'Twig\\Node\\TextNode' => __DIR__ . '/..' . '/twig/twig/src/Node/TextNode.php',
'Twig\\Node\\TypesNode' => __DIR__ . '/..' . '/twig/twig/src/Node/TypesNode.php',
'Twig\\Node\\WithNode' => __DIR__ . '/..' . '/twig/twig/src/Node/WithNode.php',
'Twig\\OperatorPrecedenceChange' => __DIR__ . '/..' . '/twig/twig/src/OperatorPrecedenceChange.php',
'Twig\\Parser' => __DIR__ . '/..' . '/twig/twig/src/Parser.php',
'Twig\\Profiler\\Dumper\\BaseDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BaseDumper.php',
'Twig\\Profiler\\Dumper\\BlackfireDumper' => __DIR__ . '/..' . '/twig/twig/src/Profiler/Dumper/BlackfireDumper.php',
@@ -3432,6 +3471,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\RuntimeLoader\\ContainerRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php',
'Twig\\RuntimeLoader\\FactoryRuntimeLoader' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php',
'Twig\\RuntimeLoader\\RuntimeLoaderInterface' => __DIR__ . '/..' . '/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php',
'Twig\\Runtime\\EscaperRuntime' => __DIR__ . '/..' . '/twig/twig/src/Runtime/EscaperRuntime.php',
'Twig\\Sandbox\\SecurityError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityError.php',
'Twig\\Sandbox\\SecurityNotAllowedFilterError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php',
'Twig\\Sandbox\\SecurityNotAllowedFunctionError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php',
@@ -3440,6 +3480,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Sandbox\\SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
'Twig\\Sandbox\\SecurityPolicy' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicy.php',
'Twig\\Sandbox\\SecurityPolicyInterface' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityPolicyInterface.php',
'Twig\\Sandbox\\SourcePolicyInterface' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SourcePolicyInterface.php',
'Twig\\Source' => __DIR__ . '/..' . '/twig/twig/src/Source.php',
'Twig\\Template' => __DIR__ . '/..' . '/twig/twig/src/Template.php',
'Twig\\TemplateWrapper' => __DIR__ . '/..' . '/twig/twig/src/TemplateWrapper.php',
@@ -3455,6 +3496,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\TokenParser\\FlushTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FlushTokenParser.php',
'Twig\\TokenParser\\ForTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ForTokenParser.php',
'Twig\\TokenParser\\FromTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/FromTokenParser.php',
'Twig\\TokenParser\\GuardTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/GuardTokenParser.php',
'Twig\\TokenParser\\IfTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IfTokenParser.php',
'Twig\\TokenParser\\ImportTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ImportTokenParser.php',
'Twig\\TokenParser\\IncludeTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/IncludeTokenParser.php',
@@ -3462,13 +3504,17 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\TokenParser\\SandboxTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SandboxTokenParser.php',
'Twig\\TokenParser\\SetTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/SetTokenParser.php',
'Twig\\TokenParser\\TokenParserInterface' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/TokenParserInterface.php',
'Twig\\TokenParser\\TypesTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/TypesTokenParser.php',
'Twig\\TokenParser\\UseTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/UseTokenParser.php',
'Twig\\TokenParser\\WithTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/WithTokenParser.php',
'Twig\\TokenStream' => __DIR__ . '/..' . '/twig/twig/src/TokenStream.php',
'Twig\\TwigCallableInterface' => __DIR__ . '/..' . '/twig/twig/src/TwigCallableInterface.php',
'Twig\\TwigFilter' => __DIR__ . '/..' . '/twig/twig/src/TwigFilter.php',
'Twig\\TwigFunction' => __DIR__ . '/..' . '/twig/twig/src/TwigFunction.php',
'Twig\\TwigTest' => __DIR__ . '/..' . '/twig/twig/src/TwigTest.php',
'Twig\\Util\\CallableArgumentsExtractor' => __DIR__ . '/..' . '/twig/twig/src/Util/CallableArgumentsExtractor.php',
'Twig\\Util\\DeprecationCollector' => __DIR__ . '/..' . '/twig/twig/src/Util/DeprecationCollector.php',
'Twig\\Util\\ReflectionCallable' => __DIR__ . '/..' . '/twig/twig/src/Util/ReflectionCallable.php',
'Twig\\Util\\TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/src/Util/TemplateDirIterator.php',
'UIExtKeyWidget' => __DIR__ . '/../..' . '/application/ui.extkeywidget.class.inc.php',
'UIHTMLEditorWidget' => __DIR__ . '/../..' . '/application/ui.htmleditorwidget.class.inc.php',

View File

@@ -4162,6 +4162,85 @@
],
"install-path": "../symfony/polyfill-php80"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.31.0",
"version_normalized": "1.31.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"time": "2024-09-09T11:45:10+00:00",
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php81\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/polyfill-php81"
},
{
"name": "symfony/polyfill-php83",
"version": "v1.28.0",
@@ -5398,33 +5477,41 @@
},
{
"name": "twig/twig",
"version": "v3.8.0",
"version_normalized": "3.8.0.0",
"version": "v3.16.0",
"version_normalized": "3.16.0.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
"reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561",
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"php": ">=8.0.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php80": "^1.22"
"symfony/polyfill-php81": "^1.29"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"time": "2023-11-21T18:54:41+00:00",
"time": "2024-11-29T08:27:05+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"files": [
"src/Resources/core.php",
"src/Resources/debug.php",
"src/Resources/escaper.php",
"src/Resources/string_loader.php"
],
"psr-4": {
"Twig\\": "src/"
}
@@ -5457,7 +5544,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.8.0"
"source": "https://github.com/twigphp/Twig/tree/v3.16.0"
},
"funding": [
{

View File

@@ -3,7 +3,7 @@
'name' => 'combodo/itop',
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '5ae2fdee94b925808451355b98b941351e0b4fcd',
'reference' => '1bf53bae2a481c76bba07e2f6d3447b4008efacd',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,7 +22,7 @@
'combodo/itop' => array(
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '5ae2fdee94b925808451355b98b941351e0b4fcd',
'reference' => '1bf53bae2a481c76bba07e2f6d3447b4008efacd',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -587,6 +587,15 @@
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php81' => array(
'pretty_version' => 'v1.31.0',
'version' => '1.31.0.0',
'reference' => '4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-php81',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-php83' => array(
'pretty_version' => 'v1.28.0',
'version' => '1.28.0.0',
@@ -729,9 +738,9 @@
'dev_requirement' => false,
),
'twig/twig' => array(
'pretty_version' => 'v3.8.0',
'version' => '3.8.0.0',
'reference' => '9d15f0ac07f44dc4217883ec6ae02fd555c6f71d',
'pretty_version' => 'v3.16.0',
'version' => '3.16.0.0',
'reference' => '475ad2dc97d65d8631393e721e7e44fb544f0561',
'type' => 'library',
'install_path' => __DIR__ . '/../twig/twig',
'aliases' => array(),

View File

@@ -0,0 +1,19 @@
Copyright (c) 2021-present Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -0,0 +1,37 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Php81;
/**
* @author Nicolas Grekas <p@tchwork.com>
*
* @internal
*/
final class Php81
{
public static function array_is_list(array $array): bool
{
if ([] === $array || $array === array_values($array)) {
return true;
}
$nextKey = -1;
foreach ($array as $k => $v) {
if ($k !== ++$nextKey) {
return false;
}
}
return true;
}
}

View File

@@ -0,0 +1,18 @@
Symfony Polyfill / Php81
========================
This component provides features added to PHP 8.1 core:
- [`array_is_list`](https://php.net/array_is_list)
- [`enum_exists`](https://php.net/enum-exists)
- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant
- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types)
- [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used)
More information can be found in the
[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
License
=======
This library is released under the [MIT license](LICENSE).

View File

@@ -0,0 +1,51 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) {
/**
* @property string $data
*/
class CURLStringFile extends CURLFile
{
private $data;
public function __construct(string $data, string $postname, string $mime = 'application/octet-stream')
{
$this->data = $data;
parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname);
}
public function __set(string $name, $value): void
{
if ('data' !== $name) {
$this->$name = $value;
return;
}
if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) {
throw new TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string');
}
$this->name = 'data://application/octet-stream;base64,'.base64_encode($value);
}
public function __isset(string $name): bool
{
return isset($this->$name);
}
public function &__get(string $name)
{
return $this->$name;
}
}
}

View File

@@ -0,0 +1,20 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
if (\PHP_VERSION_ID < 80100) {
#[Attribute(Attribute::TARGET_METHOD)]
final class ReturnTypeWillChange
{
public function __construct()
{
}
}
}

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Symfony\Polyfill\Php81 as p;
if (\PHP_VERSION_ID >= 80100) {
return;
}
if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) {
define('MYSQLI_REFRESH_REPLICA', 64);
}
if (!function_exists('array_is_list')) {
function array_is_list(array $array): bool { return p\Php81::array_is_list($array); }
}
if (!function_exists('enum_exists')) {
function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; }
}

View File

@@ -0,0 +1,33 @@
{
"name": "symfony/polyfill-php81",
"type": "library",
"description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"keywords": ["polyfill", "shim", "compatibility", "portable"],
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"require": {
"php": ">=7.2"
},
"autoload": {
"psr-4": { "Symfony\\Polyfill\\Php81\\": "" },
"files": [ "bootstrap.php" ],
"classmap": [ "Resources/stubs" ]
},
"minimum-stability": "dev",
"extra": {
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
}
}

View File

@@ -1,3 +1,202 @@
# 3.16.0 (2024-XX-XX)
* Deprecate `InlinePrint`
* Fix having macro variables starting with an underscore
* Deprecate not passing a `Source` instance to `TokenStream`
* Deprecate returning `null` from `TwigFilter::getSafe()` and `TwigFunction::getSafe()`, return `[]` instead
# 3.15.0 (2024-11-17)
* [BC BREAK] Add support for accessing class constants with the dot operator;
this can be a BC break if you don't use UPPERCASE constant names
* Add Spanish inflector support for the `plural` and `singular` filters in the String extension
* Deprecate `TempNameExpression` in favor of `LocalVariable`
* Deprecate `NameExpression` in favor of `ContextVariable`
* Deprecate `AssignNameExpression` in favor of `AssignContextVariable`
* Remove `MacroAutoImportNodeVisitor`
* Deprecate `MethodCallExpression` in favor of `MacroReferenceExpression`
* Fix support for the "is defined" test on `_self.xxx` (auto-imported) macros
* Fix support for the "is defined" test on inherited macros
* Add named arguments support for the dot operator arguments (`foo.bar(some: arg)`)
* Add named arguments support for macros
* Add a new `guard` tag that allows to test if some Twig callables are available at compilation time
* Allow arrow functions everywhere
* Deprecate passing a string or an array to Twig callable arguments accepting arrow functions (pass a `\Closure`)
* Add support for triggering deprecations for future operator precedence changes
* Deprecate using the `not` unary operator in an expression with ``*``, ``/``, ``//``, or ``%`` without using explicit parentheses to clarify precedence
* Deprecate using the `??` binary operator without explicit parentheses
* Deprecate using the `~` binary operator in an expression with `+` or `-` without using parentheses to clarify precedence
* Deprecate not passing `AbstractExpression` args to most constructor arguments for classes extending `AbstractExpression`
* Fix `power` expressions with a negative number in parenthesis (`(-1) ** 2`)
* Deprecate instantiating `Node` directly. Use `EmptyNode` or `Nodes` instead.
* Add support for inline comments
* Add `Profile::getStartTime()` and `Profile::getEndTime()`
* Fix "ignore missing" when used on an "embed" tag
* Fix the possibility to override an aliased block (via use)
* Add template cache hot reload
* Allow Twig callable argument names to be free-form (snake-case or camelCase) independently of the PHP callable signature
They were automatically converted to snake-cased before
* Deprecate the `attribute` function; use the `.` notation and wrap the name with parenthesis instead
* Add support for argument unpackaging
* Add JSON support for the file extension escaping strategy
* Support Markup instances (and any other \Stringable) as dynamic mapping keys
* Deprecate the `sandbox` tag
* Improve the way one can deprecate a Twig callable (use `deprecation_info` instead of the other callable options)
* Add the `enum` function
* Add support for logical `xor` operator
# 3.14.2 (2024-11-07)
* Fix an infinite recursion in the sandbox code
# 3.14.1 (2024-11-06)
* [BC BREAK] Fix a security issue in the sandbox mode allowing an attacker to call attributes on Array-like objects
They are now checked via the property policy
* Fix a security issue in the sandbox mode allowing an attacker to be able to call `toString()`
under some circumstances on an object even if the `__toString()` method is not allowed by the security policy
# 3.14.0 (2024-09-09)
* Fix a security issue when an included sandboxed template has been loaded before without the sandbox context
* Add the possibility to reset globals via `Environment::resetGlobals()`
* Deprecate `Environment::mergeGlobals()`
# 3.13.0 (2024-09-07)
* Add the `types` tag (experimental)
* Deprecate the `Twig\Test\NodeTestCase::getTests()` data provider, override `provideTests()` instead.
* Mark `Twig\Test\NodeTestCase::getEnvironment()` as final, override `createEnvironment()` instead.
* Deprecate `Twig\Test\NodeTestCase::getVariableGetter()`, call `createVariableGetter()` instead.
* Deprecate `Twig\Test\NodeTestCase::getAttributeGetter()`, call `createAttributeGetter()` instead.
* Deprecate not overriding `Twig\Test\IntegrationTestCase::getFixturesDirectory()`, this method will be abstract in 4.0
* Marked `Twig\Test\IntegrationTestCase::getTests()` and `getLegacyTests()` as final
# 3.12.0 (2024-08-29)
* Deprecate the fact that the `extends` and `use` tags are always allowed in a sandboxed template.
This behavior will change in 4.0 where these tags will need to be explicitly allowed like any other tag.
* Deprecate the "tag" constructor argument of the "Twig\Node\Node" class as the tag is now automatically set by the Parser when needed
* Fix precedence of two-word tests when the first word is a valid test
* Deprecate the `spaceless` filter
* Deprecate some internal methods from `Parser`: `getBlockStack()`, `hasBlock()`, `getBlock()`, `hasMacro()`, `hasTraits()`, `getParent()`
* Deprecate passing `null` to `Twig\Parser::setParent()`
* Update `Node::__toString()` to include the node tag if set
* Add support for integers in methods of `Twig\Node\Node` that take a Node name
* Deprecate not passing a `BodyNode` instance as the body of a `ModuleNode` or `MacroNode` constructor
* Deprecate returning "null" from "TokenParserInterface::parse()".
* Deprecate `OptimizerNodeVisitor::OPTIMIZE_TEXT_NODES`
* Fix performance regression when `use_yield` is `false` (which is the default)
* Improve compatibility when `use_yield` is `false` (as extensions still using `echo` will work as is)
* Accept colons (`:`) in addition to equals (`=`) to separate argument names and values in named arguments
* Add the `html_cva` function (in the HTML extra package)
* Add support for named arguments to the `block` and `attribute` functions
* Throw a SyntaxError exception at compile time when a Twig callable has not the minimum number of required arguments
* Add a `CallableArgumentsExtractor` class
* Deprecate passing a name to `FunctionExpression`, `FilterExpression`, and `TestExpression`;
pass a `TwigFunction`, `TwigFilter`, or `TestFilter` instead
* Deprecate all Twig callable attributes on `FunctionExpression`, `FilterExpression`, and `TestExpression`
* Deprecate the `filter` node of `FilterExpression`
* Add the notion of Twig callables (functions, filters, and tests)
* Bump minimum PHP version to 8.0
* Fix integration tests when a test has more than one data/expect section and deprecations
* Add the `enum_cases` function
# 3.11.2 (2024-11-06)
* [BC BREAK] Fix a security issue in the sandbox mode allowing an attacker to call attributes on Array-like objects
They are now checked via the property policy
* Fix a security issue in the sandbox mode allowing an attacker to be able to call `toString()`
under some circumstances on an object even if the `__toString()` method is not allowed by the security policy
# 3.11.1 (2024-09-10)
* Fix a security issue when an included sandboxed template has been loaded before without the sandbox context
# 3.11.0 (2024-08-08)
* Deprecate `OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER`
* Add `Twig\Cache\ChainCache` and `Twig\Cache\ReadOnlyFilesystemCache`
* Add the possibility to deprecate attributes and nodes on `Node`
* Add the possibility to add a package and a version to the `deprecated` tag
* Add the possibility to add a package for filter/function/test deprecations
* Mark `ConstantExpression` as being `@final`
* Add the `find` filter
* Fix optimizer mode validation in `OptimizerNodeVisitor`
* Add the possibility to yield from a generator in `PrintNode`
* Add the `shuffle` filter
* Add the `singular` and `plural` filters in `StringExtension`
* Deprecate the second argument of `Twig\Node\Expression\CallExpression::compileArguments()`
* Deprecate `Twig\ExpressionParser\parseHashExpression()` in favor of
`Twig\ExpressionParser::parseMappingExpression()`
* Deprecate `Twig\ExpressionParser\parseArrayExpression()` in favor of
`Twig\ExpressionParser::parseSequenceExpression()`
* Add `sequence` and `mapping` tests
* Deprecate `Twig\Node\Expression\NameExpression::isSimple()` and
`Twig\Node\Expression\NameExpression::isSpecial()`
# 3.10.3 (2024-05-16)
* Fix missing ; in generated code
# 3.10.2 (2024-05-14)
* Fix support for the deprecated escaper signature
# 3.10.1 (2024-05-12)
* Fix BC break on escaper extension
* Fix constant return type
# 3.10.0 (2024-05-11)
* Make `CoreExtension::formatDate`, `CoreExtension::convertDate`, and
`CoreExtension::formatNumber` part of the public API
* Add `needs_charset` option for filters and functions
* Extract the escaping logic from the `EscaperExtension` class to a new
`EscaperRuntime` class.
The following methods from ``Twig\\Extension\\EscaperExtension`` are
deprecated: ``setEscaper()``, ``getEscapers()``, ``setSafeClasses``,
``addSafeClasses()``. Use the same methods on the
``Twig\\Runtime\\EscaperRuntime`` class instead.
* Fix capturing output from extensions that still use echo
* Fix a PHP warning in the Lexer on malformed templates
* Fix blocks not available under some circumstances
* Synchronize source context in templates when setting a Node on a Node
# 3.9.3 (2024-04-18)
* Add missing `twig_escape_filter_is_safe` deprecated function
* Fix yield usage with CaptureNode
* Add missing unwrap call when using a TemplateWrapper instance internally
* Ensure Lexer is initialized early on
# 3.9.2 (2024-04-17)
* Fix usage of display_end hook
# 3.9.1 (2024-04-17)
* Fix missing `$blocks` variable in `CaptureNode`
# 3.9.0 (2024-04-16)
* Add support for PHP 8.4
* Deprecate AbstractNodeVisitor
* Deprecate passing Template to Environment::resolveTemplate(), Environment::load(), and Template::loadTemplate()
* Add a new "yield" mode for output generation;
Node implementations that use "echo" or "print" should use "yield" instead;
all Node implementations should be flagged with `#[YieldReady]` once they've been made ready for "yield";
the "use_yield" Environment option can be turned on when all nodes have been made `#[YieldReady]`;
"yield" will be the only strategy supported in the next major version
* Add return type for Symfony 7 compatibility
* Fix premature loop exit in Security Policy lookup of allowed methods/properties
* Deprecate all internal extension functions in favor of methods on the extension classes
* Mark all extension functions as @internal
* Add SourcePolicyInterface to selectively enable the Sandbox based on a template's Source
* Throw a proper Twig exception when using cycle on an empty array
# 3.8.0 (2023-11-21)
* Catch errors thrown during template rendering
@@ -186,7 +385,7 @@
* removed Parser::isReservedMacroName()
* removed SanboxedPrintNode
* removed Node::setTemplateName()
* made classes maked as "@final" final
* made classes marked as "@final" final
* removed InitRuntimeInterface, ExistsLoaderInterface, and SourceContextLoaderInterface
* removed the "spaceless" tag
* removed Twig\Environment::getBaseTemplateClass() and Twig\Environment::setBaseTemplateClass()

View File

@@ -11,7 +11,7 @@ Sponsors
.. raw:: html
<a href="https://blackfire.io/docs/introduction?utm_source=twig&utm_medium=github_readme&utm_campaign=logo">
<a href="https://docs.blackfire.io/introduction?utm_source=twig&utm_medium=github_readme&utm_campaign=logo">
<img src="https://static.blackfire.io/assets/intemporals/logo/png/blackfire-io_secondary_horizontal_transparent.png?1" width="255px" alt="Blackfire.io">
</a>

View File

@@ -24,16 +24,24 @@
}
],
"require": {
"php": ">=7.2.5",
"symfony/polyfill-php80": "^1.22",
"php": ">=8.0.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-ctype": "^1.8"
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php81": "^1.29"
},
"require-dev": {
"symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0",
"psr/container": "^1.0|^2.0"
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0",
"psr/container": "^1.0|^2.0",
"phpstan/phpstan": "^2.0"
},
"autoload": {
"files": [
"src/Resources/core.php",
"src/Resources/debug.php",
"src/Resources/escaper.php",
"src/Resources/string_loader.php"
],
"psr-4" : {
"Twig\\" : "src/"
}

View File

@@ -0,0 +1,25 @@
parameters:
ignoreErrors:
- # The method is dynamically generated by the CheckSecurityNode
message: '#^Call to an undefined method Twig\\Template\:\:checkSecurity\(\)\.$#'
identifier: method.notFound
count: 1
path: src/Extension/CoreExtension.php
- # Avoid BC-break
message: '#^Constructor of class Twig\\Node\\ForNode has an unused parameter \$ifexpr\.$#'
identifier: constructor.unusedParameter
count: 1
path: src/Node/ForNode.php
- # 2 parameters will be required
message: '#^Method Twig\\Node\\IncludeNode\:\:addGetTemplate\(\) invoked with 2 parameters, 1 required\.$#'
identifier: arguments.count
count: 1
path: src/Node/IncludeNode.php
- # int|string will be supported in 4.x
message: '#^PHPDoc tag @param for parameter $name with type int|string is not subtype of native type string\.$#'
identifier: parameter.phpDocType
count: 5
path: src/Node/Node.php

View File

@@ -0,0 +1,9 @@
includes:
- phpstan-baseline.neon
parameters:
level: 3
paths:
- src
excludePaths:
- src/Test

View File

@@ -0,0 +1,184 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig;
/**
* @author Fabien Potencier <fabien@symfony.com>
*/
abstract class AbstractTwigCallable implements TwigCallableInterface
{
protected $options;
private $name;
private $dynamicName;
private $callable;
private $arguments;
public function __construct(string $name, $callable = null, array $options = [])
{
$this->name = $this->dynamicName = $name;
$this->callable = $callable;
$this->arguments = [];
$this->options = array_merge([
'needs_environment' => false,
'needs_context' => false,
'needs_charset' => false,
'is_variadic' => false,
'deprecation_info' => null,
'deprecated' => false,
'deprecating_package' => '',
'alternative' => null,
], $options);
if ($this->options['deprecation_info'] && !$this->options['deprecation_info'] instanceof DeprecatedCallableInfo) {
throw new \LogicException(\sprintf('The "deprecation_info" option must be an instance of "%s".', DeprecatedCallableInfo::class));
}
if ($this->options['deprecated']) {
if ($this->options['deprecation_info']) {
throw new \LogicException('When setting the "deprecation_info" option, you need to remove the obsolete deprecated options.');
}
trigger_deprecation('twig/twig', '3.15', 'Using the "deprecated", "deprecating_package", and "alternative" options is deprecated, pass a "deprecation_info" one instead.');
$this->options['deprecation_info'] = new DeprecatedCallableInfo(
$this->options['deprecating_package'],
$this->options['deprecated'],
null,
$this->options['alternative'],
);
}
if ($this->options['deprecation_info']) {
$this->options['deprecation_info']->setName($name);
$this->options['deprecation_info']->setType($this->getType());
}
}
public function __toString(): string
{
return \sprintf('%s(%s)', static::class, $this->name);
}
public function getName(): string
{
return $this->name;
}
public function getDynamicName(): string
{
return $this->dynamicName;
}
public function getCallable()
{
return $this->callable;
}
public function getNodeClass(): string
{
return $this->options['node_class'];
}
public function needsCharset(): bool
{
return $this->options['needs_charset'];
}
public function needsEnvironment(): bool
{
return $this->options['needs_environment'];
}
public function needsContext(): bool
{
return $this->options['needs_context'];
}
/**
* @return static
*/
public function withDynamicArguments(string $name, string $dynamicName, array $arguments): self
{
$new = clone $this;
$new->name = $name;
$new->dynamicName = $dynamicName;
$new->arguments = $arguments;
return $new;
}
/**
* @deprecated since Twig 3.12, use withDynamicArguments() instead
*/
public function setArguments(array $arguments): void
{
trigger_deprecation('twig/twig', '3.12', 'The "%s::setArguments()" method is deprecated, use "%s::withDynamicArguments()" instead.', static::class, static::class);
$this->arguments = $arguments;
}
public function getArguments(): array
{
return $this->arguments;
}
public function isVariadic(): bool
{
return $this->options['is_variadic'];
}
public function isDeprecated(): bool
{
return (bool) $this->options['deprecation_info'];
}
public function triggerDeprecation(?string $file = null, ?int $line = null): void
{
$this->options['deprecation_info']->triggerDeprecation($file, $line);
}
/**
* @deprecated since Twig 3.15
*/
public function getDeprecatingPackage(): string
{
trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
return $this->options['deprecating_package'];
}
/**
* @deprecated since Twig 3.15
*/
public function getDeprecatedVersion(): string
{
trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
return \is_bool($this->options['deprecated']) ? '' : $this->options['deprecated'];
}
/**
* @deprecated since Twig 3.15
*/
public function getAlternative(): ?string
{
trigger_deprecation('twig/twig', '3.15', 'The "%s" method is deprecated, use "%s::triggerDeprecation()" instead.', __METHOD__, static::class);
return $this->options['alternative'];
}
public function getMinimalNumberOfRequiredArguments(): int
{
return ($this->options['needs_charset'] ? 1 : 0) + ($this->options['needs_environment'] ? 1 : 0) + ($this->options['needs_context'] ? 1 : 0) + \count($this->arguments);
}
}

View File

@@ -0,0 +1,20 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Attribute;
/**
* Marks nodes that are ready to accept a TwigCallable instead of its name.
*/
#[\Attribute(\Attribute::TARGET_METHOD)]
final class FirstClassTwigCallableReady
{
}

View File

@@ -0,0 +1,20 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Attribute;
/**
* Marks nodes that are ready for using "yield" instead of "echo" or "print()" for rendering.
*/
#[\Attribute(\Attribute::TARGET_CLASS)]
final class YieldReady
{
}

View File

@@ -0,0 +1,88 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Cache;
/**
* Chains several caches together.
*
* Cached items are fetched from the first cache having them in its data store.
* They are saved and deleted in all adapters at once.
*
* @author Quentin Devos <quentin@devos.pm>
*/
final class ChainCache implements CacheInterface, RemovableCacheInterface
{
/**
* @param iterable<CacheInterface> $caches The ordered list of caches used to store and fetch cached items
*/
public function __construct(
private iterable $caches,
) {
}
public function generateKey(string $name, string $className): string
{
return $className.'#'.$name;
}
public function write(string $key, string $content): void
{
$splitKey = $this->splitKey($key);
foreach ($this->caches as $cache) {
$cache->write($cache->generateKey(...$splitKey), $content);
}
}
public function load(string $key): void
{
[$name, $className] = $this->splitKey($key);
foreach ($this->caches as $cache) {
$cache->load($cache->generateKey($name, $className));
if (class_exists($className, false)) {
break;
}
}
}
public function getTimestamp(string $key): int
{
$splitKey = $this->splitKey($key);
foreach ($this->caches as $cache) {
if (0 < $timestamp = $cache->getTimestamp($cache->generateKey(...$splitKey))) {
return $timestamp;
}
}
return 0;
}
public function remove(string $name, string $cls): void
{
foreach ($this->caches as $cache) {
if ($cache instanceof RemovableCacheInterface) {
$cache->remove($name, $cls);
}
}
}
/**
* @return string[]
*/
private function splitKey(string $key): array
{
return array_reverse(explode('#', $key, 2));
}
}

View File

@@ -16,7 +16,7 @@ namespace Twig\Cache;
*
* @author Andrew Tch <andrew@noop.lv>
*/
class FilesystemCache implements CacheInterface
class FilesystemCache implements CacheInterface, RemovableCacheInterface
{
public const FORCE_BYTECODE_INVALIDATION = 1;
@@ -50,11 +50,11 @@ class FilesystemCache implements CacheInterface
if (false === @mkdir($dir, 0777, true)) {
clearstatcache(true, $dir);
if (!is_dir($dir)) {
throw new \RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir));
throw new \RuntimeException(\sprintf('Unable to create the cache directory (%s).', $dir));
}
}
} elseif (!is_writable($dir)) {
throw new \RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir));
throw new \RuntimeException(\sprintf('Unable to write in the cache directory (%s).', $dir));
}
$tmpFile = tempnam($dir, basename($key));
@@ -73,7 +73,15 @@ class FilesystemCache implements CacheInterface
return;
}
throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $key));
throw new \RuntimeException(\sprintf('Failed to write cache file "%s".', $key));
}
public function remove(string $name, string $cls): void
{
$key = $this->generateKey($name, $cls);
if (!@unlink($key) && file_exists($key)) {
throw new \RuntimeException(\sprintf('Failed to delete cache file "%s".', $key));
}
}
public function getTimestamp(string $key): int

View File

@@ -16,7 +16,7 @@ namespace Twig\Cache;
*
* @author Fabien Potencier <fabien@symfony.com>
*/
final class NullCache implements CacheInterface
final class NullCache implements CacheInterface, RemovableCacheInterface
{
public function generateKey(string $name, string $className): string
{
@@ -35,4 +35,8 @@ final class NullCache implements CacheInterface
{
return 0;
}
public function remove(string $name, string $cls): void
{
}
}

View File

@@ -0,0 +1,25 @@
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Cache;
/**
* Implements a cache on the filesystem that can only be read, not written to.
*
* @author Quentin Devos <quentin@devos.pm>
*/
class ReadOnlyFilesystemCache extends FilesystemCache
{
public function write(string $key, string $content): void
{
// Do nothing with the content, it's a read-only filesystem.
}
}

Some files were not shown because too many files have changed in this diff Show More