Compare commits

..

25 Commits

Author SHA1 Message Date
Stephen Abello
8a6378b85c N°9937 - Restore modal icon spins around the text 2026-08-17 14:38:42 +02:00
Stephen Abello
23e4ce7263 N°9128 - Add padding to fullscreen CKEditor (#998) 2026-08-13 09:29:41 +02:00
Molkobain
f657308137 Fix PHP code styles for Chinese dictionaries 2026-08-06 16:33:31 +02:00
Molkobain
64394099f7 📝 Add 3.2.3-1 and 3.2.3-2 to version history 2026-08-06 13:37:44 +02:00
Purple Grape
c7570d62c1 N°9889 - Update zh_cn translation for 3.2 branch (#938)
* rebase on the latest 3.2 branch

rebase

Co-Authored-By: Thomas Casteleyn <thomas.casteleyn@me.com>

* Update zh_cn.dict.authent-cas.php

* Update zh_cn.dict.authent-external.php

* Update zh_cn.dict.authent-ldap.php

* Update zh_cn.dict.authent-local.php

* Update zh_cn.dict.combodo-backoffice-darkmoon-theme.php

* Update zh_cn.dict.itop-backup.php

* Update zh_cn.dict.itop-change-mgmt.php

* Update zh_cn.dict.itop-faq-light.php

* Update zh_cn.dict.itop-config.php

* Update zh_cn.dict.itop-config-mgmt.php

* Update zh_cn.dict.itop-hub-connector.php

* Update zh_cn.dict.itop-knownerror-mgmt.php

* Update zh_cn.dictionary.itop.core.php

* Update zh_cn.dict.authent-cas.php

* Update zh_cn.dict.authent-external.php

* Update zh_cn.dict.authent-ldap.php

* Update zh_cn.dict.authent-local.php

* Update zh_cn.dict.combodo-backoffice-darkmoon-theme.php

* Update zh_cn.dict.itop-backup.php

* Update zh_cn.dict.itop-config-mgmt.php

* Update zh_cn.dict.itop-config.php

* Update zh_cn.dict.itop-faq-light.php

* update  license  url

* Update datamodels/2.x/authent-ldap/dictionaries/zh_cn.dict.authent-ldap.php

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@me.com>

* Update datamodels/2.x/authent-cas/dictionaries/en.dict.authent-cas.php

---------

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@me.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2026-08-04 15:26:11 +02:00
Benjamin DALSASS
fa66a09104 N°9838 - Polishing CKEditor for iTop 3.2.4
- fix php unit test
2026-07-28 09:39:58 +02:00
Benjamin DALSASS
476ec75a2e N°9838 - Polishing CKEditor for iTop 3.2.4 2026-07-28 08:39:24 +02:00
Stephen Abello
42007ffd95 N°9702 - Fix user rights matrix display when an accessibility theme displayed a visual cue 2026-07-24 14:28:59 +02:00
Molkobain
d88687527e Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-07-23 10:49:09 +02:00
odain-cbd
73ede13443 N°9746 - Synchro execution time change fixes (#951)
* N°9746 - Synchro execution can make damage during time change (object deletions)

* N°9746 - handle timechange during synchro execution + cleanup m_bIsImportPhaseDateKnown

* N°9746 - PR fix

* N°9746 - add corner test case
2026-07-21 08:01:31 +02:00
Anne-Catherine
5715e0484f N°9759 - Truncating AttributeText doesn't work as expected in case of multibytes characters (#964)
* N°9759 - Truncate AttributeText don't work as expected in case of multibytes characters

* WIP

* Move TrimValue() base definition to AttributeDefinition class, assign DBObject::SetTrim old behavior to it

* Fix variable types

* Fix variable types

* Apply code review fixes, add tests

* Define GetSize in AttributeDefinition to easy polymorphic calls instead of obscure AttributeDBFieldVoid

* Update php with right since version and ticket, remove useless method overload

* Apply suggestions from code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/attributedef.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/attributedef.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Apply suggestion from @Molkobain code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Apply suggestion from @Molkobain code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Apply suggestion from @Molkobain code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Apply suggestion from @Molkobain code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Apply suggestion from @Molkobain code review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Correctly handle null values in new methods

---------

Co-authored-by: Stephen Abello <stephen.abello@combodo.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2026-07-17 16:40:09 +02:00
Benjamin DALSASS
8f87c759b5 N°9635 - Twig security issues CVE-2026-46633 and CVE-2026-46639 and CVE-2026-46640 2026-07-07 13:47:15 +02:00
odain
4b4fe55060 N°9689 - Fix itop-portal-base dependancy 2026-07-03 11:49:47 +02:00
Molkobain
9ae813db2b Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-07-02 21:08:45 +02:00
Molkobain
d6ef4fb7bb N°9687 - Fix incorrect return type for the DBObjectSearch::ApplyDataFilter() function (#939)
* N°9687 - Fix incorrect return type for the DBObjectSearch::ApplyDataFilter() function

* N°9687 - Add unit test

* N°9687 - Improve unit test after code review

* N°9687 - Improve unit test after code review
2026-07-02 16:11:32 +02:00
Molkobain
1d9e7f9b55 Update test so it works on both ITIL and standard request management 2026-06-20 17:47:19 +02:00
Molkobain
ff2357473b Add comment on dictionary tests to explain how uncomplete they are compared to whet they seem to do 2026-06-20 10:27:58 +02:00
Molkobain
9a93bcb06f PHP Code Styles: Fix composer.lock to be compatible with platform requirements (PHP 8.1) 2026-06-20 10:11:45 +02:00
odain
feb89650e4 curl_close deprecated in PHP 8.5 2026-06-02 17:47:10 +02:00
lenaick.moreira
eef06ee032 Merge branch 'support/3.2.3' into support/3.2 2026-05-20 14:20:43 +02:00
Molkobain
e65542f978 Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-05-07 18:54:39 +02:00
Molkobain
769afb2715 Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-05-06 14:52:10 +02:00
Molkobain
a7d0262b21 Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-05-06 11:18:36 +02:00
Molkobain
43ceaeb5a3 Merge remote-tracking branch 'origin/support/3.2.3' into support/3.2 2026-05-04 16:42:30 +02:00
Stephen Abello
de4ec9d9ce N°9128 - Update CKEditor5 to v48 (#896)
* N°9128 - Update CKEditor5 to v48

* Move some CSS vars to ckeditor, align variable overload in portal and backoffice

* Add specifics to 3.2 portal

* Update CKEditor5 build files

* Update scssphp with patched version that handles pseudo selectors and attribute selectors

* Update scssphp patched version to fix missing $this

* Fix translations specific language file import

* Remove unused maximize parameters

* Update CKEditor5 build files

* Fix font size/color for 3.2 portal

* Avoid CKEditor styles from bleeding into fields
2026-04-29 16:56:20 +02:00
390 changed files with 17581 additions and 3072 deletions

View File

@@ -106,6 +106,9 @@ gitGraph
commit id: "2025-09-25" tag: "2.7.13"
checkout support/3.2
commit id: "2026-04-27 " tag: "3.2.3"
checkout support/3.2.3
commit id: "2026-05-25 " tag: "3.2.3-1"
commit id: "2026-07-17 " tag: "3.2.3-2"
```
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).

View File

@@ -1922,7 +1922,9 @@ SQL;
$aResponseHeaders[$sName] = $sValue;
}
}
curl_close($ch);
if (PHP_VERSION_ID < 80000) {
curl_close($ch);
}
return $response;
}

23
composer.lock generated
View File

@@ -1592,12 +1592,12 @@
"source": {
"type": "git",
"url": "https://github.com/combodo-itop-libs/scssphp.git",
"reference": "dde81c0a39d02e8e6fc81b70269747734e16d526"
"reference": "6820f035182a956c355cbfa7882d90f1198a208b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/combodo-itop-libs/scssphp/zipball/dde81c0a39d02e8e6fc81b70269747734e16d526",
"reference": "dde81c0a39d02e8e6fc81b70269747734e16d526",
"url": "https://api.github.com/repos/combodo-itop-libs/scssphp/zipball/6820f035182a956c355cbfa7882d90f1198a208b",
"reference": "6820f035182a956c355cbfa7882d90f1198a208b",
"shasum": ""
},
"require": {
@@ -1667,7 +1667,7 @@
"support": {
"source": "https://github.com/combodo-itop-libs/scssphp/tree/combodo/1.x"
},
"time": "2026-03-23T15:26:59+00:00"
"time": "2026-04-23T14:20:24+00:00"
},
{
"name": "soundasleep/html2text",
@@ -4787,16 +4787,16 @@
},
{
"name": "twig/twig",
"version": "v3.23.0",
"version": "v3.28.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
"reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/597c12ed286fb9d1701a36684ce6e0cbe28ebc8b",
"reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b",
"shasum": ""
},
"require": {
@@ -4806,7 +4806,8 @@
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
"php-cs-fixer/shim": "^3.0@stable",
"phpstan/phpstan": "^2.0@stable",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
@@ -4850,7 +4851,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.23.0"
"source": "https://github.com/twigphp/Twig/tree/v3.28.0"
},
"funding": [
{
@@ -4862,7 +4863,7 @@
"type": "tidelift"
}
],
"time": "2026-01-23T21:00:41+00:00"
"time": "2026-07-03T20:44:34+00:00"
}
],
"packages-dev": [

View File

@@ -897,6 +897,60 @@ abstract class AttributeDefinition
return null;
}
/**
* Return the size of $value, expressed in the same unit as {@see static::GetMaxSize()} for this attribute class.
*
* Default unit is a number of **characters**, matching MySQL VARCHAR(M) semantics for VARCHAR-based attributes.
* Byte-based attributes (e.g. {@see AttributeText}, stored as MySQL TEXT which is limited to 65535 **bytes**,
* not characters) MUST override both this method and {@see TrimValue()} consistently.
*
* @param string|null $sValue
*
* @return int Size of $value in the unit of GetMaxSize() (characters by default)
* @since 3.2.3-2 3.2.4 3.3.0 N°9759
*/
public function GetSize(?string $sValue)
{
// If the value is null, we return 0
if ($sValue === null) {
return 0;
}
return mb_strlen($sValue);
}
/**
* Helper to set a value that fits the attribute max size
*
* Truncation is performed in the same unit as GetMaxSize() / {@see GetSize()}: a number of **characters**
* by default (VARCHAR-based attributes). When truncated, a " -truncated (N chars)" suffix is appended and
* the returned value (suffix included) still fits within GetMaxSize().
*
* Default behavior is what DBObject::SetTrim used to do, now delegated to AttributeDefinition
*
* @param string|null $sValue
*
* @return string $sValue truncated so that it fits within {@see GetMaxSize()}.
* @since 3.2.3-2 3.2.4 3.3.0 N°9759
*/
public function TrimValue(?string $sValue)
{
// If the value is null, we return an empty string
if ($sValue === null) {
return '';
}
$iMaxSize = $this->GetMaxSize();
$iLength = mb_strlen($sValue);
if ($iMaxSize && ($iLength > $iMaxSize)) {
$sMessage = " -truncated ($iLength chars)";
return mb_substr($sValue, 0, $iMaxSize - mb_strlen($sMessage)).$sMessage;
}
return $sValue;
}
/**
* @return mixed|null
* @deprecated never used
@@ -4219,6 +4273,51 @@ class AttributeText extends AttributeString
return "TEXT".CMDBSource::GetSqlStringColumnDefinition();
}
/**
* @inheritDoc
*
* Unlike the default implementation, the size is expressed in **bytes**: MySQL TEXT columns are limited
* in bytes (65535), not in characters, and {@see static::GetMaxSize()} for this class returns a number of bytes.
*/
public function GetSize(?string $sValue)
{
// If the value is null, we return 0
if ($sValue === null) {
return 0;
}
return strlen($sValue);
}
/**
* @inheritDoc
*
* Truncation is performed on a **byte** budget (MySQL TEXT limit) without ever cutting through a multibyte
* UTF-8 sequence: the returned value is always valid UTF-8 and never exceeds GetMaxSize() bytes,
* truncation suffix included.
*/
public function TrimValue(?string $sValue)
{
// If the value is null, we return an empty string
if ($sValue === null) {
return '';
}
$iMaxSize = $this->GetMaxSize();
$iLength = strlen($sValue);
$iLengthChar = mb_strlen($sValue);
if ($iMaxSize && ($iLength > $iMaxSize)) {
$sMessage = " -truncated ($iLengthChar chars)";
$iTruncatedValueMaxSize = $iMaxSize - strlen($sMessage);
// mb_strcut cuts on a byte budget but moves the cut point back to a character boundary,
// so it never returns a broken multibyte sequence at the end of the value
$sTruncatedValue = mb_strcut($sValue, 0, $iTruncatedValueMaxSize, 'UTF-8');
return $sTruncatedValue.$sMessage;
}
return $sValue;
}
public function GetSQLColumns($bFullSpec = false)
{
$aColumns = [];

View File

@@ -732,13 +732,8 @@ abstract class DBObject implements iDisplay
public function SetTrim($sAttCode, $sValue)
{
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
$iMaxSize = $oAttDef->GetMaxSize();
$sLength = mb_strlen($sValue);
if ($iMaxSize && ($sLength > $iMaxSize)) {
$sMessage = " -truncated ($sLength chars)";
$sValue = mb_substr($sValue, 0, $iMaxSize - mb_strlen($sMessage)).$sMessage;
}
$this->Set($sAttCode, $sValue);
$this->Set($sAttCode, $oAttDef->TrimValue($sValue));
}
/**
@@ -2040,7 +2035,7 @@ abstract class DBObject implements iDisplay
}
}
if (!is_null($iMaxSize = $oAtt->GetMaxSize())) {
$iLen = mb_strlen($toCheck);
$iLen = $oAtt->GetSize($toCheck);
if ($iLen > $iMaxSize) {
return "String too long (found $iLen, limited to $iMaxSize)";
}

View File

@@ -1928,9 +1928,8 @@ class DBObjectSearch extends DBSearch
/**
* @inheritDoc
* @return DBObjectSearch
*/
protected function ApplyDataFilters(): DBObjectSearch
protected function ApplyDataFilters(): DBSearch
{
if ($this->IsAllDataAllowed() || $this->IsDataFiltered()) {
return $this;

View File

@@ -676,9 +676,8 @@ class DBUnionSearch extends DBSearch
/**
* @inheritDoc
* @return DBUnionSearch
*/
protected function ApplyDataFilters(): DBUnionSearch
protected function ApplyDataFilters(): DBSearch
{
if ($this->IsAllDataAllowed() || $this->IsDataFiltered()) {
return $this;

View File

@@ -4,7 +4,7 @@
*/
$ibo-user-rights--padding-x: $ibo-spacing-400 !default;
$ibo-user-rights--padding-y: $ibo-spacing-200 !default;
$ibo-user-rights--padding-y: $ibo-spacing-100 !default;
$ibo-user-rights--border-radius: $ibo-border-radius-400 !default;
$ibo-user-rights--is-success--background-color: $ibo-color-success-100 !default;
@@ -18,6 +18,8 @@ $ibo-user-rights--is-failure--border-color: $ibo-color-danger-500 !default;
$ibo-user-rights--is-failure--border: 1px solid $ibo-user-rights--is-failure--border-color !default;
.ibo-user-rights {
display: inline-flex;
align-items: baseline;
padding: $ibo-user-rights--padding-y $ibo-user-rights--padding-x;
border-radius: $ibo-user-rights--border-radius;
&.ibo-is-success {

View File

@@ -247,7 +247,8 @@ $ibo-quick-create--compartment--placeholder-hint--text-color: $ibo-color-grey-70
&:hover {
cursor: pointer;
@extend a;
color: $ibo-hyperlink-color--on-hover;
text-decoration: $ibo-hyperlink-text-decoration--on-hover;
}
.highlight {

View File

@@ -28,6 +28,15 @@ $ibo-vendors-ckeditor--ck-mentions--item--padding-x: $ibo-spacing-300 !default;
$ibo-vendors-ckeditor--ck-mentions--item--padding-y: $ibo-spacing-200 !default;
/* CSS3 variables */
:root {
--ck-content-font-family: inherit;
--ck-content-font-color: inherit;
--ck-content-font-size: inherit;
--ck-content-line-height: inherit;
--ck-content-word-break: inherit;
--ck-content-overflow-wrap: inherit;
}
.ck {
--ck-color-list-button-on-background: #{$ibo-vendors-ckeditor--ck-color-list-button-on-background};
--ck-color-list-button-on-background-focus: #{$ibo-vendors-ckeditor--ck-color-list-button-on-background-focus};
@@ -61,7 +70,7 @@ $ibo-vendors-ckeditor--ck-mentions--item--padding-y: $ibo-spacing-200 !default;
}
}
.ck-editor__editable_inline:not(.ck-comment__input *) {
.ck-editor__editable_inline:not(.ck-comment__input *), .ck-source-editing-area {
height: 200px;
}
@@ -75,11 +84,6 @@ $ibo-vendors-ckeditor--ck-mentions--item--padding-y: $ibo-spacing-200 !default;
}
}
// N°7552 Allow source editing area to be scrollable in full screen
.ck-maximize_editor_main .ck-source-editing-area textarea{
overflow: auto !important;
}
/* Mentions */
.ck-mentions {
.ck-button {

File diff suppressed because one or more lines are too long

View File

@@ -6,8 +6,9 @@
* @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登录',
'CAS:Login:SignInTooltip' => '点击这里使用CAS服务器认证',
'CAS:Login:SignIn' => '使用 CAS 登录',
'CAS:Login:SignInTooltip' => '点击这里使用 CAS 服务器认证',
]);

View File

@@ -5,10 +5,8 @@
*
* @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
@@ -23,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -32,9 +31,11 @@
// 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

@@ -6,7 +6,6 @@
* @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
@@ -22,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -31,13 +31,15 @@
// 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认证',
'UserLDAP:server' => 'LDAP详情',
'Class:UserLDAP' => 'LDAP 用户',
'Class:UserLDAP+' => '用户身份由 LDAP 认证',
'UserLDAP:server' => 'LDAP 详情',
]);
//
@@ -45,6 +47,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserLDAP/Attribute:ldap_server' => 'Ldap server~~',
'Class:UserLDAP/Attribute:ldap_server+' => '~~',
'Class:UserLDAP/Attribute:ldap_server' => 'LDAP 服务器',
'Class:UserLDAP/Attribute:ldap_server+' => '',
]);

View File

@@ -6,7 +6,6 @@
* @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
@@ -22,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -31,16 +31,19 @@
// 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' => '密码过期时间',
'Class:UserLocal/Attribute:expiration+' => '密码过期状态 (需要扩展才能生效)',
'Class:UserLocal/Attribute:expiration/Value:can_expire' => '允许过期',
'Class:UserLocal/Attribute:expiration/Value:can_expire+' => '',
'Class:UserLocal/Attribute:expiration/Value:never_expire' => '永不过期',
@@ -49,8 +52,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserLocal/Attribute:expiration/Value:force_expire+' => '',
'Class:UserLocal/Attribute:expiration/Value:otp_expire' => '一次性密码',
'Class:UserLocal/Attribute:expiration/Value:otp_expire+' => '用户不允许修改密码.',
'Class:UserLocal/Attribute:password_renewed_date' => '密码更新',
'Class:UserLocal/Attribute:password_renewed_date' => '密码更新时间',
'Class:UserLocal/Attribute:password_renewed_date+' => '上次修改密码的时间',
'Error:UserLocalPasswordValidator:UserPasswordPolicyRegex:ValidationFailed' => '密码必须至少12个字符, 包含大小写, 数字和特殊字符.',
'UserLocal:password:expiration' => '下面的区域需要插件扩展',
'Class:UserLocal/Error:OneTimePasswordChangeIsNotAllowed' => '不允许用户为自己设置 "一次性密码" 的失效期限',

View File

@@ -21,6 +21,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', '简体中文', [
'theme:darkmoon' => '暗月',
'theme:darkmoon' => 'Dark moon',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -23,5 +23,5 @@
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:fullmoon-high-contrast' => 'Fullmoon (High contrast)~~',
'theme:fullmoon-high-contrast' => 'Fullmoon (高对比度)',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -23,5 +23,5 @@
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:fullmoon-protanopia-deuteranopia' => 'Fullmoon (Protanopia & Deuteranopia)~~',
'theme:fullmoon-protanopia-deuteranopia' => 'Fullmoon (红绿色盲 & 绿色色盲)',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -23,5 +23,5 @@
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:fullmoon-tritanopia' => 'Fullmoon (Tritanopia)~~',
'theme:fullmoon-tritanopia' => 'Fullmoon (黄蓝色盲)',
]);

View File

@@ -1,15 +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
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Attachments:TabTitle_Count' => '附件 (%1$d)',
'Attachments:EmptyTabTitle' => '附件',
@@ -23,7 +31,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Attachment:Max_Mo' => '(最大文件尺寸: %1$s MB)',
'Attachment:Max_Ko' => '(最大文件尺寸: %1$s KB)',
'Attachments:NoAttachment' => '没有附件. ',
'Attachments:PreviewNotAvailable' => '此附件类型不支持预览.',
'Attachments:PreviewNotAvailable' => '此类型的附件不支持预览.',
'Attachments:Error:FileTooLarge' => '上传的文件过大. %1$s',
'Attachments:Error:UploadedFileEmpty' => '收到的文件为空, 无法添加.
可能是因为您发送的是空文件,
@@ -42,9 +50,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Attachment+' => '',
'Class:Attachment/Attribute:expire' => '过期',
'Class:Attachment/Attribute:expire+' => '',
'Class:Attachment/Attribute:temp_id' => '临时编号',
'Class:Attachment/Attribute:temp_id' => '临时id',
'Class:Attachment/Attribute:temp_id+' => '',
'Class:Attachment/Attribute:item_class' => '项目类',
'Class:Attachment/Attribute:item_class' => '项目类',
'Class:Attachment/Attribute:item_class+' => '',
'Class:Attachment/Attribute:item_id' => '项目',
'Class:Attachment/Attribute:item_id+' => '',
@@ -69,11 +77,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
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:Attachment/Attribute:creation_date+' => '',
'Class:Attachment/Attribute:user_id' => '用户id',
'Class:Attachment/Attribute:user_id+' => '',
'Class:Attachment/Attribute:contact_id' => '联系人id',
'Class:Attachment/Attribute:contact_id+' => '',
]);
//
@@ -81,6 +89,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:TriggerOnAttachmentDownload' => '触发器 (对象附件下载时)',
'Class:TriggerOnAttachmentDownload+' => '触发器于指定类型 [子类型] 对象附件下载时',
'Class:TriggerOnAttachmentDownload' => '触发器 (对象附件下载时)',
'Class:TriggerOnAttachmentDownload+' => '触发器于指定类别(含子类)对象附件下载时',
]);

View File

@@ -21,25 +21,28 @@
* 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', '简体中文', [
'bkp-backup-running' => '备份正在进行, 请稍候...',
'bkp-restore-running' => '还原正在进行, 请稍...',
'bkp-restore-running' => '还原正在进行, 请稍...',
'Menu:BackupStatus' => '定时备份',
'bkp-status-title' => '定时备份',
'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-mysqldump-ok' => 'mysqldump 已存在: %1$s',
'bkp-mysqldump-notfound' => 'mysqldump 找不到: %1$s - 请确认它安装在正确的路径, 或者调整配置文件参数 mysql_bindir.',
'bkp-mysqldump-issue' => 'mysqldump 无法运行 (retcode=%1$d): 请确认它安装在正确的路径, 或者调整配置文件参数 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-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-week-days' => '在每个 <b>%1$s%2$s </b>进行备份',
'bkp-retention' => '最多保留 <b>%1$d 个备份</b>.',
'bkp-next-to-delete' => '当下一次备份时将被删除 (设置 "保留个数")',
'bkp-table-file' => '文件',
'bkp-table-file+' => '只有扩展名是.zip的文件才被认为是备份文件',
'bkp-table-file+' => '只有扩展名是.zip 的文件才被认为是备份文件',
'bkp-table-size' => '大小',
'bkp-table-size+' => '',
'bkp-table-actions' => '操作',

View File

@@ -21,7 +21,6 @@
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\FieldSet\FieldSet;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Spinner\SpinnerUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory;
@@ -410,8 +409,11 @@ JS
$sEnvironment = addslashes(utils::GetCurrentEnvironment());
$oModalSpinner = SpinnerUIBlockFactory::MakeMedium(null, $sPleaseWaitBackup);
$sModalSpinnerHtml = BlockRenderer::RenderBlockTemplates($oModalSpinner);
$oBackupModalSpinner = SpinnerUIBlockFactory::MakeMedium(null, $sPleaseWaitBackup);
$sBackupModalSpinnerHtml = BlockRenderer::RenderBlockTemplates($oBackupModalSpinner);
$oRestoreModalSpinner = SpinnerUIBlockFactory::MakeMedium(null, $sPleaseWaitRestore);
$sRestoreModalSpinnerHtml = BlockRenderer::RenderBlockTemplates($oRestoreModalSpinner);
$oP->add_script(
<<<JS
@@ -424,7 +426,7 @@ function LaunchBackupNow()
{
const oModal = CombodoModal.OpenModal({
title: '$sBackUpNow',
content: `$sModalSpinnerHtml`
content: `$sBackupModalSpinnerHtml`
});
var oParams = {};
@@ -450,10 +452,10 @@ function LaunchRestoreNow(sBackupFile, sConfirmationMessage)
{
return;
}
const oModal = CombodoModal.OpenModal({
title: '$sRestore',
content: '<i class="ajax-spin fas fa-sync-alt fa-spin"></i> $sPleaseWaitRestore'
content: `$sRestoreModalSpinnerHtml`
});
$('#backup_success').addClass('ibo-is-hidden');

View File

@@ -17,10 +17,11 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
* @author Benjamin Planque <benjamin.planque@combodo.com>
* @author Benjamin Planque <benjamin.planque@combodo.com>
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
@@ -31,8 +32,9 @@
//
// Class: lnkFunctionalCIToProviderContract
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract' => '链接 功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
@@ -50,9 +52,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToService' => '关联 功能配置项/服务',
'Class:lnkFunctionalCIToService' => '链接 功能配置项/服务',
'Class:lnkFunctionalCIToService+' => '',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToService/Attribute:service_id' => '服务',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:service_name' => '服务名称',
@@ -80,7 +82,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Document/Attribute:contracts_list' => '合同',
'Class:Document/Attribute:contracts_list+' => '此文档关的所有合同',
'Class:Document/Attribute:contracts_list+' => '此文档关的所有合同',
'Class:Document/Attribute:services_list' => '服务',
'Class:Document/Attribute:services_list+' => '此文档关的所有服务',
'Class:Document/Attribute:services_list+' => '此文档关的所有服务',
]);

View File

@@ -17,10 +17,11 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
* @author Benjamin Planque <benjamin.planque@combodo.com>
*/
* @author Benjamin Planque <benjamin.planque@combodo.com>
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
@@ -28,11 +29,13 @@
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
//
// Class: lnkFunctionalCIToTicket
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToTicket' => '关联 功能配置项/工单',
'Class:lnkFunctionalCIToTicket' => '链接 功能配置项/工单',
'Class:lnkFunctionalCIToTicket+' => '',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => '工单',
@@ -40,7 +43,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => '工单编号',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_title' => '工单标题',
'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' => '配置项名称',
@@ -50,7 +53,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToTicket/Attribute:impact_code' => '影响',
'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:impact_code/Value:not_impacted' => '不受影响',
]);
//

View File

@@ -21,25 +21,26 @@
* 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:NewChange+' => '新建变更工单',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更工单',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => '等待核的变更',
'Menu:WaitingAcceptance' => '等待核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批的变更',
'Menu:WaitingApproval' => '等待批的变更',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:Changes' => '所有待处理的变更',
'Menu:Changes+' => '所有待处理的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
@@ -76,9 +77,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Change/Attribute:status/Value:assigned+' => '',
'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:approved+' => '',
'Class:Change/Attribute:status/Value:notapproved' => '未批准',
'Class:Change/Attribute:status/Value:notapproved' => '已驳回',
'Class:Change/Attribute:status/Value:notapproved+' => '',
'Class:Change/Attribute:status/Value:implemented' => '已实施',
'Class:Change/Attribute:status/Value:implemented+' => '',
@@ -125,7 +126,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_request_list+' => '此变更相关的所有需求',
'Class:Change/Attribute:related_problems_list' => '相关问题',
'Class:Change/Attribute:related_problems_list+' => '此变更相关的所有问题',
'Class:Change/Attribute:related_incident_list' => '相关事件',
@@ -150,7 +151,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_notapprove+' => '',
'Class:Change/Stimulus:ev_implement' => '实施',
'Class:Change/Stimulus:ev_implement+' => '',
@@ -181,7 +182,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_notapprove+' => '',
'Class:RoutineChange/Stimulus:ev_implement' => '实施',
'Class:RoutineChange/Stimulus:ev_implement+' => '',
@@ -196,11 +197,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ApprovedChange' => '已批的变更',
'Class:ApprovedChange' => '已批的变更',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => '批日期',
'Class:ApprovedChange/Attribute:approval_date' => '批日期',
'Class:ApprovedChange/Attribute:approval_date+' => '',
'Class:ApprovedChange/Attribute:approval_comment' => '批说明',
'Class:ApprovedChange/Attribute:approval_comment' => '批说明',
'Class:ApprovedChange/Attribute:approval_comment+' => '',
'Class:ApprovedChange/Stimulus:ev_validate' => '同意',
'Class:ApprovedChange/Stimulus:ev_validate+' => '',
@@ -216,7 +217,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_notapprove+' => '',
'Class:ApprovedChange/Stimulus:ev_implement' => '实施',
'Class:ApprovedChange/Stimulus:ev_implement+' => '',
@@ -251,7 +252,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_notapprove+' => '',
'Class:NormalChange/Stimulus:ev_implement' => '实施',
'Class:NormalChange/Stimulus:ev_implement+' => '',
@@ -282,7 +283,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_notapprove+' => '',
'Class:EmergencyChange/Stimulus:ev_implement' => '实施',
'Class:EmergencyChange/Stimulus:ev_implement+' => '',

View File

@@ -21,25 +21,26 @@
* 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:NewChange+' => '新建变更工单',
'Menu:SearchChanges' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更',
'Menu:SearchChanges+' => '搜索变更工单',
'Menu:Change:Shortcuts' => '快捷方式',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => '等待核的变更',
'Menu:WaitingAcceptance' => '等待核的变更',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingApproval' => '等待批的变更',
'Menu:WaitingApproval' => '等待批的变更',
'Menu:WaitingApproval+' => '',
'Menu:Changes' => '所有打开的变更',
'Menu:Changes+' => '所有打开的变更',
'Menu:MyChanges' => '分配给我的变更',
'Menu:MyChanges+' => '分配给我的变更 (作为办理人)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类)',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => '最近一周的变更 (按类)',
'UI-ChangeManagementOverview-Last-7-days' => '最近一周的变更 (按数量)',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => '最近一周的变更 (按范围)',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => '最近一周的变更 (按状态)',
@@ -74,11 +75,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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+' => '',
'Class:Change/Attribute:category/Value:application' => '应用',
'Class:Change/Attribute:category/Value:application+' => '应用',
@@ -109,7 +110,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_request_list+' => '此变更相关的所有需求',
'Class:Change/Attribute:related_incident_list' => '相关事件',
'Class:Change/Attribute:related_incident_list+' => '此变更相关的所有事件',
'Class:Change/Attribute:related_problems_list' => '相关问题',

View File

@@ -21,23 +21,25 @@
* You should have received a copy of the GNU Affero General Public License
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
//////////////////////////////////////////////////////////////////////
// Relations
//////////////////////////////////////////////////////////////////////
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Relation:impacts/Description' => '影响的元素',
'Relation:impacts/DownStream' => '影响...',
'Relation:impacts/DownStream+' => '影响的元素',
'Relation:impacts/UpStream' => '依赖于...',
'Relation:impacts/UpStream+' => '此元素依赖的元素...',
'Relation:impacts/Description' => '影响的元素',
'Relation:impacts/DownStream' => '影响...',
'Relation:impacts/DownStream+' => '影响的元素',
'Relation:impacts/UpStream' => '依赖于...',
'Relation:impacts/UpStream+' => '被影响的元素...',
// Legacy entries
'Relation:depends on/Description' => '此元素依赖的元素...',
'Relation:depends on/DownStream' => '依赖于...',
'Relation:depends on/UpStream' => '影响...',
'Relation:impacts/LoadData' => '加载数据',
'Relation:impacts/NoFilteredData' => 'please select objects and load data~~',
'Relation:impacts/FilteredData' => 'Filtered data~~',
'Relation:depends on/Description' => '被影响的元素...',
'Relation:depends on/DownStream' => '依赖于...',
'Relation:depends on/UpStream' => '影响...',
'Relation:impacts/LoadData' => '加载数据',
'Relation:impacts/NoFilteredData' => '请选择对象并加载数据',
'Relation:impacts/FilteredData' => '已筛选的数据',
]);
// Dictionnay conventions
@@ -82,7 +84,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToFunctionalCI' => '关联联系人/功能项',
'Class:lnkContactToFunctionalCI' => '链接 联系人/功能项',
'Class:lnkContactToFunctionalCI+' => '',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id' => '功能项',
@@ -123,12 +125,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FunctionalCI/Attribute:contacts_list' => '联系人',
'Class:FunctionalCI/Attribute:contacts_list+' => '此配置项的所有联系人',
'Class:FunctionalCI/Attribute:documents_list' => '文档',
'Class:FunctionalCI/Attribute:documents_list+' => '此配置项关的所有文档',
'Class:FunctionalCI/Attribute:documents_list+' => '此配置项关的所有文档',
'Class:FunctionalCI/Attribute:applicationsolution_list' => '应用方案',
'Class:FunctionalCI/Attribute:applicationsolution_list+' => '此配置项依赖的所有应用方案',
'Class:FunctionalCI/Attribute:softwares_list' => '软件',
'Class:FunctionalCI/Attribute:softwares_list+' => '此配置项上已安装的所有软件',
'Class:FunctionalCI/Attribute:finalclass' => '类',
'Class:FunctionalCI/Attribute:finalclass' => '配置项子类',
'Class:FunctionalCI/Attribute:finalclass+' => '根本属性的名称',
'Class:FunctionalCI/Tab:OpenedTickets' => '活跃的工单',
'Class:FunctionalCI/Tab:OpenedTickets+' => '影响当前功能配置项的活跃工单',
@@ -144,7 +146,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s',
'Class:PhysicalDevice/Attribute:serialnumber' => '序列号',
'Class:PhysicalDevice/Attribute:serialnumber+' => '',
'Class:PhysicalDevice/Attribute:location_id' => '地点',
'Class:PhysicalDevice/Attribute:location_id' => '位置',
'Class:PhysicalDevice/Attribute:location_id+' => '',
'Class:PhysicalDevice/Attribute:location_name' => '名称',
'Class:PhysicalDevice/Attribute:location_name+' => '',
@@ -219,7 +221,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:MobilePhone+' => '',
'Class:MobilePhone/Attribute:imei' => 'IMEI',
'Class:MobilePhone/Attribute:imei+' => '',
'Class:MobilePhone/Attribute:hw_pin' => '硬件 PIN 码',
'Class:MobilePhone/Attribute:hw_pin' => '硬件PIN 码',
'Class:MobilePhone/Attribute:hw_pin+' => '',
]);
@@ -250,7 +252,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ConnectableCI+' => '物理配置项',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s',
'Class:ConnectableCI/Attribute:networkdevice_list' => '网络设备',
'Class:ConnectableCI/Attribute:networkdevice_list+' => '所有连接到这台设备的网络设备',
'Class:ConnectableCI/Attribute:networkdevice_list+' => '所有连接到设备的网络设备',
'Class:ConnectableCI/Attribute:physicalinterface_list' => '网卡',
'Class:ConnectableCI/Attribute:physicalinterface_list+' => '所有物理网卡',
]);
@@ -275,20 +277,20 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DatacenterDevice/Attribute:nb_u+' => '',
'Class:DatacenterDevice/Attribute:managementip' => '管理IP',
'Class:DatacenterDevice/Attribute:managementip+' => '',
'Class:DatacenterDevice/Attribute:powerA_id' => '电源',
'Class:DatacenterDevice/Attribute:powerA_id' => '电源A',
'Class:DatacenterDevice/Attribute:powerA_id+' => '',
'Class:DatacenterDevice/Attribute:powerA_name' => '电源名称',
'Class:DatacenterDevice/Attribute:powerA_name' => '电源A名称',
'Class:DatacenterDevice/Attribute:powerA_name+' => '',
'Class:DatacenterDevice/Attribute:powerB_id' => '电源',
'Class:DatacenterDevice/Attribute:powerB_id' => '电源B',
'Class:DatacenterDevice/Attribute:powerB_id+' => '',
'Class:DatacenterDevice/Attribute:powerB_name' => '电源名称',
'Class:DatacenterDevice/Attribute:powerB_name' => '电源B名称',
'Class:DatacenterDevice/Attribute:powerB_name+' => '',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => '光纤接口',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => '光口',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => '此设备的所有光纤接口',
'Class:DatacenterDevice/Attribute:san_list' => 'SAN',
'Class:DatacenterDevice/Attribute:san_list+' => '所有连接到这台设备的SAN交换机',
'Class:DatacenterDevice/Attribute:san_list' => '光纤交换机',
'Class:DatacenterDevice/Attribute:san_list+' => '连接到设备的所有光纤交换机',
'Class:DatacenterDevice/Attribute:redundancy' => '冗余',
'Class:DatacenterDevice/Attribute:redundancy/count' => '此设备运行正常至少需要一路电源 (主或备)',
'Class:DatacenterDevice/Attribute:redundancy/count' => '此设备运行正常至少需要一路电源 (A或B)',
// Unused yet
'Class:DatacenterDevice/Attribute:redundancy/disabled' => '所有电源正常, 此设备才正常',
'Class:DatacenterDevice/Attribute:redundancy/percent' => '至少%1$s %%路电源正常, 设备才正常',
@@ -308,9 +310,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:NetworkDevice/Attribute:networkdevicetype_name+' => '',
'Class:NetworkDevice/Attribute:connectablecis_list' => '设备',
'Class:NetworkDevice/Attribute:connectablecis_list+' => '连接到此网络设备的所有设备',
'Class:NetworkDevice/Attribute:iosversion_id' => 'IOS版本',
'Class:NetworkDevice/Attribute:iosversion_id' => 'IOS 版本',
'Class:NetworkDevice/Attribute:iosversion_id+' => '',
'Class:NetworkDevice/Attribute:iosversion_name' => 'IOS版本名称',
'Class:NetworkDevice/Attribute:iosversion_name' => 'IOS 版本名称',
'Class:NetworkDevice/Attribute:iosversion_name+' => '',
'Class:NetworkDevice/Attribute:ram' => '内存',
'Class:NetworkDevice/Attribute:ram+' => '',
@@ -321,27 +323,27 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Server' => '服务器',
'Class:Server' => '物理机',
'Class:Server+' => '',
'Class:Server/ComplementaryName' => '%1$s - %2$s',
'Class:Server/Attribute:osfamily_id' => '操作系统家族',
'Class:Server/Attribute:osfamily_id' => 'OS 家族',
'Class:Server/Attribute:osfamily_id+' => '',
'Class:Server/Attribute:osfamily_name' => '操作系统家族名称',
'Class:Server/Attribute:osfamily_name' => 'OS 家族名称',
'Class:Server/Attribute:osfamily_name+' => '',
'Class:Server/Attribute:osversion_id' => '操作系统版本',
'Class:Server/Attribute:osversion_id' => 'OS 版本',
'Class:Server/Attribute:osversion_id+' => '',
'Class:Server/Attribute:osversion_name' => '操作系统版本名称',
'Class:Server/Attribute:osversion_name' => 'OS 版本名称',
'Class:Server/Attribute:osversion_name+' => '',
'Class:Server/Attribute:oslicence_id' => '操作系统许可证',
'Class:Server/Attribute:oslicence_id' => 'OS 许可证',
'Class:Server/Attribute:oslicence_id+' => '',
'Class:Server/Attribute:oslicence_name' => '操作系统许可证名称',
'Class:Server/Attribute:oslicence_name' => 'OS 许可证名称',
'Class:Server/Attribute:oslicence_name+' => '',
'Class:Server/Attribute:cpu' => 'CPU',
'Class:Server/Attribute:cpu+' => '',
'Class:Server/Attribute:ram' => '内存',
'Class:Server/Attribute:ram+' => '',
'Class:Server/Attribute:logicalvolumes_list' => '逻辑卷',
'Class:Server/Attribute:logicalvolumes_list+' => '连接到此服务器的所有逻辑卷',
'Class:Server/Attribute:logicalvolumes_list+' => '连接到此物理机的所有逻辑卷',
]);
//
@@ -361,11 +363,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SANSwitch' => 'SAN交换机',
'Class:SANSwitch' => '光纤交换机',
'Class:SANSwitch+' => '',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s',
'Class:SANSwitch/Attribute:datacenterdevice_list' => '设备',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => '连接到此SAN交换机的所有设备',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => '连接到此光纤交换机的所有设备',
]);
//
@@ -400,13 +402,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:PC' => 'PC',
'Class:PC+' => '',
'Class:PC/ComplementaryName' => '%1$s - %2$s',
'Class:PC/Attribute:osfamily_id' => '操作系统家族',
'Class:PC/Attribute:osfamily_id' => 'OS 家族',
'Class:PC/Attribute:osfamily_id+' => '',
'Class:PC/Attribute:osfamily_name' => '操作系统家族名称',
'Class:PC/Attribute:osfamily_name' => 'OS 家族名称',
'Class:PC/Attribute:osfamily_name+' => '',
'Class:PC/Attribute:osversion_id' => '操作系统版本',
'Class:PC/Attribute:osversion_id' => 'OS 版本',
'Class:PC/Attribute:osversion_id+' => '',
'Class:PC/Attribute:osversion_name' => '操作系统版本名称',
'Class:PC/Attribute:osversion_name' => 'OS 版本名称',
'Class:PC/Attribute:osversion_name+' => '',
'Class:PC/Attribute:cpu' => 'CPU',
'Class:PC/Attribute:cpu+' => '',
@@ -445,11 +447,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:PowerSource' => '电源',
'Class:PowerSource' => '动力电源',
'Class:PowerSource+' => '',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s',
'Class:PowerSource/Attribute:pdus_list' => 'PDU',
'Class:PowerSource/Attribute:pdus_list+' => '使用此电源的所有 PDU',
'Class:PowerSource/Attribute:pdus_list+' => '使用此动力电源的所有 PDU',
]);
//
@@ -464,9 +466,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:PDU/Attribute:rack_id+' => '',
'Class:PDU/Attribute:rack_name' => '机架名称',
'Class:PDU/Attribute:rack_name+' => '',
'Class:PDU/Attribute:powerstart_id' => '上电源',
'Class:PDU/Attribute:powerstart_id' => '上电源',
'Class:PDU/Attribute:powerstart_id+' => '',
'Class:PDU/Attribute:powerstart_name' => '上电源名称',
'Class:PDU/Attribute:powerstart_name' => '上电源名称',
'Class:PDU/Attribute:powerstart_name+' => '',
]);
@@ -508,7 +510,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ApplicationSolution/Attribute:functionalcis_list' => '配置项',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => '此应用方案包含的所有配置项',
'Class:ApplicationSolution/Attribute:businessprocess_list' => '业务流程',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => '所有依赖此应用方案的业务流程',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => '依赖此应用方案的所有业务流程',
'Class:ApplicationSolution/Attribute:status' => '状态',
'Class:ApplicationSolution/Attribute:status+' => '',
'Class:ApplicationSolution/Attribute:status/Value:active' => '启用',
@@ -529,7 +531,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:BusinessProcess' => '业务流程',
'Class:BusinessProcess+' => '',
'Class:BusinessProcess/Attribute:applicationsolutions_list' => '应用方案',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => '所有影响此业务流程的应用方案',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => '影响此业务流程的所有应用方案',
'Class:BusinessProcess/Attribute:status' => '状态',
'Class:BusinessProcess/Attribute:status+' => '',
'Class:BusinessProcess/Attribute:status/Value:active' => '启用',
@@ -585,8 +587,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DBServer' => '数据库服务器',
'Class:DBServer+' => '',
'Class:DBServer/Attribute:dbschema_list' => '数据库',
'Class:DBServer/Attribute:dbschema_list+' => '此数据库服务器上的所有数据库架构',
'Class:DBServer/Attribute:dbschema_list' => '数据库模式',
'Class:DBServer/Attribute:dbschema_list+' => '此数据库服务器上的所有逻辑数据库',
]);
//
@@ -594,10 +596,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:WebServer' => 'Web服务器',
'Class:WebServer' => 'Web 服务器',
'Class:WebServer+' => '',
'Class:WebServer/Attribute:webapp_list' => 'Web应用',
'Class:WebServer/Attribute:webapp_list+' => '此web服务器上的所有web应用',
'Class:WebServer/Attribute:webapp_list' => 'Web 应用',
'Class:WebServer/Attribute:webapp_list+' => '此 web 服务器上的所有 web 应用',
]);
//
@@ -628,7 +630,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:MiddlewareInstance/ComplementaryName' => '%1$s - %2$s',
'Class:MiddlewareInstance/Attribute:middleware_id' => '中间件',
'Class:MiddlewareInstance/Attribute:middleware_id+' => '',
'Class:MiddlewareInstance/Attribute:middleware_name' => '名称',
'Class:MiddlewareInstance/Attribute:middleware_name' => '中间件名称',
'Class:MiddlewareInstance/Attribute:middleware_name+' => '',
]);
@@ -637,12 +639,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DatabaseSchema' => '数据库',
'Class:DatabaseSchema+' => '',
'Class:DatabaseSchema' => '数据库模式',
'Class:DatabaseSchema+' => '运行在数据库服务器上的逻辑数据库',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s',
'Class:DatabaseSchema/Attribute:dbserver_id' => '数据库服务器',
'Class:DatabaseSchema/Attribute:dbserver_id+' => '',
'Class:DatabaseSchema/Attribute:dbserver_name' => '名称',
'Class:DatabaseSchema/Attribute:dbserver_name' => '数据库服务器名称',
'Class:DatabaseSchema/Attribute:dbserver_name+' => '',
]);
@@ -654,9 +656,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:WebApplication' => 'Web 应用',
'Class:WebApplication+' => '',
'Class:WebApplication/ComplementaryName' => '%1$s - %2$s',
'Class:WebApplication/Attribute:webserver_id' => 'Web服务器',
'Class:WebApplication/Attribute:webserver_id' => 'Web 服务器',
'Class:WebApplication/Attribute:webserver_id+' => '',
'Class:WebApplication/Attribute:webserver_name' => '名称',
'Class:WebApplication/Attribute:webserver_name' => 'Web 服务器名称',
'Class:WebApplication/Attribute:webserver_name+' => '',
'Class:WebApplication/Attribute:url' => 'URL',
'Class:WebApplication/Attribute:url+' => '',
@@ -688,10 +690,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:VirtualHost' => '宿主机',
'Class:VirtualHost' => '虚拟化主机',
'Class:VirtualHost+' => '',
'Class:VirtualHost/Attribute:virtualmachine_list' => '虚拟机',
'Class:VirtualHost/Attribute:virtualmachine_list+' => '此宿主机托管的所有虚拟机',
'Class:VirtualHost/Attribute:virtualmachine_list+' => '此虚拟化主机托管的所有虚拟机',
]);
//
@@ -703,11 +705,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Hypervisor+' => '',
'Class:Hypervisor/Attribute:farm_id' => '集群',
'Class:Hypervisor/Attribute:farm_id+' => '',
'Class:Hypervisor/Attribute:farm_name' => '名称',
'Class:Hypervisor/Attribute:farm_name' => '集群名称',
'Class:Hypervisor/Attribute:farm_name+' => '',
'Class:Hypervisor/Attribute:server_id' => '物理机',
'Class:Hypervisor/Attribute:server_id+' => '',
'Class:Hypervisor/Attribute:server_name' => '名称',
'Class:Hypervisor/Attribute:server_name' => '物理机名称',
'Class:Hypervisor/Attribute:server_name+' => '',
]);
@@ -734,21 +736,21 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:VirtualMachine' => '虚拟机',
'Class:VirtualMachine+' => '',
'Class:VirtualMachine/ComplementaryName' => '%1$s - %2$s',
'Class:VirtualMachine/Attribute:virtualhost_id' => '宿主机',
'Class:VirtualMachine/Attribute:virtualhost_id' => '虚拟化主机',
'Class:VirtualMachine/Attribute:virtualhost_id+' => '',
'Class:VirtualMachine/Attribute:virtualhost_name' => '名称',
'Class:VirtualMachine/Attribute:virtualhost_name+' => '',
'Class:VirtualMachine/Attribute:osfamily_id' => '操作系统家族',
'Class:VirtualMachine/Attribute:osfamily_id' => 'OS 家族',
'Class:VirtualMachine/Attribute:osfamily_id+' => '',
'Class:VirtualMachine/Attribute:osfamily_name' => '名称',
'Class:VirtualMachine/Attribute:osfamily_name' => 'OS 家族名称',
'Class:VirtualMachine/Attribute:osfamily_name+' => '',
'Class:VirtualMachine/Attribute:osversion_id' => '操作系统版本',
'Class:VirtualMachine/Attribute:osversion_id' => 'OS 版本',
'Class:VirtualMachine/Attribute:osversion_id+' => '',
'Class:VirtualMachine/Attribute:osversion_name' => '名称',
'Class:VirtualMachine/Attribute:osversion_name' => 'OS 版本名称',
'Class:VirtualMachine/Attribute:osversion_name+' => '',
'Class:VirtualMachine/Attribute:oslicence_id' => '操作系统许可证',
'Class:VirtualMachine/Attribute:oslicence_id' => 'OS 许可证',
'Class:VirtualMachine/Attribute:oslicence_id+' => '',
'Class:VirtualMachine/Attribute:oslicence_name' => '名称',
'Class:VirtualMachine/Attribute:oslicence_name' => 'OS 许可证名称',
'Class:VirtualMachine/Attribute:oslicence_name+' => '',
'Class:VirtualMachine/Attribute:cpu' => 'CPU',
'Class:VirtualMachine/Attribute:cpu+' => '',
@@ -779,10 +781,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:LogicalVolume/Attribute:size+' => '',
'Class:LogicalVolume/Attribute:storagesystem_id' => '存储系统',
'Class:LogicalVolume/Attribute:storagesystem_id+' => '',
'Class:LogicalVolume/Attribute:storagesystem_name' => '名称',
'Class:LogicalVolume/Attribute:storagesystem_name' => '存储系统名称',
'Class:LogicalVolume/Attribute:storagesystem_name+' => '',
'Class:LogicalVolume/Attribute:servers_list' => '服务器',
'Class:LogicalVolume/Attribute:servers_list+' => '使用此逻辑卷的服务器',
'Class:LogicalVolume/Attribute:servers_list' => '物理机',
'Class:LogicalVolume/Attribute:servers_list+' => '使用此逻辑卷的物理机',
'Class:LogicalVolume/Attribute:virtualdevices_list' => '虚拟设备',
'Class:LogicalVolume/Attribute:virtualdevices_list+' => '使用此逻辑卷的所有虚拟设备',
]);
@@ -792,16 +794,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkServerToVolume' => '关联服务器/逻辑卷',
'Class:lnkServerToVolume' => '链接 物理机/逻辑卷',
'Class:lnkServerToVolume+' => '',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s',
'Class:lnkServerToVolume/Attribute:volume_id' => '逻辑卷',
'Class:lnkServerToVolume/Attribute:volume_id+' => '',
'Class:lnkServerToVolume/Attribute:volume_name' => '逻辑卷名称',
'Class:lnkServerToVolume/Attribute:volume_name+' => '',
'Class:lnkServerToVolume/Attribute:server_id' => '服务器',
'Class:lnkServerToVolume/Attribute:server_id' => '物理机',
'Class:lnkServerToVolume/Attribute:server_id+' => '',
'Class:lnkServerToVolume/Attribute:server_name' => '服务器名称',
'Class:lnkServerToVolume/Attribute:server_name' => '物理机名称',
'Class:lnkServerToVolume/Attribute:server_name+' => '',
'Class:lnkServerToVolume/Attribute:size_used' => '已用容量',
'Class:lnkServerToVolume/Attribute:size_used+' => '',
@@ -812,16 +814,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkVirtualDeviceToVolume' => '关联虚拟设备/逻辑卷',
'Class:lnkVirtualDeviceToVolume' => '链接 虚拟设备/逻辑卷',
'Class:lnkVirtualDeviceToVolume+' => '',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id' => '逻辑卷',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_name' => '名称',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_name' => '逻辑卷名称',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_name+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_id' => '虚拟设备',
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_id+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_name' => '名称',
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_name' => '虚拟设备名称',
'Class:lnkVirtualDeviceToVolume/Attribute:virtualdevice_name+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:size_used' => '已用容量',
'Class:lnkVirtualDeviceToVolume/Attribute:size_used+' => '',
@@ -832,18 +834,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSanToDatacenterDevice' => '关联 SAN/数据中心设备',
'Class:lnkSanToDatacenterDevice' => '链接 光纤交换机/数据中心设备',
'Class:lnkSanToDatacenterDevice+' => '',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s',
'Class:lnkSanToDatacenterDevice/Attribute:san_id' => 'SAN 交换机',
'Class:lnkSanToDatacenterDevice/Attribute:san_id' => '光纤交换机',
'Class:lnkSanToDatacenterDevice/Attribute:san_id+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:san_name' => '名称',
'Class:lnkSanToDatacenterDevice/Attribute:san_name' => '光纤交换机名称',
'Class:lnkSanToDatacenterDevice/Attribute:san_name+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_id' => '设备',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_id+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_name' => '名称',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_name' => '设备名称',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_name+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:san_port' => 'SAN 光口',
'Class:lnkSanToDatacenterDevice/Attribute:san_port' => '交换机光口',
'Class:lnkSanToDatacenterDevice/Attribute:san_port+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_port' => '设备光口',
'Class:lnkSanToDatacenterDevice/Attribute:datacenterdevice_port+' => '',
@@ -864,7 +866,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Tape/Attribute:size+' => '',
'Class:Tape/Attribute:tapelibrary_id' => '磁带库',
'Class:Tape/Attribute:tapelibrary_id+' => '',
'Class:Tape/Attribute:tapelibrary_name' => '名称',
'Class:Tape/Attribute:tapelibrary_name' => '磁带库名称',
'Class:Tape/Attribute:tapelibrary_name+' => '',
]);
@@ -913,10 +915,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Software/Attribute:type/Value:Middleware+' => '中间件',
'Class:Software/Attribute:type/Value:OtherSoftware' => '其它软件',
'Class:Software/Attribute:type/Value:OtherSoftware+' => '其它软件',
'Class:Software/Attribute:type/Value:PCSoftware' => 'PC软件',
'Class:Software/Attribute:type/Value:PCSoftware+' => 'PC软件',
'Class:Software/Attribute:type/Value:WebServer' => 'Web服务器',
'Class:Software/Attribute:type/Value:WebServer+' => 'Web服务器',
'Class:Software/Attribute:type/Value:PCSoftware' => 'PC 软件',
'Class:Software/Attribute:type/Value:PCSoftware+' => 'PC 软件',
'Class:Software/Attribute:type/Value:WebServer' => 'Web 服务器',
'Class:Software/Attribute:type/Value:WebServer+' => 'Web 服务器',
'Class:Software/Attribute:softwareinstance_list' => '软件实例',
'Class:Software/Attribute:softwareinstance_list+' => '此软件的所有实例',
'Class:Software/Attribute:softwarepatch_list' => '软件补丁',
@@ -935,10 +937,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Patch/Attribute:name' => '名称',
'Class:Patch/Attribute:name+' => '',
'Class:Patch/Attribute:documents_list' => '文档',
'Class:Patch/Attribute:documents_list+' => '此补丁关的所有文档',
'Class:Patch/Attribute:documents_list+' => '此补丁关的所有文档',
'Class:Patch/Attribute:description' => '描述',
'Class:Patch/Attribute:description+' => '',
'Class:Patch/Attribute:finalclass' => '补丁类',
'Class:Patch/Attribute:finalclass' => '补丁类',
'Class:Patch/Attribute:finalclass+' => '根本属性的名称',
]);
@@ -947,11 +949,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OSPatch' => '操作系统补丁',
'Class:OSPatch' => 'OS 补丁',
'Class:OSPatch+' => '',
'Class:OSPatch/Attribute:functionalcis_list' => '设备',
'Class:OSPatch/Attribute:functionalcis_list+' => '已安装此补丁的所有系统',
'Class:OSPatch/Attribute:osversion_id' => '操作系统版本',
'Class:OSPatch/Attribute:osversion_id' => 'OS 版本',
'Class:OSPatch/Attribute:osversion_id+' => '',
'Class:OSPatch/Attribute:osversion_name' => '名称',
'Class:OSPatch/Attribute:osversion_name+' => '',
@@ -966,7 +968,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SoftwarePatch+' => '',
'Class:SoftwarePatch/Attribute:software_id' => '软件',
'Class:SoftwarePatch/Attribute:software_id+' => '',
'Class:SoftwarePatch/Attribute:software_name' => '名称',
'Class:SoftwarePatch/Attribute:software_name' => '软件名称',
'Class:SoftwarePatch/Attribute:software_name+' => '',
'Class:SoftwarePatch/Attribute:softwareinstances_list' => '软件实例',
'Class:SoftwarePatch/Attribute:softwareinstances_list+' => '已安装此软件补丁的所有系统',
@@ -979,10 +981,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Licence' => '许可证',
'Class:Licence+' => '',
'Class:Licence/Attribute:name' => '名称',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:documents_list' => '文档',
'Class:Licence/Attribute:documents_list+' => '此许可证关的所有文档',
'Class:Licence/Attribute:documents_list+' => '此许可证关的所有文档',
'Class:Licence/Attribute:org_id' => '组织',
'Class:Licence/Attribute:org_id+' => '',
'Class:Licence/Attribute:organization_name' => '组织名称',
@@ -1003,7 +1006,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Licence/Attribute:perpetual/Value:no+' => '否',
'Class:Licence/Attribute:perpetual/Value:yes' => '是',
'Class:Licence/Attribute:perpetual/Value:yes+' => '是',
'Class:Licence/Attribute:finalclass' => '许可证类',
'Class:Licence/Attribute:finalclass' => '许可证类',
'Class:Licence/Attribute:finalclass+' => '根本属性的名称',
]);
@@ -1012,17 +1015,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OSLicence' => '操作系统许可证',
'Class:OSLicence' => 'OS 许可证',
'Class:OSLicence+' => '',
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s',
'Class:OSLicence/Attribute:osversion_id' => '操作系统版本',
'Class:OSLicence/Attribute:osversion_id' => 'OS 版本',
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => '名称',
'Class:OSLicence/Attribute:osversion_name' => 'OS 版本名称',
'Class:OSLicence/Attribute:osversion_name+' => '',
'Class:OSLicence/Attribute:virtualmachines_list' => '虚拟机',
'Class:OSLicence/Attribute:virtualmachines_list+' => '使用此许可证的所有虚拟机',
'Class:OSLicence/Attribute:servers_list' => '服务器',
'Class:OSLicence/Attribute:servers_list+' => '使用此许可证的所有服务器',
'Class:OSLicence/Attribute:servers_list' => '物理机',
'Class:OSLicence/Attribute:servers_list+' => '使用此许可证的所有物理机',
]);
//
@@ -1035,7 +1038,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s',
'Class:SoftwareLicence/Attribute:software_id' => '软件',
'Class:SoftwareLicence/Attribute:software_id+' => '',
'Class:SoftwareLicence/Attribute:software_name' => '名称',
'Class:SoftwareLicence/Attribute:software_name' => '软件名称',
'Class:SoftwareLicence/Attribute:software_name+' => '',
'Class:SoftwareLicence/Attribute:softwareinstance_list' => '软件实例',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => '使用此许可证的所有系统',
@@ -1046,12 +1049,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToLicence' => '关联文档/许可证',
'Class:lnkDocumentToLicence' => '链接 文档/许可证',
'Class:lnkDocumentToLicence+' => '',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s',
'Class:lnkDocumentToLicence/Attribute:licence_id' => '许可证',
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '',
'Class:lnkDocumentToLicence/Attribute:licence_name' => '名称',
'Class:lnkDocumentToLicence/Attribute:licence_name' => '许可证名称',
'Class:lnkDocumentToLicence/Attribute:licence_name+' => '',
'Class:lnkDocumentToLicence/Attribute:document_id' => '文档',
'Class:lnkDocumentToLicence/Attribute:document_id+' => '',
@@ -1064,11 +1067,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OSVersion' => '操作系统版本',
'Class:OSVersion' => 'OS 版本',
'Class:OSVersion+' => '',
'Class:OSVersion/Attribute:osfamily_id' => '操作系统家族',
'Class:OSVersion/Attribute:osfamily_id' => 'OS 家族',
'Class:OSVersion/Attribute:osfamily_id+' => '',
'Class:OSVersion/Attribute:osfamily_name' => '名称',
'Class:OSVersion/Attribute:osfamily_name' => 'OS 家族名称',
'Class:OSVersion/Attribute:osfamily_name+' => '',
]);
@@ -1077,7 +1080,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:OSFamily' => '操作系统家族',
'Class:OSFamily' => 'OS 家族',
'Class:OSFamily+' => '',
]);
@@ -1112,14 +1115,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Model/Attribute:picture+' => '',
'Class:Model/Attribute:type' => '设备类型',
'Class:Model/Attribute:type+' => '',
'Class:Model/Attribute:type/Value:PowerSource' => '电源',
'Class:Model/Attribute:type/Value:PowerSource+' => '电源',
'Class:Model/Attribute:type/Value:PowerSource' => '动力电源',
'Class:Model/Attribute:type/Value:PowerSource+' => '动力电源',
'Class:Model/Attribute:type/Value:DiskArray' => '磁盘阵列',
'Class:Model/Attribute:type/Value:DiskArray+' => '磁盘阵列',
'Class:Model/Attribute:type/Value:Enclosure' => '机柜',
'Class:Model/Attribute:type/Value:Enclosure+' => '机柜',
'Class:Model/Attribute:type/Value:IPPhone' => 'IP电话',
'Class:Model/Attribute:type/Value:IPPhone+' => 'IP电话',
'Class:Model/Attribute:type/Value:IPPhone' => 'IP 电话',
'Class:Model/Attribute:type/Value:IPPhone+' => 'IP 电话',
'Class:Model/Attribute:type/Value:MobilePhone' => '手机',
'Class:Model/Attribute:type/Value:MobilePhone+' => '手机',
'Class:Model/Attribute:type/Value:NAS' => 'NAS',
@@ -1136,10 +1139,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Model/Attribute:type/Value:Printer+' => '打印机',
'Class:Model/Attribute:type/Value:Rack' => '机架',
'Class:Model/Attribute:type/Value:Rack+' => '机架',
'Class:Model/Attribute:type/Value:SANSwitch' => 'SAN交换机',
'Class:Model/Attribute:type/Value:SANSwitch+' => 'SAN交换机',
'Class:Model/Attribute:type/Value:Server' => '服务器',
'Class:Model/Attribute:type/Value:Server+' => '服务器',
'Class:Model/Attribute:type/Value:SANSwitch' => '光纤交换机',
'Class:Model/Attribute:type/Value:SANSwitch+' => '光纤交换机',
'Class:Model/Attribute:type/Value:Server' => '物理机',
'Class:Model/Attribute:type/Value:Server+' => '物理机',
'Class:Model/Attribute:type/Value:StorageSystem' => '存储系统',
'Class:Model/Attribute:type/Value:StorageSystem+' => '存储系统',
'Class:Model/Attribute:type/Value:Tablet' => '平板',
@@ -1174,7 +1177,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:IOSVersion+' => '',
'Class:IOSVersion/Attribute:brand_id' => '品牌',
'Class:IOSVersion/Attribute:brand_id+' => '',
'Class:IOSVersion/Attribute:brand_name' => '名称',
'Class:IOSVersion/Attribute:brand_name' => '品牌名称',
'Class:IOSVersion/Attribute:brand_name+' => '',
]);
@@ -1183,7 +1186,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToPatch' => '关联文档/补丁',
'Class:lnkDocumentToPatch' => '链接 文档/补丁',
'Class:lnkDocumentToPatch+' => '',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s',
'Class:lnkDocumentToPatch/Attribute:patch_id' => '补丁',
@@ -1201,7 +1204,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSoftwareInstanceToSoftwarePatch' => ' 关联软件实例/软件补丁',
'Class:lnkSoftwareInstanceToSoftwarePatch' => '链接 软件实例/软件补丁',
'Class:lnkSoftwareInstanceToSoftwarePatch+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => '软件补丁',
@@ -1219,12 +1222,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToOSPatch' => '关联功能项/操作系统补丁',
'Class:lnkFunctionalCIToOSPatch' => '链接 功能项/OS 补丁',
'Class:lnkFunctionalCIToOSPatch+' => '',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => '操作系统补丁',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS 补丁',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => '操作系统补丁名称',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS 补丁名称',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => '功能项',
'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '',
@@ -1237,7 +1240,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToSoftware' => '关联文档/软件',
'Class:lnkDocumentToSoftware' => '链接 文档/软件',
'Class:lnkDocumentToSoftware+' => '',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s',
'Class:lnkDocumentToSoftware/Attribute:software_id' => '软件',
@@ -1265,8 +1268,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Subnet/Attribute:subnet_name+' => '',
'Class:Subnet/Attribute:org_id' => '所属组织',
'Class:Subnet/Attribute:org_id+' => '',
'Class:Subnet/Attribute:org_name' => '名称',
'Class:Subnet/Attribute:org_name+' => '名称',
'Class:Subnet/Attribute:org_name' => '组织名称',
'Class:Subnet/Attribute:org_name+' => '',
'Class:Subnet/Attribute:ip' => 'IP',
'Class:Subnet/Attribute:ip+' => '',
'Class:Subnet/Attribute:ip_mask' => '掩码',
@@ -1282,7 +1285,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:VLAN' => 'VLAN',
'Class:VLAN+' => '',
'Class:VLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:VLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:VLAN/Attribute:vlan_tag+' => '',
'Class:VLAN/Attribute:description' => '描述',
'Class:VLAN/Attribute:description+' => '',
@@ -1301,7 +1304,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSubnetToVLAN' => '关联子网/VLAN',
'Class:lnkSubnetToVLAN' => '链接 子网/VLAN',
'Class:lnkSubnetToVLAN+' => '',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s',
'Class:lnkSubnetToVLAN/Attribute:subnet_id' => '子网',
@@ -1312,7 +1315,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSubnetToVLAN/Attribute:subnet_name+' => '',
'Class:lnkSubnetToVLAN/Attribute:vlan_id' => 'VLAN',
'Class:lnkSubnetToVLAN/Attribute:vlan_id+' => '',
'Class:lnkSubnetToVLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:lnkSubnetToVLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:lnkSubnetToVLAN/Attribute:vlan_tag+' => '',
]);
@@ -1338,7 +1341,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:IPInterface+' => '',
'Class:IPInterface/Attribute:ipaddress' => 'IP 地址',
'Class:IPInterface/Attribute:ipaddress+' => '',
'Class:IPInterface/Attribute:macaddress' => 'MAC地址',
'Class:IPInterface/Attribute:macaddress' => 'MAC 地址',
'Class:IPInterface/Attribute:macaddress+' => '',
'Class:IPInterface/Attribute:comment' => '备注',
'Class:IPInterface/Attribute:coment+' => '',
@@ -1371,7 +1375,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkPhysicalInterfaceToVLAN' => '关联物理网卡/VLAN',
'Class:lnkPhysicalInterfaceToVLAN' => '链接 物理网卡/VLAN',
'Class:lnkPhysicalInterfaceToVLAN+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id' => '物理网卡',
@@ -1384,7 +1388,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_device_name+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:vlan_id' => 'VLAN',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:vlan_id+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:vlan_tag' => 'VLAN 标',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:vlan_tag+' => '',
]);
@@ -1406,7 +1410,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FiberChannelInterface' => '光纤接口',
'Class:FiberChannelInterface' => '光口',
'Class:FiberChannelInterface+' => '',
'Class:FiberChannelInterface/Attribute:speed' => '速率',
'Class:FiberChannelInterface/Attribute:speed+' => '',
@@ -1425,7 +1429,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkConnectableCIToNetworkDevice' => '关联可连接项/网络设备',
'Class:lnkConnectableCIToNetworkDevice' => '链接 可连接项/网络设备',
'Class:lnkConnectableCIToNetworkDevice+' => '',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id' => '网络设备',
@@ -1453,7 +1457,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkApplicationSolutionToFunctionalCI' => '关联应用方案/功能项',
'Class:lnkApplicationSolutionToFunctionalCI' => '链接 应用方案/功能项',
'Class:lnkApplicationSolutionToFunctionalCI+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id' => '应用方案',
@@ -1471,7 +1475,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkApplicationSolutionToBusinessProcess' => '关联应用方案/业务流程',
'Class:lnkApplicationSolutionToBusinessProcess' => '链接 应用方案/业务流程',
'Class:lnkApplicationSolutionToBusinessProcess+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id' => '业务流程',
@@ -1504,19 +1508,20 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Group/Attribute:status/Value:production+' => '生产',
'Class:Group/Attribute:org_id' => '组织',
'Class:Group/Attribute:org_id+' => '',
'Class:Group/Attribute:owner_name' => '名称',
'Class:Group/Attribute:owner_name' => '属主名称',
'Class:Group/Attribute:owner_name+' => '通用名称',
'Class:Group/Attribute:description' => '描述',
'Class:Group/Attribute:description+' => '',
'Class:Group/Attribute:type' => '类型',
'Class:Group/Attribute:type+' => '',
'Class:Group/Attribute:parent_id' => '上级组',
'Class:Group/Attribute:parent_id' => '父级配置组',
'Class:Group/Attribute:parent_id+' => '',
'Class:Group/Attribute:parent_name' => '名称',
'Class:Group/Attribute:parent_name+' => '',
'Class:Group/Attribute:ci_list' => '关的配置项',
'Class:Group/Attribute:ci_list+' => '此组关联的所有配置项',
'Class:Group/Attribute:parent_id_friendlyname' => '级配置组',
'Class:Group/Attribute:ci_list' => '关的配置项',
'Class:Group/Attribute:ci_list+' => '此配置组相关的所有配置项',
'Class:Group/Attribute:parent_id_friendlyname' => '级配置组',
'Class:Group/Attribute:parent_id_friendlyname+' => '',
]);
@@ -1525,16 +1530,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkGroupToCI' => '关联配置组/配置项',
'Class:lnkGroupToCI' => '链接 配置组/配置项',
'Class:lnkGroupToCI+' => '',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s',
'Class:lnkGroupToCI/Attribute:group_id' => '组',
'Class:lnkGroupToCI/Attribute:group_id+' => '',
'Class:lnkGroupToCI/Attribute:group_name' => '名称',
'Class:lnkGroupToCI/Attribute:group_name' => '配置组名称',
'Class:lnkGroupToCI/Attribute:group_name+' => '',
'Class:lnkGroupToCI/Attribute:ci_id' => '配置项',
'Class:lnkGroupToCI/Attribute:ci_id+' => '',
'Class:lnkGroupToCI/Attribute:ci_name' => '名称',
'Class:lnkGroupToCI/Attribute:ci_name' => '配置项名称',
'Class:lnkGroupToCI/Attribute:ci_name+' => '',
'Class:lnkGroupToCI/Attribute:reason' => '原因',
'Class:lnkGroupToCI/Attribute:reason+' => '',
@@ -1562,7 +1567,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToFunctionalCI' => '关联文档/功能项',
'Class:lnkDocumentToFunctionalCI' => '链接 文档/功能项',
'Class:lnkDocumentToFunctionalCI+' => '',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id' => '功能项',
@@ -1600,8 +1605,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:Subnet+' => '所有子网',
'Menu:NetworkDevice' => '网络设备',
'Menu:NetworkDevice+' => '所有网络设备',
'Menu:Server' => '服务器',
'Menu:Server+' => '所有服务器',
'Menu:Server' => '物理机',
'Menu:Server+' => '所有物理机',
'Menu:Printer' => '打印机',
'Menu:Printer+' => '所有打印机',
'Menu:MobilePhone' => '手机',
@@ -1631,8 +1636,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:PhysicalInterface/Attribute:org_id' => 'Org id~~',
'Class:PhysicalInterface/Attribute:org_id+' => '~~',
'Class:PhysicalInterface/Attribute:location_id' => 'Location id~~',
'Class:PhysicalInterface/Attribute:location_id+' => '~~',
'Class:PhysicalInterface/Attribute:org_id' => '组织id',
'Class:PhysicalInterface/Attribute:org_id+' => '',
'Class:PhysicalInterface/Attribute:location_id' => '位置id',
'Class:PhysicalInterface/Attribute:location_id+' => '',
]);

View File

@@ -21,9 +21,10 @@
* 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:ConfigFileEditor' => 'Plain text editor~~',
'Menu:ConfigEditor' => '编辑配置文件',
'Menu:ConfigFileEditor' => '纯文本编辑器',
'config-edit-title' => '配置文件编辑器',
'config-edit-intro' => '编辑配置文件时请务必格外小心.',
'config-apply' => '应用',
@@ -36,7 +37,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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-transaction' => '错误: 无效的事务id. 配置<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

@@ -28,10 +28,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:CheckUpdate' => '校验升级文件',
'iTopUpdate:UI:ConfirmInstallFile' => '即将安装 %1$s',
@@ -50,19 +52,24 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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: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 文件不存在)',
@@ -70,11 +77,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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.'安装, 确定吗?',
'iTopUpdate:UI:FastSetupLaunch' => 'Fast Setup~~',
'iTopUpdate:UI:FastSetupLaunch' => '快速安装',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => '准备开始',
@@ -101,6 +109,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'iTopUpdate:Error:InvalidToken' => '无效的 token',
'iTopUpdate:Error:UpdateFailed' => '升级失败',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => '上传上限太小. 请调整 PHP 配置.',
'iTopUpdate:UI:RestoreArchive' => '您可以从归档文件 \'%1$s\' 还原应用程序',
'iTopUpdate:UI:RestoreBackup' => '您可以从 \'%1$s\' 还原数据库',
'iTopUpdate:UI:UpdateDone' => '升级成功',

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*

View File

@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,10 +31,12 @@
// 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>+
@@ -43,15 +46,17 @@
// 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', '简体中文', [
'Class:FAQ' => 'FAQ',
'Class:FAQ+' => '常见问题',
'Class:FAQ/Attribute:title' => '标题',
'Class:FAQ/Attribute:title+' => '',
'Class:FAQ/Attribute:summary' => '要',
'Class:FAQ/Attribute:summary' => '要',
'Class:FAQ/Attribute:summary+' => '',
'Class:FAQ/Attribute:description' => '描述',
'Class:FAQ/Attribute:description+' => '',
@@ -63,7 +68,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FAQ/Attribute:error_code+' => '',
'Class:FAQ/Attribute:key_words' => '关键字',
'Class:FAQ/Attribute:key_words+' => '',
'Class:FAQ/Attribute:domains' => '范围',
'Class:FAQ/Attribute:domains' => '领域',
]);
//

View File

@@ -4,7 +4,7 @@
* 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.
*
@@ -21,6 +21,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', '简体中文', [
// Errors
'FilesInformation:Error:MissingFile' => '文件丢失: %1$s',

View File

@@ -21,24 +21,26 @@
* 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: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:BrowseExtensions' => '从 iTop Hub 获取扩展',
'Menu:iTopHub:BrowseExtensions+' => '去 iTop Hub 浏览更多的扩展',
'Menu:iTopHub:BrowseExtensions:Description' => '<p>进入iTop Hub商店, 一站式查找各种iTop扩展的地方 !</br>寻找符合您要求的扩展.</br><br/>通过这个页面连接到iTop Hub, 本机的信息也会被推送到 iTop Hub上.</p>',
'iTopHub:GoBtn' => '进入 iTop Hub',
'iTopHub:CloseBtn' => '关闭',
'iTopHub:GoBtn:Tooltip' => '跳到 www.itophub.io',
'iTopHub:OpenInNewWindow' => '从新窗口打开iTop Hub',
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入iTop Hub.',
'iTopHub:OpenInNewWindow' => '从新窗口打开 iTop Hub',
'iTopHub:AutoSubmit' => '不再询问. 下次自动进入 iTop Hub.',
'UI:About:RemoteExtensionSource' => 'iTop Hub',
'iTopHub:Explanation' => '点击这个按钮您将被引导至iTop Hub.',
'iTopHub:Explanation' => '点击这个按钮您将被引导至 iTop Hub.',
'iTopHub:BackupFreeDiskSpaceIn' => '%1$s 可用磁盘空间位于 %2$s.',
'iTopHub:FailedToCheckFreeDiskSpace' => '检查可用磁盘空间失败.',
'iTopHub:BackupOk' => '备份成功.',
@@ -48,32 +50,36 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:NoExtensionInThisCategory+' => '浏览 iTop Hub, 去寻找符合您要求的扩展吧.',
'iTopHub:ExtensionNotInstalled' => '未安装',
'iTopHub:GetMoreExtensions' => '从 iTop Hub 获取扩展...',
'iTopHub:LandingWelcome' => '恭喜! 下列来自 iTop Hub 的扩展已被下载并安装到本机.',
'iTopHub:GoBackToITopBtn' => '返回'.ITOP_APPLICATION_SHORT,
'iTopHub:GoBackToITopBtn' => '返回 '.ITOP_APPLICATION_SHORT,
'iTopHub:Uncompressing' => '扩展解压中...',
'iTopHub:InstallationWelcome' => '安装来自 iTop Hub 的扩展',
'iTopHub:DBBackupLabel' => '本机备份',
'iTopHub:DBBackupSentence' => '在升级之前,备份数据库和'.ITOP_APPLICATION_SHORT.'配置文件',
'iTopHub:DBBackupSentence' => '在升级之前,备份数据库和 '.ITOP_APPLICATION_SHORT.' 配置文件',
'iTopHub:DeployBtn' => '安装!',
'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:DatabaseBackup' => ITOP_APPLICATION_SHORT.' 实例备份...',
'iTopHub:InstallationProgress:ExtensionsInstallation' => '安装扩展',
'iTopHub:InstallationEffect:MissingDependencies' => '扩展无法安装, 因为未知的依赖.',
'iTopHub:InstallationEffect:MissingDependencies_Details' => '此扩展依赖模块: %1$s',
'iTopHub:InstallationProgress:InstallationSuccessful' => '安装成功!',
'iTopHub:InstallationStatus:Installed_Version' => '%1$s 版本: %2$s.',
'iTopHub:InstallationStatus:Installed' => '已安装',
'iTopHub:InstallationStatus:Version_NotInstalled' => '版本 %1$s <b>未被</b> 安装.',

View File

@@ -21,23 +21,24 @@
* 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:IncidentManagement+' => '',
'Menu:Incident:Overview' => '概况',
'Menu:Incident:Overview+' => '概况',
'Menu:Incident:Overview+' => '',
'Menu:NewIncident' => '新建事件',
'Menu:NewIncident+' => '新建事件工单',
'Menu:SearchIncidents' => '搜索事件',
'Menu:SearchIncidents+' => '搜索事件',
'Menu:SearchIncidents+' => '搜索事件工单',
'Menu:Incident:Shortcuts' => '快捷方式',
'Menu:Incident:Shortcuts+' => '',
'Menu:Incident:MyIncidents' => '分配给我的事件',
'Menu:Incident:MyIncidents+' => '分配给我的事件',
'Menu:Incident:MyIncidents+' => '分配给我的事件(作为代办人)',
'Menu:Incident:EscalatedIncidents' => '已升级的事件',
'Menu:Incident:EscalatedIncidents+' => '已升级的事件',
'Menu:Incident:EscalatedIncidents+' => '',
'Menu:Incident:OpenIncidents' => '所有打开的事件',
'Menu:Incident:OpenIncidents+' => '所有打开的事件',
'Menu:Incident:OpenIncidents+' => '',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => '最近两周的事件 (按优先级)',
'UI-IncidentManagementOverview-Last-14-days' => '最近两周的事件 (按数量)',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => '打开的事件 (按状态)',
@@ -72,7 +73,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:waiting_for_approval+' => '',
'Class:Incident/Attribute:status/Value:pending' => '待定',
'Class:Incident/Attribute:status/Value:pending+' => '',
@@ -81,7 +82,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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' => '服务',
@@ -89,39 +90,39 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:impact/Value:3' => '个体',
'Class:Incident/Attribute:impact/Value:3+' => '',
'Class:Incident/Attribute:priority' => '优先级',
'Class:Incident/Attribute:priority+' => '哪个工单应该优先处理',
'Class:Incident/Attribute:priority/Value:1' => '紧急',
'Class:Incident/Attribute:priority/Value:1+' => '紧急',
'Class:Incident/Attribute:priority+' => '工单的处理顺序',
'Class:Incident/Attribute:priority/Value:1' => '严重',
'Class:Incident/Attribute:priority/Value:1+' => '',
'Class:Incident/Attribute:priority/Value:2' => '高',
'Class:Incident/Attribute:priority/Value:2+' => '',
'Class:Incident/Attribute:priority/Value:2+' => '',
'Class:Incident/Attribute:priority/Value:3' => '中',
'Class:Incident/Attribute:priority/Value:3+' => '',
'Class:Incident/Attribute:priority/Value:3+' => '',
'Class:Incident/Attribute:priority/Value:4' => '低',
'Class:Incident/Attribute:priority/Value:4+' => '',
'Class:Incident/Attribute:priority/Value:4+' => '',
'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:1' => '严重',
'Class:Incident/Attribute:urgency/Value:1+' => '',
'Class:Incident/Attribute:urgency/Value:2' => '高',
'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:3+' => '',
'Class:Incident/Attribute:urgency/Value:4' => '低',
'Class:Incident/Attribute:urgency/Value:4+' => '',
'Class:Incident/Attribute:urgency/Value:4+' => '',
'Class:Incident/Attribute:origin' => '来源',
'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:in_person+' => '事件工单由面对面沟通后触发',
'Class:Incident/Attribute:origin/Value:chat' => '聊天工具',
'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:mail+' => '事件工单由邮件触发',
'Class:Incident/Attribute:origin/Value:monitoring' => '监控',
'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:phone+' => '事件工单由电话触发',
'Class:Incident/Attribute:origin/Value:portal' => '门户',
'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' => '服务名称',
@@ -130,7 +131,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:Incident/Attribute:escalation_flag/Value:no' => '否',
'Class:Incident/Attribute:escalation_flag/Value:no+' => '否',
@@ -166,41 +167,41 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:time_spent+' => '',
'Class:Incident/Attribute:resolution_code' => '解决方式',
'Class:Incident/Attribute:resolution_code+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance' => '外部支持',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => '外部支持',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => '缺陷修复',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => '缺陷修复',
'Class:Incident/Attribute:resolution_code/Value:assistance' => '技术支持',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => '',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'bug 修复',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => '',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => '硬件维修',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => '硬件维修',
'Class:Incident/Attribute:resolution_code/Value:hardware repair+' => '',
'Class:Incident/Attribute:resolution_code/Value:other' => '其它',
'Class:Incident/Attribute:resolution_code/Value:other+' => '其它',
'Class:Incident/Attribute:resolution_code/Value:other+' => '',
'Class:Incident/Attribute:resolution_code/Value:software patch' => '软件补丁',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => '软件补丁',
'Class:Incident/Attribute:resolution_code/Value:software patch+' => '',
'Class:Incident/Attribute:resolution_code/Value:system update' => '系统更新',
'Class:Incident/Attribute:resolution_code/Value:system update+' => '系统更新',
'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_code/Value:training+' => '',
'Class:Incident/Attribute:solution' => '解决方案',
'Class:Incident/Attribute:solution+' => '',
'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_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_change_ref+' => '',
'Class:Incident/Attribute:parent_problem_id' => '父级问题',
'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: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:child_incidents_list+' => '此事件相关的所有事件',
'Class:Incident/Attribute:public_log' => '公共日志',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => '用户满意度',
'Class:Incident/Attribute:user_satisfaction+' => '',
@@ -214,7 +215,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '非常不满意',
'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/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Stimulus:ev_assign' => '分配',
'Class:Incident/Stimulus:ev_assign+' => '',
@@ -235,7 +236,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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' => '打开的事件',
'Tickets:Related:OpenIncidents' => '待处理的事件',
]);

View File

@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,10 +31,12 @@
// 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>+
@@ -43,9 +46,11 @@
// 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+' => '记录一个已知错误',
@@ -69,7 +74,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:KnownError/Attribute:domain/Value:Application' => '应用',
'Class:KnownError/Attribute:domain/Value:Application+' => '应用',
@@ -77,8 +82,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:KnownError/Attribute:domain/Value:Desktop+' => '桌面',
'Class:KnownError/Attribute:domain/Value:Network' => '网络',
'Class:KnownError/Attribute:domain/Value:Network+' => '网络',
'Class:KnownError/Attribute:domain/Value:Server' => '服务器',
'Class:KnownError/Attribute:domain/Value:Server+' => '服务器',
'Class:KnownError/Attribute:domain/Value:Server' => '物理机',
'Class:KnownError/Attribute:domain/Value:Server+' => '物理机',
'Class:KnownError/Attribute:vendor' => '厂商',
'Class:KnownError/Attribute:vendor+' => '',
'Class:KnownError/Attribute:model' => '型号',
@@ -96,8 +101,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkErrorToFunctionalCI' => '关联已知问题/功能配置项',
'Class:lnkErrorToFunctionalCI+' => '已知问题和功能配置项之间的关联',
'Class:lnkErrorToFunctionalCI' => '链接 已知问题/功能配置项',
'Class:lnkErrorToFunctionalCI+' => '已知问题和功能配置项之间的链接',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => '配置项',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
@@ -116,8 +121,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToError' => '关联文档/已知问题',
'Class:lnkDocumentToError+' => '文档和已知问题之间的关联',
'Class:lnkDocumentToError' => '链接 文档/已知问题',
'Class:lnkDocumentToError+' => '文档和已知问题之间的链接',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s',
'Class:lnkDocumentToError/Attribute:document_id' => '文档',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
@@ -127,7 +132,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToError/Attribute:error_id+' => '',
'Class:lnkDocumentToError/Attribute:error_name' => '已知问题名称',
'Class:lnkDocumentToError/Attribute:error_name+' => '',
'Class:lnkDocumentToError/Attribute:link_type' => '关联类型',
'Class:lnkDocumentToError/Attribute:link_type' => '链接类型',
'Class:lnkDocumentToError/Attribute:link_type+' => '',
]);

View File

@@ -3,7 +3,6 @@
/**
* @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
@@ -18,6 +17,7 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
// Portal
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Page:DefaultTitle' => '%1$s 用户门户',
@@ -38,18 +38,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Error:HTTP:400' => '请求错误',
'Error:HTTP:401' => '认证错误',
'Error:HTTP:404' => '页面找不到',
'Error:HTTP:500' => '! 发生了错.',
'Error:HTTP:500' => '哦哦! 发生了错.',
'Error:HTTP:GetHelp' => '如果问题仍然存在,请联系管理员.',
'Error:XHR:Fail' => '无法加载数据, 请联系管理员',
'Portal:ErrorUserLoggedOut' => '您已退出,请重新登录.',
'Portal:Datatables:Language:Processing' => '请稍候...',
'Portal:Datatables:Language:Search' => '筛选器:',
'Portal:Datatables:Language:LengthMenu' => '每页显示 _MENU_ 项',
'Portal:Datatables:Language:ZeroRecords' => '没有结果',
'Portal:Datatables:Language:ZeroRecords' => '没有可显示的结果',
'Portal:Datatables:Language:Info' => '第 _PAGE_ 页,共 _PAGES_ 页',
'Portal:Datatables:Language:InfoEmpty' => '没有信息',
'Portal:Datatables:Language:InfoFiltered' => '最多筛选 _MAX_ 项',
'Portal:Datatables:Language:EmptyTable' => '表格中没有数据',
'Portal:Datatables:Language:EmptyTable' => '暂无数据',
'Portal:Datatables:Language:DisplayLength:All' => '全部',
'Portal:Datatables:Language:Paginate:First' => '首页',
'Portal:Datatables:Language:Paginate:Previous' => '上一页',
@@ -57,7 +57,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:Datatables:Language:Paginate:Last' => '尾页',
'Portal:Datatables:Language:Sort:Ascending' => '升序',
'Portal:Datatables:Language:Sort:Descending' => '降序',
'Portal:Autocomplete:NoResult' => '没有数据',
'Portal:Autocomplete:NoResult' => '没有可显示的数据',
'Portal:Attachments:DropZone:Message' => '把文件添加为附件',
'Portal:File:None' => '没有文件',
'Portal:File:DisplayInfo' => '<a href="%2$s" class="file_download_link">%1$s</a>',
@@ -71,7 +71,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:Form:Close:Warning' => '确定要离开表单吗? 已输入数据会丢失',
'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.',
'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.',
'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~',
'Portal:Error:CheckToWriteFailed' => '字段 \'%1$s\' 校验时发生错误: %2$s',
]);
// UserProfile brick
@@ -84,7 +84,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:UserProfile:Password:ConfirmPassword' => '确认密码',
'Brick:Portal:UserProfile:Password:CantChangeContactAdministrator' => '要修改密码, 请联系管理员',
'Brick:Portal:UserProfile:Password:CantChangeForUnknownReason' => '无法修改密码, 请联系管理员',
'Brick:Portal:UserProfile:PersonalInformations:Title' => '人员信息',
'Brick:Portal:UserProfile:PersonalInformations:Title' => '个体信息',
'Brick:Portal:UserProfile:Photo:Title' => '头像',
]);
@@ -106,18 +106,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Brick:Portal:Browse:Action:CreateObjectFromThis' => '新建 %1$s',
'Brick:Portal:Browse:Tree:ExpandAll' => '全部展开',
'Brick:Portal:Browse:Tree:CollapseAll' => '全部收起',
'Brick:Portal:Browse:Filter:NoData' => '没有项目',
'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:NoData' => '暂无数据.',
'Brick:Portal:Manage:Table:ItemActions' => '操作',
'Brick:Portal:Manage:DisplayMode:list' => '列表',
'Brick:Portal:Manage:DisplayMode:pie-chart' => '饼图',
'Brick:Portal:Manage:DisplayMode:pie-chart' => '饼图',
'Brick:Portal:Manage:DisplayMode:bar-chart' => '条形图',
'Brick:Portal:Manage:Others' => 'Others',
'Brick:Portal:Manage:Others' => '其它',
'Brick:Portal:Manage:All' => '全部',
'Brick:Portal:Manage:Group' => '分组',
'Brick:Portal:Manage:fct:count' => '个数',

View File

@@ -28,6 +28,7 @@ SetupWebPage::AddModule(
'category' => 'Portal',
// Setup
'dependencies' => [
'itop-attachments/3.2.1||true', //CMDBChangeOpAttachmentRemoved
],
'mandatory' => true,
'visible' => false,

File diff suppressed because one or more lines are too long

View File

@@ -1133,11 +1133,29 @@ table .group-actions .item-action-wrapper .panel-body > p:last-child{
/*********/
/* Forms */
/*********/
:root {
--ck-content-font-family: inherit;
--ck-content-font-color: inherit;
--ck-content-font-size: inherit;
--ck-content-line-height: inherit;
--ck-content-word-break: inherit;
--ck-content-overflow-wrap: inherit;
}
/* - Ensure HTML contents are displayed like in CKEditor */
.ipb-is-html-content {
@extend .ck-content;
}
.ck-source-editing-area {
height: 180px;
textarea {
// Unset bootstrap inherit on textarea element
font: unset;
}
}
.form_field_label > .control-label[data-tooltip-instantiated="true"] {
&::after {
content: "?";

View File

@@ -17,10 +17,11 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
* @author Benjamin Planque <benjamin.planque@combodo.com>
* @author Benjamin Planque <benjamin.planque@combodo.com>
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license https://opensource.org/licenses/AGPL-3.0
*/
//////////////////////////////////////////////////////////////////////
// Note: The classes have been grouped by categories: bizmodel
//////////////////////////////////////////////////////////////////////
@@ -28,20 +29,21 @@
// Classes in 'bizmodel'
//////////////////////////////////////////////////////////////////////
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:UserProfile:Title' => '我的资料',
'Brick:Portal:NewRequest:Title' => '新建工单',
'Brick:Portal:NewRequest:Title+' => '<p>需要帮助?</p><p>选择服务, 然后提交工单给我们的支持团队.</p>',
'Brick:Portal:NewRequest:Title+' => '<p>需要帮助?</p><p>选择服务目录并提交工单给我们的支持团队.</p>',
'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:ListAllRequests:Title' => '所有工单',
'Brick:Portal:ListAllRequests:Title+' => '<p>查看所有工单,不论状态如何.</p>',
'Brick:Portal:ListAllRequests:Tab' => '正在处理和已关闭',
'Brick:Portal:SearchInAllRequests:Title' => '搜索所有工单',
'Brick:Portal:SearchInAllRequests:Title+' => '<p>不论状态如何.</p>',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,10 +31,12 @@
// 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>+
@@ -43,6 +46,7 @@
// 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+' => '问题管理',
@@ -53,8 +57,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:SearchProblems' => '搜索问题',
'Menu:SearchProblems+' => '搜索问题',
'Menu:Problem:Shortcuts' => '快捷方式',
'Menu:Problem:MyProblems' => '我的问题',
'Menu:Problem:MyProblems+' => '我的问题',
'Menu:Problem:MyProblems' => '分配给我的问题',
'Menu:Problem:MyProblems+' => '分配给我的问题',
'Menu:Problem:OpenProblems' => '所有打开的问题',
'Menu:Problem:OpenProblems+' => '所有打开的问题',
'UI-ProblemManagementOverview-ProblemByService' => '按服务划分的问题',
@@ -103,25 +107,25 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Problem/Attribute:impact/Value:3' => '个体',
'Class:Problem/Attribute:impact/Value:3+' => '',
'Class:Problem/Attribute:urgency' => '紧急度',
'Class:Problem/Attribute:urgency+' => '问题多快解决',
'Class:Problem/Attribute:urgency/Value:1' => '紧急',
'Class:Problem/Attribute:urgency/Value:1+' => '紧急',
'Class:Problem/Attribute:urgency+' => '问题应该多快解决',
'Class:Problem/Attribute:urgency/Value:1' => '严重',
'Class:Problem/Attribute:urgency/Value:1+' => '',
'Class:Problem/Attribute:urgency/Value:2' => '高',
'Class:Problem/Attribute:urgency/Value:2+' => '',
'Class:Problem/Attribute:urgency/Value:2+' => '',
'Class:Problem/Attribute:urgency/Value:3' => '中',
'Class:Problem/Attribute:urgency/Value:3+' => '',
'Class:Problem/Attribute:urgency/Value:3+' => '',
'Class:Problem/Attribute:urgency/Value:4' => '低',
'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:1' => '严重',
'Class:Problem/Attribute:priority/Value:1+' => '',
'Class:Problem/Attribute:priority/Value:2' => '高',
'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:3+' => '',
'Class:Problem/Attribute:priority/Value:4' => '低',
'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' => '变更编号',

View File

@@ -2,8 +2,9 @@
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '',
@@ -13,10 +14,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求工单',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:NewUserRequest' => '新建需求',
'Menu:NewUserRequest+' => '新建需求工单',
'Menu:SearchUserRequests' => '搜索需求',
'Menu:SearchUserRequests+' => '搜索需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
@@ -35,7 +36,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '当前工单关的功能配置项相关的已知错误',
'Class:UserRequest:KnownErrorList+' => '链接到当前工单关的功能配置项的已知错误',
]);
// Dictionnay conventions
@@ -53,7 +54,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest' => '用户需求',
'Class:UserRequest' => '需求',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
@@ -65,9 +66,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批',
'Class:UserRequest/Attribute:status/Value:approved' => '已批',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
@@ -91,24 +92,24 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:impact/Value:3+' => '',
'Class:UserRequest/Attribute:priority' => '优先级',
'Class:UserRequest/Attribute:priority+' => '',
'Class:UserRequest/Attribute:priority/Value:1' => '紧急',
'Class:UserRequest/Attribute:priority/Value:1+' => '紧急',
'Class:UserRequest/Attribute:priority/Value:1' => '严重',
'Class:UserRequest/Attribute:priority/Value:1+' => '最高优先级',
'Class:UserRequest/Attribute:priority/Value:2' => '高',
'Class:UserRequest/Attribute:priority/Value:2+' => '',
'Class:UserRequest/Attribute:priority/Value:2+' => '',
'Class:UserRequest/Attribute:priority/Value:3' => '中',
'Class:UserRequest/Attribute:priority/Value:3+' => '',
'Class:UserRequest/Attribute:priority/Value:3+' => '',
'Class:UserRequest/Attribute:priority/Value:4' => '低',
'Class:UserRequest/Attribute:priority/Value:4+' => '',
'Class:UserRequest/Attribute:priority/Value:4+' => '最低优先级',
'Class:UserRequest/Attribute:urgency' => '紧急度',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency/Value:1' => '紧急',
'Class:UserRequest/Attribute:urgency/Value:1+' => '紧急',
'Class:UserRequest/Attribute:urgency/Value:1' => '严重',
'Class:UserRequest/Attribute:urgency/Value:1+' => '最高紧急',
'Class:UserRequest/Attribute:urgency/Value:2' => '高',
'Class:UserRequest/Attribute:urgency/Value:2+' => '',
'Class:UserRequest/Attribute:urgency/Value:2+' => '',
'Class:UserRequest/Attribute:urgency/Value:3' => '中',
'Class:UserRequest/Attribute:urgency/Value:3+' => '',
'Class:UserRequest/Attribute:urgency/Value:3+' => '',
'Class:UserRequest/Attribute:urgency/Value:4' => '低',
'Class:UserRequest/Attribute:urgency/Value:4+' => '',
'Class:UserRequest/Attribute:urgency/Value:4+' => '最低紧急性',
'Class:UserRequest/Attribute:origin' => '来自',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
@@ -123,7 +124,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_id+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
'Class:UserRequest/Attribute:approver_email+' => '',
@@ -135,7 +136,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '否',
@@ -204,10 +205,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:parent_incident_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => '子需求',
'Class:UserRequest/Attribute:related_request_list+' => '此父级需求相关的所有衍生需求',
'Class:UserRequest/Attribute:public_log' => '评论',
'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+' => '',
@@ -221,7 +222,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => '分配',
'Class:UserRequest/Stimulus:ev_assign+' => '',
@@ -245,15 +246,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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/Stimulus:ev_wait_for_approval+' => '',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '无法分配父级需求给自己',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案信息',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Organization:Overview:UserRequests' => '此组织的所有用户需求',
'Organization:Overview:MyUserRequests' => '我在此组织发起的需求',
'Organization:Overview:Tickets' => '此组织内的所有工单',
'Organization:Overview:UserRequests' => '来自此组织的需求',
'Organization:Overview:MyUserRequests' => '我在此组织的需求',
'Organization:Overview:Tickets' => '来自此组织内的工单',
]);

View File

@@ -2,8 +2,9 @@
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:RequestManagement' => '服务台',
'Menu:RequestManagement+' => '',
@@ -13,10 +14,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => '概况',
'Menu:UserRequest:Overview+' => '',
'Menu:NewUserRequest' => '新建用户需求',
'Menu:NewUserRequest+' => '新建用户需求工单',
'Menu:SearchUserRequests' => '搜索用户需求',
'Menu:SearchUserRequests+' => '搜索用户需求',
'Menu:NewUserRequest' => '新建需求',
'Menu:NewUserRequest+' => '新建需求工单',
'Menu:SearchUserRequests' => '搜索需求',
'Menu:SearchUserRequests+' => '搜索需求',
'Menu:UserRequest:Shortcuts' => '快捷方式',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => '分配给我的需求',
@@ -35,7 +36,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI-RequestManagementOverview-OpenRequestByType' => '打开的需求 (按类型)',
'UI-RequestManagementOverview-OpenRequestByCustomer' => '打开的需求 (按客户)',
'Class:UserRequest:KnownErrorList' => '已知错误',
'Class:UserRequest:KnownErrorList+' => '当前工单关联的功能配置项相关的已知错误',
'Class:UserRequest:KnownErrorList+' => '链接到当前工单关功能配置项的已知错误',
'Menu:UserRequest:MyWorkOrders' => '分配给我的工作任务',
'Menu:UserRequest:MyWorkOrders+' => '分配给我的所有工单',
'Class:Problem:KnownProblemList' => '已知问题',
@@ -57,7 +58,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest' => '用户需求',
'Class:UserRequest' => '需求',
'Class:UserRequest+' => '',
'Class:UserRequest/Attribute:status' => '状态',
'Class:UserRequest/Attribute:status+' => '',
@@ -69,9 +70,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:waiting_for_approval+' => '',
'Class:UserRequest/Attribute:status/Value:approved' => '已批',
'Class:UserRequest/Attribute:status/Value:approved' => '已批',
'Class:UserRequest/Attribute:status/Value:approved+' => '',
'Class:UserRequest/Attribute:status/Value:rejected' => '已驳回',
'Class:UserRequest/Attribute:status/Value:rejected+' => '',
@@ -97,24 +98,24 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:UserRequest/Attribute:impact/Value:3+' => '',
'Class:UserRequest/Attribute:priority' => '优先级',
'Class:UserRequest/Attribute:priority+' => '',
'Class:UserRequest/Attribute:priority/Value:1' => '紧急',
'Class:UserRequest/Attribute:priority/Value:1+' => '紧急',
'Class:UserRequest/Attribute:priority/Value:1' => '严重',
'Class:UserRequest/Attribute:priority/Value:1+' => '最高优先级',
'Class:UserRequest/Attribute:priority/Value:2' => '高',
'Class:UserRequest/Attribute:priority/Value:2+' => '',
'Class:UserRequest/Attribute:priority/Value:2+' => '',
'Class:UserRequest/Attribute:priority/Value:3' => '中',
'Class:UserRequest/Attribute:priority/Value:3+' => '',
'Class:UserRequest/Attribute:priority/Value:3+' => '',
'Class:UserRequest/Attribute:priority/Value:4' => '低',
'Class:UserRequest/Attribute:priority/Value:4+' => '',
'Class:UserRequest/Attribute:priority/Value:4+' => '最低优先级',
'Class:UserRequest/Attribute:urgency' => '紧急度',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency/Value:1' => '紧急',
'Class:UserRequest/Attribute:urgency/Value:1+' => '紧急',
'Class:UserRequest/Attribute:urgency+' => '问题应该多快解决',
'Class:UserRequest/Attribute:urgency/Value:1' => '严重',
'Class:UserRequest/Attribute:urgency/Value:1+' => '最高紧急',
'Class:UserRequest/Attribute:urgency/Value:2' => '高',
'Class:UserRequest/Attribute:urgency/Value:2+' => '',
'Class:UserRequest/Attribute:urgency/Value:2+' => '',
'Class:UserRequest/Attribute:urgency/Value:3' => '中',
'Class:UserRequest/Attribute:urgency/Value:3+' => '',
'Class:UserRequest/Attribute:urgency/Value:3+' => '',
'Class:UserRequest/Attribute:urgency/Value:4' => '低',
'Class:UserRequest/Attribute:urgency/Value:4+' => '',
'Class:UserRequest/Attribute:urgency/Value:4+' => '最低紧急性',
'Class:UserRequest/Attribute:origin' => '来源',
'Class:UserRequest/Attribute:origin+' => '工单创建由什么触发',
'Class:UserRequest/Attribute:origin/Value:in_person' => '当面',
@@ -128,7 +129,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:origin/Value:portal+' => '在用户门户创建的需求',
'Class:UserRequest/Attribute:approver_id' => '审核人',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:approver_email' => '邮箱',
@@ -141,7 +142,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:UserRequest/Attribute:escalation_flag/Value:no' => '否',
'Class:UserRequest/Attribute:escalation_flag/Value:no+' => '否',
@@ -207,9 +208,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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+' => '',
@@ -223,7 +224,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => '分配',
'Class:UserRequest/Stimulus:ev_assign+' => '',
@@ -258,7 +259,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:ButtonClose' => '关闭',
'Portal:ButtonReopen' => '重新打开',
'Portal:ShowServices' => '显示所有服务',
'Portal:SelectRequestType' => '选择一种类型的需求',
'Portal:SelectRequestType' => '选择一种类型的需求',
'Portal:SelectServiceElementFrom_Service' => '为 %1$s 选择服务元素',
'Portal:ListServices' => '服务列表',
'Portal:TitleDetailsFor_Service' => '服务详情',
@@ -274,13 +275,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Portal:NoOpenProblem' => '没有打开的问题',
'Portal:SelectLanguage' => '更改您的语言',
'Portal:LanguageChangedTo_Lang' => '语言更改为',
'Portal:ChooseYourFavoriteLanguage' => '选择您喜欢的语言',
'Portal:ChooseYourFavoriteLanguage' => '选择您偏好的语言',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单 (自动解决), 并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案',
]);
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Organization:Overview:UserRequests' => '来自此组织的用户需求',
'Organization:Overview:MyUserRequests' => '我在此组织的用户需求',
'Organization:Overview:UserRequests' => '来自此组织的需求',
'Organization:Overview:MyUserRequests' => '我在此组织的需求',
'Organization:Overview:Tickets' => '来自此组织的工单',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,6 +31,7 @@
// 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
//
@@ -38,9 +40,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ServiceManagement+' => '服务管理概况',
'Menu:Service:Overview' => '概况',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务级)',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => '合同 (按服务级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '近30天内截止的合同',
'Menu:ProviderContract' => '供应商合同',
'Menu:ProviderContract+' => '供应商合同',
'Menu:CustomerContract' => '客户合同',
@@ -52,14 +55,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务级协议',
'Menu:SLA+' => '服务级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务级目标',
'Menu:SLT+' => '服务级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Contract:baseinfo' => '常规信息',
'Menu:ServiceFamily' => '服务家族',
'Menu:ServiceFamily+' => '服务家族',
'Contract:baseinfo' => '基本信息',
'Contract:moreinfo' => '合同信息',
'Contract:cost' => '费用信息',
]);
@@ -138,14 +142,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:provider_name+' => '',
'Class:Contract/Attribute:status' => '状态',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => '启用',
'Class:Contract/Attribute:status/Value:implementation+' => '启用',
'Class:Contract/Attribute:status/Value:implementation' => '生效',
'Class:Contract/Attribute:status/Value:implementation+' => '生效',
'Class:Contract/Attribute:status/Value:obsolete' => '废弃',
'Class:Contract/Attribute:status/Value:obsolete+' => '废弃',
'Class:Contract/Attribute:status/Value:production' => '正式',
'Class:Contract/Attribute:status/Value:production+' => '正式',
'Class:Contract/Attribute:finalclass' => '合同类',
'Class:Contract/Attribute:finalclass+' => '',
'Class:Contract/Attribute:status/Value:production' => '生产',
'Class:Contract/Attribute:status/Value:production+' => '生产',
'Class:Contract/Attribute:finalclass' => '合同类',
'Class:Contract/Attribute:finalclass+' => '根本属性的名称',
]);
//
@@ -173,7 +177,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ProviderContract/Attribute:functionalcis_list' => '配置项',
'Class:ProviderContract/Attribute:functionalcis_list+' => '此合同包含的所有配置项',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '服务级协议',
'Class:ProviderContract/Attribute:sla+' => '服务级协议',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
]);
@@ -183,7 +187,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract' => '关联联系人/合同',
'Class:lnkContactToContract' => '链接 联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
@@ -201,7 +205,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument' => '链接 合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
@@ -219,7 +223,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkFunctionalCIToProviderContract' => '关联功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract' => '链接 功能配置项/供应商合同',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => '供应商合同',
@@ -237,7 +241,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily' => '服务家族',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
@@ -263,9 +267,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name' => '服务家族名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:documents_list' => '文档',
'Class:Service/Attribute:documents_list+' => '此服务相关的所有文档',
@@ -273,8 +277,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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' => '生产',
@@ -292,7 +296,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService' => '链接 文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
@@ -310,7 +314,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService' => '链接 联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => '服务',
@@ -341,8 +345,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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' => '生产',
@@ -373,10 +377,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:slts_list+' => '此 SLA 包含的所有服务级目标',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此 SLA 的所有客户合同',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '不能保存客户合同 %1$s 服务 %2$s 的关联: SLA 已存在',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '无法保存客户合同 %1$s 服务 %2$s 之间的链接: SLA 已存在',
]);
//
@@ -390,8 +394,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => '优先级',
'Class:SLT/Attribute:priority+' => '',
'Class:SLT/Attribute:priority/Value:1' => '紧急',
'Class:SLT/Attribute:priority/Value:1+' => '紧急',
'Class:SLT/Attribute:priority/Value:1' => '严重',
'Class:SLT/Attribute:priority/Value:1+' => '严重',
'Class:SLT/Attribute:priority/Value:2' => '高',
'Class:SLT/Attribute:priority/Value:2+' => '高',
'Class:SLT/Attribute:priority/Value:3' => '中',
@@ -404,7 +408,7 @@ 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+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => '响应时间',
@@ -412,7 +416,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:SLT/Attribute:unit/Value:hours' => '小时',
'Class:SLT/Attribute:unit/Value:hours+' => '小时',
@@ -425,7 +429,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSLAToSLT' => '关联 SLA / SLT',
'Class:lnkSLAToSLT' => '链接 SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
@@ -437,15 +441,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_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_ticket_priority+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value' => 'SLT 值',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value+' => '',
'Class:lnkSLAToSLT/Attribute:slt_value_unit' => 'SLT 单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '~~',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
]);
//
@@ -453,7 +457,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService' => '关联客户合同/服务',
'Class:lnkCustomerContractToService' => '链接 客户合同/服务',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => '客户合同',
@@ -466,7 +470,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService/Attribute:service_name+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_id' => 'SLA',
'Class:lnkCustomerContractToService/Attribute:sla_id+' => '',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'SLA名称',
'Class:lnkCustomerContractToService/Attribute:sla_name' => 'SLA 名称',
'Class:lnkCustomerContractToService/Attribute:sla_name+' => '',
]);
@@ -475,7 +479,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToProviderContract' => '关联 客户合同/供应商合同',
'Class:lnkCustomerContractToProviderContract' => '链接 客户合同/供应商合同',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => '客户合同',
@@ -493,7 +497,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToFunctionalCI' => '关联客户合同/功能配置项',
'Class:lnkCustomerContractToFunctionalCI' => '链接 客户合同/功能配置项',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => '客户合同',
@@ -522,9 +526,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:DeliveryModel/Attribute:description' => '描述',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => '联系人',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式的所有联系人 (包括团队和人员)',
'Class:DeliveryModel/Attribute:contacts_list+' => '此交付模式相关的所有联系人 (包括团队和个体)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '使用此交付模式的所有客户',
'Class:DeliveryModel/Attribute:customers_list+' => '所有使用此交付模式的客户',
]);
//
@@ -532,7 +536,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDeliveryModelToContact' => '关联 交付模式/联系人',
'Class:lnkDeliveryModelToContact' => '链接 交付模式/联系人',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => '交付模式',
@@ -554,10 +558,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract/Attribute:customer_id' => 'Customer id~~',
'Class:lnkContactToContract/Attribute:customer_id+' => '~~',
'Class:lnkContactToContract/Attribute:provider_id' => 'Provider id~~',
'Class:lnkContactToContract/Attribute:provider_id+' => '~~',
'Class:lnkContactToContract/Attribute:customer_id' => '客户id',
'Class:lnkContactToContract/Attribute:customer_id+' => '',
'Class:lnkContactToContract/Attribute:provider_id' => '供应商id',
'Class:lnkContactToContract/Attribute:provider_id+' => '',
]);
//
@@ -565,10 +569,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument/Attribute:customer_id' => 'Customer id~~',
'Class:lnkContractToDocument/Attribute:customer_id+' => '~~',
'Class:lnkContractToDocument/Attribute:provider_id' => 'Provider id~~',
'Class:lnkContractToDocument/Attribute:provider_id+' => '~~',
'Class:lnkContractToDocument/Attribute:customer_id' => '客户id',
'Class:lnkContractToDocument/Attribute:customer_id+' => '',
'Class:lnkContractToDocument/Attribute:provider_id' => '供应商id',
'Class:lnkContractToDocument/Attribute:provider_id+' => '',
]);
//
@@ -576,6 +580,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService/Attribute:provider_id' => 'Provider id~~',
'Class:lnkCustomerContractToService/Attribute:provider_id+' => '~~',
'Class:lnkCustomerContractToService/Attribute:provider_id' => '供应商id',
'Class:lnkCustomerContractToService/Attribute:provider_id+' => '',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,13 +31,15 @@
// 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-ContractsBySrvLevel' => '合同 (按服务级)',
'UI-ServiceManagementMenu-ContractsByStatus' => '合同 (按状态)',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => '未来30天内截止的合同',
'Menu:ProviderContract' => '供应商合同',
@@ -50,16 +53,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ServiceElement' => '服务元素',
'Menu:ServiceElement+' => '服务元素',
'Menu:SLA' => 'SLA',
'Menu:SLA+' => '服务级协议',
'Menu:SLA+' => '服务级协议',
'Menu:SLT' => 'SLT',
'Menu:SLT+' => '服务级目标',
'Menu:SLT+' => '服务级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Menu:ServiceFamily' => '服务家族',
'Menu:ServiceFamily+' => '服务家族',
'Menu:Procedure' => '流程清单',
'Menu:Procedure+' => '所有流程清单',
'Contract:baseinfo' => '常规信息',
'Contract:baseinfo' => '基本信息',
'Contract:moreinfo' => '合同信息',
'Contract:cost' => '费用信息',
]);
@@ -70,8 +74,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
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_id+' => '工单处理必备.
交付模式指定了可以处理工单的团队.',
'Class:Organization/Attribute:deliverymodel_name' => '交付模式名称',
]);
@@ -129,14 +133,14 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Contract/Attribute:provider_name+' => '通用名称',
'Class:Contract/Attribute:status' => '状态',
'Class:Contract/Attribute:status+' => '',
'Class:Contract/Attribute:status/Value:implementation' => '启用',
'Class:Contract/Attribute:status/Value:implementation+' => '启用',
'Class:Contract/Attribute:status/Value:implementation' => '生效',
'Class:Contract/Attribute:status/Value:implementation+' => '生效',
'Class:Contract/Attribute:status/Value:obsolete' => '废弃',
'Class:Contract/Attribute:status/Value:obsolete+' => '废弃',
'Class:Contract/Attribute:status/Value:production' => '生产',
'Class:Contract/Attribute:status/Value:production+' => '生产',
'Class:Contract/Attribute:finalclass' => '类',
'Class:Contract/Attribute:finalclass+' => '',
'Class:Contract/Attribute:finalclass' => '合同子类',
'Class:Contract/Attribute:finalclass+' => '根本属性的名称',
]);
//
// Class: CustomerContract
@@ -159,7 +163,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ProviderContract/Attribute:functionalcis_list' => '配置项',
'Class:ProviderContract/Attribute:functionalcis_list+' => '此供应商合同包含的所有配置项',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '服务级协议',
'Class:ProviderContract/Attribute:sla+' => '服务级协议',
'Class:ProviderContract/Attribute:coverage' => '服务时间',
'Class:ProviderContract/Attribute:coverage+' => '',
'Class:ProviderContract/Attribute:contracttype_id' => '合同类型',
@@ -167,7 +171,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ProviderContract/Attribute:contracttype_name' => '合同类型名称',
'Class:ProviderContract/Attribute:contracttype_name+' => '',
'Class:ProviderContract/Attribute:services_list' => '服务',
'Class:ProviderContract/Attribute:services_list+' => 'All the services purchased with this contract~~',
'Class:ProviderContract/Attribute:services_list+' => '此合同购买的所有服务',
]);
//
@@ -175,7 +179,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract' => '关联 联系人/合同',
'Class:lnkContactToContract' => '链接 联系人/合同',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => '合同',
@@ -193,7 +197,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument' => '关联合同/文档',
'Class:lnkContractToDocument' => '链接 合同/文档',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => '合同',
@@ -211,7 +215,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily' => '服务家族',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
@@ -235,9 +239,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_id+' => '',
'Class:Service/Attribute:servicefamily_name' => '服务系列名称',
'Class:Service/Attribute:servicefamily_name' => '服务家族名称',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:description' => '描述',
'Class:Service/Attribute:description+' => '',
@@ -247,8 +251,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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' => '生产',
@@ -270,7 +274,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDocumentToService' => '关联文档/服务',
'Class:lnkDocumentToService' => '链接 文档/服务',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => '服务',
@@ -288,7 +292,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToService' => '关联联系人/服务',
'Class:lnkContactToService' => '链接 联系人/服务',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => '服务',
@@ -325,8 +329,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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: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' => '生产',
@@ -349,10 +353,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:slts_list+' => '此 SLA 包含的所有服务级目标',
'Class:SLA/Attribute:customercontracts_list' => '客户合同',
'Class:SLA/Attribute:customercontracts_list+' => '使用此SLA的所有客户合同',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '不能保存客户合同%1$s与服务%2$s的关联: SLA已存在',
'Class:SLA/Attribute:customercontracts_list+' => '使用此 SLA 的所有客户合同',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => '无法保存客户合同 %1$s 与服务 %2$s 之间的链接: SLA 已存在',
]);
//
@@ -366,8 +370,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => '优先级',
'Class:SLT/Attribute:priority+' => '',
'Class:SLT/Attribute:priority/Value:1' => '紧急',
'Class:SLT/Attribute:priority/Value:1+' => '紧急',
'Class:SLT/Attribute:priority/Value:1' => '严重',
'Class:SLT/Attribute:priority/Value:1+' => '严重',
'Class:SLT/Attribute:priority/Value:2' => '高',
'Class:SLT/Attribute:priority/Value:2+' => '高',
'Class:SLT/Attribute:priority/Value:3' => '中',
@@ -388,7 +392,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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+' => '',
'Class:SLT/Attribute:unit/Value:hours' => '小时',
'Class:SLT/Attribute:unit/Value:hours+' => '小时',
@@ -403,26 +407,26 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkSLAToSLT' => '关联SLA/SLT',
'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' => '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' => '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_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' => 'SLT 值的计量单位',
'Class:lnkSLAToSLT/Attribute:slt_value_unit+' => '',
]);
@@ -431,7 +435,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService' => '关联客户合同/服务',
'Class:lnkCustomerContractToService' => '链接 客户合同/服务',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => '客户合同',
@@ -453,7 +457,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkProviderContractToService' => '关联供应商合同/服务',
'Class:lnkProviderContractToService' => '链接 供应商合同/服务',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s',
'Class:lnkProviderContractToService/Attribute:service_id' => '服务',
@@ -474,15 +478,15 @@ 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:name+' => '别忘了给交付模式添加团队',
'Class:DeliveryModel/Attribute:org_id' => '组织',
'Class:DeliveryModel/Attribute:org_id+' => 'Usually the organization that provides the services~~',
'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:contacts_list+' => '此交付模式相关的所有联系人 (包括团队和个体)',
'Class:DeliveryModel/Attribute:customers_list' => '客户',
'Class:DeliveryModel/Attribute:customers_list+' => '所有使用此交付模式的客户',
]);
@@ -492,7 +496,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkDeliveryModelToContact' => '关联交付模式/联系人',
'Class:lnkDeliveryModelToContact' => '链接 交付模式/联系人',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => '交付模式',
@@ -514,10 +518,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToContract/Attribute:customer_id' => 'Customer id~~',
'Class:lnkContactToContract/Attribute:customer_id+' => '~~',
'Class:lnkContactToContract/Attribute:provider_id' => 'Provider id~~',
'Class:lnkContactToContract/Attribute:provider_id+' => '~~',
'Class:lnkContactToContract/Attribute:customer_id' => '客户id',
'Class:lnkContactToContract/Attribute:customer_id+' => '',
'Class:lnkContactToContract/Attribute:provider_id' => '供应商id',
'Class:lnkContactToContract/Attribute:provider_id+' => '',
]);
//
@@ -525,10 +529,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContractToDocument/Attribute:customer_id' => 'Customer id~~',
'Class:lnkContractToDocument/Attribute:customer_id+' => '~~',
'Class:lnkContractToDocument/Attribute:provider_id' => 'Provider id~~',
'Class:lnkContractToDocument/Attribute:provider_id+' => '~~',
'Class:lnkContractToDocument/Attribute:customer_id' => '客户id',
'Class:lnkContractToDocument/Attribute:customer_id+' => '',
'Class:lnkContractToDocument/Attribute:provider_id' => '供应商id',
'Class:lnkContractToDocument/Attribute:provider_id+' => '',
]);
//
@@ -536,8 +540,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkCustomerContractToService/Attribute:provider_id' => 'Provider id~~',
'Class:lnkCustomerContractToService/Attribute:provider_id+' => '~~',
'Class:lnkCustomerContractToService/Attribute:provider_id' => '供应商id',
'Class:lnkCustomerContractToService/Attribute:provider_id+' => '',
]);
//
@@ -545,6 +549,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkProviderContractToService/Attribute:provider_id' => 'Provider id~~',
'Class:lnkProviderContractToService/Attribute:provider_id+' => '~~',
'Class:lnkProviderContractToService/Attribute:provider_id' => '供应商id',
'Class:lnkProviderContractToService/Attribute:provider_id+' => '',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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', '简体中文', [
// Dictionary entries go here
]);
@@ -30,12 +31,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:NASFileSystem/Attribute:org_id' => 'Org id~~',
'Class:NASFileSystem/Attribute:org_id+' => '~~',
'Class:NASFileSystem/Attribute:location_id' => 'Location id~~',
'Class:NASFileSystem/Attribute:location_id+' => '~~',
'Class:NASFileSystem/Attribute:location_name' => 'Location name~~',
'Class:NASFileSystem/Attribute:location_name+' => '~~',
'Class:NASFileSystem/Attribute:org_id' => '组织id',
'Class:NASFileSystem/Attribute:org_id+' => '',
'Class:NASFileSystem/Attribute:location_id' => '位置id',
'Class:NASFileSystem/Attribute:location_id+' => '',
'Class:NASFileSystem/Attribute:location_name' => '位置名称',
'Class:NASFileSystem/Attribute:location_name+' => '',
]);
//
@@ -43,10 +44,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:FiberChannelInterface/Attribute:org_id' => 'Org id~~',
'Class:FiberChannelInterface/Attribute:org_id+' => '~~',
'Class:FiberChannelInterface/Attribute:location_id' => 'Location id~~',
'Class:FiberChannelInterface/Attribute:location_id+' => '~~',
'Class:FiberChannelInterface/Attribute:org_id' => '组织id',
'Class:FiberChannelInterface/Attribute:org_id+' => '',
'Class:FiberChannelInterface/Attribute:location_id' => '位置id',
'Class:FiberChannelInterface/Attribute:location_id+' => '',
]);
//
@@ -54,10 +55,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:LogicalVolume/Attribute:org_id' => 'Org id~~',
'Class:LogicalVolume/Attribute:org_id+' => '~~',
'Class:LogicalVolume/Attribute:location_id' => 'Location id~~',
'Class:LogicalVolume/Attribute:location_id+' => '~~',
'Class:LogicalVolume/Attribute:location_name' => 'Location name~~',
'Class:LogicalVolume/Attribute:location_name+' => '~~',
'Class:LogicalVolume/Attribute:org_id' => '组织id',
'Class:LogicalVolume/Attribute:org_id+' => '',
'Class:LogicalVolume/Attribute:location_id' => '位置id',
'Class:LogicalVolume/Attribute:location_id+' => '',
'Class:LogicalVolume/Attribute:location_name' => '位置名称',
'Class:LogicalVolume/Attribute:location_name+' => '',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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/>
*/
// Dictionnary conventions
// Class:<class_name>
// Class:<class_name>+
@@ -32,6 +33,7 @@
// 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
//////////////////////////////////////////////////////////////////////
@@ -39,14 +41,16 @@
// 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:name+' => '用名称',
'Class:Organization/Attribute:code' => '编码',
'Class:Organization/Attribute:code+' => '组织编码 (Siret, DUNS,...)',
'Class:Organization/Attribute:status' => '状态',
@@ -63,9 +67,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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' => '概',
'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.'用户',
@@ -76,8 +80,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Location' => '地点',
'Class:Location+' => '任何类型的地点: 区域, 国家, 城市, 位置, 建筑, 楼层, 房间, 机架,...',
'Class:Location' => '位置',
'Class:Location+' => '任何类型的位置: 区域, 国家, 城市, 位置, 建筑, 楼层, 房间, 机架,...',
'Class:Location/Attribute:name' => '名称',
'Class:Location/Attribute:name+' => '',
'Class:Location/Attribute:status' => '状态',
@@ -134,10 +138,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:function+' => '',
'Class:Contact/Attribute:cis_list' => '配置项',
'Class:Contact/Attribute:cis_list+' => '此联系人关的所有配置项',
'Class:Contact/Attribute:cis_list+' => '此联系人关的所有配置项',
'Class:Contact/Attribute:finalclass' => '联系人类型',
'Class:Contact/Attribute:finalclass+' => '根本属性的名称',
]);
@@ -147,9 +151,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Person' => '人员',
'Class:Person' => '个体',
'Class:Person+' => '',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/ComplementaryName' => '%1$s - %2$s',
'Class:Person/Attribute:name' => '姓',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:first_name' => '名',
@@ -158,21 +162,21 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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_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+' => '',
'Class:Person/Attribute:manager_name' => '名',
'Class:Person/Attribute:manager_name' => '经理姓名',
'Class:Person/Attribute:manager_name+' => '',
'Class:Person/Attribute:team_list' => '团队',
'Class:Person/Attribute:team_list+' => '这人员归属的所有团队',
'Class:Person/Attribute:team_list+' => '此人所属的团队',
'Class:Person/Attribute:tickets_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:user_list+' => '此人相关的所有用户',
'Class:Person/Attribute:manager_id_friendlyname' => '经理昵称',
'Class:Person/Attribute:manager_id_friendlyname+' => '',
'Class:Person/Attribute:picture' => '头像',
'Class:Person/Attribute:picture+' => '',
@@ -180,7 +184,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Person/UniquenessRule:employee_number' => '\'$this->org_name$\' 内已经有人占用了这个员工号',
'Class:Person/UniquenessRule:name+' => '同一组织内的员工姓名必须唯一',
'Class:Person/UniquenessRule:name' => '\'$this->org_name$\' 内已经有人叫这个名字',
'Class:Person/Error:ChangingOrgDenied' => '无法移动此人到组织 \'%1$s\' 因为这将终端其用户门户的访问, 其关联的用户没有被授权访问此组织',
'Class:Person/Error:ChangingOrgDenied' => '无法移动此人到组织 \'%1$s\' 因为这将终端其用户门户的访问, 其关联的用户没有被授权访问此组织',
]);
//
@@ -228,7 +232,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Document/Attribute:status/Value:published' => '正式',
'Class:Document/Attribute:status/Value:published+' => '',
'Class:Document/Attribute:cis_list' => '配置项',
'Class:Document/Attribute:cis_list+' => '此文档关的所有配置项',
'Class:Document/Attribute:cis_list+' => '此文档关的所有配置项',
'Class:Document/Attribute:finalclass' => '文档类型',
'Class:Document/Attribute:finalclass+' => '根本属性的名称',
]);
@@ -302,16 +306,16 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkPersonToTeam' => '关联 人员/团队',
'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_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_id' => '个体',
'Class:lnkPersonToTeam/Attribute:person_id+' => '团队中的成员',
'Class:lnkPersonToTeam/Attribute:person_name' => '姓名',
'Class:lnkPersonToTeam/Attribute:person_name+' => '',
'Class:lnkPersonToTeam/Attribute:role_id' => '角色',
@@ -327,11 +331,11 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:DataAdministration' => '数据管理',
'Menu:DataAdministration+' => '数据管理',
'Menu:Catalogs' => '类',
'Menu:Catalogs' => '类',
'Menu:Catalogs+' => '数据类型',
'Menu:Audit' => '审计',
'Menu:Audit+' => '审计',
'Menu:CSVImport' => 'CSV导入',
'Menu:CSVImport' => 'CSV 导入',
'Menu:CSVImport+' => '批量创建或更新',
'Menu:Organization' => '组织',
'Menu:Organization+' => '所有组织',
@@ -339,18 +343,18 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:ConfigManagement+' => '配置管理',
'Menu:ConfigManagementCI' => '配置项',
'Menu:ConfigManagementCI+' => '配置项',
'Menu:ConfigManagementOverview' => '概',
'Menu:ConfigManagementOverview+' => '概',
'Menu:ConfigManagementOverview' => '概',
'Menu:ConfigManagementOverview+' => '概',
'Menu:Contact' => '联系人',
'Menu:Contact+' => '联系人',
'Menu:Contact:Count' => '%1$d 个联系人',
'Menu:Person' => '人员',
'Menu:Person+' => '所有人员',
'Menu:Person' => '个体',
'Menu:Person+' => '所有个体',
'Menu:Team' => '团队',
'Menu:Team+' => '所有团队',
'Menu:Document' => '文档',
'Menu:Document+' => '所有文档',
'Menu:Location' => '地点',
'Menu:Location' => '位置',
'Menu:Location+' => '所有位置',
'Menu:NewContact' => '新建联系人',
'Menu:NewContact+' => '新建联系人',
@@ -358,10 +362,10 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Menu:SearchContacts+' => '搜索联系人',
'Menu:ConfigManagement:Shortcuts' => '快捷方式',
'Menu:ConfigManagement:AllContacts' => '所有联系人: %1$d',
'Menu:Typology' => '类型配置',
'Menu:Typology+' => '类型配置',
'Menu:Typology' => '拓扑配置',
'Menu:Typology+' => '拓扑配置',
'UI_WelcomeMenu_AllConfigItems' => '摘要',
'Menu:ConfigManagement:Typology' => '类型配置',
'Menu:ConfigManagement:Typology' => '拓扑配置',
]);
// Add translation for Fieldsets
@@ -376,6 +380,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
// Themes
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'theme:fullmoon' => '满月',
'theme:test-red' => '测试 (红色)',
'theme:fullmoon' => 'Full moon',
'theme:test-red' => '测试实例 (红色)',
]);

View File

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

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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/>
*/
// Dictionnay conventions
// Class:<class_name>
// Class:<class_name>+
@@ -30,9 +31,11 @@
// 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:Ticket' => '工单',
'Class:Ticket+' => '',
@@ -66,7 +69,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:private_log+' => '',
'Class:Ticket/Attribute:contacts_list' => '联系人',
'Class:Ticket/Attribute:contacts_list+' => '此工单相关的所有联系人',
@@ -74,8 +77,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Ticket/Attribute:functionalcis_list+' => '此工单相关的所有配置项.',
'Class:Ticket/Attribute:workorders_list' => '工作任务',
'Class:Ticket/Attribute:workorders_list+' => '此工单相关的所有工作任务',
'Class:Ticket/Attribute:finalclass' => '类',
'Class:Ticket/Attribute:finalclass+' => '',
'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' => '进行中',
@@ -92,7 +95,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToTicket' => '关联联系人/工单',
'Class:lnkContactToTicket' => '链接 联系人/工单',
'Class:lnkContactToTicket+' => '',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s',
'Class:lnkContactToTicket/Attribute:ticket_id' => '工单',
@@ -102,7 +105,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:lnkContactToTicket/Attribute:contact_id' => '联系人',
'Class:lnkContactToTicket/Attribute:contact_id+' => '',
'Class:lnkContactToTicket/Attribute:contact_name' => '联系人姓名',
'Class:lnkContactToTicket/Attribute:contact_name+' => '~~',
'Class:lnkContactToTicket/Attribute:contact_name+' => '',
'Class:lnkContactToTicket/Attribute:contact_email' => '邮箱',
'Class:lnkContactToTicket/Attribute:contact_email+' => '',
'Class:lnkContactToTicket/Attribute:role' => '角色 (文本)',
@@ -154,95 +157,95 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
// 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' => '目标字段',
'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: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' => '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' => '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' => '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+' => '解决时限',
'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+' => '解决时限',
]);
//
@@ -250,6 +253,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Ticket/Attribute:team_email' => 'Team email~~',
'Class:Ticket/Attribute:team_email+' => '~~',
'Class:Ticket/Attribute:team_email' => '团队邮件',
'Class:Ticket/Attribute:team_email+' => '',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*
@@ -21,6 +21,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', '简体中文', [
// Dictionary entries go here
]);
@@ -30,6 +31,6 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
//
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:LogicalInterface/Attribute:org_id' => 'Org id~~',
'Class:LogicalInterface/Attribute:org_id+' => '~~',
'Class:LogicalInterface/Attribute:org_id' => '组织id',
'Class:LogicalInterface/Attribute:org_id+' => '',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*

View File

@@ -4,7 +4,7 @@
* 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.
*
@@ -21,7 +21,8 @@
* 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次',
'Core:ormValue:ormDocument:DownloadsCount' => '%1s',
'Core:ormValue:ormDocument:DownloadsCount+' => '已下载 %1$s 次',
]);

View File

@@ -4,7 +4,7 @@
* Localized data
*
* @copyright Copyright (C) 2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*
* This file is part of iTop.
*

View File

@@ -4,7 +4,7 @@
* 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.
*
@@ -21,6 +21,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', '简体中文', [
'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

@@ -17,14 +17,15 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
// 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" target="_blank">进入我们的文档了解更多.</a>',
'UI:Bulk:Export:MaliciousInjection:Sanitization:Alert:Message' => 'Some values have been sanitized to prevent potential security issues in Microsoft Excel. <a href="%1$s" target="_blank">Learn more in our documentation.</a>~~',
'UI:Bulk:Export:MaliciousInjection:Input:Label' => 'Sanitize potentially dangerous values~~',
'UI:Bulk:Export:MaliciousInjection:Input:Tooltip' => 'When enabled, potentially dangerous values will be sanitized during export. This will prevent Microsoft Excel from interpreting them as formulas. Note that this may alter the original data by prefixing it with a single quote (\') to ensure it is treated as text.~~',
'Core:BulkExport:Security' => 'Security~~',
'UI:Bulk:Export:MaliciousInjection:Alert:Message' => '在 MS Excel 中打开不信任的文件可能导致公式注入. 请确保 Excel 设置能够安全的处理该文件. <a href="%1$s">可以在我们的文档了解更多.</a>',
'UI:Bulk:Export:MaliciousInjection:Sanitization:Alert:Message' => '部分数值已被脱敏处理, 以以规避 MS Excel 中可能出现的安全隐患. <a href="%1$s" target="_blank">可以在我们的文档中了解更多.</a>',
'UI:Bulk:Export:MaliciousInjection:Input:Label' => '数据脱敏',
'UI:Bulk:Export:MaliciousInjection:Input:Tooltip' => '启用该功能后, 导出过程中将对存在安全隐患的数据值进行脱敏处理. 这能避免 MS Excel 将其识别为公式. 请注意,该操作可能会在原始数据前添加一个单引号(\')作为前缀, 以保证数据被正确识别为文本格式.',
'Core:BulkExport:Security' => '安全',
]);

View File

@@ -17,6 +17,7 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:DisplayBlock:List:AddEntry:Tooltip' => '向表添加条目',
'UI:DisplayBlock:List:AddEntry:Tooltip' => '向表格中添加条目',
]);

View File

@@ -17,58 +17,60 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
// 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' => '创建对象',
// $%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',
'UI:Links:Create:Button' => '创建',
'UI:Links:Create:Button+' => '创建 %4$s',
'UI:Links:Create:Modal:Title' => ' %2$s 中创建 %4$s',
// Add
'UI:Links:Add:Button' => '添加',
'UI:Links:Add:Button+' => '添加一个 %4$s',
'UI:Links:Add:Modal:Title' => '添加一个 %4$s %2$s',
'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 的关联',
'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',
'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 ?',
'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?',
'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: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} 个对象',
'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' => '新建条目',

View File

@@ -17,25 +17,27 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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:Title' => '您的 '.ITOP_APPLICATION_SHORT.' 消息',
'UI:Newsroom:iTopNotification:ViewAllPage:SubTitle' => '管理您的消息, 标记为已读或未读, 或者删除它们.',
'UI:Newsroom:iTopNotification:ViewAllPage:Read:Label' => '已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Unread:Label' => '未读',
'UI:Newsroom:iTopNotification:SelectMode:Label' => 'Select mode~~',
'UI:Newsroom:iTopNotification:SelectMode:Label' => '请选择模式',
'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:Action:DeleteAll:Confirmation:Message' => '请确认是否删除所有消息?',
'UI:Newsroom:iTopNotification:ViewAllPage:Empty:Title' => '没有消息, 已是最新!',
// Actions
// - Unitary buttons
// - 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:ViewObject:Label' => '查看消息',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsRead:Label' => '标记为已读',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:MarkAsUnread:Label' => '标记为未读',
// - Bulk buttons
@@ -43,7 +45,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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?~~',
'UI:Newsroom:iTopNotification:ViewAllPage:Action:DeleteSelected:Confirmation:Message' => '请确认是否删除所选消息?',
// Feedback messages
'UI:Newsroom:iTopNotification:ViewAllPage:Action:InvalidAction:Message' => '无效操作: "%1$s"',

View File

@@ -2,11 +2,12 @@
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
// UI elements
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:WelcomePopup:Button:RemindLater' => '后再提醒我',
'UI:WelcomePopup:Button:RemindLater' => '后再提醒我',
'UI:WelcomePopup:Button:AcknowledgeAndNext' => '下一步',
'UI:WelcomePopup:Button:AcknowledgeAndClose' => '关闭',
]);
@@ -14,42 +15,42 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
// Message
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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>
'UI:WelcomePopup:Message:320_01_Welcome:Description' => '<div>恭喜, 您已成功登录到 '.ITOP_APPLICATION.' '.ITOP_VERSION_NAME.'!</div>
<br>
<div>We\'re excited to announce this new release. </div>
<div>In addition to introducing new features such as Newsroom, '.ITOP_APPLICATION_SHORT.' 3.2 includes critical security patches, enhanced accessibility and other significant improvements focused on providing you with stability and security.</div>
<div>很高兴向您宣布这个新版本. </div>
<div>新增了新闻室等新功能, '.ITOP_APPLICATION_SHORT.' 3.2 还包含了关键的安全补丁、增强的亲和性以及其它重要改进,旨在为您提供更好的稳定性和安全性.</div>
<br>
<div>Discover all of '.ITOP_APPLICATION_SHORT.'\'s exciting new features and stay up-to-date with important notifications with our new welcome pop-up!</div>
<div>We hope you\'ll enjoy this version as much as we enjoyed imagining and creating it.</div>
<div>发现 '.ITOP_APPLICATION_SHORT.' 所有令人兴奋的新功能,并通过我们的新欢迎弹窗保持与重要通知的同步!</div>
<div>希望您会像我们一样, 从构思到创造, 全程享受这个版本.</div>
<br>
<div>Customize your '.ITOP_APPLICATION_SHORT.' preferences for a personalized experience.</div>~~',
'UI:WelcomePopup:Message:320_02_Newsroom:Title' => 'Say "Hello" to the newsroom~~',
'UI:WelcomePopup:Message:320_02_Newsroom:Description' => '<div>Say goodbye to cluttered inboxes and hello to personalized alerts with <a href="%1$s" target="_blank">'.ITOP_APPLICATION_SHORT.'\'s Newsroom</a>!</div>
<div>Newsroom allows you to easily manage notifications within the platform, so you can stay on top of important updates without constantly checking your email. With the ability to mark messages as read or unread, and automatically delete old notifications, you have complete control over your notifications. </div>
<div>定制您的 '.ITOP_APPLICATION_SHORT.' 偏好设置,可以获得个性化的体验.</div>',
'UI:WelcomePopup:Message:320_02_Newsroom:Title' => '向新闻室说"Hello"',
'UI:WelcomePopup:Message:320_02_Newsroom:Description' => '<div>告别杂乱的收件箱,用 <a href="%1$s" target="_blank">'.ITOP_APPLICATION_SHORT.' 新闻室</a>迎接个性化的告警!</div>
<div>新闻室允许您轻松管理平台内的通知,因此您可以掌握重要更新而无需频繁查收电子邮件.通过将消息标记为已读或未读,并自动删除旧通知,您可以完全控制您的通知.</div>
<br>
<div>Try it out today and streamline your '.ITOP_APPLICATION_SHORT.'\'s communication experience!</div>~~',
'UI:WelcomePopup:Message:320_03_NotificationsCenter:Title' => 'Notifications center~~',
'UI:WelcomePopup:Message:320_03_NotificationsCenter:Description' => '<div>As we know your information intake is already at its max, you can now easily choose how you receive your notifications - via email, chat, or even the Newsroom feature</div>
<div>You don\'t want to receive a certain type of alerts? Nothing easier with these advanced customization capabilities giving you the flexibility to tailor your experience to your needs. </div>
<div>今天就试试,简化您的 '.ITOP_APPLICATION_SHORT.' 沟通体验!</div>',
'UI:WelcomePopup:Message:320_03_NotificationsCenter:Title' => '通知中心',
'UI:WelcomePopup:Message:320_03_NotificationsCenter:Description' => '<div>由于我们知道您的信息摄入量已经达到最大限度,现在您可以轻松选择如何接收通知 - 通过电子邮件、聊天,甚至新闻室功能</div>
<div>您不想接收某种类型的警报?使用这些高级自定义功能,您可以根据需要轻松定制体验.</div>
<br>
<div>Access your <a href="%1$s" target="_blank">notifications center</a> through the newsroom or through your preferences and avoid information overload on all your communication channels!</div>~~',
'UI:WelcomePopup:Message:320_05_A11yThemes:Title' => 'Accessibility for '.ITOP_APPLICATION_SHORT.'\'s UI~~',
'UI:WelcomePopup:Message:320_05_A11yThemes:Description' => '<div>To ensure '.ITOP_APPLICATION_SHORT.'\'s accessibility, our team has been working on <a href="%1$s" target="_blank">new back-office themes</a>. WCAG compliants, those UI focus on making it easier for users with visual impairments to use the solution:
<div>通过新闻室或您的偏好设置访问您的<a href="%1$s" target="_blank">通知中心</a>,避免所有通信渠道的信息过载!</div>',
'UI:WelcomePopup:Message:320_05_A11yThemes:Title' => ITOP_APPLICATION_SHORT.' UI 的亲和性',
'UI:WelcomePopup:Message:320_05_A11yThemes:Description' => '<div>为了确保 '.ITOP_APPLICATION_SHORT.' 的亲和性,我们的团队一直在开发<a href="%1$s" target="_blank">新的后台主题</a>.符合 WCAG 标准,这些 UI 主题可以帮助视力障碍用户更容易的使用:
<ul>
<li><b>Color-blind theme:</b> Designed to help users with colorblindness, this theme actually breaks down in two sub-themes to adapt to specific cases: </li>
<li><b>色盲主题:</b> 设计用于帮助色盲用户,此主题实际上分为两个子主题以适应特定情况:</li>
<ul>
<li>One adapted to protanopia and deuteranopia</li>
<li>And another one for tritanopia</li>
<li>一个适用于红绿色盲和绿色色盲</li>
<li>另一个适用于黄蓝色盲</li>
</ul>
<br>
<li><b>High-contrast theme:</b> Increased contrast to allow users an easier distinction between different elements on screen and avoid to rely on color schema to convey information. It can be helpful for users with different pathology from colorblindness to low vision issues.</li>
<li><b>高对比度主题:</b> 增加对比度以允许用户更容易区分屏幕上的不同元素,并避免依赖颜色方案传递信息.它可以帮助从色盲到弱视等不同病理的用户.</li>
</ul>
</div>~~',
'UI:WelcomePopup:Message:320_04_PowerfulNotifications_AdminOnly:Title' => 'Powerful notifications~~',
'UI:WelcomePopup:Message:320_04_PowerfulNotifications_AdminOnly:Description' => '<div>'.ITOP_APPLICATION_SHORT.'\'s Newsroom gives you a new way to <a href="%1$s" target="_blank"><b>automate</b> your alerts based on events</a> with recurrence, so you can easily set up rules that work for you. </div>
<div>Our <b>priority-based notifications sorting</b> ensures that important messages are displayed first, while our URL customization options allow you to direct recipients to the right place. </div>
</div>',
'UI:WelcomePopup:Message:320_04_PowerfulNotifications_AdminOnly:Title' => '强大的通知',
'UI:WelcomePopup:Message:320_04_PowerfulNotifications_AdminOnly:Description' => '<div>'.ITOP_APPLICATION_SHORT.' 的新闻室为您提供了一种新的方法,可以 <a href="%1$s" target="_blank"><b>自动化</b> 基于事件的告警</a> 并支持重复设置, 因此您可以轻松设置适合您的规则. </div>
<div>我们的<b>基于优先级的通知排序</b>确保重要消息优先展示,同时,我们的 URL 自定义选项允许您将收件人引导到正确的位置.</div>
<br>
<div>With support for <b>multiple languages</b>, you have now complete control over your notifications display.</div>
<div>支持<b>多语言</b>,您现在可以完全控制通知显示.</div>
<br>
<div>Configure it today and see how much more efficient your alerts process can be!</div>~~',
<div>现在就配置它,看看您的警报流程可以变得多么高效!</div>',
]);

View File

@@ -17,6 +17,8 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
// Global search
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:Breadcrumbs:PreviousItemsListToggler:Label' => '上一页',
]);

View File

@@ -17,20 +17,21 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
// Display DataTable
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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' => '确认操作?',
'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

@@ -17,9 +17,10 @@
*
* 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:ChangeNotAllowed' => '不允许修改',
'UI:Component:Input:Password:DoesNotMatch' => '密码不匹配',
'UI:Component:Input:Set:MinimumItems' => 'Minimum %1$s item(s) required~~',
'UI:Component:Input:Set:MinimumItems' => '至少需要 %1$s 项',
]);

View File

@@ -1,21 +1,30 @@
<?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
*/
// Quick create
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Component:QuickCreate:Tooltip' => '快速创建任意类型的对象',
'UI:Component:QuickCreate:Input:Placeholder' => '请选择对象类型...',
'UI:Component:QuickCreate:Recents:Title' => '最近',
'UI:Component:QuickCreate:LastClasses:NoClass:Placeholder' => '您尚未创建任何对象',
'UI:Component:QuickCreate:MostPopular:Title' => '最常用',
'UI:Component:QuickCreate:HistoryDisabled' => '历史记录已禁用',
'UI:Component:QuickCreate:KeyboardShortcut:OpenDrawer' => '打开快速创建',
]);

View File

@@ -17,28 +17,29 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
// Activity panel
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:ActivityPanel:SizeToggler:Expand:Tooltip' => '展开',
'UI:Layout:ActivityPanel:SizeToggler:Reduce:Tooltip' => '减少',
'UI:Layout:ActivityPanel:SizeToggler:Reduce:Tooltip' => '还原',
'UI:Layout:ActivityPanel:DisplayToggler:Close:Tooltip' => '关闭',
'UI:Layout:ActivityPanel:LoadMoreEntries:Tooltip' => '加载更多',
'UI:Layout:ActivityPanel:LoadAllEntries: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:Filter:Logs:Title' => '日志',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Logs:Tooltip' => '显示/隐藏日志',
'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:Transitions:Tooltip' => '显示/隐藏 状态变化',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Title' => '编辑',
'UI:Layout:ActivityPanel:Tab:Toolbar:Filter:Edits:Tooltip' => '显示/隐藏字段编辑',
'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' => '此日志的消息数',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:AuthorsCount:Tooltip' => '正在交互的人数',
'UI:Layout:ActivityPanel:Tab:Toolbar:Info:MessagesCount:Tooltip' => '消息数',
// Compose button
'UI:Layout:ActivityPanel:ComposeButton:Tooltip' => '撰写新的条目',
@@ -51,9 +52,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:ActivityPanel:NotificationEntry:MessageLink:Tooltip' => '点击打开通知栏以获得更多信息',
// Placeholder
'UI:Layout:ActivityPanel:NoEntry:Placeholder:Hint' => '暂无任何活动',
'UI:Layout:ActivityPanel:NoEntry:Placeholder:Hint' => '暂无活动',
// Closed cover
'UI:Layout:ActivityPanel:ClosedCover:Title' => '活动板',
'UI:Layout:ActivityPanel:ClosedCover:Tooltip' => '点击打开活动板',
'UI:Layout:ActivityPanel:ClosedCover:Title' => '活动板',
'UI:Layout:ActivityPanel:ClosedCover:Tooltip' => '点击打开活动板',
]);

View File

@@ -17,9 +17,10 @@
*
* 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:CompanyLogo:AltText' => '公司Logo',
'UI:Layout:NavigationMenu:Silo:Label' => '请选择要筛选的组织',
'UI:Layout:NavigationMenu:Toggler:Tooltip' => '展开/折叠',
'UI:Layout:NavigationMenu:Toggler:TooltipWithSiloLabel' => '展开/折叠 (筛选%1$s)',

View File

@@ -2,13 +2,14 @@
/**
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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~~',
'UI:Layout:ObjectDetails:New:Modal:Title' => '对象创建',
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => '定义数据模型',
]);

View File

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

View File

@@ -2,7 +2,7 @@
/*
* @copyright Copyright (C) 2010-2024 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Layout:TabContainer:ExtraTabsListToggler:Label' => '其它标签页',

View File

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

View File

@@ -2,12 +2,12 @@
/*
* @copyright Copyright (C) 2010-2026 Combodo SAS
* @license http://opensource.org/licenses/AGPL-3.0
* @license https://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:Login:Title' => ITOP_APPLICATION_SHORT.'登录',
'UI:Login:Logo:AltText' => ITOP_APPLICATION_SHORT.' logo~~',
'UI:Login:Logo:AltText' => ITOP_APPLICATION_SHORT.' Logo',
'UI:Login:Welcome' => '欢迎使用'.ITOP_APPLICATION_SHORT.'!',
'UI:Login:IncorrectLoginPassword' => '用户名或密码错误, 请重试.',
'UI:Login:IdentifyYourself' => '请完成身份认证',

View File

@@ -19,15 +19,15 @@
*/
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'UI:NotificationsCenter:Page:Title' => 'Notifications center~~',
'UI:NotificationsCenter:Panel:Title' => 'Notifications center~~',
'UI:NotificationsCenter:Panel:SubTitle' => 'Manage Notifications that you have received : unsubscribe or limit them to a single channel~~',
'UI:NotificationsCenter:Panel:Toolbar:ViewAllNews:Title' => 'View all my news~~',
'UI:NotificationsCenter:Panel:Table:Channels' => 'Channels~~',
'UI:NotificationsCenter:Unsubscribe:Success' => 'You have been successfully unsubscribed from the selected notifications.~~',
'UI:NotificationsCenter:Unsubscribe:Error' => 'An error occurred while unsubscribing from the selected notifications.~~',
'UI:NotificationsCenter:Subscribe:Success' => 'You have been successfully subscribed to the selected notifications.~~',
'UI:NotificationsCenter:Subscribe:Error' => 'An error occurred while subscribing to the selected notifications.~~',
'UI:NotificationsCenter:Channel:OutOf:Text' => '%1$s out of %2$s~~',
'UI:NotificationsCenter:Advanced:Input:Label' => '%1$s: %2$s~~',
'UI:NotificationsCenter:Page:Title' => '通知中心',
'UI:NotificationsCenter:Panel:Title' => '通知中心',
'UI:NotificationsCenter:Panel:SubTitle' => '管理收到的消息 : 取消订阅或限制它们的数量',
'UI:NotificationsCenter:Panel:Toolbar:ViewAllNews:Title' => '查看所有消息',
'UI:NotificationsCenter:Panel:Table:Channels' => '频道',
'UI:NotificationsCenter:Unsubscribe:Success' => '您已成功取消订阅所选的通知.',
'UI:NotificationsCenter:Unsubscribe:Error' => '取消订阅时发生错误.',
'UI:NotificationsCenter:Subscribe:Success' => '您已成功订阅所选的通知.',
'UI:NotificationsCenter:Subscribe:Error' => '订阅时发生错误.',
'UI:NotificationsCenter:Channel:OutOf:Text' => '%2$s 中的 %1$s',
'UI:NotificationsCenter:Advanced:Input:Label' => '%1$s: %2$s',
]);

View File

@@ -17,7 +17,8 @@
*
* 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令牌创建',
'core/Operation:Landing/Title' => 'OAuth token 创建',
]);

View File

@@ -17,42 +17,43 @@
*
* You should have received a copy of the GNU Affero General Public License
*/
// Navigation menu
Dict::Add('ZH CN', 'Chinese', '简体中文', [
'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>.~~',
'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' => '通知提醒位置',
'UI:Preferences:General:Toasts:Bottom' => '底部',
'UI:Preferences:General:Toasts:Top' => '顶部',
'UI:Preferences:ChooseAPlaceholder' => '用户的占位头像',
'UI:Preferences:ChooseAPlaceholder+' => '选择默认占位头像, 将在联系人没有设头像时显示',
'UI:Preferences:ChooseAPlaceholder:Success:Message' => '占位头像已成功更新',
'UI:Preferences:Notifications' => '通知',
'UI:Preferences:Notifications+' => '在 <a href="%1$s">这里</a>配置您想要收到的通知.',
]);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -50,7 +50,10 @@ const CombodoCKEditorHandler = {
this.is_upload_configured[sElem] = false;
// create instance
return this.instances_promise[sElem] = new Promise((resolve, reject) => {
ClassicEditor.create($(sElem)[0], aConfiguration)
ClassicEditor.create(Object.assign({
attachTo: $(sElem)[0],
licenseKey: 'GPL',
}, aConfiguration))
.then(editor => {
// Adjust size if passed in configuration
// - Width

View File

@@ -2917,6 +2917,7 @@ return array(
'Twig\\Markup' => $vendorDir . '/twig/twig/src/Markup.php',
'Twig\\NodeTraverser' => $vendorDir . '/twig/twig/src/NodeTraverser.php',
'Twig\\NodeVisitor\\AbstractNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
'Twig\\NodeVisitor\\CorrectnessNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/CorrectnessNodeVisitor.php',
'Twig\\NodeVisitor\\EscaperNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
'Twig\\NodeVisitor\\NodeVisitorInterface' => $vendorDir . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => $vendorDir . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
@@ -2931,6 +2932,8 @@ return array(
'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\\CoercesChildrenToStringInterface' => $vendorDir . '/twig/twig/src/Node/CoercesChildrenToStringInterface.php',
'Twig\\Node\\ConfigNode' => $vendorDir . '/twig/twig/src/Node/ConfigNode.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',
@@ -3069,12 +3072,15 @@ return array(
'Twig\\Sandbox\\SecurityNotAllowedMethodError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php',
'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php',
'Twig\\Sandbox\\SecurityNotAllowedTagError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
'Twig\\Sandbox\\SecurityNotAllowedTestError' => $vendorDir . '/twig/twig/src/Sandbox/SecurityNotAllowedTestError.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',
'Twig\\Test\\IntegrationTestCase' => $vendorDir . '/twig/twig/src/Test/IntegrationTestCase.php',
'Twig\\Test\\NodeTestCase' => $vendorDir . '/twig/twig/src/Test/NodeTestCase.php',
'Twig\\Token' => $vendorDir . '/twig/twig/src/Token.php',
'Twig\\TokenParser\\AbstractTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
'Twig\\TokenParser\\ApplyTokenParser' => $vendorDir . '/twig/twig/src/TokenParser/ApplyTokenParser.php',
@@ -3104,6 +3110,7 @@ return array(
'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\\CallableParameters' => $vendorDir . '/twig/twig/src/Util/CallableParameters.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',

View File

@@ -3272,6 +3272,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Markup' => __DIR__ . '/..' . '/twig/twig/src/Markup.php',
'Twig\\NodeTraverser' => __DIR__ . '/..' . '/twig/twig/src/NodeTraverser.php',
'Twig\\NodeVisitor\\AbstractNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php',
'Twig\\NodeVisitor\\CorrectnessNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/CorrectnessNodeVisitor.php',
'Twig\\NodeVisitor\\EscaperNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php',
'Twig\\NodeVisitor\\NodeVisitorInterface' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/NodeVisitorInterface.php',
'Twig\\NodeVisitor\\OptimizerNodeVisitor' => __DIR__ . '/..' . '/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php',
@@ -3286,6 +3287,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'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\\CoercesChildrenToStringInterface' => __DIR__ . '/..' . '/twig/twig/src/Node/CoercesChildrenToStringInterface.php',
'Twig\\Node\\ConfigNode' => __DIR__ . '/..' . '/twig/twig/src/Node/ConfigNode.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',
@@ -3424,12 +3427,15 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Twig\\Sandbox\\SecurityNotAllowedMethodError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php',
'Twig\\Sandbox\\SecurityNotAllowedPropertyError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php',
'Twig\\Sandbox\\SecurityNotAllowedTagError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php',
'Twig\\Sandbox\\SecurityNotAllowedTestError' => __DIR__ . '/..' . '/twig/twig/src/Sandbox/SecurityNotAllowedTestError.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',
'Twig\\Test\\IntegrationTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/IntegrationTestCase.php',
'Twig\\Test\\NodeTestCase' => __DIR__ . '/..' . '/twig/twig/src/Test/NodeTestCase.php',
'Twig\\Token' => __DIR__ . '/..' . '/twig/twig/src/Token.php',
'Twig\\TokenParser\\AbstractTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/AbstractTokenParser.php',
'Twig\\TokenParser\\ApplyTokenParser' => __DIR__ . '/..' . '/twig/twig/src/TokenParser/ApplyTokenParser.php',
@@ -3459,6 +3465,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'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\\CallableParameters' => __DIR__ . '/..' . '/twig/twig/src/Util/CallableParameters.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',

View File

@@ -1659,12 +1659,12 @@
"source": {
"type": "git",
"url": "https://github.com/combodo-itop-libs/scssphp.git",
"reference": "dde81c0a39d02e8e6fc81b70269747734e16d526"
"reference": "6820f035182a956c355cbfa7882d90f1198a208b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/combodo-itop-libs/scssphp/zipball/dde81c0a39d02e8e6fc81b70269747734e16d526",
"reference": "dde81c0a39d02e8e6fc81b70269747734e16d526",
"url": "https://api.github.com/repos/combodo-itop-libs/scssphp/zipball/6820f035182a956c355cbfa7882d90f1198a208b",
"reference": "6820f035182a956c355cbfa7882d90f1198a208b",
"shasum": ""
},
"require": {
@@ -1687,7 +1687,7 @@
"ext-iconv": "Can be used as fallback when ext-mbstring is not available",
"ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
},
"time": "2026-03-23T15:26:59+00:00",
"time": "2026-04-23T14:20:24+00:00",
"bin": [
"bin/pscss"
],
@@ -5206,17 +5206,17 @@
},
{
"name": "twig/twig",
"version": "v3.23.0",
"version_normalized": "3.23.0.0",
"version": "v3.28.0",
"version_normalized": "3.28.0.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
"reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/597c12ed286fb9d1701a36684ce6e0cbe28ebc8b",
"reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b",
"shasum": ""
},
"require": {
@@ -5226,11 +5226,12 @@
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
"php-cs-fixer/shim": "^3.0@stable",
"phpstan/phpstan": "^2.0@stable",
"psr/container": "^1.0|^2.0",
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"time": "2026-01-23T21:00:41+00:00",
"time": "2026-07-03T20:44:34+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -5272,7 +5273,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.23.0"
"source": "https://github.com/twigphp/Twig/tree/v3.28.0"
},
"funding": [
{

View File

@@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => 'combodo/itop',
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '4b4fe55060b045962c6954ebff6ca624f87df3f5',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,9 +22,9 @@
'dev_requirement' => false,
),
'combodo/itop' => array(
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
'reference' => '4b4fe55060b045962c6954ebff6ca624f87df3f5',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -294,7 +294,7 @@
'scssphp/scssphp' => array(
'pretty_version' => 'dev-combodo/1.x',
'version' => 'dev-combodo/1.x',
'reference' => 'dde81c0a39d02e8e6fc81b70269747734e16d526',
'reference' => '6820f035182a956c355cbfa7882d90f1198a208b',
'type' => 'library',
'install_path' => __DIR__ . '/../scssphp/scssphp',
'aliases' => array(),
@@ -679,9 +679,9 @@
'dev_requirement' => false,
),
'twig/twig' => array(
'pretty_version' => 'v3.23.0',
'version' => '3.23.0.0',
'reference' => 'a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9',
'pretty_version' => 'v3.28.0',
'version' => '3.28.0.0',
'reference' => '597c12ed286fb9d1701a36684ce6e0cbe28ebc8b',
'type' => 'library',
'install_path' => __DIR__ . '/../twig/twig',
'aliases' => array(),

View File

@@ -939,7 +939,7 @@ class Compiler
// if the new part is just including a previous part don't try to extend anymore
if (\count($part) > 1) {
foreach ($partsPile as $previousPart) {
if (! \count(array_diff($previousPart, $part))) {
if (! \count($this->diff_recursive($previousPart, $part))) {
continue 2;
}
}
@@ -10511,4 +10511,20 @@ TXT;
return [Type::T_LIST, ',', $listParts];
}
protected function diff_recursive($array1, $array2) {
$difference=array();
foreach($array1 as $key => $value) {
if(is_array($value) && isset($array2[$key])){ // it's an array and both have the key
$new_diff = $this->diff_recursive($value, $array2[$key]);
if( !empty($new_diff) )
$difference[$key] = $new_diff;
} else if(is_string($value) && !in_array($value, $array2)) { // the value is a string and it's not in array B
$difference[$key] = $value . " is missing from the second array";
} else if(!is_numeric($key) && !array_key_exists($key, $array2)) { // the key is not numberic and is missing from array B
$difference[$key] = "Missing from the second array";
}
}
return $difference;
}
}

View File

@@ -1,3 +1,85 @@
# 3.28.0 (2026-07-03)
* Render backed enums using their backing value in the `html_attr` function
* Fix empty Markup values being treated as truthy in and, or, xor, not, ternary, and elvis expressions
* Fix a PHP 8.5 `chr()` deprecation when decoding an octal string escape sequence larger than `\377` (such as `"\777"`)
* Mark `Twig\Markup` as `@final`; it will be final in Twig 4.0
* Reduce memory usage and speed up the context restoration compiled at the end of `for` loops
* Allow calling a macro with a dynamic name via the dot operator (`macros.(name)(args)`)
* Report the column number in syntax errors and expose it via `Error::getTemplateColumn()`
* Track the source offset of each token and expose it via `Token::getOffset()`
* Fix nested `block()` calls to resolve against the overriding template when a block rendered through `block(name, template)` calls `parent()`
* Deprecate the possibility to use a `block` tag within a capture node (like `set`)
* Deprecate the possibility to use a `block` tag within a capture node (like `set`) in child templates
* Deprecate using a `macro`, `extends`, or `use` tag outside the root of a template
* Stop reporting a skipped test in `IntegrationTestCase` when there is no legacy test to run
* Fix `markdown_to_html` to strip the indentation shared by all lines instead of mangling content that starts with a blank line
* Make the `IntegrationTestCase` and `NodeTestCase` test helpers compatible with PHPUnit 11
* Cast printed expressions to string so values that cannot be converted to a string (arrays, non-`Stringable` objects, ...) report a usable stack trace at the print location
* Make the `include()` function return a `Markup` object so an assigned result is not re-escaped when printed
* Skip the sandbox `__toString` check on arguments whose PHP parameter type cannot implicitly coerce to string
* Document the criteria for marking a callable or tag as always allowed in a sandbox, and the list of built-in tags, filters, and functions that will be always allowed in Twig 4.0
* Add an `always_allowed_in_sandbox` option for filters, functions, and tests, and an `isAlwaysAllowedInSandbox()` method for token parsers, to let authors mark callables and tags that are always allowed in sandbox mode without explicit allow-listing
* Add an allow-list for tests to `Twig\Sandbox\SecurityPolicy`, with the safe built-in tests flagged as always allowed so they keep working without allow-listing
# 3.27.1 (2026-05-30)
* Fix array access with a `Stringable` key to coerce the key to string consistently instead of throwing in the optimized path
* Fix sandbox replacing `IteratorAggregate` arguments (e.g. Symfony's `FormView`) by a plain array
# 3.27.0 (2026-05-27)
* Add a strict mode to `Twig\Sandbox\SecurityPolicy` to opt-in to the 4.0 behavior for the `extends`/`use` tags and the `parent`/`block`/`attribute` functions, which are otherwise still implicitly allowed in a sandbox
* Deprecate the fact that the `parent`, `block`, and `attribute` functions are always allowed in a sandboxed template
* Fix sandbox filter/tag/function allow-list bypass when the sandbox state changed between renders of a cached `Template` instance
* Fix PHP 8.1+ implicit float-to-int deprecation triggered by sandboxed `ArrayAccess` attribute access with a float key
* Restrict allowed classes in `Twig\Profiler\Profile::unserialize()` to prevent arbitrary class instantiation
* Escape root profile name in `HtmlDumper`
* Fix sandbox bypass in deprecated internal wrappers `twig_array_some()`, `twig_array_every()`, and `twig_check_arrow_in_sandbox()` (`src/Resources/core.php`)
* Deprecate the `Twig\Sandbox\SourcePolicyInterface` interface with no replacement
* Fix sandbox bypass in the "column" filter when sandboxing is enabled via `SourcePolicyInterface`
* Fix sandbox `__toString` bypass via `Traversable` arguments to the `join` and `replace` filters (also covers containers that implement both `Stringable` and `Traversable`)
* Fix sandbox `__toString` bypass via the `in` and `not in` operators
* Prevent a stack overflow in `SandboxExtension::ensureToStringAllowed()` when a self-referencing iterable is passed to a sandboxed template
* Add support for any expression as a dynamic mapping key (attribute access, filters, ...)
* Fix sandbox `__toString` policy bypass via dynamic mapping keys
# 3.26.0 (2026-05-20)
* Document that the sandbox doesn't protect against resource exhaustion
* Document `template_from_string` caveats when used in a sandboxed environment
* Add docs on `Markup` about the goal of this class in the context of a sandbox
* Pre-escape HTML input on the `spaceless` filter
* Pre-escape HTML input on `inline_css` and `inky_to_html` filters
* Fix XSS by adjusting `is_safe` annotation on HTML-emitting filters
* [Profiler] Escape template and profile names in `HtmlDumper`
* Fix unbounded memoisation of `IntlDateFormatter` / `NumberFormatter`
* Fix sandbox bypass in the "column" filter
* Fix sandbox bypass in the `{% sandbox %}` tag when including a preloaded template
* Fix sandbox bypass: PHP code injection via `{% use %}` template name
* Fix sandbox bypass: PHP code injection via `_self` / import macro reference
* Fix sandbox bypass in object destructuring assignment
* Fix sandbox bypass: propagate `Source` to `checkArrow` for source-policy sandboxing
* Encode single quotes as `\x27` in `Compiler::string()` as a defense-in-depth measure
* Fix sandbox `__toString` bypasses
* Add `Twig\Node\CoercesChildrenToStringInterface` to let nodes declare which of their child nodes will be string-coerced at runtime so the sandbox wraps them with a `__toString` check
# 3.25.0 (2026-05-17)
* Add a `needs_is_sandboxed` option for filters, functions, and tests
* Use deterministic suffixes for generated embed classes
* Lazy-load `EscaperRuntime` in `EscaperExtension`
# 3.24.0 (2026-03-17)
* Deprecate not implementing the `getOperatorTokens()` method in `ExpressionParserInterface` implementations
* Deprecate passing a non-`AbstractExpression` node to `Twig\Node\Expression\Binary\MatchesBinary` constructor
* Deprecate passing a non-`AbstractExpression` node to `Parser::setParent()`
* Add support for renaming variables in object destructuring (`{name: userName} = user`)
* Add `html_attr_relaxed` escaping strategy that preserves :, @, [, and ] for front-end framework attribute names
* Add support for short-circuiting in null-safe operator chains
* Add the `html_attr` function and `html_attr_merge` as well as `html_attr_type` filters
# 3.23.0 (2026-01-23)
* Add `=` assignment operator (allows to set variables in expression or to replace the short-form of the set tag)

View File

@@ -32,7 +32,8 @@
"require-dev": {
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0",
"psr/container": "^1.0|^2.0",
"phpstan/phpstan": "^2.0"
"phpstan/phpstan": "^2.0@stable",
"php-cs-fixer/shim": "^3.0@stable"
},
"autoload": {
"files": [

View File

@@ -1,15 +0,0 @@
{
"subtrees": {
"twig-extra-bundle": "extra/twig-extra-bundle",
"cache-extra": "extra/cache-extra",
"cssinliner-extra": "extra/cssinliner-extra",
"html-extra": "extra/html-extra",
"inky-extra": "extra/inky-extra",
"intl-extra": "extra/intl-extra",
"markdown-extra": "extra/markdown-extra",
"string-extra": "extra/string-extra"
},
"defaults": {
"git_constraint": "<1.8.2"
}
}

View File

@@ -32,7 +32,9 @@ abstract class AbstractTwigCallable implements TwigCallableInterface
'needs_environment' => false,
'needs_context' => false,
'needs_charset' => false,
'needs_is_sandboxed' => false,
'is_variadic' => false,
'always_allowed_in_sandbox' => false,
'deprecation_info' => null,
'deprecated' => false,
'deprecating_package' => '',
@@ -107,6 +109,16 @@ abstract class AbstractTwigCallable implements TwigCallableInterface
return $this->options['needs_context'];
}
public function needsIsSandboxed(): bool
{
return $this->options['needs_is_sandboxed'];
}
public function isAlwaysAllowedInSandbox(): bool
{
return $this->options['always_allowed_in_sandbox'];
}
/**
* @return static
*/
@@ -182,6 +194,6 @@ abstract class AbstractTwigCallable implements TwigCallableInterface
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);
return ($this->options['needs_charset'] ? 1 : 0) + ($this->options['needs_environment'] ? 1 : 0) + ($this->options['needs_context'] ? 1 : 0) + ($this->options['needs_is_sandboxed'] ? 1 : 0) + \count($this->arguments);
}
}

View File

@@ -31,26 +31,30 @@ use Twig\TwigFilter;
final class AsTwigFilter
{
/**
* @param non-empty-string $name The name of the filter in Twig
* @param bool|null $needsCharset Whether the filter needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the filter needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the filter needs the context array passed as the first argument, or after the charset and the environment
* @param string[]|null $isSafe List of formats in which you want the raw output to be printed unescaped
* @param string|array|null $isSafeCallback Function called at compilation time to determine if the filter is safe
* @param string|null $preEscape Some filters may need to work on input that is already escaped or safe
* @param string[]|null $preservesSafety Preserves the safety of the value that the filter is applied to
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param non-empty-string $name The name of the filter in Twig
* @param bool|null $needsCharset Whether the filter needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the filter needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the filter needs the context array passed as the first argument, or after the charset and the environment
* @param bool|null $needsIsSandboxed Whether the filter needs the current sandbox state (a boolean) passed as the first argument, or after the charset, the environment, and the context
* @param string[]|null $isSafe List of formats in which you want the raw output to be printed unescaped
* @param string|array|null $isSafeCallback Function called at compilation time to determine if the filter is safe
* @param string|null $preEscape Some filters may need to work on input that is already escaped or safe
* @param string[]|null $preservesSafety Preserves the safety of the value that the filter is applied to
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param bool|null $alwaysAllowedInSandbox Whether the filter is always allowed in sandbox mode, even when not explicitly allow-listed
*/
public function __construct(
public string $name,
public ?bool $needsCharset = null,
public ?bool $needsEnvironment = null,
public ?bool $needsContext = null,
public ?bool $needsIsSandboxed = null,
public ?array $isSafe = null,
public string|array|null $isSafeCallback = null,
public ?string $preEscape = null,
public ?array $preservesSafety = null,
public ?DeprecatedCallableInfo $deprecationInfo = null,
public ?bool $alwaysAllowedInSandbox = null,
) {
}
}

View File

@@ -31,22 +31,26 @@ use Twig\TwigFunction;
final class AsTwigFunction
{
/**
* @param non-empty-string $name The name of the function in Twig
* @param bool|null $needsCharset Whether the function needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the function needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the function needs the context array passed as the first argument, or after the charset and the environment
* @param string[]|null $isSafe List of formats in which you want the raw output to be printed unescaped
* @param string|array|null $isSafeCallback Function called at compilation time to determine if the function is safe
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param non-empty-string $name The name of the function in Twig
* @param bool|null $needsCharset Whether the function needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the function needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the function needs the context array passed as the first argument, or after the charset and the environment
* @param bool|null $needsIsSandboxed Whether the function needs the current sandbox state (a boolean) passed as the first argument, or after the charset, the environment, and the context
* @param string[]|null $isSafe List of formats in which you want the raw output to be printed unescaped
* @param string|array|null $isSafeCallback Function called at compilation time to determine if the function is safe
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param bool|null $alwaysAllowedInSandbox Whether the function is always allowed in sandbox mode, even when not explicitly allow-listed
*/
public function __construct(
public string $name,
public ?bool $needsCharset = null,
public ?bool $needsEnvironment = null,
public ?bool $needsContext = null,
public ?bool $needsIsSandboxed = null,
public ?array $isSafe = null,
public string|array|null $isSafeCallback = null,
public ?DeprecatedCallableInfo $deprecationInfo = null,
public ?bool $alwaysAllowedInSandbox = null,
) {
}
}

View File

@@ -31,18 +31,22 @@ use Twig\TwigTest;
final class AsTwigTest
{
/**
* @param non-empty-string $name The name of the test in Twig
* @param bool|null $needsCharset Whether the test needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the test needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the test needs the context array passed as the first argument, or after the charset and the environment
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param non-empty-string $name The name of the test in Twig
* @param bool|null $needsCharset Whether the test needs the charset passed as the first argument
* @param bool|null $needsEnvironment Whether the test needs the environment passed as the first argument, or after the charset
* @param bool|null $needsContext Whether the test needs the context array passed as the first argument, or after the charset and the environment
* @param bool|null $needsIsSandboxed Whether the test needs the current sandbox state (a boolean) passed as the first argument, or after the charset, the environment, and the context
* @param DeprecatedCallableInfo|null $deprecationInfo Information about the deprecation
* @param bool|null $alwaysAllowedInSandbox Whether the test is always allowed in sandbox mode, even when not explicitly allow-listed
*/
public function __construct(
public string $name,
public ?bool $needsCharset = null,
public ?bool $needsEnvironment = null,
public ?bool $needsContext = null,
public ?bool $needsIsSandboxed = null,
public ?DeprecatedCallableInfo $deprecationInfo = null,
public ?bool $alwaysAllowedInSandbox = null,
) {
}
}

View File

@@ -143,7 +143,13 @@ class Compiler
*/
public function string(string $value)
{
$this->source .= \sprintf('"%s"', addcslashes($value, "\0\t\"\$\\"));
// Single quotes are encoded as \x27 (not \') as a defense-in-depth measure:
// it guarantees that the compiled output never contains a literal "'" derived
// from user input, which prevents breaking out of a surrounding single-quoted
// PHP context if a caller mistakenly concatenates the result into one.
// \' is not a recognized escape sequence in PHP double-quoted strings (the
// backslash would be kept literally), so \x27 is used instead.
$this->source .= \sprintf('"%s"', str_replace("'", '\\x27', addcslashes($value, "\0\t\"\$\\")));
return $this;
}

View File

@@ -43,10 +43,10 @@ use Twig\TokenParser\TokenParserInterface;
*/
class Environment
{
public const VERSION = '3.23.0';
public const VERSION_ID = 32300;
public const VERSION = '3.28.0';
public const VERSION_ID = 32800;
public const MAJOR_VERSION = 3;
public const MINOR_VERSION = 23;
public const MINOR_VERSION = 28;
public const RELEASE_VERSION = 0;
public const EXTRA_VERSION = '';

View File

@@ -36,6 +36,8 @@ use Twig\Template;
class Error extends \Exception
{
private $lineno;
/** @var positive-int|null */
private ?int $columnno;
private $rawMessage;
private ?Source $source;
private string $phpFile;
@@ -46,17 +48,19 @@ class Error extends \Exception
*
* By default, automatic guessing is enabled.
*
* @param string $message The error message
* @param int $lineno The template line where the error occurred
* @param Source|null $source The source context where the error occurred
* @param string $message The error message
* @param int $lineno The template line where the error occurred
* @param Source|null $source The source context where the error occurred
* @param positive-int|null $columnno The template column where the error occurred
*/
public function __construct(string $message, int $lineno = -1, ?Source $source = null, ?\Throwable $previous = null)
public function __construct(string $message, int $lineno = -1, ?Source $source = null, ?\Throwable $previous = null, ?int $columnno = null)
{
parent::__construct('', 0, $previous);
$this->phpFile = $this->getFile();
$this->phpLine = $this->getLine();
$this->lineno = $lineno;
$this->columnno = $columnno;
$this->source = $source;
$this->rawMessage = $message;
$this->updateRepr();
@@ -78,6 +82,25 @@ class Error extends \Exception
$this->updateRepr();
}
/**
* Returns the 1-based column where the error occurred, or null if unknown.
*
* @return positive-int|null
*/
public function getTemplateColumn(): ?int
{
return $this->columnno;
}
/**
* @param positive-int|null $columnno
*/
public function setTemplateColumn(?int $columnno): void
{
$this->columnno = $columnno;
$this->updateRepr();
}
public function getSourceContext(): ?Source
{
return $this->source;
@@ -127,6 +150,9 @@ class Error extends \Exception
}
if ($this->lineno > 0) {
$this->message .= \sprintf(' at line %d', $this->lineno);
if (null !== $this->columnno) {
$this->message .= \sprintf(' column %d', $this->columnno);
}
}
if ($punctuation) {
$this->message .= $punctuation;

View File

@@ -27,4 +27,9 @@ abstract class AbstractExpressionParser implements ExpressionParserInterface
{
return [];
}
public function getOperatorTokens(): array
{
return [$this->getName(), ...$this->getAliases()];
}
}

View File

@@ -11,6 +11,14 @@
namespace Twig\ExpressionParser;
/**
* @method list<string> getOperatorTokens() Returns the operator token strings that this expression parser handles.
* These are the strings that should be recognized as operator tokens by the Lexer,
* and used to look up the parser in the registry.
* For most parsers, this returns the name and aliases. Parsers that don't handle
* operator tokens (like LiteralExpressionParser) should return an empty array.
* This method will be added to the interface in Twig 4.0.
*/
interface ExpressionParserInterface
{
public function __toString(): string;

View File

@@ -54,10 +54,9 @@ final class ExpressionParsers implements \IteratorAggregate
// throw new \InvalidArgumentException(\sprintf('Precedence for "%s" must be between 0 and 512, got %d.', $parser->getName(), $parser->getPrecedence()));
}
$interface = $parser instanceof PrefixExpressionParserInterface ? PrefixExpressionParserInterface::class : InfixExpressionParserInterface::class;
$this->parsersByName[$interface][$parser->getName()] = $parser;
$this->parsersByClass[$parser::class] = $parser;
foreach ($parser->getAliases() as $alias) {
$this->parsersByName[$interface][$alias] = $parser;
foreach (self::getOperatorTokensFor($parser) as $token) {
$this->parsersByName[$interface][$token] = $parser;
}
}
@@ -90,9 +89,22 @@ final class ExpressionParsers implements \IteratorAggregate
public function getIterator(): \Traversable
{
$seen = [];
foreach ($this->parsersByName as $parsers) {
// we don't yield the keys
yield from $parsers;
foreach ($parsers as $parser) {
$id = spl_object_id($parser);
if (!isset($seen[$id])) {
$seen[$id] = true;
yield $parser;
}
}
}
foreach ($this->parsersByClass as $parser) {
$id = spl_object_id($parser);
if (!isset($seen[$id])) {
$seen[$id] = true;
yield $parser;
}
}
}
@@ -124,4 +136,20 @@ final class ExpressionParsers implements \IteratorAggregate
return $this->precedenceChanges;
}
/**
* @internal
*
* @return array<string>
*/
public static function getOperatorTokensFor(ExpressionParserInterface $parser): array
{
if (method_exists($parser, 'getOperatorTokens')) {
return $parser->getOperatorTokens();
}
trigger_deprecation('twig/twig', '3.24', 'Not implementing the "getOperatorTokens()" method in "%s" is deprecated. This method will be part of the "%s" interface in 4.0.', $parser::class, ExpressionParserInterface::class);
return [$parser->getName(), ...$parser->getAliases()];
}
}

View File

@@ -51,12 +51,12 @@ class AssignmentExpressionParser extends BinaryOperatorExpressionParser
if ($left instanceof ArrayExpression) {
if ($left->isSequence()) {
return new SequenceDestructuringSetBinary($left, $right, $token->getLine());
} else {
return new ObjectDestructuringSetBinary($left, $right, $token->getLine());
}
} else {
return new SetBinary($left, $right, $token->getLine());
return new ObjectDestructuringSetBinary($left, $right, $token->getLine());
}
return new SetBinary($left, $right, $token->getLine());
}
public function getDescription(): string

View File

@@ -65,14 +65,23 @@ final class DotExpressionParser extends AbstractExpressionParser implements Infi
$arguments = $this->parseCallableArguments($parser, $token->getLine());
}
if (
$expr instanceof NameExpression
$isMacroTarget = $expr instanceof NameExpression
&& (
null !== $parser->getImportedSymbol('template', $expr->getAttribute('name'))
|| '_self' === $expr->getAttribute('name') && $attribute instanceof ConstantExpression
)
|| '_self' === $expr->getAttribute('name')
);
if (
$isMacroTarget
&& $attribute instanceof ConstantExpression
&& \is_string($name = $attribute->getAttribute('value'))
&& preg_match('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#D', $name)
) {
return new MacroReferenceExpression(new TemplateVariable($expr->getAttribute('name'), $expr->getTemplateLine()), 'macro_'.$attribute->getAttribute('value'), $arguments, $expr->getTemplateLine());
return new MacroReferenceExpression(new TemplateVariable($expr->getAttribute('name'), $expr->getTemplateLine()), 'macro_'.$name, $arguments, $expr->getTemplateLine());
}
if ($isMacroTarget && !$attribute instanceof ConstantExpression) {
return new MacroReferenceExpression(new TemplateVariable($expr->getAttribute('name'), $expr->getTemplateLine()), $attribute, $arguments, $expr->getTemplateLine());
}
return new GetAttrExpression($expr, $attribute, $arguments, $type, $lineno, $nullSafe);

View File

@@ -54,7 +54,14 @@ final class FunctionExpressionParser extends AbstractExpressionParser implements
$fakeNode = new EmptyNode($line);
$fakeNode->setSourceContext($parser->getStream()->getSourceContext());
return ($function->getParserCallable())($parser, $fakeNode, $args, $line);
$node = ($function->getParserCallable())($parser, $fakeNode, $args, $line);
// remember the original function name so the sandbox can enforce
// the `allowedFunctions` allow-list even though the parser callable
// returned a specialized node (e.g. `parent`, `block`, `attribute`).
$node->setAttribute('sandboxed_function_name', $name);
$node->setAttribute('sandboxed_function', $function);
return $node;
}
if (!isset($this->readyNodes[$class = $function->getNodeClass()])) {

View File

@@ -17,6 +17,7 @@ use Twig\ExpressionParser\ExpressionParserDescriptionInterface;
use Twig\ExpressionParser\PrefixExpressionParserInterface;
use Twig\Node\Expression\AbstractExpression;
use Twig\Node\Expression\ListExpression;
use Twig\Node\Expression\Variable\AssignContextVariable;
use Twig\Node\Expression\Variable\ContextVariable;
use Twig\Parser;
use Twig\Token;
@@ -36,7 +37,7 @@ final class GroupingExpressionParser extends AbstractExpressionParser implements
return $expr->setExplicitParentheses();
}
return new ListExpression([$expr], $token->getLine());
return new ListExpression([self::toAssignContextVariable($expr)], $token->getLine());
}
// determine if we are parsing an arrow function arguments
@@ -58,7 +59,16 @@ final class GroupingExpressionParser extends AbstractExpressionParser implements
throw new SyntaxError('A list of variables must be followed by an arrow.', $stream->getCurrent()->getLine(), $stream->getSourceContext());
}
return new ListExpression($names, $token->getLine());
return new ListExpression(array_map(self::toAssignContextVariable(...), $names), $token->getLine());
}
private static function toAssignContextVariable(AbstractExpression $expr): AssignContextVariable
{
if (!$expr instanceof ContextVariable) {
throw new SyntaxError('A list must only contain variables.', $expr->getTemplateLine(), $expr->getSourceContext());
}
return $expr instanceof AssignContextVariable ? $expr : new AssignContextVariable($expr->getAttribute('name'), $expr->getTemplateLine());
}
public function getName(): string

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