Compare commits

...

96 Commits

Author SHA1 Message Date
denis.flaven@combodo.com
3fb5c05467 N°7001 - Being admin to generate oAuth token is too restrictive 2023-12-13 13:57:44 +01:00
Pierre Goiffon
f36f3aa05b 💡 N°6848 Fix PHPDoc 2023-10-17 11:12:38 +02:00
Pierre Goiffon
d0d90d7c69 N°6848 Fix TransactionsTest::testTransactionOpenedNotClosed failing
Was caused by 239c51bb, which adds 65bb76b9 tests improvements but only partly : we were missing in TransactionsTest::tearDown the mysqli reset from mock to original mysqli cnx

Without this reset the rollback made in ItopTestCase::tearDown is throwing an exception (query() method on the DbConnectionWrapper cnx returns false in \CMDBSource::DBQuery) on PHP 8.1 and 8.2

Co-authored-by: Romain Quetiez <romain.queriez@combodo.com>
2023-10-17 10:53:26 +02:00
odain
239c51bb53 ci enhancement: complete tearDown to cleanup transactions and cmdb changes properly 2023-10-03 10:09:26 +02:00
Pierre Goiffon
bdf0b4daa9 N°6562 Fix DOMNode->textContent write
This attribute is read only
Causes layout issues on PHP 8.1.21 and 8.2.8

(cherry picked from commit 734a788340)
(cherry picked from commit 7aa478d6ff)
2023-09-14 15:31:02 +02:00
Eric Espie
7fdbb59c30 N°6716 - High memory Consomption and performance issue 2023-09-14 14:09:05 +02:00
Eric Espie
5acf38ac36 Fix unit tests for MariaDB
(cherry picked from commit 61a9a4ac65)
2023-09-14 14:09:05 +02:00
Molkobain
85f66f5e0c N°6618 - Router: Add protection against invalid routes cache 2023-08-02 11:44:20 +02:00
Molkobain
a5c980113b N°6618 - Router: Fix available routes cache being re-generated at each call 2023-08-02 11:44:20 +02:00
Eric Espie
df1cb0b6e3 N°6408 - CRUD : Fix log consuming too much memory 2023-07-12 11:21:32 +02:00
Molkobain
9b409b117f N°6043 - Booking: Move \TemporaryObjectDescriptor to /core to keep compatibility with legacy/custom packages
Cherry picked from 39305468
2023-07-10 13:16:53 +02:00
Pierre Goiffon
a2a0b2cd0b N°6494 Fix missing PHPUnit log in console log for postbuild tests 2023-07-06 15:28:32 +02:00
odain
4c9ea0c9d4 N°6494 - Some tests are run twice, some never 2023-07-05 14:37:02 +02:00
Benjamin Dalsass
e654daf4a5 N°6516 - Add @experimental PHP annotation on temporary objects features 2023-07-05 14:24:05 +02:00
Molkobain
8292b16387 N°6502 - Fix AttributeImage::GetAsHtml() using download URL instead of display URL which triggers download listeners 2023-07-05 10:35:36 +02:00
Molkobain
340b982d77 N°6502 - Avoid new history entry on AttributeBlob download 2023-07-05 10:35:35 +02:00
Stephen Abello
3e187282b0 N°6498 - Fix str_replace crashing with null value 2023-07-05 09:18:56 +02:00
Molkobain
722a4a2c4d Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	js/jquery.ba-bbq.js
2023-07-05 08:59:47 +02:00
Molkobain
8907525b78 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-05 08:56:17 +02:00
Molkobain
6d58adb6dd N°6359 - Fix JS crash due to new version trying to detect MSIE browser through a dependency that we don't have.
Cherry-picked from f889c53d71
2023-07-05 08:41:00 +02:00
Benjamin Dalsass
03e7e0e79f N°6503 - Logs purge system delete index.php 2023-07-05 08:39:48 +02:00
Molkobain
83529da319 N°6500 - Fix user request approval freezing in the portal due to "Cannot read properties of undefined (reading 'validation')" 2023-07-04 21:36:34 +02:00
bdalsass
9d38b4d1d6 N°6043 - Booking: Add prerequisites in iTop core - CRUD extensibility (#520) 2023-07-04 16:22:53 +02:00
Stephen Abello
40dc3deabb N°6495 - Fix strlen crashing with null value in AttributePassword 2023-07-04 13:56:31 +02:00
Stephen Abello
56688fbbff Merge branch 'support/3.0' into develop 2023-07-03 14:30:20 +02:00
Stephen Abello
764a170cd0 N°6483 - Security hardening 2023-07-03 14:29:45 +02:00
Stephen Abello
c30da57818 N°6488 - Fix object keyboard shortcut not working anymore due to summary cards stealing its shortcuts 2023-07-03 11:50:12 +02:00
Pierre Goiffon
e36b9eb664 N°6414 Make AbstractSimpleField::Validate final
We don't have any overrides remaining anymore
2023-07-03 11:30:04 +02:00
Pierre Goiffon
6cc2d49cd5 N°6414 Move existing AbstractSimpleField::Validate impl to custom validators
- LinkedSetField
- SelectObjectField
- MultipleChoicesField (warning this hierarchy contains non multiple value fields like SelectField !)

Also change AbstractValidator::Validate signature : now we are returning an array of error messages, so that we can return multiple ones
2023-07-03 11:30:04 +02:00
Pierre Goiffon
d085f15b6d N°6414 Separate SubFormField and Scalar fields
This will help to set methods as final, as SubFormField is often the sole one to have a real custom impl
2023-07-03 11:30:04 +02:00
Pierre Goiffon
6606af71ff N°6414 Validator refactoring
New AbstractValidator class, with new method Validate
All existing validators are now children of AbstractRegexpValidator
Handle validators JS counterparts in renderers : only regexp validators are implemented client side
2023-07-03 11:30:04 +02:00
Pierre Goiffon
52049b7837 N°6414 Disable Field validation for untouched attcodes 2023-07-03 11:30:04 +02:00
Pierre Goiffon
f40674ec85 N°6414 Replace SelectObjectField::VerifyCurrentValue by ResetCurrentValueIfNotAmongAllowedValues 2023-07-03 11:30:04 +02:00
bdalsass
b46d4db8ff N°6476 - Revert datamodel / compiler changes from N°5563 (#515) 2023-06-29 15:11:30 +02:00
Molkobain
12dbd0ed3d N°6482 - Fix URP_UserProfile classes not flagged as link classes so they can benefit of the same mechanisms (eg. events) 2023-06-29 09:59:09 +02:00
Lars Kaltefleiter
0d9f33ec4c 🌐 Updated german translations for 3.1 (#511) 2023-06-29 09:05:27 +02:00
Molkobain
71704404d0 N°5945 - Apply same explicit value comparison as previous commit 2023-06-28 10:19:07 +02:00
Molkobain
3c8bea8921 N°5945 - Fix "menu" option in dashlet list having no effect since relations refactoring 2023-06-28 10:11:51 +02:00
Molkobain
b755f65a8a Improve PHPDoc 2023-06-27 23:35:57 +02:00
Molkobain
3bd3081359 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	synchro/synchro_exec.php
2023-06-27 18:19:48 +02:00
Molkobain
5a33fb7a6a N°6474 - Fix regression introduced by 70e6f707 2023-06-27 18:16:55 +02:00
Stephen Abello
29a90fe244 N°6474 - Fix undefined variable due to failed merge + refactoring 2023-06-27 16:55:25 +02:00
Molkobain
011116029b N°6478 - Add "edit_mode" node for AttributeLinkedSetIndirect (n:n) for future usages 2023-06-27 16:41:01 +02:00
Eric Espie
f95cb50002 N°6442 - comment 2023-06-27 15:49:39 +02:00
Eric Espie
2c8db92504 N°6442 - Error in Database integrity due to "translate placeholder in notification" 2023-06-27 15:23:28 +02:00
Eric Espie
98d4fa4331 N°6384 - fix typo 2023-06-27 14:13:33 +02:00
Anne-Catherine
4a39a5e51d N°6342 - Fix empty list when configuring a list adding a log attribute (#498)
* N°6342 - Empty list when configuring a list adding a case log attribute

* Update js/dataTables.settings.js

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-06-27 13:45:04 +02:00
Eric Espie
8373a03d82 N°6408 - CRUD fix tests 2023-06-27 12:11:36 +02:00
Eric Espie
befbe2dfa9 N°6408 - CRUD fix tests 2023-06-27 11:52:23 +02:00
Eric Espie
86ca7fcb7a N°6408 - CRUD : rework on DBUpdate reentrancy 2023-06-27 11:37:10 +02:00
Stephen Abello
ccf1d7ecfb N°6446 Fix OAuth landing page missing jQuery library needed in ajax calls 2023-06-27 11:24:06 +02:00
Stephen Abello
178e82a039 N°6446 Replace jQuery with vanilla JS in ajax dictionaries 2023-06-27 11:24:06 +02:00
Stephen Abello
452cc77168 N°6446 Prevent loaded js file constant from being missing if an ajax call is made from a page that's not a Webpage 2023-06-27 11:24:05 +02:00
Molkobain
7fc46fbc50 N°6472 - Fix empty tables in "Progress" tab of a survey 2023-06-27 10:36:30 +02:00
Benjamin Dalsass
f338d3bdc8 N°6326 - Magnifier pop-up search from ExtKey in Link edit in pop-up, fails 2023-06-27 09:42:12 +02:00
Benjamin Dalsass
d41e54bf34 N°6473 - Do not track QueryOQL statistic values 2023-06-27 08:42:44 +02:00
Eric Espie
aa75456e6e N°6271 - Fix drop-down list not refreshed when adding an external key with a friendlyname built on an external key 2023-06-27 08:41:20 +02:00
Eric Espie
db6e4137b1 N°6271 - Fix drop-down list not refreshed when adding an external key with a friendlyname built on an external key 2023-06-26 18:00:04 +02:00
Benjamin Dalsass
a206af1813 N°6005 - CSV import : import an object and a linkset fails
- Restore old get as html for linked set with display style tab
2023-06-26 15:11:41 +02:00
Eric Espie
77868e356b N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:34:00 +02:00
Eric Espie
60e302162c N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:31:53 +02:00
Eric Espie
f36c8c5cdd N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:17:20 +02:00
Molkobain
d062ba8196 N°6456 - Code convention 2023-06-24 11:49:43 +02:00
Eric Espie
c3469e43bc N°6408 - Add logs, changed modification test of current object and prevent calling OnDBUpdate() when object is not modified 2023-06-23 17:02:31 +02:00
acognet
68ee12bf5e N°6456 - Empty list when configuring a list and cancel 2023-06-23 09:35:42 +02:00
Purple Grape
47400d94ba N°6468 update zh-cn dict (#512) 2023-06-23 09:03:49 +02:00
Molkobain
b642dbe3d6 N°6389 - Fix SQL error when saving an object with an emptied blob attribute 2023-06-22 20:43:56 +02:00
Molkobain
83564849e0 N°6356 - Search, SELECT on class with a single field display the count and an empty list 2023-06-22 20:18:18 +02:00
Molkobain
3e73038709 N°6380 - Fix exception "Failed to parse time string" with check_backup.php script 2023-06-22 13:51:01 +02:00
vdumas
dcfefc1588 N°1350 - Audit domains: add uniqueness rule on n:n with Category 2023-06-22 11:19:53 +02:00
vdumas
4db092ea52 N°6370 - Replace Audit Category menu by a dashboard only in module 2023-06-22 11:05:01 +02:00
Molkobain
96f1bd3646 N°6462 - Sort \AttributeApplicationLanguage alphabetically (eg. "Language" in ActionEmail class) 2023-06-21 18:33:12 +02:00
Molkobain
f889c53d71 N°6359 - Fix JS crash due to new version trying to detect MSIE browser through a dependency that we don't have.
It's far from perfect but as mentioned in the previous commit, we don't have much choices for now
2023-06-21 17:21:40 +02:00
Molkobain
814916fb21 N°6362 - Fix export of linkset tab not working due to JS error 2023-06-21 17:04:55 +02:00
Eric Espie
9e667c968e N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-21 16:41:54 +02:00
Molkobain
a8a3385969 N°6460 - Sort \AttributeClassAttCodeSet alphabetically (eg. "Target fields" in Trigger class) 2023-06-21 16:06:22 +02:00
Molkobain
87e04547bd N°6448 - Restore sort order for \AttributeClass and \AttributeSetEnumPadded (eg. "Target class" and "Context" in DataSynchronisation and Trigger classes) 2023-06-21 15:58:11 +02:00
Eric Espie
6fe41796d9 N°5909 - Fix iApplicationExtension not called when attachment is added 2023-06-21 15:15:59 +02:00
Eric Espie
99a4e5e861 N°5909 - Fix iApplicationExtension not called when attachment is added 2023-06-21 14:39:04 +02:00
Molkobain
3d3a751072 N°6200 - Delete old redundant turkish dict file 2023-06-21 13:13:57 +02:00
Molkobain
216a1b95b1 N°6405 - Fix XML displayed corrupted when using \DesignerLongTextField due to usage of \utils::EscapeHtml() without double encoding 2023-06-21 11:33:18 +02:00
Benjamin Dalsass
2074a0fa0d N°5305 - CSV import ergonomy for SaaS
- Fix ext key displayable value
2023-06-21 11:21:40 +02:00
Eric Espie
bfd078c2a3 N°6281 - Rest API core/create key value is no more between quote 2023-06-20 17:25:13 +02:00
Benjamin Dalsass
85a879b587 N°5305 - CSV import ergonomy for SaaS
- Change checkbox error ugly font
- Improve errors messages (ambiguous, mismatch)
2023-06-20 17:21:39 +02:00
Eric Espie
9b9ba3c440 N°6281 - Rest API core/create key value is no more between quote 2023-06-20 16:58:16 +02:00
bdalsass
4d43d83b95 N°6000 - CSV Import with quote no more handled (#508) 2023-06-20 16:39:56 +02:00
Benjamin Dalsass
63487226a9 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/csvbulkexport.class.inc.php
2023-06-20 10:24:03 +02:00
vdumas
7b5ef52865 N°6422 - Improve french dictionary 2023-06-20 08:37:17 +02:00
Molkobain
4550dfb1d4 N°5388 - PHP 8.2: Fix dynamic property declaration 2023-06-19 16:27:45 +02:00
Molkobain
1a5ffc23ce N°6251 - Fix dynamic property declaration 2023-06-19 14:47:06 +02:00
vdumas
3a9198bf1c N°6422 - Finalize french dictionaries 2023-06-16 16:39:05 +02:00
vdumas
2242a80808 N°6428 - Portal : Hide role attribute in linkset Contact/Ticket 2023-06-16 16:19:04 +02:00
Benjamin Dalsass
86148ecf57 N°6415 - Linked set shown as tag set in csv import is ugly 2023-06-16 16:06:35 +02:00
Benjamin Dalsass
2c4a7c5a77 # Conflicts:
#	core/csvbulkexport.class.inc.php
2023-06-16 15:57:58 +02:00
Benjamin Dalsass
2cca57c7fa N°6431 - CSV bulk export text delimiter option not initialized correctly 2023-06-16 15:50:28 +02:00
Timothee
e52fa28089 Merge remote-tracking branch 'origin/release/3.1.0-beta' into develop 2023-06-16 15:21:51 +02:00
228 changed files with 5464 additions and 2623 deletions

View File

@@ -228,6 +228,7 @@ class URP_UserProfile extends UserRightsBaseClassGUI
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(

View File

@@ -334,6 +334,7 @@ class URP_UserProfile extends UserRightsBaseClassGUI
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();

View File

@@ -277,6 +277,7 @@ class URP_UserProfile extends UserRightsBaseClass
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();

View File

@@ -238,7 +238,7 @@ class ApplicationContext
{
$aContextInputBlocks = [];
foreach ($this->aValues as $sName => $sValue) {
$aContextInputBlocks[] = InputUIBlockFactory::MakeForHidden("c[$sName]", utils::EscapeHtml($sValue));
$aContextInputBlocks[] = InputUIBlockFactory::MakeForHidden("c[$sName]", $sValue);
}
return $aContextInputBlocks;
}

View File

@@ -86,15 +86,26 @@ class lnkAuditCategoryToAuditDomain extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "",
"state_attcode" => "",
"reconc_keys" => array('category_id', 'domain_id'),
"db_table" => "priv_link_audit_category_domain",
"db_key_field" => "id",
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "",
"state_attcode" => "",
"reconc_keys" => array('category_id', 'domain_id'),
"db_table" => "priv_link_audit_category_domain",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true,
"is_link" => true,
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'category_id',
1 => 'domain_id',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("targetclass" => "AuditCategory", "jointype" => '', "allowed_values" => null, "sql" => "category_id", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));

View File

@@ -47,6 +47,7 @@ use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleFormRenderer;
use Combodo\iTop\Service\Links\LinkSetDataTransformer;
use Combodo\iTop\Service\Links\LinkSetModel;
use Combodo\iTop\Service\TemporaryObjects\TemporaryObjectHelper;
define('OBJECT_PROPERTIES_TAB', 'ObjectProperties');
@@ -187,9 +188,6 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay
/** @var array initial attributes flags cache [attcode]['flags'] */
protected $aInitialAttributesFlags;
protected $iUpdateLoopCount;
const MAX_UPDATE_LOOP_COUNT = 10;
/**
* @var array First level classname, second level id, value number of calls done
@@ -227,7 +225,6 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay
$this->sDisplayMode = static::DEFAULT_DISPLAY_MODE;
$this->bAllowWrite = false;
$this->bAllowDelete = false;
$this->iUpdateLoopCount = 0;
}
/**
@@ -2822,33 +2819,33 @@ JS
}
}
// Custom operation for the form ?
if (isset($aExtraParams['custom_operation'])) {
$sOperation = $aExtraParams['custom_operation'];
} else {
if ($this->GetDisplayMode() === static::ENUM_DISPLAY_MODE_EDIT) {
$sOperation = 'apply_modify';
} else {
$sOperation = 'apply_new';
}
}
if (isset($aExtraParams['custom_operation'])) {
$sOperation = $aExtraParams['custom_operation'];
} else {
if ($this->GetDisplayMode() === static::ENUM_DISPLAY_MODE_EDIT) {
$sOperation = 'apply_modify';
} else {
$sOperation = 'apply_new';
}
}
$oContentBlock = new UIContentBlock();
$oPage->AddUiBlock($oContentBlock);
$oContentBlock = new UIContentBlock();
$oPage->AddUiBlock($oContentBlock);
$oForm = new Form("form_{$this->m_iFormId}");
$oForm->SetAction($sFormAction);
$sOnSubmitForm = "let bOnSubmitForm = OnSubmit('form_{$this->m_iFormId}');";
if (isset($aExtraParams['js_handlers']['form_on_submit'])) {
$oForm->SetOnSubmitJsCode($sOnSubmitForm.$aExtraParams['js_handlers']['form_on_submit']);
} else {
$oForm->SetOnSubmitJsCode($sOnSubmitForm."return bOnSubmitForm;");
}
$oContentBlock->AddSubBlock($oForm);
$oForm = new Form("form_{$this->m_iFormId}");
$oForm->SetAction($sFormAction);
$sOnSubmitForm = "let bOnSubmitForm = OnSubmit('form_{$this->m_iFormId}');";
if (isset($aExtraParams['js_handlers']['form_on_submit'])) {
$oForm->SetOnSubmitJsCode($sOnSubmitForm . $aExtraParams['js_handlers']['form_on_submit']);
} else {
$oForm->SetOnSubmitJsCode($sOnSubmitForm . "return bOnSubmitForm;");
}
$oContentBlock->AddSubBlock($oForm);
if ($this->GetDisplayMode() === static::ENUM_DISPLAY_MODE_EDIT) {
// The object already exists in the database, it's a modification
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('id', $iKey, "{$sPrefix}_id"));
}
if ($this->GetDisplayMode() === static::ENUM_DISPLAY_MODE_EDIT) {
// The object already exists in the database, it's a modification
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('id', $iKey, "{$sPrefix}_id"));
}
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('operation', $sOperation));
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('class', $sClass));
@@ -2857,6 +2854,11 @@ JS
$oPage->SetTransactionId($iTransactionId);
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('transaction_id', $iTransactionId));
// Add temporary object watchdog (only on root form)
if (!utils::IsXmlHttpRequest()) {
$oPage->add_ready_script(TemporaryObjectHelper::GetWatchDogJS($iTransactionId));
}
// TODO 3.0.0: Is this (the if condition, not the code inside) still necessary?
if (isset($aExtraParams['wizard_container']) && $aExtraParams['wizard_container']) {
$sClassLabel = MetaModel::GetName($sClass);
@@ -2867,34 +2869,34 @@ JS
}
}
$oToolbarButtons = ToolbarUIBlockFactory::MakeStandard(null);
$oToolbarButtons = ToolbarUIBlockFactory::MakeStandard(null);
$oCancelButton = ButtonUIBlockFactory::MakeForCancel();
$oCancelButton->AddCSSClasses(['action', 'cancel']);
$oToolbarButtons->AddSubBlock($oCancelButton);
$oApplyButton = ButtonUIBlockFactory::MakeForPrimaryAction($sApplyButton, null, null, true);
$oApplyButton->AddCSSClass('action');
$oToolbarButtons->AddSubBlock($oApplyButton);
$bAreTransitionsHidden = isset($aExtraParams['hide_transitions']) && $aExtraParams['hide_transitions'] === true;
$aTransitions = $this->EnumTransitions();
if (!isset($aExtraParams['custom_operation']) && !$bAreTransitionsHidden && count($aTransitions)) {
// Transitions are displayed only for the standard new/modify actions, not for modify_all or any other case...
$oSetToCheckRights = DBObjectSet::FromObject($this);
$oCancelButton = ButtonUIBlockFactory::MakeForCancel();
$oCancelButton->AddCSSClasses(['action', 'cancel']);
$oToolbarButtons->AddSubBlock($oCancelButton);
$oApplyButton = ButtonUIBlockFactory::MakeForPrimaryAction($sApplyButton, null, null, true);
$oApplyButton->AddCSSClass('action');
$oToolbarButtons->AddSubBlock($oApplyButton);
$bAreTransitionsHidden = isset($aExtraParams['hide_transitions']) && $aExtraParams['hide_transitions'] === true;
$aTransitions = $this->EnumTransitions();
if (!isset($aExtraParams['custom_operation']) && !$bAreTransitionsHidden && count($aTransitions)) {
// Transitions are displayed only for the standard new/modify actions, not for modify_all or any other case...
$oSetToCheckRights = DBObjectSet::FromObject($this);
$oTransitionPopoverMenu = new PopoverMenu();
$sTPMSectionId = 'transitions';
$oTransitionPopoverMenu->AddSection($sTPMSectionId);
$aStimuli = Metamodel::EnumStimuli($sClass);
foreach ($aTransitions as $sStimulusCode => $aTransitionDef) {
$iActionAllowed = (get_class($aStimuli[$sStimulusCode]) == 'StimulusUserAction') ? UserRights::IsStimulusAllowed($sClass,
$sStimulusCode, $oSetToCheckRights) : UR_ALLOWED_NO;
switch ($iActionAllowed) {
case UR_ALLOWED_YES:
// Button to be displayed on its own on large screens
$oButton = ButtonUIBlockFactory::MakeForPrimaryAction($aStimuli[$sStimulusCode]->GetLabel(), 'next_action', $sStimulusCode, true);
$oButton->AddCSSClass('action');
$oButton->SetColor(Button::ENUM_COLOR_SCHEME_NEUTRAL);
$oToolbarButtons->AddSubBlock($oButton);
$oTransitionPopoverMenu = new PopoverMenu();
$sTPMSectionId = 'transitions';
$oTransitionPopoverMenu->AddSection($sTPMSectionId);
$aStimuli = Metamodel::EnumStimuli($sClass);
foreach ($aTransitions as $sStimulusCode => $aTransitionDef) {
$iActionAllowed = (get_class($aStimuli[$sStimulusCode]) == 'StimulusUserAction') ? UserRights::IsStimulusAllowed($sClass,
$sStimulusCode, $oSetToCheckRights) : UR_ALLOWED_NO;
switch ($iActionAllowed) {
case UR_ALLOWED_YES:
// Button to be displayed on its own on large screens
$oButton = ButtonUIBlockFactory::MakeForPrimaryAction($aStimuli[$sStimulusCode]->GetLabel(), 'next_action', $sStimulusCode, true);
$oButton->AddCSSClass('action');
$oButton->SetColor(Button::ENUM_COLOR_SCHEME_NEUTRAL);
$oToolbarButtons->AddSubBlock($oButton);
// Button to be displayed in a grouped button on smaller screens
$oTPMPopupMenuItem = new JSPopupMenuItem('next_action--'.$oButton->GetId(), $oButton->GetLabel(), "$(`#{$oButton->GetId()}`).trigger(`click`);");
@@ -3049,16 +3051,21 @@ JS
$oPage->SetCurrentTab('');
// Static fields values for wizard helper serialization
$aWizardHelperStaticValues = [];
// Add as hidden inputs values that we want displayed if they're readonly
if(isset($aExtraParams['forceFieldsSubmission'])){
$aExtraFlags = $aExtraParams['fieldsFlags'] ?? [];
foreach ($aExtraParams['forceFieldsSubmission'] as $sAttCode) {
if(FormHelper::GetAttributeFlagsForObject($this, $sAttCode, $aExtraFlags) & OPT_ATT_READONLY) {
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('attr_'.$sPrefix.$sAttCode, $this->Get($sAttCode)));
$aWizardHelperStaticValues[$sAttCode] = $this->Get($sAttCode);
}
}
}
$sWizardHelperStaticValues = json_encode($aWizardHelperStaticValues);
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('class', $sClass));
$oForm->AddSubBlock(InputUIBlockFactory::MakeForHidden('transaction_id', $iTransactionId));
foreach ($aExtraParams as $sName => $value) {
@@ -3101,6 +3108,7 @@ JS
var oWizardHelper$sPrefix = new WizardHelper('$sClass', '$sPrefix', '$sLifecycleStateForWizardHelper');
oWizardHelper$sPrefix.SetFieldsMap($sJsonFieldsMap);
oWizardHelper$sPrefix.SetFieldsCount($iFieldsCount);
oWizardHelper$sPrefix.SetStaticValues($sWizardHelperStaticValues);
EOF
);
$oPage->add_ready_script(
@@ -4513,16 +4521,12 @@ HTML;
*/
public function DBInsertNoReload()
{
$this->LogCRUDEnter(__METHOD__);
try {
$res = parent::DBInsertNoReload();
$this->SetWarningsAsSessionMessages('create');
// Invoke extensions after insertion (the object must exist, have an id, etc.)
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance) {
$oExtensionInstance->OnDBInsert($this, self::GetCurrentChange());
}
} finally {
if (static::IsCrudStackEmpty()) {
// Avoid signaling the current object that links were modified
@@ -4530,9 +4534,23 @@ HTML;
static::FireEventDbLinksChangedForAllObjects();
}
}
$this->LogCRUDExit(__METHOD__);
return $res;
}
public function PostInsertActions(): void
{
parent::PostInsertActions();
// Invoke extensions after insertion (the object must exist, have an id, etc.)
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins(iApplicationObjectExtension::class) as $oExtensionInstance) {
$sExtensionClass = get_class($oExtensionInstance);
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnDBInsert()");
$oExtensionInstance->OnDBInsert($this, self::GetCurrentChange());
}
}
/**
* @inheritdoc
* Attaches InlineImages to the current object
@@ -4558,57 +4576,39 @@ HTML;
public function DBUpdate()
{
$this->LogCRUDEnter(__METHOD__);
try {
if (count($this->ListChanges()) === 0) {
$this->LogCRUDExit(__METHOD__);
return $this->GetKey();
}
$res = parent::DBUpdate();
$this->SetWarningsAsSessionMessages('update');
// Protection against reentrance (e.g. cascading the update of ticket logs)
// Note: This is based on the fix made on r 3190 in DBObject::DBUpdate()
if (!MetaModel::StartReentranceProtection($this)) {
$sClass = get_class($this);
$sKey = $this->GetKey();
IssueLog::Debug("CRUD: DBUpdate $sClass::$sKey Rejected (reentrance)", LogChannels::DM_CRUD);
return $res;
}
try {
// Invoke extensions after the update (could be before)
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance) {
$oExtensionInstance->OnDBUpdate($this, self::GetCurrentChange());
}
}
finally {
MetaModel::StopReentranceProtection($this);
}
$aChanges = $this->ListChanges();
if (count($aChanges) != 0) {
$this->iUpdateLoopCount++;
if ($this->iUpdateLoopCount > self::MAX_UPDATE_LOOP_COUNT) {
$sClass = get_class($this);
$sKey = $this->GetKey();
$aPlugins = [];
foreach (MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance) {
$aPlugins[] = get_class($oExtensionInstance);
}
$sPlugins = implode(', ', $aPlugins);
IssueLog::Error("CRUD: DBUpdate $sClass::$sKey Update loop detected plugins: $sPlugins", LogChannels::DM_CRUD);
} else {
return $this->DBUpdate();
}
}
} finally {
if (static::IsCrudStackEmpty()) {
static::FireEventDbLinksChangedForAllObjects();
}
}
$this->LogCRUDExit(__METHOD__);
return $res;
}
public function PostUpdateActions(array $aChanges): void
{
parent::PostUpdateActions($aChanges);
// Invoke extensions after the update (could be before)
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach (MetaModel::EnumPlugins(iApplicationObjectExtension::class) as $oExtensionInstance) {
$sExtensionClass = get_class($oExtensionInstance);
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnDBUpdate()");
$oExtensionInstance->OnDBUpdate($this, self::GetCurrentChange());
}
}
/**
* @param string $sMessageIdPrefix
*
@@ -4628,6 +4628,7 @@ HTML;
public function DBDelete(&$oDeletionPlan = null)
{
$this->LogCRUDEnter(__METHOD__);
try {
parent::DBDelete($oDeletionPlan);
} finally {
@@ -4637,6 +4638,7 @@ HTML;
static::FireEventDbLinksChangedForAllObjects();
}
}
$this->LogCRUDExit(__METHOD__);
return $oDeletionPlan;
}
@@ -4665,9 +4667,12 @@ HTML;
/** @var \iApplicationObjectExtension $oExtensionInstance */
foreach(MetaModel::EnumPlugins('iApplicationObjectExtension') as $oExtensionInstance)
{
if ($oExtensionInstance->OnIsModified($this))
{
$sExtensionClass = get_class($oExtensionInstance);
if ($oExtensionInstance->OnIsModified($this)) {
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnIsModified() -> true");
return true;
} else {
$this->LogCRUDDebug(__METHOD__, "Calling $sExtensionClass::OnIsModified() -> false");
}
}
@@ -6021,14 +6026,16 @@ JS
// - we have a EVENT_DB_LINKS_CHANGED listener on Ticket that will update impacted items, so it will create new lnkApplicationSolutionToFunctionalCI
// We want to avoid launching the listener twice, first here, and secondly after saving the Ticket in the listener
// By disabling the event to be fired, we can remove the current object from the attribute !
/** @noinspection PhpRedundantOptionalArgumentInspection */
$oObject = MetaModel::GetObject($sClass, $sId, true);
self::SetEventDBLinksChangedBlocked(true);
MetaModel::StartReentranceProtection($oObject);
$oObject->FireEvent(EVENT_DB_LINKS_CHANGED);
MetaModel::StopReentranceProtection($oObject);
if ($oObject->IsModified()) {
$oObject->DBUpdate();
$oObject = MetaModel::GetObject($sClass, $sId, false);
// N°6408 The object can have been deleted
if (!is_null($oObject)) {
self::SetEventDBLinksChangedBlocked(true);
MetaModel::StartReentranceProtection($oObject);
$oObject->FireEvent(EVENT_DB_LINKS_CHANGED);
MetaModel::StopReentranceProtection($oObject);
if (count($oObject->ListChanges()) !== 0) {
$oObject->DBUpdate();
}
}
self::RemoveObjectAwaitingEventDbLinksChanged($sClass, $sId);
cmdbAbstractObject::SetEventDBLinksChangedBlocked(false);

View File

@@ -667,7 +667,7 @@ class DashletUnknown extends Dashlet
*/
public function GetPropertiesFields(DesignerForm $oForm)
{
$oField = new DesignerLongTextField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oField = new DesignerXMLField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oForm->AddField($oField);
}

View File

@@ -100,20 +100,11 @@
<enable_class>URP_Profiles</enable_class>
<enable_action>UR_ACTION_MODIFY</enable_action>
</menu>
<menu id="AuditCategories" xsi:type="DashboardMenuNode" _delta="define">
<menu id="AuditCategories" xsi:type="OQLMenuNode" _delta="define">
<rank>20</rank>
<parent>AdminTools</parent>
<definition>
<layout>DashboardLayoutOneCol</layout>
<title>Menu:WelcomeMenuPage</title>
<cells>
<cell id="0">
<rank>0</rank>
<dashlets>
</dashlets>
</cell>
</cells>
</definition>
<oql><![CDATA[SELECT AuditCategory]]></oql>
<do_search>1</do_search>
<enable_class>AuditCategory</enable_class>
<enable_action>UR_ACTION_MODIFY</enable_action>
</menu>

View File

@@ -1871,7 +1871,13 @@ class MenuBlock extends DisplayBlock
/** @var array $aToolkitActions Any "legacy" toolkit menu item, which are now displayed in the same menu as the $aRegularActions, after them */
$aToolkitActions = [];
if (!isset($aExtraParams['selection_mode']) || ($aExtraParams['selection_mode'] == "")) {
// Display menu actions only if...
if (
// ... NOT in a selection mode
(!isset($aExtraParams['selection_mode']) || ($aExtraParams['selection_mode'] == ""))
// ... "menu" parameter is NOT EXPLICITLY disabled
&& (!isset($aExtraParams['menu']) || $aExtraParams['menu'] === "1" || $aExtraParams['menu'] === true)
) {
$oAppContext = new ApplicationContext();
$sContext = $oAppContext->GetForLink();
if (utils::IsNotNullOrEmptyString($sContext)) {

View File

@@ -1110,13 +1110,41 @@ $('#$sId').on('change keyup validate', function() { ValidateWithPattern('$sId',
}
EOF
);
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".utils::EscapeHtml($this->defaultValue)."</textarea>";
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".$this->PrepareValueForRendering()."</textarea>";
}
else {
$sValue = "<div $sCSSClasses id=\"$sId\">".utils::EscapeHtml($this->defaultValue)."</div>";
$sValue = "<div $sCSSClasses id=\"$sId\">".$this->PrepareValueForRendering()."</div>";
}
return array('label' => $this->sLabel, 'value' => $sValue);
}
/**
* @return string|null The value itself as expected for rendering. May it be encoded, escaped or else.
* @since 3.1.0 N°6405
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue);
}
}
/**
* Class DesignerXMLField
*
* Field to display XML content
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
* @since 3.1.0 N°6405
*/
class DesignerXMLField extends DesignerLongTextField
{
/**
* @inheritDoc
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue, true);
}
}
class DesignerIntegerField extends DesignerFormField

View File

@@ -74,6 +74,7 @@ abstract class Query extends cmdbAbstractObject
"default_value" => 0,
"is_null_allowed" => false,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeDateTime("export_last_date", array(
@@ -82,6 +83,7 @@ abstract class Query extends cmdbAbstractObject
"default_value" => null,
"is_null_allowed" => true,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalKey("export_last_user_id",
@@ -93,14 +95,16 @@ abstract class Query extends cmdbAbstractObject
"depends_on"=>array(),
"display_style"=>'select',
"always_load_in_tables"=>false,
"on_target_delete"=>DEL_SILENT
"on_target_delete"=>DEL_SILENT,
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalField("export_last_user_contact",
array(
"allowed_values"=>null,
"extkey_attcode"=> "export_last_user_id",
"target_attcode"=>"contactid"
"target_attcode"=>"contactid",
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
// Display lists

View File

@@ -168,8 +168,6 @@ class UIExtKeyWidget
$sMessage = Dict::S('UI:Message:EmptyList:UseSearchForm');
$sAttrFieldPrefix = ($this->bSearchMode) ? '' : 'attr_';
$sFilter = addslashes($oAllowedValues->GetFilter()->ToOQL());
if ($this->bSearchMode) {
$sWizHelper = 'null';
@@ -1070,18 +1068,27 @@ JS
{
$oObj = MetaModel::NewObject($this->sTargetClass);
$aErrors = $oObj->UpdateObjectFromPostedForm($this->iId);
if (count($aErrors) == 0)
{
$oObj->DBInsert();
if (count($aErrors) == 0) {
// Retrieve JSON data
$sJSON = utils::ReadParam('json', '{}', false, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
$oJSON = json_decode($sJSON);
$oObj->SetContextSection('temporary_objects', [
'create' => [
'transaction_id' => utils::ReadParam('root_transaction_id', '', false, utils::ENUM_SANITIZATION_FILTER_TRANSACTION_ID),
'host_class' => $oJSON->m_sClass,
'host_att_code' => $this->sAttCode,
],
]);
$oObj->DBInsertNoReload();
return array('name' => $oObj->GetName(), 'id' => $oObj->GetKey());
}
else
{
} else {
return array('error' => implode(' ', $aErrors), 'id' => 0);
}
}
catch(Exception $e)
{
catch (Exception $e) {
return array('error' => $e->getMessage(), 'id' => 0);
}
}

View File

@@ -1970,6 +1970,7 @@ SQL;
/**
* @param string $sValue
* @param bool $bDoubleEncode Whether to double encode the value or not
*
* @return string passed value with only characters having a special meaning in HTML escaped as entities
* Since 3.0.0 we were using for this {@link HtmlEntities} but it was overkill and leads to double escaping !
@@ -1977,14 +1978,15 @@ SQL;
* @uses \htmlspecialchars()
* @link https://www.php.net/manual/fr/function.htmlspecialchars.php
* @since 3.0.0 N°3623
* @since 3.1.0 N°6405 Add $bDoubleEncode parameter
*/
public static function EscapeHtml($sValue)
public static function EscapeHtml($sValue, bool $bDoubleEncode = false)
{
return htmlspecialchars(
$sValue ?? '',
ENT_QUOTES | ENT_DISALLOWED | ENT_HTML5,
WebPage::PAGES_CHARSET,
false
$bDoubleEncode
);
}
@@ -2045,6 +2047,9 @@ SQL;
*/
public static function TextToHtml($sText)
{
if (static::IsNullOrEmptyString($sText)){
return '';
}
$sText = str_replace("\r\n", "\n", $sText);
$sText = str_replace("\r", "\n", $sText);
@@ -3369,5 +3374,22 @@ HTML;
{
return in_array($sTrait, self::TraitsUsedByClass($sClass, true));
}
/**
* Get stack trace as string array.
*
* @return array
* @since 3.1.0
*/
public static function GetStackTraceAsArray(): array
{
$e = new Exception();
$aTrace = explode("\n", $e->getTraceAsString());
// Remove call to this method
array_shift($aTrace);
// Remove Main
array_pop($aTrace);
return $aTrace;
}
}

View File

@@ -59,9 +59,17 @@ class DbConnectionWrapper
* Use this to register a mock that will handle {@see mysqli::query()}
*
* @param \mysqli|null $oMysqli
* @since 3.0.4 3.1.1 3.2.0 Param $oMysqli becomes nullable
* @since 3.1.0-4 N°6848 backport of restoring cnx on null parameter value
*/
public static function SetDbConnectionMockForQuery(?mysqli $oMysqli): void
public static function SetDbConnectionMockForQuery(?mysqli $oMysqli = null): void
{
static::$oDbCnxMockableForQuery = $oMysqli;
if (is_null($oMysqli)) {
// Reset to standard connection
static::$oDbCnxMockableForQuery = static::$oDbCnxStandard;
}
else {
static::$oDbCnxMockableForQuery = $oMysqli;
}
}
}

View File

@@ -0,0 +1,101 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class TemporaryObjectDescriptor
*
* Descriptor to track a temporary object.
*
* @experimental do not use, this feature will be part of a future version
*
* @since 3.1
*/
class TemporaryObjectDescriptor extends DBObject
{
public static function Init()
{
$aParams = array(
'category' => 'core',
'key_type' => 'autoincrement',
'name_attcode' => array('item_class', 'temp_id'),
'image_attcode' => '',
'state_attcode' => '',
'reconc_keys' => array(''),
'db_table' => 'priv_temporary_object_descriptor',
'db_key_field' => 'id',
'db_finalclass_field' => '',
'style' => new ormStyle(null, null, null, null, null, null),
'indexes' => array(
1 =>
array(
0 => 'temp_id',
),
2 =>
array(
0 => 'item_class',
1 => 'item_id',
),
),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeDateTime('expiration_date', array('sql' => 'expiration_date', 'is_null_allowed' => false, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeString('temp_id', array('sql' => 'temp_id', 'is_null_allowed' => true, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeString('item_class', array('sql' => 'item_class', 'is_null_allowed' => false, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeObjectKey('item_id', array('class_attcode' => 'item_class', 'sql' => 'item_id', 'is_null_allowed' => true, 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeDateTime('creation_date', array('sql' => 'creation_date', 'is_null_allowed' => true, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeString('host_class', array('sql' => 'host_class', 'is_null_allowed' => true, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeObjectKey('host_id', array('class_attcode' => 'host_class', 'sql' => 'host_id', 'is_null_allowed' => true, 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeString('host_att_code', array('sql' => 'host_att_code', 'is_null_allowed' => true, 'default_value' => '', 'allowed_values' => null, 'depends_on' => array(), 'always_load_in_tables' => false)));
MetaModel::Init_AddAttribute(new AttributeEnum("operation", array("allowed_values" => new ValueSetEnum('create,delete'), "sql" => "operation", "default_value" => "create", "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_SetZListItems('details', array(
0 => 'temp_id',
1 => 'item_class',
2 => 'item_id',
3 => 'creation_date',
4 => 'expiration_date',
5 => 'meta',
));
MetaModel::Init_SetZListItems('standard_search', array(
0 => 'temp_id',
1 => 'item_class',
2 => 'item_id',
));
MetaModel::Init_SetZListItems('list', array(
0 => 'temp_id',
1 => 'item_class',
2 => 'item_id',
3 => 'creation_date',
4 => 'expiration_date',
));;
}
public function DBInsertNoReload()
{
$this->SetCurrentDateIfNull('creation_date');
return parent::DBInsertNoReload();
}
/**
* Set/Update all of the '_item' fields
*
* @param object $oItem Container item
*
* @return void
*/
public function SetItem($oItem, $bUpdateOnChange = false)
{
$sClass = get_class($oItem);
$iItemId = $oItem->GetKey();
$this->Set('item_class', $sClass);
$this->Set('item_id', $iItemId);
}
}

View File

@@ -9,9 +9,7 @@ use Combodo\iTop\Application\UI\Links\Set\BlockLinkSetDisplayAsProperty;
use Combodo\iTop\Form\Field\LabelField;
use Combodo\iTop\Form\Field\TextAreaField;
use Combodo\iTop\Form\Form;
use Combodo\iTop\Form\Validator\LinkedSetValidator;
use Combodo\iTop\Form\Validator\NotEmptyExtKeyValidator;
use Combodo\iTop\Form\Validator\Validator;
use Combodo\iTop\Form\Validator\CustomRegexpValidator;
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
use Combodo\iTop\Service\Links\LinkSetModel;
@@ -93,9 +91,6 @@ define('LINKSET_EDITMODE_ACTIONS', 2); // Show the usual 'Actions' popup menu
define('LINKSET_EDITMODE_INPLACE', 3); // The "linked" objects can be created/modified/deleted in place
define('LINKSET_EDITMODE_ADDREMOVE', 4); // The "linked" objects can be added/removed in place
define('LINKSET_RELATIONTYPE_PROPERTY', 'property');
define('LINKSET_RELATIONTYPE_LINK', 'link');
define('LINKSET_DISPLAY_STYLE_PROPERTY', 'property');
define('LINKSET_DISPLAY_STYLE_TAB', 'tab');
@@ -1126,7 +1121,7 @@ abstract class AttributeDefinition
// Validation pattern
if ($this->GetValidationPattern() !== '') {
$oFormField->AddValidator(new Validator($this->GetValidationPattern()));
$oFormField->AddValidator(new CustomRegexpValidator($this->GetValidationPattern()));
}
// Description
@@ -1155,6 +1150,13 @@ abstract class AttributeDefinition
$oFormField->AddMetadata('value-raw', (string)$oObject->Get($this->GetCode()));
}
// We don't want to invalidate field because of old untouched values that are no longer valid
$aModifiedAttCodes = $oObject->ListChanges();
$bAttributeHasBeenModified = array_key_exists($this->GetCode(), $aModifiedAttCodes);
if (false === $bAttributeHasBeenModified) {
$oFormField->SetValidationDisabled(true);
}
return $oFormField;
}
@@ -1697,22 +1699,12 @@ class AttributeLinkedSet extends AttributeDefinition
/**
* @return string see LINKSET_EDITMODE_* constants
* @since 3.1.0 N°5563 relations are edited using new attributes in details mode, but as nothing changed in edit mode we are still using edit_mode attribute
*/
public function GetEditMode()
{
return $this->GetOptional('edit_mode', LINKSET_EDITMODE_ACTIONS);
}
/**
* @return string see LINKSET_RELATIONTYPE_* constants
* @since 3.1.0 N°5563
*/
public function GetRelationType()
{
return $this->GetOptional('relation_type', LINKSET_RELATIONTYPE_LINK);
}
/**
* @return string see LINKSET_DISPLAY_STYLE_* constants
* @since 3.1.0 N°3190
@@ -1737,15 +1729,6 @@ class AttributeLinkedSet extends AttributeDefinition
return $this->GetOptional('with_php_constraint', false);
}
/**
* @return boolean
* @since 3.1.0 N°5563
*/
public function GetReadOnly()
{
return $this->GetOptional('read_only', false);
}
public function GetLinkedClass()
{
return $this->Get('linked_class');
@@ -1772,7 +1755,53 @@ class AttributeLinkedSet extends AttributeDefinition
}
/** @inheritDoc * */
public function GetAsHTML($sValue, $oHostObject = null, $bLocalize = true): string
public function GetAsHTML($sValue, $oHostObject = null, $bLocalize = true)
{
if($this->GetDisplayStyle() === LINKSET_DISPLAY_STYLE_TAB){
return $this->GetAsHTMLForTab($sValue, $oHostObject, $bLocalize);
}
else{
return $this->GetAsHTMLForProperty($sValue, $oHostObject, $bLocalize);
}
}
public function GetAsHTMLForTab($sValue, $oHostObject = null, $bLocalize = true)
{
if (is_object($sValue) && ($sValue instanceof ormLinkSet))
{
$sValue->Rewind();
$aItems = array();
while ($oObj = $sValue->Fetch())
{
// Show only relevant information (hide the external key to the current object)
$aAttributes = array();
foreach(MetaModel::ListAttributeDefs($this->GetLinkedClass()) as $sAttCode => $oAttDef)
{
if ($sAttCode == $this->GetExtKeyToMe())
{
continue;
}
if ($oAttDef->IsExternalField())
{
continue;
}
$sAttValue = $oObj->GetAsHTML($sAttCode);
if (strlen($sAttValue) > 0)
{
$aAttributes[] = $sAttValue;
}
}
$sAttributes = implode(', ', $aAttributes);
$aItems[] = $sAttributes;
}
return implode('<br/>', $aItems);
}
return null;
}
public function GetAsHTMLForProperty($sValue, $oHostObject = null, $bLocalize = true): string
{
try {
@@ -2447,8 +2476,6 @@ class AttributeLinkedSet extends AttributeDefinition
$oFormField->SetLnkAttributesToDisplay($aLnkAttributesToDisplay);
}
$oFormField->AddValidator(new LinkedSetValidator());
parent::MakeFormField($oObject, $oFormField);
return $oFormField;
@@ -2558,15 +2585,6 @@ class AttributeLinkedSetIndirect extends AttributeLinkedSet
return $this->GetOptional("duplicates", false);
} // The same object may be linked several times... or not...
/**
* @return boolean
* @since 3.1.0 N°5563
*/
public function GetReadOnly()
{
return $this->GetOptional('read_only', false);
}
public function GetTrackingLevel()
{
return $this->GetOptional('tracking_level',
@@ -3873,6 +3891,12 @@ class AttributeApplicationLanguage extends AttributeString
{
$aLanguageCodes[$sLangCode] = $aInfo['description'].' ('.$aInfo['localized_description'].')';
}
// N°6462 This should be sorted directly in \Dict during the compilation but we can't for 2 reasons:
// - Additional languages can be added on the fly even though it is not recommended
// - Formatting is done at run time (just above)
natcasesort($aLanguageCodes);
$aParams["allowed_values"] = new ValueSetEnum($aLanguageCodes);
parent::__construct($sCode, $aParams);
}
@@ -4163,7 +4187,7 @@ class AttributePassword extends AttributeString implements iAttributeNoGroupBy
public function GetAsHTML($sValue, $oHostObject = null, $bLocalize = true)
{
if (strlen($sValue) == 0)
if (utils::IsNullOrEmptyString($sValue))
{
return '';
}
@@ -7196,14 +7220,27 @@ class AttributeExternalKey extends AttributeDBFieldVoid
{
return 0;
}
if (MetaModel::IsValidObject($proposedValue))
{
if (MetaModel::IsValidObject($proposedValue)) {
return $proposedValue->GetKey();
}
return (int)$proposedValue;
}
/** @inheritdoc @since 3.1 */
public function WriteExternalValues(DBObject $oHostObject): void
{
$sTargetKey = $oHostObject->Get($this->GetCode());
$oFilter = DBSearch::FromOQL('SELECT `'.TemporaryObjectDescriptor::class.'` WHERE item_class=:class AND item_id=:id');
$oSet = new DBObjectSet($oFilter, [], ['class' => $this->GetTargetClass(), 'id' => $sTargetKey]);
while ($oTemporaryObjectDescriptor = $oSet->Fetch()) {
$oTemporaryObjectDescriptor->Set('host_class', get_class($oHostObject));
$oTemporaryObjectDescriptor->Set('host_id', $oHostObject->GetKey());
$oTemporaryObjectDescriptor->Set('host_att_code', $this->GetCode());
$oTemporaryObjectDescriptor->DBUpdate();
}
}
public function GetMaximumComboLength()
{
return $this->GetOptional('max_combo_length', MetaModel::GetConfig()->Get('max_combo_length'));
@@ -7267,6 +7304,7 @@ class AttributeExternalKey extends AttributeDBFieldVoid
public function MakeFormField(DBObject $oObject, $oFormField = null)
{
/** @var \Combodo\iTop\Form\Field\Field $oFormField */
if ($oFormField === null) {
// Later : We should check $this->Get('display_style') and create a Radio / Select / ... regarding its value
$sFormFieldClass = static::GetFormFieldClass();
@@ -7297,19 +7335,12 @@ class AttributeExternalKey extends AttributeDBFieldVoid
}
});
}
else
{
else {
$oSearch = DBSearch::FromOQL($this->GetValuesDef()->GetFilterExpression());
$oSearch->SetInternalParams(array('this' => $oObject));
$oFormField->SetSearch($oSearch);
}
// If ExtKey is mandatory, we add a validator to ensure that the value 0 is not selected
if ($oObject->GetAttributeFlags($this->GetCode()) & OPT_ATT_MANDATORY)
{
$oFormField->AddValidator(new NotEmptyExtKeyValidator());
}
parent::MakeFormField($oObject, $oFormField);
return $oFormField;
@@ -7935,6 +7966,17 @@ class AttributeExternalField extends AttributeDefinition
return $oExtAttDef->MakeRealValue($proposedValue, $oHostObj);
}
/**
* @inheritDoc
* @since 3.1.0 N°6271 Delegate to remote attribute to ensure cascading computed values
*/
public function GetSQLValues($value)
{
$oExtAttDef = $this->GetExtAttDef();
return $oExtAttDef->GetSQLValues($value);
}
public function ScalarToSQL($value)
{
// This one could be used in case of filtering only
@@ -8343,7 +8385,7 @@ class AttributeBlob extends AttributeDefinition
$aValues[$this->GetCode().'_data'] = '';
$aValues[$this->GetCode().'_mimetype'] = '';
$aValues[$this->GetCode().'_filename'] = '';
$aValues[$this->GetCode().'_downloads_count'] = \ormDocument::DEFAULT_DOWNLOADS_COUNT;
$aValues[$this->GetCode().'_downloads_count'] = ormDocument::DEFAULT_DOWNLOADS_COUNT;
}
return $aValues;
@@ -8533,6 +8575,22 @@ class AttributeBlob extends AttributeDefinition
return utils::IsNotNullOrEmptyString($proposedValue->GetData()) && utils::IsNotNullOrEmptyString($proposedValue->GetFileName());
}
/**
* @inheritDoc
* @param \ormDocument $original
* @param \ormDocument $value
* @since N°6502
*/
public function RecordAttChange(DBObject $oObject, $original, $value): void
{
// N°6502 Don't record history if only the download count has changed
if ($original->EqualsExceptDownloadsCount($value)) {
return;
}
parent::RecordAttChange($oObject, $original, $value);
}
protected function GetChangeRecordAdditionalData(CMDBChangeOp $oMyChangeOp, DBObject $oObject, $original, $value): void
{
if (is_null($original)) {
@@ -8692,7 +8750,7 @@ class AttributeImage extends AttributeBlob
return 'data:'.$value->GetMimeType().';base64,'.base64_encode($value->GetData());
}
return $value->GetDownloadURL(get_class($oHostObject), $oHostObject->GetKey(), $this->GetCode());
return $value->GetDisplayURL(get_class($oHostObject), $oHostObject->GetKey(), $this->GetCode());
}
public static function GetFormFieldClass()
@@ -11302,6 +11360,9 @@ class AttributeClassAttCodeSet extends AttributeSet
}
$aAllowedAttributes[$sAttCode] = $sLabel;
}
// N°6460 Always sort on the labels, not on the datamodel definition order
natcasesort($aAllowedAttributes);
return $aAllowedAttributes;
}

View File

@@ -35,6 +35,7 @@ MetaModel::IncludeModule('synchro/synchrodatasource.class.inc.php');
MetaModel::IncludeModule('core/backgroundtask.class.inc.php');
MetaModel::IncludeModule('core/inlineimage.class.inc.php');
MetaModel::IncludeModule('core/counter.class.inc.php');
MetaModel::IncludeModule('core/TemporaryObjectDescriptor.php');
MetaModel::IncludeModule('webservices/webservices.basic.php');

View File

@@ -37,6 +37,14 @@ abstract class CellChangeSpec
return $this->m_proposedValue;
}
/**
* @since 3.1.0 N°5305
*/
public function SetDisplayableValue(string $sDisplayableValue)
{
$this->m_proposedValue = $sDisplayableValue;
}
public function GetOql()
{
return $this->m_sOql;
@@ -136,6 +144,12 @@ class CellStatus_SearchIssue extends CellStatus_Issue
/** @var string|null $m_sTargetClass */
private $m_sTargetClass;
/**
* @since 3.1.0 N°5305
* @var string $sAllowedValuesSearch
*/
private $sAllowedValuesSearch;
/**
* CellStatus_SearchIssue constructor.
* @since 3.1.0 N°5305
@@ -144,13 +158,15 @@ class CellStatus_SearchIssue extends CellStatus_Issue
* @param string $sReason : main message
* @param null $sClass : used for additional message that provides allowed values for current class $sClass
* @param null $sAllowedValues : used for additional message that provides allowed values $sAllowedValues for current class
* @param string|null $sAllowedValuesSearch : used to search all allowed values
*/
public function __construct($sSerializedSearch, $sReason, $sClass=null, $sAllowedValues=null)
public function __construct($sSerializedSearch, $sReason, $sClass=null, $sAllowedValues=null, string $sAllowedValuesSearch=null)
{
parent::__construct(null, null, $sReason);
$this->sSerializedSearch = $sSerializedSearch;
$this->m_sAllowedValues = $sAllowedValues;
$this->m_sTargetClass = $sClass;
$this->sAllowedValuesSearch = $sAllowedValuesSearch;
}
public function GetDisplayableValue()
@@ -182,6 +198,17 @@ class CellStatus_SearchIssue extends CellStatus_Issue
rawurlencode($this->sSerializedSearch)
);
}
/**
* @since 3.1.0 N°5305
* @return null|string
*/
public function GetAllowedValuesLinkUrl(): ?string
{
return sprintf("UI.php?operation=search&filter=%s",
rawurlencode($this->sAllowedValuesSearch)
);
}
}
class CellStatus_NullIssue extends CellStatus_Issue
@@ -745,6 +772,7 @@ class BulkChange
$oDbSearchWithoutAnyCondition->AllowAllData(false);
$oExtObjectSetWithCurrentUserPermissions = new CMDBObjectSet($oDbSearchWithoutAnyCondition);
$iCurrentUserRightsObjectCount = $oExtObjectSetWithCurrentUserPermissions->Count();
$sAllowedValuesOql = $oDbSearchWithoutAnyCondition->serialize();
if ($iCurrentUserRightsObjectCount === 0){
// No objects visible by current user
@@ -785,7 +813,7 @@ class BulkChange
if ($iAllowAllDataObjectCount != $iCurrentUserRightsObjectCount) {
// No match and some objects NOT visible by current user. including current search maybe...
$sReason = Dict::Format('UI:CSVReport-Value-NoMatch-SomeObjectNotVisibleForCurrentUser', $oDbSearchWithConditions->GetClass());
return new CellStatus_SearchIssue($sSerializedSearch, $sReason, $oDbSearchWithConditions->GetClass(), $allowedValues);
return new CellStatus_SearchIssue($sSerializedSearch, $sReason, $oDbSearchWithConditions->GetClass(), $allowedValues, $sAllowedValuesOql);
}
// No match. This is not linked to any right issue
@@ -796,7 +824,7 @@ class BulkChange
}
$value =implode(" ", $aCurrentValueFields);
$sReason = Dict::Format('UI:CSVReport-Value-NoMatch', $value);
return new CellStatus_SearchIssue($sSerializedSearch, $sReason, $oDbSearchWithConditions->GetClass(), $allowedValues);
return new CellStatus_SearchIssue($sSerializedSearch, $sReason, $oDbSearchWithConditions->GetClass(), $allowedValues, $sAllowedValuesOql);
}
protected function PrepareMissingObject(&$oTargetObj, &$aErrors)

View File

@@ -469,7 +469,10 @@ abstract class CMDBObject extends DBObject
*/
public function DBDelete(&$oDeletionPlan = null)
{
return $this->DBDeleteTracked_Internal($oDeletionPlan);
$this->LogCRUDEnter(__METHOD__);
$oDeletionPlan = $this->DBDeleteTracked_Internal($oDeletionPlan);
$this->LogCRUDExit(__METHOD__);
return $oDeletionPlan;
}
/**
@@ -519,15 +522,6 @@ abstract class CMDBObject extends DBObject
utils::PopArchiveMode();
}
}
public function DBUpdate()
{
if (count($this->ListChanges()) === 0) {
$this->InitPreviousValuesForUpdatedAttributes();
return $this->GetKey();
}
return parent::DBUpdate(); // TODO: Change the autogenerated stub
}
}

View File

@@ -137,7 +137,7 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'log_purge.max_keep_days' => [
'log_purge.max_keep_days' => [
'type' => 'integer',
'description' => 'Optional purge number of days to keep logs.',
'default' => 365,
@@ -145,7 +145,7 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'event_service.debug.filter_events' => [
'event_service.debug.filter_events' => [
'type' => 'array',
'description' => 'List of events name to filter Event Service debug messages',
'default' => [],
@@ -153,7 +153,7 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'event_service.debug.filter_sources' => [
'event_service.debug.filter_sources' => [
'type' => 'array',
'description' => 'List of event sources to filter Event Service debug messages',
'default' => '',
@@ -161,6 +161,38 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'temporary_object.force_creation' => [
'type' => 'bool',
'description' => 'If true, all the objects created by the external key are temporary',
'default' => false,
'value' => false,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'temporary_object.lifetime' => [
'type' => 'integer',
'description' => 'Seconds for temporary objects created',
'default' => 300,
'value' => 300,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'temporary_object.watchdog_interval' => [
'type' => 'integer',
'description' => 'Seconds between watchdog signals',
'default' => 60,
'value' => false,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'temporary_object.garbage_interval' => [
'type' => 'integer',
'description' => 'Seconds between garbage collections',
'default' => 60,
'value' => false,
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'app_env_label' => [
'type' => 'string',
'description' => 'Label displayed to describe the current application environment, defaults to the environment name (e.g. "production")',
@@ -185,7 +217,7 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => false,
],
'db_host' => [
'db_host' => [
'type' => 'string',
'default' => null,
'value' => '',

View File

@@ -137,7 +137,7 @@ class CSVBulkExport extends TabularBulkExport
$aSep['other'] = Dict::S('UI:CSVImport:SeparatorOther').' <input type="text" size="3" name="other-separator" value="'.utils::EscapeHtml($sOtherSeparator).'"/>';
foreach ($aSep as $sVal => $sLabel) {
$oRadio = InputUIBlockFactory::MakeForInputWithLabel($sLabel, "separator", utils::EscapeHtml($sVal), $sLabel, "radio");
$oRadio = InputUIBlockFactory::MakeForInputWithLabel($sLabel, "separator", $sVal, $sLabel, "radio");
$oRadio->GetInput()->SetIsChecked(($sVal == $sRawSeparator));
$oRadio->SetBeforeInput(false);
$oRadio->GetInput()->AddCSSClass('ibo-input--label-right');
@@ -163,8 +163,8 @@ class CSVBulkExport extends TabularBulkExport
$aQualifiers['other'] = Dict::S('UI:CSVImport:QualifierOther').' <input type="text" size="3" name="other-text-qualifier" value="'.utils::EscapeHtml($sOtherQualifier).'"/>';
foreach ($aQualifiers as $sVal => $sLabel) {
$oRadio = InputUIBlockFactory::MakeForInputWithLabel($sLabel, "text-qualifier", utils::EscapeHtml($sVal), $sLabel, "radio");
$oRadio->GetInput()->SetIsChecked(($sVal == $sRawSeparator));
$oRadio = InputUIBlockFactory::MakeForInputWithLabel($sLabel, "text-qualifier", $sVal, $sLabel, "radio");
$oRadio->GetInput()->SetIsChecked(($sVal == $sRawQualifier));
$oRadio->SetBeforeInput(false);
$oRadio->GetInput()->AddCSSClass('ibo-input--label-right');
$oRadio->GetInput()->AddCSSClass('ibo-input-checkbox');

View File

@@ -58,6 +58,7 @@
<parent>cmdbAbstractObject</parent>
<properties>
<category>addon/userrights,grant_by_profile</category>
<is_link>1</is_link>
</properties>
<fields>
<field id="userid" xsi:type="AttributeExternalKey">
@@ -488,6 +489,12 @@
<type>boolean</type>
<default>false</default>
</property>
<property id="create_temporary_object">
<php_param>create_temporary_object</php_param>
<mandatory>false</mandatory>
<type>boolean</type>
<default>false</default>
</property>
<property id="on_target_delete">
<php_param>on_target_delete</php_param>
<mandatory>false</mandatory>

File diff suppressed because it is too large Load Diff

View File

@@ -583,6 +583,12 @@ class LogChannels
*/
public const DM_CRUD = 'DMCRUD';
/**
* @var string Everything related to the datamodel CRUD
* @since 3.1.0
*/
public const WEB_REQUEST = 'WebRequest';
/**
* @var string Everything related to the event service
* @since 3.1.0
@@ -606,6 +612,8 @@ class LogChannels
public const PORTAL = 'portal';
public const TEMPORARY_OBJECTS = 'TemporaryObjects';
/**
* @var string
* @since 3.1.0
@@ -1406,7 +1414,7 @@ class LogFileRotationProcess implements iScheduledProcess
$iMaxDays = MetaModel::GetConfig()->Get(LogAPI::ENUM_CONFIG_PARAM_PURGE_MAX_KEEP_DAYS);
// Files iterator (*.*)
$oIterator = new \GlobIterator(APPROOT.'log'.DIRECTORY_SEPARATOR.'/*.*');
$oIterator = new \GlobIterator(APPROOT.'log'.DIRECTORY_SEPARATOR.'*.*');
$aLogFiles = iterator_to_array($oIterator);
// Reference date
@@ -1418,6 +1426,11 @@ class LogFileRotationProcess implements iScheduledProcess
// File real path
$sFileRealPath = $oLogFile->getRealPath();
// Check file extension
if(!in_array($oLogFile->getExtension(), ['log','sql','xml'])){
continue;
}
// Compute number of days since last modification
$oDateFileLastModification = new DateTime();
$oDateFileLastModification->setTimestamp($oLogFile->getMTime());

View File

@@ -2927,52 +2927,7 @@ abstract class MetaModel
}
self::$m_sTablePrefix = $sTablePrefix;
// Build the list of available extensions
//
$aInterfaces = [
'iApplicationUIExtension',
'iPreferencesExtension',
'iApplicationObjectExtension',
'iLoginFSMExtension',
'iLoginUIExtension',
'iLogoutExtension',
'iQueryModifier',
'iOnClassInitialization',
'iPopupMenuExtension',
'iPageUIExtension',
'iPageUIBlockExtension',
'iBackofficeLinkedScriptsExtension',
'iBackofficeEarlyScriptExtension',
'iBackofficeScriptExtension',
'iBackofficeInitScriptExtension',
'iBackofficeReadyScriptExtension',
'iBackofficeLinkedStylesheetsExtension',
'iBackofficeStyleExtension',
'iBackofficeDictEntriesExtension',
'iBackofficeDictEntriesPrefixesExtension',
'iPortalUIExtension',
'ModuleHandlerApiInterface',
'iNewsroomProvider',
'iModuleExtension',
];
foreach($aInterfaces as $sInterface)
{
self::$m_aExtensionClassNames[$sInterface] = array();
}
foreach(get_declared_classes() as $sPHPClass)
{
$oRefClass = new ReflectionClass($sPHPClass);
$oExtensionInstance = null;
foreach($aInterfaces as $sInterface)
{
if ($oRefClass->implementsInterface($sInterface) && $oRefClass->isInstantiable())
{
self::$m_aExtensionClassNames[$sInterface][$sPHPClass] = $sPHPClass;
}
}
}
self::InitExtensions();
// Initialize the classes (declared attributes, etc.)
//
@@ -7642,6 +7597,56 @@ abstract class MetaModel
unset(self::$m_aReentranceProtection[get_class($oObject)][$oObject->GetKey()]);
}
}
/**
* For test purpose
* @throws \ReflectionException
* @since 3.1.0
*/
public static function InitExtensions()
{
// Build the list of available extensions
//
$aInterfaces = [
'iApplicationUIExtension',
'iPreferencesExtension',
'iApplicationObjectExtension',
'iLoginFSMExtension',
'iLoginUIExtension',
'iLogoutExtension',
'iQueryModifier',
'iOnClassInitialization',
'iPopupMenuExtension',
'iPageUIExtension',
'iPageUIBlockExtension',
'iBackofficeLinkedScriptsExtension',
'iBackofficeEarlyScriptExtension',
'iBackofficeScriptExtension',
'iBackofficeInitScriptExtension',
'iBackofficeReadyScriptExtension',
'iBackofficeLinkedStylesheetsExtension',
'iBackofficeStyleExtension',
'iBackofficeDictEntriesExtension',
'iBackofficeDictEntriesPrefixesExtension',
'iPortalUIExtension',
'ModuleHandlerApiInterface',
'iNewsroomProvider',
'iModuleExtension',
];
foreach ($aInterfaces as $sInterface) {
self::$m_aExtensionClassNames[$sInterface] = array();
}
foreach (get_declared_classes() as $sPHPClass) {
$oRefClass = new ReflectionClass($sPHPClass);
$oExtensionInstance = null;
foreach ($aInterfaces as $sInterface) {
if ($oRefClass->implementsInterface($sInterface) && $oRefClass->isInstantiable()) {
self::$m_aExtensionClassNames[$sInterface][$sPHPClass] = $sPHPClass;
}
}
}
}
}

View File

@@ -3526,6 +3526,7 @@ class CharConcatWSExpression extends CharConcatExpression
$aRes = array();
foreach ($this->m_aExpressions as $oExpr)
{
// TODO: Seems weird, this should rather be $aRes[] = $oExpr->Evaluate($aArgs);
$aRes .= $oExpr->Evaluate($aArgs);
}
return implode($this->m_separator, $aRes);

View File

@@ -86,6 +86,33 @@ class ormDocument
{
return ($this->m_data == null);
}
/**
* @param \ormDocument $oCompared
*
* @return bool True if the current ormDocument is equals to $oCompared EXCEPT for its download count. False if any other property is different OR if count is the same.
* @since 3.1.0 N°6502
*/
public function EqualsExceptDownloadsCount(ormDocument $oCompared): bool
{
// First checking equality on others properties
if ($oCompared->GetData() !== $this->GetData()) {
return false;
}
if ($oCompared->GetMimeType() !== $this->GetMimeType()) {
return false;
}
if ($oCompared->GetFileName() !== $this->GetFileName()) {
return false;
}
// Finally check equality of the download count
if ($oCompared->GetDownloadsCount() === $this->GetDownloadsCount()) {
return false;
} else {
return true;
}
}
public function GetMimeType()
{

View File

@@ -98,4 +98,14 @@ class PluginManager
return $oInstance;
}
/**
* For test purpose
* @return void
* @since 3.1.0
*/
protected static function ResetPlugins()
{
self::$m_aExtensionClasses = null;
}
}

View File

@@ -43,6 +43,12 @@
class SimpleCrypt
{
/**
* @var \SimpleCrypt
* @since 3.1.0 N°5388
*/
protected $oEngine;
public static function GetNewDefaultParams()
{
if(function_exists('sodium_crypto_secretbox_open') && function_exists('random_bytes')){
@@ -62,6 +68,7 @@ class SimpleCrypt
$sEngineName = 'SimpleCrypt' . $sEngineName . 'Engine';
return $sEngineName::GetNewDefaultParams();
}
/**
* Constructor
* @param string $sEngineName Engine for encryption. Values: Simple, Mcrypt, Sodium or OpenSSL

View File

@@ -218,8 +218,8 @@ class SQLObjectQueryBuilder
continue;
}
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
// Skip this attribute if not made of SQL columns
if (count($oAttDef->GetSQLExpressions()) == 0)
// Skip this attribute if not made of SQL columns nor in current table
if (count($oAttDef->GetSQLExpressions()) == 0 || $oAttDef->IsExternalField())
{
continue;
}

View File

@@ -50,7 +50,7 @@ abstract class Trigger extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("action_list",
array("linked_class" => "lnkTriggerAction", "ext_key_to_me" => "trigger_id", "ext_key_to_remote" => "action_id", "allowed_values" => null, "count_min" => 1, "count_max" => 0, "depends_on" => array())));
$aTags = ContextTag::GetTags();
MetaModel::Init_AddAttribute(new AttributeEnumSet("context", array("allowed_values" => null, "possible_values" => new ValueSetEnumPadded($aTags), "sql" => "context", "depends_on" => array(), "is_null_allowed" => true, "max_items" => 12)));
MetaModel::Init_AddAttribute(new AttributeEnumSet("context", array("allowed_values" => null, "possible_values" => new ValueSetEnumPadded($aTags, true), "sql" => "context", "depends_on" => array(), "is_null_allowed" => true, "max_items" => 12)));
// "complement" is a computed field, fed by Trigger sub-classes, in general in ComputeValues method, for eg. the TriggerOnObject fed it with target_class info
MetaModel::Init_AddAttribute(new AttributeString("complement", array("allowed_values" => null, "sql" => "complement", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));

View File

@@ -97,7 +97,7 @@ abstract class ValueSetDefinition
public function SortValues(array &$aValues): void
{
// Sort alphabetically on values
asort($aValues);
natcasesort($aValues);
}
abstract protected function LoadValues($aArgs);
@@ -465,11 +465,11 @@ class ValueSetEnum extends ValueSetDefinition
{
protected $m_values;
/**
* @var bool $bSortByValue If true, values will be sorted at runtime, otherwise it is sorted at compile time in a predefined order.
* @var bool $bSortByValues If true, values will be sorted at runtime (on their values, not their keys), otherwise it is sorted at compile time in a predefined order.
* {@see \MFCompiler::CompileAttributeEnumValues()} for complete reasons.
* @since 3.1.0 N°1646
*/
protected bool $bSortByValue;
protected bool $bSortByValues;
/**
* @param array|string $Values
@@ -477,20 +477,20 @@ class ValueSetEnum extends ValueSetDefinition
*
* @since 3.1.0 N°1646 Add $bLocalizedSort parameter
*/
public function __construct($Values, bool $bSortByValue = false)
public function __construct($Values, bool $bSortByValues = false)
{
$this->m_values = $Values;
$this->bSortByValue = $bSortByValue;
$this->bSortByValues = $bSortByValues;
}
/**
* @see \ValueSetEnum::$bSortByValue
* @see \ValueSetEnum::$bSortByValues
* @return bool
* @since 3.1.0 N°1646
*/
public function IsSortedByValues(): bool
{
return $this->bSortByValue;
return $this->bSortByValues;
}
// Helper to export the data model
@@ -507,8 +507,8 @@ class ValueSetEnum extends ValueSetDefinition
public function SortValues(array &$aValues): void
{
// Force sort by values only if necessary
if ($this->bSortByValue) {
asort($aValues);
if ($this->bSortByValues) {
natcasesort($aValues);
return;
}
@@ -548,9 +548,13 @@ class ValueSetEnum extends ValueSetDefinition
class ValueSetEnumPadded extends ValueSetEnum
{
public function __construct($Values)
/**
* @inheritDoc
* @since 3.1.0 N°6448 Add $bSortByValues parameter
*/
public function __construct($Values, bool $bSortByValues = false)
{
parent::__construct($Values);
parent::__construct($Values, $bSortByValues);
if (is_string($Values))
{
$this->LoadValues(null);
@@ -562,6 +566,7 @@ class ValueSetEnumPadded extends ValueSetEnum
$aPaddedValues = array();
foreach ($this->m_aValues as $sKey => $sVal)
{
// Pad keys to the min. length required by the \AttributeSet
$sKey = str_pad($sKey, 3, '_', STR_PAD_LEFT);
$aPaddedValues[$sKey] = $sVal;
}
@@ -610,7 +615,7 @@ class ValueSetEnumClasses extends ValueSetEnum
public function __construct($sCategories = '', $sAdditionalValues = '')
{
$this->m_sCategories = $sCategories;
parent::__construct($sAdditionalValues);
parent::__construct($sAdditionalValues, true /* Classes are always sorted alphabetically */);
}
protected function LoadValues($aArgs)

View File

@@ -25,5 +25,7 @@
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserLDAP' => 'LDAP-Benutzer',
'Class:UserLDAP+' => 'Benutzer, der via LDAP authentifiziert wird',
'UserLDAP:server' => 'LDAP specifics~~',
'Class:UserLDAP/Attribute:ldap_server' => 'LDAP-Server',
'Class:UserLDAP/Attribute:ldap_server+' => 'Optional: LDAP-Server, der zur Authentifizierung verwendet werden soll, falls mehrere LDAP-Server konfiguriert sind.',
'UserLDAP:server' => 'LDAP-Einstellungen',
));

View File

@@ -462,6 +462,12 @@ class DatabaseAnalyzer
$aCols = $oAttDef->GetSQLExpressions(); // Workaround a PHP bug: sometimes issuing a Notice if invoking current(somefunc())
$sMyAttributeField = current($aCols); // get the first column for the moment
$sFilter = "FROM `$sTable` WHERE `$sTable`.`$sMyAttributeField` NOT IN ($sExpectedValues)";
if ($oAttDef->IsNullAllowed()) {
// NotEmptyToSql should have been in AttributeDefinition, as a workaround the search type is used
$sSearchType = $oAttDef->GetSearchType();
$sCondition = $this->NotEmptyToSql("`$sTable`.`$sMyAttributeField`", $sSearchType);
$sFilter .= " AND $sCondition";
}
$sDelete = "DELETE `$sTable`";
$sSelect = "SELECT DISTINCT `$sTable`.`$sKeyField` AS id, `$sTable`.`$sMyAttributeField` AS value";
$sSelWrongRecs = "$sSelect $sFilter";
@@ -492,6 +498,26 @@ class DatabaseAnalyzer
}
}
/**
* @param $sRef
* @param string $sSearchType
*
* @return string
* @since 3.1.0 N°6442
*/
private function NotEmptyToSql($sRef, string $sSearchType)
{
switch ($sSearchType) {
case AttributeDefinition::SEARCH_WIDGET_TYPE_NUMERIC:
case AttributeDefinition::SEARCH_WIDGET_TYPE_EXTERNAL_FIELD:
case AttributeDefinition::SEARCH_WIDGET_TYPE_DATE:
case AttributeDefinition::SEARCH_WIDGET_TYPE_DATE_TIME:
return "ISNULL({$sRef}) = 0";
}
return "({$sRef} != '')";
}
/**
* Check user accounts without profile
*

View File

@@ -43,7 +43,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'DBTools:ShowAll' => 'Alle Fehler anzeigen',
'DBTools:Inconsistencies' => 'Datenbank-Inkonsistenzen',
'DBTools:DetailedErrorTitle' => '%2$s Fehler(s) in der Klasse %1$s: %3$s',
'DBTools:DetailedErrorLimit' => 'List limited to %1$s errors~~',
'DBTools:DetailedErrorLimit' => 'Liste auf %1$s Fehler begrenzt',
'DBAnalyzer-Integrity-OrphanRecord' => 'Verwaister Eintrag in `%1$s`, er sollte eine Entsprechung in Tabelle `%2$s` haben',
'DBAnalyzer-Integrity-InvalidExtKey' => 'Ungültiger Externer Key %1$s (Spalte: `%2$s.%3$s`)',
'DBAnalyzer-Integrity-MissingExtKey' => 'Fehlender Externer Key %1$s (Spalte: `%2$s.%3$s`)',

View File

@@ -74,7 +74,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Attachments:File:Uploader' => 'hochgeladen von',
'Attachments:File:Size' => 'Größe',
'Attachments:File:MimeType' => 'Typ',
'Attachments:File:DownloadsCount' => 'Downloads~~',
'Attachments:File:DownloadsCount' => 'Downloads',
));
//
// Class: Attachment
@@ -94,6 +94,6 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:TriggerOnAttachmentDownload' => 'Trigger (on object\'s attachment download)~~',
'Class:TriggerOnAttachmentDownload+' => 'Trigger on object\'s attachment download of [a child class of] the given class~~',
'Class:TriggerOnAttachmentDownload' => 'Trigger (beim Herunterladen eines Attachment eines Objekts)',
'Class:TriggerOnAttachmentDownload+' => 'Trigger für das Herunterladen des Attachments der angegebenen Klasse oder einer Unterklasse',
));

View File

@@ -102,14 +102,19 @@ if (!function_exists('sys_get_temp_dir'))
}
/**
* @param int $iRefTime Reference date time as a unix timestamp
*
* @return string Absolute path to the backup file, WITHOUT the file extension (`.tar.gz`)
* @throws \Exception
*/
function MakeArchiveFileName($iRefTime = null)
{
$sDefaultBackupFileName = sys_get_temp_dir().'/'."__DB__-%Y-%m-%d";
$sBackupFile = utils::ReadParam('backup_file', $sDefaultBackupFileName, true, 'raw_data');
$oBackup = new DBBackup();
$oDateTime = $iRefTime !== null ? new DateTime($iRefTime) : new DateTime();
$oDateTime = $iRefTime !== null ? DateTime::createFromFormat('U', $iRefTime) : new DateTime();
$sBackupFile = $oBackup->MakeName($sBackupFile, $oDateTime);
return $sBackupFile;

View File

@@ -197,7 +197,6 @@
<count_max>0</count_max>
<ext_key_to_remote>providercontract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="services_list" xsi:type="AttributeLinkedSetIndirect" _delta="define">
<linked_class>lnkFunctionalCIToService</linked_class>
@@ -206,7 +205,6 @@
<count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -385,7 +383,6 @@
<count_max>0</count_max>
<ext_key_to_remote>contract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="services_list" xsi:type="AttributeLinkedSetIndirect" _delta="define">
<linked_class>lnkDocumentToService</linked_class>
@@ -394,7 +391,6 @@
<count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -33,7 +33,7 @@
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkFunctionalCIToProviderContract' => 'Verknüpfung FunctionalCI/Provider-Vertrag',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Provider-Vertrag',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => 'Provider-Vertragsname',
@@ -51,7 +51,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkFunctionalCIToService' => 'Verknüpfung FunctionalCI/Service',
'Class:lnkFunctionalCIToService+' => '',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToService/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToService/Attribute:service_id' => 'Service',
'Class:lnkFunctionalCIToService/Attribute:service_id+' => '',
'Class:lnkFunctionalCIToService/Attribute:service_name' => 'Service-Name',
@@ -79,7 +79,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Document/Attribute:contracts_list' => 'Verträge',
'Class:Document/Attribute:contracts_list+' => 'All the contracts linked to this document~~',
'Class:Document/Attribute:contracts_list+' => 'Alle mit diesem Dokument verknüpften Verträge',
'Class:Document/Attribute:services_list' => 'Services',
'Class:Document/Attribute:services_list+' => 'All the services linked to this document~~',
'Class:Document/Attribute:services_list+' => 'Alle mit diesem Dokument verknüpften Services',
));

View File

@@ -139,7 +139,6 @@
<count_max>0</count_max>
<ext_key_to_remote>ticket_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
</class>

View File

@@ -33,7 +33,7 @@
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkFunctionalCIToTicket' => 'Verknüpfung FunctionalCI/Ticket',
'Class:lnkFunctionalCIToTicket+' => '',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Ticket',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Referenz',
@@ -57,5 +57,5 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:FunctionalCI/Attribute:tickets_list' => 'Tickets',
'Class:FunctionalCI/Attribute:tickets_list+' => 'All the tickets for this configuration item~~',
'Class:FunctionalCI/Attribute:tickets_list+' => 'Alle Ticket, die mit diesem CI verknüpft sind',
));

View File

@@ -33,7 +33,7 @@
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkFunctionalCIToTicket' => 'Lien CI / Ticket',
'Class:lnkFunctionalCIToTicket+' => '',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToTicket/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id' => 'Ticket',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_id+' => '',
'Class:lnkFunctionalCIToTicket/Attribute:ticket_ref' => 'Référence',

View File

@@ -264,8 +264,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_incident_list" xsi:type="AttributeLinkedSet">
<linked_class>Incident</linked_class>
@@ -273,8 +271,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_problems_list" xsi:type="AttributeLinkedSet">
<linked_class>Problem</linked_class>
@@ -282,8 +278,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="child_changes_list" xsi:type="AttributeLinkedSet">
<linked_class>Change</linked_class>
@@ -292,8 +286,6 @@
<filter><![CDATA[SELECT Change WHERE id != :this->id]]></filter>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<lifecycle>

View File

@@ -27,21 +27,21 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:Change:Overview' => 'Übersicht',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Neuer Change',
'Menu:NewChange+' => 'Ein neues Change Ticket erstellen',
'Menu:SearchChanges' => 'Nach Changes suchen',
'Menu:SearchChanges+' => 'Nach Change Tickets suchen',
'Menu:NewChange+' => 'Einen neuen Change erstellen',
'Menu:SearchChanges' => 'Suche nach Changes',
'Menu:SearchChanges+' => 'Unter den bestehenden Changes suchen',
'Menu:Change:Shortcuts' => 'Shortcuts',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Changes, die auf Annahme warten',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingAcceptance+' => 'Changes, die auf Annahme warten',
'Menu:WaitingApproval' => 'Changes, die auf Genehmigung warten',
'Menu:WaitingApproval+' => '',
'Menu:WaitingApproval+' => 'Changes, die auf Genehmigung warten',
'Menu:Changes' => 'Offene Changes',
'Menu:Changes+' => 'Alle Offene Changes',
'Menu:MyChanges' => 'Mir zugewiesene Changes',
'Menu:MyChanges+' => 'Mir zugewiesene Changes (als Bearbeiter)',
'Menu:Changes+' => 'Offene Changes',
'Menu:MyChanges' => 'Changes, die mir zugewiesen sind',
'Menu:MyChanges+' => 'Changes, die mir zugewiesen sind',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Changes der letzten sieben Tage nach Kategorie',
'UI-ChangeManagementOverview-Last-7-days' => 'Anzahl der Changes der letzten sieben Tage',
'UI-ChangeManagementOverview-Last-7-days' => 'Zahl der Changes in den letzten sieben Tagen',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Changes der letzten sieben Tage nach Typ',
'UI-ChangeManagementOverview-ChangeByStatus-last-7-days' => 'Changes der letzten sieben Tage nach Status',
'Tickets:Related:OpenChanges' => 'Offene Changes',
@@ -127,14 +127,14 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Change/Attribute:parent_name' => 'Parent Change Ref',
'Class:Change/Attribute:parent_name+' => '',
'Class:Change/Attribute:related_request_list' => 'Verwandte Requests',
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
'Class:Change/Attribute:related_request_list+' => 'Alle Benutzeranfragen, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:related_problems_list' => 'Verwandte Probleme',
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
'Class:Change/Attribute:related_problems_list+' => 'Alle Probleme, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:related_incident_list' => 'Verwandte Incidents',
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
'Class:Change/Attribute:related_incident_list+' => 'Alle Incidents, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:child_changes_list' => 'Abgeleitete Changes',
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent Friendly Name',
'Class:Change/Attribute:child_changes_list+' => 'Alle abgeleiteten Changes, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent Change Anzeigename',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Attribute:parent_id_finalclass_recall' => 'Change-Typ',
'Class:Change/Attribute:parent_id_finalclass_recall+' => '',

View File

@@ -198,7 +198,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
//
Dict::Add('FR FR', 'French', 'Français', array(
'Class:ApprovedChange' => 'Changements pré-approuvés',
'Class:ApprovedChange' => 'Changement pré-approuvé',
'Class:ApprovedChange+' => '',
'Class:ApprovedChange/Attribute:approval_date' => 'Date d\'approbation',
'Class:ApprovedChange/Attribute:approval_date+' => '',
@@ -268,7 +268,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
//
Dict::Add('FR FR', 'French', 'Français', array(
'Class:EmergencyChange' => 'Changement d\'Urgence',
'Class:EmergencyChange' => 'Changement urgent',
'Class:EmergencyChange+' => '',
'Class:EmergencyChange/Stimulus:ev_validate' => 'Valider',
'Class:EmergencyChange/Stimulus:ev_validate+' => '',

View File

@@ -192,8 +192,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_incident_list" xsi:type="AttributeLinkedSet">
<linked_class>Incident</linked_class>
@@ -201,8 +199,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_problems_list" xsi:type="AttributeLinkedSet">
<linked_class>Problem</linked_class>
@@ -210,8 +206,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="child_changes_list" xsi:type="AttributeLinkedSet">
<linked_class>Change</linked_class>
@@ -220,8 +214,6 @@
<filter><![CDATA[SELECT Change WHERE id != :this->id]]></filter>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<lifecycle>

View File

@@ -27,19 +27,19 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:Change:Overview' => 'Übersicht',
'Menu:Change:Overview+' => '',
'Menu:NewChange' => 'Neuer Change',
'Menu:NewChange+' => '',
'Menu:NewChange+' => 'Einen neuen Change erstellen',
'Menu:SearchChanges' => 'Suche nach Changes',
'Menu:SearchChanges+' => '',
'Menu:SearchChanges+' => 'Unter den bestehenden Changes suchen',
'Menu:Change:Shortcuts' => 'Shortcuts',
'Menu:Change:Shortcuts+' => '',
'Menu:WaitingAcceptance' => 'Changes, die auf Annahme warten',
'Menu:WaitingAcceptance+' => '',
'Menu:WaitingAcceptance+' => 'Changes, die auf Annahme warten',
'Menu:WaitingApproval' => 'Changes, die auf Genehmigung warten',
'Menu:WaitingApproval+' => '',
'Menu:WaitingApproval+' => 'Changes, die auf Genehmigung warten',
'Menu:Changes' => 'Offene Changes',
'Menu:Changes+' => '',
'Menu:Changes+' => 'Offene Changes',
'Menu:MyChanges' => 'Changes, die mir zugewiesen sind',
'Menu:MyChanges+' => '',
'Menu:MyChanges+' => 'Changes, die mir zugewiesen sind',
'UI-ChangeManagementOverview-ChangeByCategory-last-7-days' => 'Changes der letzten sieben Tage nach Kategorie',
'UI-ChangeManagementOverview-Last-7-days' => 'Zahl der Changes in den letzten sieben Tagen',
'UI-ChangeManagementOverview-ChangeByDomain-last-7-days' => 'Changes der letzten sieben Tage nach Typ',
@@ -83,17 +83,17 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Change/Attribute:category' => 'Kategorie',
'Class:Change/Attribute:category+' => '',
'Class:Change/Attribute:category/Value:application' => 'Applikation',
'Class:Change/Attribute:category/Value:application+' => '',
'Class:Change/Attribute:category/Value:application+' => 'Applikation',
'Class:Change/Attribute:category/Value:hardware' => 'Hardware',
'Class:Change/Attribute:category/Value:hardware+' => '',
'Class:Change/Attribute:category/Value:hardware+' => 'Hardware',
'Class:Change/Attribute:category/Value:network' => 'Netzwerk',
'Class:Change/Attribute:category/Value:network+' => '',
'Class:Change/Attribute:category/Value:network+' => 'Netzwerk',
'Class:Change/Attribute:category/Value:other' => 'Andere',
'Class:Change/Attribute:category/Value:other+' => '',
'Class:Change/Attribute:category/Value:other+' => 'Andere',
'Class:Change/Attribute:category/Value:software' => 'Software',
'Class:Change/Attribute:category/Value:software+' => '',
'Class:Change/Attribute:category/Value:software+' => 'Software',
'Class:Change/Attribute:category/Value:system' => 'System',
'Class:Change/Attribute:category/Value:system+' => '',
'Class:Change/Attribute:category/Value:system+' => 'System',
'Class:Change/Attribute:reject_reason' => 'Ablehnungsgrund',
'Class:Change/Attribute:reject_reason+' => '',
'Class:Change/Attribute:changemanager_id' => 'Change Manager',
@@ -111,14 +111,14 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Change/Attribute:fallback_plan' => 'Fallback-Plan',
'Class:Change/Attribute:fallback_plan+' => '',
'Class:Change/Attribute:related_request_list' => 'Verwandte Requests',
'Class:Change/Attribute:related_request_list+' => 'All the user requests linked to this change~~',
'Class:Change/Attribute:related_request_list+' => 'Alle Benutzeranfragen, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:related_incident_list' => 'Verwandte Incidents',
'Class:Change/Attribute:related_incident_list+' => 'All the incidents linked to this change~~',
'Class:Change/Attribute:related_incident_list+' => 'Alle Incidents, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:related_problems_list' => 'Verwandte Probleme',
'Class:Change/Attribute:related_problems_list+' => 'All the problems linked to this change~~',
'Class:Change/Attribute:related_problems_list+' => 'Alle Probleme, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:child_changes_list' => 'Abgeleitete Changes',
'Class:Change/Attribute:child_changes_list+' => 'All the sub changes linked to this change~~',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent Change',
'Class:Change/Attribute:child_changes_list+' => 'Alle abgeleiteten Changes, die mit diesem Change verknüpft sind',
'Class:Change/Attribute:parent_id_friendlyname' => 'Parent Change Anzeigename',
'Class:Change/Attribute:parent_id_friendlyname+' => '',
'Class:Change/Stimulus:ev_assign' => 'Zuweisen',
'Class:Change/Stimulus:ev_assign+' => '',

View File

@@ -84,7 +84,6 @@
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="documents_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkDocumentToFunctionalCI</linked_class>
@@ -93,7 +92,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="applicationsolution_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkApplicationSolutionToFunctionalCI</linked_class>
@@ -102,7 +100,6 @@
<count_max>0</count_max>
<ext_key_to_remote>applicationsolution_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="softwares_list" xsi:type="AttributeLinkedSet">
<linked_class>SoftwareInstance</linked_class>
@@ -111,8 +108,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -559,7 +554,6 @@
<count_max>0</count_max>
<ext_key_to_remote>networkdevice_id</ext_key_to_remote>
<duplicates>true</duplicates>
<read_only>false</read_only>
</field>
<field id="physicalinterface_list" xsi:type="AttributeLinkedSet">
<linked_class>PhysicalInterface</linked_class>
@@ -568,8 +562,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -804,8 +796,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
<field id="san_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkSanToDatacenterDevice</linked_class>
@@ -814,7 +804,6 @@
<count_max>0</count_max>
<ext_key_to_remote>san_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="redundancy" xsi:type="AttributeRedundancySettings">
<sql>redundancy</sql>
@@ -1036,7 +1025,6 @@
<count_max>0</count_max>
<ext_key_to_remote>connectableci_id</ext_key_to_remote>
<duplicates>true</duplicates>
<read_only>false</read_only>
</field>
<field id="iosversion_id" xsi:type="AttributeExternalKey">
<sql>iosversion_id</sql>
@@ -1376,7 +1364,6 @@
<count_max>0</count_max>
<ext_key_to_remote>volume_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -1662,7 +1649,6 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="businessprocess_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkApplicationSolutionToBusinessProcess</linked_class>
@@ -1671,7 +1657,6 @@
<count_max>0</count_max>
<ext_key_to_remote>businessprocess_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="status" xsi:type="AttributeEnum">
<values>
@@ -1840,7 +1825,6 @@
<count_max>0</count_max>
<ext_key_to_remote>applicationsolution_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="status" xsi:type="AttributeEnum">
<values>
@@ -2185,8 +2169,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -2341,8 +2323,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -2497,8 +2477,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -3364,7 +3342,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="type" xsi:type="AttributeEnum">
<sort_type>label</sort_type>
@@ -3396,8 +3373,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="softwarepatch_list" xsi:type="AttributeLinkedSet">
<linked_class>SoftwarePatch</linked_class>
@@ -3405,8 +3380,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="softwarelicence_list" xsi:type="AttributeLinkedSet">
<linked_class>SoftwareLicence</linked_class>
@@ -3414,8 +3387,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -3542,7 +3513,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="description" xsi:type="AttributeText">
<sql>description</sql>
@@ -3628,7 +3598,6 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="osversion_id" xsi:type="AttributeExternalKey">
<sql>osversion_id</sql>
@@ -3741,7 +3710,6 @@
<count_max>0</count_max>
<ext_key_to_remote>softwareinstance_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -3845,7 +3813,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="org_id" xsi:type="AttributeExternalKey">
<sql>org_id</sql>
@@ -4035,8 +4002,6 @@
<edit_mode>none</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>true</read_only>
</field>
<field id="servers_list" xsi:type="AttributeLinkedSet">
<linked_class>Server</linked_class>
@@ -4044,8 +4009,6 @@
<edit_mode>none</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>true</read_only>
</field>
</fields>
<methods/>
@@ -4197,8 +4160,6 @@
<edit_mode>none</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>true</read_only>
</field>
</fields>
<methods/>
@@ -4556,8 +4517,6 @@
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -4708,8 +4667,6 @@
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -4796,8 +4753,6 @@
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -5524,7 +5479,6 @@
<count_max>0</count_max>
<ext_key_to_remote>vlan_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods>
@@ -5737,7 +5691,6 @@
<count_max>0</count_max>
<ext_key_to_remote>subnet_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="physicalinterfaces_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkPhysicalInterfaceToVLAN</linked_class>
@@ -5746,7 +5699,6 @@
<count_max>0</count_max>
<ext_key_to_remote>physicalinterface_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods>
@@ -6178,7 +6130,6 @@
<count_max>0</count_max>
<ext_key_to_remote>vlan_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -6977,7 +6928,6 @@
<count_max>0</count_max>
<ext_key_to_remote>ci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -7186,7 +7136,6 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -7208,8 +7157,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -7231,7 +7178,6 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
</class>

View File

@@ -32,8 +32,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Relation:depends on/Description' => 'Elemente, von denen dieses Element abhängt.',
'Relation:depends on/DownStream' => 'Hängt ab von ...',
'Relation:depends on/UpStream' => 'Wirkt auf ...',
'Relation:impacts/LoadData' => 'Load data~~',
'Relation:impacts/NoFilteredData' => 'please select objects in Graphical view tag~~',
'Relation:impacts/LoadData' => 'Daten laden',
'Relation:impacts/FilteredData' => 'Daten sind über den Tab "Grafische Ansicht" gefiltert',
'Relation:impacts/NoFilteredData' => 'Bitte wählen Sie Objekte im Tab "Grafische Ansicht"',
));
@@ -81,7 +82,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToFunctionalCI' => 'Verknüpfung Kontakt/FunctionalCI',
'Class:lnkContactToFunctionalCI+' => '',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id' => 'FunctionalCI',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_name' => 'FunctionalCI-Name',
@@ -110,25 +111,25 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:FunctionalCI/Attribute:business_criticity' => 'Business-Kritikalität',
'Class:FunctionalCI/Attribute:business_criticity+' => '',
'Class:FunctionalCI/Attribute:business_criticity/Value:high' => 'hoch',
'Class:FunctionalCI/Attribute:business_criticity/Value:high+' => '',
'Class:FunctionalCI/Attribute:business_criticity/Value:high+' => 'hoch',
'Class:FunctionalCI/Attribute:business_criticity/Value:low' => 'niedrig',
'Class:FunctionalCI/Attribute:business_criticity/Value:low+' => '',
'Class:FunctionalCI/Attribute:business_criticity/Value:low+' => 'niedrig',
'Class:FunctionalCI/Attribute:business_criticity/Value:medium' => 'mittel',
'Class:FunctionalCI/Attribute:business_criticity/Value:medium+' => '',
'Class:FunctionalCI/Attribute:business_criticity/Value:medium+' => 'mittel',
'Class:FunctionalCI/Attribute:move2production' => 'Go-Live-Datum',
'Class:FunctionalCI/Attribute:move2production+' => 'Datum, an dem in Produktivbetrieb gegangen wird/wurde',
'Class:FunctionalCI/Attribute:contacts_list' => 'Kontakte',
'Class:FunctionalCI/Attribute:contacts_list+' => 'All the contacts for this configuration item~~',
'Class:FunctionalCI/Attribute:contacts_list+' => 'Alle Kontakte dieses CIs',
'Class:FunctionalCI/Attribute:documents_list' => 'Dokumente',
'Class:FunctionalCI/Attribute:documents_list+' => 'All the documents linked to this configuration item~~',
'Class:FunctionalCI/Attribute:documents_list+' => 'Alle Dokumente, die mit diesem CI verknüpft sind',
'Class:FunctionalCI/Attribute:applicationsolution_list' => 'Anwendungslösungen',
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'All the application solutions depending on this configuration item~~',
'Class:FunctionalCI/Attribute:applicationsolution_list+' => 'Alle Anwendungslösungen, die von diesem CI abhängen',
'Class:FunctionalCI/Attribute:softwares_list' => 'Software',
'Class:FunctionalCI/Attribute:softwares_list+' => 'All the softwares installed on this configuration item~~',
'Class:FunctionalCI/Attribute:softwares_list+' => 'Software, die auf diesem CI installiert ist',
'Class:FunctionalCI/Attribute:finalclass' => 'Typ',
'Class:FunctionalCI/Attribute:finalclass+' => '',
'Class:FunctionalCI/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
'Class:FunctionalCI/Tab:OpenedTickets' => 'Offene Tickets',
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Offene Tickets, die sich auf dieses CI auswirken',
));
//
@@ -138,7 +139,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PhysicalDevice' => 'Physisches Gerät',
'Class:PhysicalDevice+' => '',
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s',
'Class:PhysicalDevice/Attribute:serialnumber' => 'Seriennummer',
'Class:PhysicalDevice/Attribute:serialnumber+' => '',
'Class:PhysicalDevice/Attribute:location_id' => 'Standort',
@@ -178,13 +179,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Rack' => 'Rack',
'Class:Rack+' => '',
'Class:Rack/ComplementaryName' => '%1$s - %2$s~~',
'Class:Rack/ComplementaryName' => '%1$s - %2$s',
'Class:Rack/Attribute:nb_u' => 'Höheneinheiten',
'Class:Rack/Attribute:nb_u+' => '',
'Class:Rack/Attribute:device_list' => 'Devices',
'Class:Rack/Attribute:device_list+' => 'All the physical devices racked into this rack~~',
'Class:Rack/Attribute:device_list+' => 'Alle physischen Geräte, die in dieses Rack eingebaut sind',
'Class:Rack/Attribute:enclosure_list' => 'Enclosures',
'Class:Rack/Attribute:enclosure_list+' => 'All the enclosures in this rack~~',
'Class:Rack/Attribute:enclosure_list+' => 'Alle Enclosures in diesem Rack',
));
//
@@ -245,11 +246,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ConnectableCI' => 'Verknüpfbares CI',
'Class:ConnectableCI+' => 'Physisches CI',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s~~',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s',
'Class:ConnectableCI/Attribute:networkdevice_list' => 'Netzwerkgeräte',
'Class:ConnectableCI/Attribute:networkdevice_list+' => 'All network devices connected to this device~~',
'Class:ConnectableCI/Attribute:networkdevice_list+' => 'Alle Netzwerkgeräte, die mit diesem Gerät verbunden sind',
'Class:ConnectableCI/Attribute:physicalinterface_list' => 'Netzwerkinterfaces',
'Class:ConnectableCI/Attribute:physicalinterface_list+' => 'All the physical network interfaces~~',
'Class:ConnectableCI/Attribute:physicalinterface_list+' => 'Alle physischen Netzwerkinterfaces des Geräts',
));
//
@@ -259,7 +260,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DatacenterDevice' => 'Datacenter-Gerät',
'Class:DatacenterDevice+' => '',
'Class:DatacenterDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatacenterDevice/ComplementaryName' => '%1$s - %2$s',
'Class:DatacenterDevice/Attribute:rack_id' => 'Rack',
'Class:DatacenterDevice/Attribute:rack_id+' => '',
'Class:DatacenterDevice/Attribute:rack_name' => 'Rack-Name',
@@ -281,9 +282,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DatacenterDevice/Attribute:powerB_name' => 'Strom-B-Quellenname',
'Class:DatacenterDevice/Attribute:powerB_name+' => '',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => 'FC-Ports',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => 'All the fiber channel interfaces for this device~~',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => 'Alle Fibre-Channel-Schnittstellen für dieses Gerät',
'Class:DatacenterDevice/Attribute:san_list' => 'SANs',
'Class:DatacenterDevice/Attribute:san_list+' => 'All the SAN switches connected to this device~~',
'Class:DatacenterDevice/Attribute:san_list+' => 'Alle mit diesem Gerät verbundenen SAN-Switches',
'Class:DatacenterDevice/Attribute:redundancy' => 'Redundanz',
'Class:DatacenterDevice/Attribute:redundancy/count' => 'Das Gerät läuft, wenn mindestens eine der Stromversorgungen (A oder B) läuft.',
// Unused yet
@@ -298,13 +299,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:NetworkDevice' => 'Netzwerk-Gerät',
'Class:NetworkDevice+' => '',
'Class:NetworkDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:NetworkDevice/ComplementaryName' => '%1$s - %2$s',
'Class:NetworkDevice/Attribute:networkdevicetype_id' => 'Netzwerktyp',
'Class:NetworkDevice/Attribute:networkdevicetype_id+' => '',
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Netzwerk-Typname',
'Class:NetworkDevice/Attribute:networkdevicetype_name+' => '',
'Class:NetworkDevice/Attribute:connectablecis_list' => 'Geräte',
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'All the devices connected to this network device~~',
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Alle Geräte, die mit diesem Netzwerkgerät verbunden sind',
'Class:NetworkDevice/Attribute:iosversion_id' => 'IOS Version',
'Class:NetworkDevice/Attribute:iosversion_id+' => '',
'Class:NetworkDevice/Attribute:iosversion_name' => 'IOS-Versionsname',
@@ -320,7 +321,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Server' => 'Server',
'Class:Server+' => '',
'Class:Server/ComplementaryName' => '%1$s - %2$s~~',
'Class:Server/ComplementaryName' => '%1$s - %2$s',
'Class:Server/Attribute:osfamily_id' => 'OS Familie',
'Class:Server/Attribute:osfamily_id+' => '',
'Class:Server/Attribute:osfamily_name' => 'OS-Familienname',
@@ -338,7 +339,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Server/Attribute:ram' => 'RAM',
'Class:Server/Attribute:ram+' => '',
'Class:Server/Attribute:logicalvolumes_list' => 'Logische Volumes',
'Class:Server/Attribute:logicalvolumes_list+' => 'All the logical volumes connected to this server~~',
'Class:Server/Attribute:logicalvolumes_list+' => 'Alle mit diesem Server verbundenen logischen Volumes',
));
//
@@ -348,9 +349,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:StorageSystem' => 'Storage-System',
'Class:StorageSystem+' => '',
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s~~',
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s',
'Class:StorageSystem/Attribute:logicalvolume_list' => 'Logische Volumes',
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'All the logical volumes in this storage system~~',
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'Alle logischen Volumes in diesem Storage-System',
));
//
@@ -360,9 +361,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SANSwitch' => 'SAN-Switch',
'Class:SANSwitch+' => '',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s~~',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s',
'Class:SANSwitch/Attribute:datacenterdevice_list' => 'Geräte',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'All the devices connected to this SAN switch~~',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'Alle Geräte, die mit diesem SAN-Switche verbundenen sind',
));
//
@@ -372,9 +373,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:TapeLibrary' => 'Tape-Library',
'Class:TapeLibrary+' => '',
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s~~',
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s',
'Class:TapeLibrary/Attribute:tapes_list' => 'Tapes',
'Class:TapeLibrary/Attribute:tapes_list+' => 'All the tapes in the tape library~~',
'Class:TapeLibrary/Attribute:tapes_list+' => 'Alle Tapes in der Tape-Library',
));
//
@@ -384,9 +385,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:NAS' => 'NAS',
'Class:NAS+' => '',
'Class:NAS/ComplementaryName' => '%1$s - %2$s~~',
'Class:NAS/ComplementaryName' => '%1$s - %2$s',
'Class:NAS/Attribute:nasfilesystem_list' => 'Dateisysteme',
'Class:NAS/Attribute:nasfilesystem_list+' => 'All the file systems in this NAS~~',
'Class:NAS/Attribute:nasfilesystem_list+' => 'Alle Dateisysteme in diesem NAS',
));
//
@@ -396,7 +397,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PC' => 'PC',
'Class:PC+' => '',
'Class:PC/ComplementaryName' => '%1$s - %2$s~~',
'Class:PC/ComplementaryName' => '%1$s - %2$s',
'Class:PC/Attribute:osfamily_id' => 'OS-Familie',
'Class:PC/Attribute:osfamily_id+' => '',
'Class:PC/Attribute:osfamily_name' => 'OS-Familienname',
@@ -412,9 +413,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PC/Attribute:type' => 'Typ',
'Class:PC/Attribute:type+' => '',
'Class:PC/Attribute:type/Value:desktop' => 'Desktop',
'Class:PC/Attribute:type/Value:desktop+' => '',
'Class:PC/Attribute:type/Value:desktop+' => 'Desktop',
'Class:PC/Attribute:type/Value:laptop' => 'Laptop',
'Class:PC/Attribute:type/Value:laptop+' => '',
'Class:PC/Attribute:type/Value:laptop+' => 'Laptop',
));
//
@@ -424,7 +425,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Printer' => 'Drucker',
'Class:Printer+' => '',
'Class:Printer/ComplementaryName' => '%1$s - %2$s~~',
'Class:Printer/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -434,7 +435,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PowerConnection' => 'Stromverbindung',
'Class:PowerConnection+' => '',
'Class:PowerConnection/ComplementaryName' => '%1$s - %2$s~~',
'Class:PowerConnection/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -444,9 +445,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PowerSource' => 'Stromquelle',
'Class:PowerSource+' => '',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s~~',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s',
'Class:PowerSource/Attribute:pdus_list' => 'PDUs',
'Class:PowerSource/Attribute:pdus_list+' => 'All the PDUs using this power source~~',
'Class:PowerSource/Attribute:pdus_list+' => 'Alle PDUs, die diese Stromquelle nutzen',
));
//
@@ -456,7 +457,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PDU' => 'PDU',
'Class:PDU+' => '',
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s~~',
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s',
'Class:PDU/Attribute:rack_id' => 'Rack',
'Class:PDU/Attribute:rack_id+' => '',
'Class:PDU/Attribute:rack_name' => 'Rack-Name',
@@ -474,7 +475,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Peripheral' => 'Peripheriegerät',
'Class:Peripheral+' => '',
'Class:Peripheral/ComplementaryName' => '%1$s - %2$s~~',
'Class:Peripheral/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -484,7 +485,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Enclosure' => 'Enclosure',
'Class:Enclosure+' => '',
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s',
'Class:Enclosure/Attribute:rack_id' => 'Rack',
'Class:Enclosure/Attribute:rack_id+' => '',
'Class:Enclosure/Attribute:rack_name' => 'Rack-Name',
@@ -492,7 +493,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Enclosure/Attribute:nb_u' => 'Höheneinheiten',
'Class:Enclosure/Attribute:nb_u+' => '',
'Class:Enclosure/Attribute:device_list' => 'Geräte',
'Class:Enclosure/Attribute:device_list+' => 'All the devices in this enclosure~~',
'Class:Enclosure/Attribute:device_list+' => 'Alle Geräte in diesem Enclosure',
));
//
@@ -503,9 +504,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ApplicationSolution' => 'Anwendungslösung',
'Class:ApplicationSolution+' => '',
'Class:ApplicationSolution/Attribute:functionalcis_list' => 'CIs',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'All the configuration items that compose this application solution~~',
'Class:ApplicationSolution/Attribute:functionalcis_list+' => 'Alle CIs, aus denen diese Anwendungslösung besteht',
'Class:ApplicationSolution/Attribute:businessprocess_list' => 'Business-Prozesse',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'All the business processes depending on this application solution~~',
'Class:ApplicationSolution/Attribute:businessprocess_list+' => 'Alle Geschäftsprozesse, die von dieser Anwendungslösung abhängen',
'Class:ApplicationSolution/Attribute:status' => 'Status',
'Class:ApplicationSolution/Attribute:status+' => '',
'Class:ApplicationSolution/Attribute:status/Value:active' => 'aktiv',
@@ -526,7 +527,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:BusinessProcess' => 'Business-Prozess',
'Class:BusinessProcess+' => '',
'Class:BusinessProcess/Attribute:applicationsolutions_list' => 'Anwendungslösungen',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => 'All the application solutions that impact this business process~~',
'Class:BusinessProcess/Attribute:applicationsolutions_list+' => 'Alle Anwendungslösungen, die sich auf diesen Geschäftsprozess auswirken',
'Class:BusinessProcess/Attribute:status' => 'Status',
'Class:BusinessProcess/Attribute:status+' => '',
'Class:BusinessProcess/Attribute:status/Value:active' => 'aktiv',
@@ -572,7 +573,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Middleware' => 'Middleware',
'Class:Middleware+' => '',
'Class:Middleware/Attribute:middlewareinstance_list' => 'Middleware-Instanzen',
'Class:Middleware/Attribute:middlewareinstance_list+' => 'All the middleware instances provided by this middleware~~',
'Class:Middleware/Attribute:middlewareinstance_list+' => 'Alle Middleware-Instanzen, die von dieser Middleware bereitgestellt werden',
));
//
@@ -583,7 +584,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DBServer' => 'DB Server',
'Class:DBServer+' => '',
'Class:DBServer/Attribute:dbschema_list' => 'DB Schemata',
'Class:DBServer/Attribute:dbschema_list+' => 'All the database schemas for this DB server~~',
'Class:DBServer/Attribute:dbschema_list+' => 'Alle Datenbankschemata für diesen DB-Server',
));
//
@@ -594,7 +595,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:WebServer' => 'Web Server',
'Class:WebServer+' => '',
'Class:WebServer/Attribute:webapp_list' => 'Webapplikationen',
'Class:WebServer/Attribute:webapp_list+' => 'All the web applications available on this web server~~',
'Class:WebServer/Attribute:webapp_list+' => 'Alle auf diesem Webserver verfügbaren Webanwendungen',
));
//
@@ -622,7 +623,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:MiddlewareInstance' => 'Middleware-Instanz',
'Class:MiddlewareInstance+' => '',
'Class:MiddlewareInstance/ComplementaryName' => '%1$s - %2$s~~',
'Class:MiddlewareInstance/ComplementaryName' => '%1$s - %2$s',
'Class:MiddlewareInstance/Attribute:middleware_id' => 'Middleware',
'Class:MiddlewareInstance/Attribute:middleware_id+' => '',
'Class:MiddlewareInstance/Attribute:middleware_name' => 'Middleware-Name',
@@ -636,7 +637,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DatabaseSchema' => 'Datenbank-Schema',
'Class:DatabaseSchema+' => '',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s',
'Class:DatabaseSchema/Attribute:dbserver_id' => 'DB-Server',
'Class:DatabaseSchema/Attribute:dbserver_id+' => '',
'Class:DatabaseSchema/Attribute:dbserver_name' => 'DB-Servername',
@@ -650,7 +651,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:WebApplication' => 'Webapplikation',
'Class:WebApplication+' => '',
'Class:WebApplication/ComplementaryName' => '%1$s - %2$s~~',
'Class:WebApplication/ComplementaryName' => '%1$s - %2$s',
'Class:WebApplication/Attribute:webserver_id' => 'Webserver',
'Class:WebApplication/Attribute:webserver_id+' => '',
'Class:WebApplication/Attribute:webserver_name' => 'Webservername',
@@ -677,8 +678,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:VirtualDevice/Attribute:status/Value:production+' => '',
'Class:VirtualDevice/Attribute:status/Value:stock' => 'Lager',
'Class:VirtualDevice/Attribute:status/Value:stock+' => '',
'Class:VirtualDevice/Attribute:logicalvolumes_list' => 'Logical Volumes',
'Class:VirtualDevice/Attribute:logicalvolumes_list+' => 'All the logical volumes used by this device~~',
'Class:VirtualDevice/Attribute:logicalvolumes_list' => 'Logische Volumes',
'Class:VirtualDevice/Attribute:logicalvolumes_list+' => 'Alle von diesem Gerät verwendeten logischen Volumes',
));
//
@@ -689,7 +690,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:VirtualHost' => 'Host',
'Class:VirtualHost+' => '',
'Class:VirtualHost/Attribute:virtualmachine_list' => 'Virtuelle Maschinen',
'Class:VirtualHost/Attribute:virtualmachine_list+' => 'All the virtual machines hosted by this host~~',
'Class:VirtualHost/Attribute:virtualmachine_list+' => 'Alle virtuellen Maschinen, die von diesem Host gehostet werden',
));
//
@@ -717,7 +718,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Farm' => 'Farm',
'Class:Farm+' => '',
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisoren',
'Class:Farm/Attribute:hypervisor_list+' => 'All the hypervisors that compose this farm~~',
'Class:Farm/Attribute:hypervisor_list+' => 'Alle Hypervisoren, aus denen diese Farm besteht',
'Class:Farm/Attribute:redundancy' => 'Hochverfügbarkeit',
'Class:Farm/Attribute:redundancy/disabled' => 'Die Farm läuft, wenn alle Hypervisoren laufen.',
'Class:Farm/Attribute:redundancy/count' => 'Die Farm läuft, wenn mindestens %1$s Hypervisor(en) läuft/laufen.',
@@ -731,7 +732,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:VirtualMachine' => 'Virtuelle Maschine',
'Class:VirtualMachine+' => '',
'Class:VirtualMachine/ComplementaryName' => '%1$s - %2$s~~',
'Class:VirtualMachine/ComplementaryName' => '%1$s - %2$s',
'Class:VirtualMachine/Attribute:virtualhost_id' => 'Host',
'Class:VirtualMachine/Attribute:virtualhost_id+' => '',
'Class:VirtualMachine/Attribute:virtualhost_name' => 'Hostname',
@@ -755,7 +756,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:VirtualMachine/Attribute:managementip' => 'Management-IP',
'Class:VirtualMachine/Attribute:managementip+' => '',
'Class:VirtualMachine/Attribute:logicalinterface_list' => 'Netzwerk-Interfaces',
'Class:VirtualMachine/Attribute:logicalinterface_list+' => 'All the logical network interfaces~~',
'Class:VirtualMachine/Attribute:logicalinterface_list+' => 'Alle logischen Netzwerk-Interfaces',
));
//
@@ -780,9 +781,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:LogicalVolume/Attribute:storagesystem_name' => 'Storage-Systemname',
'Class:LogicalVolume/Attribute:storagesystem_name+' => '',
'Class:LogicalVolume/Attribute:servers_list' => 'Server',
'Class:LogicalVolume/Attribute:servers_list+' => 'All the servers using this volume~~',
'Class:LogicalVolume/Attribute:servers_list+' => 'Alle Server, die dieses Volume verwenden',
'Class:LogicalVolume/Attribute:virtualdevices_list' => 'Virtuelle Geräte',
'Class:LogicalVolume/Attribute:virtualdevices_list+' => 'All the virtual devices using this volume~~',
'Class:LogicalVolume/Attribute:virtualdevices_list+' => 'Alle virtuellen Maschinen, die dieses Volume verwenden',
));
//
@@ -792,7 +793,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkServerToVolume' => 'Verknüpfung Server/Volume',
'Class:lnkServerToVolume+' => '',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s',
'Class:lnkServerToVolume/Attribute:volume_id' => 'Volume',
'Class:lnkServerToVolume/Attribute:volume_id+' => '',
'Class:lnkServerToVolume/Attribute:volume_name' => 'Volume-Name',
@@ -812,7 +813,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkVirtualDeviceToVolume' => 'Verknüpfung Virtuelles Gerät/Volume',
'Class:lnkVirtualDeviceToVolume+' => '',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id' => 'Volume',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_name' => 'Volume-Name',
@@ -832,7 +833,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkSanToDatacenterDevice' => 'Verknüpfung SAN/Datacenter-Gerät',
'Class:lnkSanToDatacenterDevice+' => '',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s~~',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s',
'Class:lnkSanToDatacenterDevice/Attribute:san_id' => 'SAN-Switch',
'Class:lnkSanToDatacenterDevice/Attribute:san_id+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:san_name' => 'SAN-Switch-Name',
@@ -894,7 +895,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Software' => 'Software',
'Class:Software+' => '',
'Class:Software/ComplementaryName' => '%1$s - %2$s~~',
'Class:Software/ComplementaryName' => '%1$s - %2$s',
'Class:Software/Attribute:name' => 'Name',
'Class:Software/Attribute:name+' => '',
'Class:Software/Attribute:vendor' => 'Hersteller',
@@ -902,7 +903,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Software/Attribute:version' => 'Version',
'Class:Software/Attribute:version+' => '',
'Class:Software/Attribute:documents_list' => 'Dokumente',
'Class:Software/Attribute:documents_list+' => 'All the documents linked to this software~~',
'Class:Software/Attribute:documents_list+' => 'Alle mit dieser Software verknüpften Dokumente',
'Class:Software/Attribute:type' => 'Typ',
'Class:Software/Attribute:type+' => '',
'Class:Software/Attribute:type/Value:DBServer' => 'DB-Server',
@@ -916,11 +917,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Software/Attribute:type/Value:WebServer' => 'Webserver',
'Class:Software/Attribute:type/Value:WebServer+' => '',
'Class:Software/Attribute:softwareinstance_list' => 'Software-Instanzen',
'Class:Software/Attribute:softwareinstance_list+' => 'All the software instances for this software~~',
'Class:Software/Attribute:softwareinstance_list+' => 'Alle Software-Instanzen für diese Software',
'Class:Software/Attribute:softwarepatch_list' => 'Software-Patches',
'Class:Software/Attribute:softwarepatch_list+' => 'All the patchs for this software~~',
'Class:Software/Attribute:softwarepatch_list+' => 'Alle Software-Patches für diese Software',
'Class:Software/Attribute:softwarelicence_list' => 'Softwarelizenzen',
'Class:Software/Attribute:softwarelicence_list+' => 'All the licenses for this software~~',
'Class:Software/Attribute:softwarelicence_list+' => 'Alle Lizenzen für diese Software',
));
//
@@ -933,7 +934,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Patch/Attribute:name' => 'Name',
'Class:Patch/Attribute:name+' => '',
'Class:Patch/Attribute:documents_list' => 'Dokumente',
'Class:Patch/Attribute:documents_list+' => 'All the documents linked to this patch~~',
'Class:Patch/Attribute:documents_list+' => 'Alle Dokumente, die mit diesem Patch verknüpft sind',
'Class:Patch/Attribute:description' => 'Beschreibung',
'Class:Patch/Attribute:description+' => '',
'Class:Patch/Attribute:finalclass' => 'Typ',
@@ -948,7 +949,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:OSPatch' => 'OS-Patch',
'Class:OSPatch+' => '',
'Class:OSPatch/Attribute:functionalcis_list' => 'Geräte',
'Class:OSPatch/Attribute:functionalcis_list+' => 'All the systems where this patch is installed~~',
'Class:OSPatch/Attribute:functionalcis_list+' => 'Alle Systeme, auf denen dieser Patch installiert ist',
'Class:OSPatch/Attribute:osversion_id' => 'OS Version',
'Class:OSPatch/Attribute:osversion_id+' => '',
'Class:OSPatch/Attribute:osversion_name' => 'OS-Versionsname',
@@ -967,7 +968,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SoftwarePatch/Attribute:software_name' => 'Software-Name',
'Class:SoftwarePatch/Attribute:software_name+' => '',
'Class:SoftwarePatch/Attribute:softwareinstances_list' => 'Software-Instanzen',
'Class:SoftwarePatch/Attribute:softwareinstances_list+' => 'All the systems where this software patch is installed~~',
'Class:SoftwarePatch/Attribute:softwareinstances_list+' => 'Alle Systeme, auf denen dieser Software-Patch installiert ist',
));
//
@@ -980,7 +981,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Licence/Attribute:name' => 'Name',
'Class:Licence/Attribute:name+' => '',
'Class:Licence/Attribute:documents_list' => 'Dokumente',
'Class:Licence/Attribute:documents_list+' => 'All the documents linked to this license~~',
'Class:Licence/Attribute:documents_list+' => 'Alle mit dieser Lizenz verknüpften Dokumente',
'Class:Licence/Attribute:org_id' => 'Besitzer',
'Class:Licence/Attribute:org_id+' => '',
'Class:Licence/Attribute:organization_name' => 'Organisationsname',
@@ -1002,7 +1003,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Licence/Attribute:perpetual/Value:yes' => 'ja',
'Class:Licence/Attribute:perpetual/Value:yes+' => 'ja',
'Class:Licence/Attribute:finalclass' => 'Typ',
'Class:Licence/Attribute:finalclass+' => '',
'Class:Licence/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
@@ -1012,15 +1013,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:OSLicence' => 'OS-Lizenz',
'Class:OSLicence+' => '',
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s~~',
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s',
'Class:OSLicence/Attribute:osversion_id' => 'OS-Version',
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => 'OS-Versionsname',
'Class:OSLicence/Attribute:osversion_name+' => '',
'Class:OSLicence/Attribute:virtualmachines_list' => 'Virtuelle Maschinen',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'All the virtual machines where this license is used~~',
'Class:OSLicence/Attribute:virtualmachines_list+' => 'Alle virtuellen Maschinen, auf denen diese Lizenz verwendet wird',
'Class:OSLicence/Attribute:servers_list' => 'Server',
'Class:OSLicence/Attribute:servers_list+' => 'All the servers where this license is used~~',
'Class:OSLicence/Attribute:servers_list+' => 'Alle Server, auf denen diese Lizenz verwendet wird',
));
//
@@ -1030,13 +1031,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SoftwareLicence' => 'Software-Lizenz',
'Class:SoftwareLicence+' => '',
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s~~',
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s',
'Class:SoftwareLicence/Attribute:software_id' => 'Software',
'Class:SoftwareLicence/Attribute:software_id+' => '',
'Class:SoftwareLicence/Attribute:software_name' => 'Software-Name',
'Class:SoftwareLicence/Attribute:software_name+' => '',
'Class:SoftwareLicence/Attribute:softwareinstance_list' => 'Software-Instanzen',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'All the systems where this license is used~~',
'Class:SoftwareLicence/Attribute:softwareinstance_list+' => 'Alle Systeme, in denen diese Lizenz verwendet wird',
));
//
@@ -1046,7 +1047,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToLicence' => 'Verknüpfung Dokument/Lizenz',
'Class:lnkDocumentToLicence+' => '',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s',
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Lizenz',
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '',
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'Lizenz-Name',
@@ -1087,7 +1088,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Brand' => 'Marke',
'Class:Brand+' => '',
'Class:Brand/Attribute:physicaldevices_list' => 'Physische Geräte',
'Class:Brand/Attribute:physicaldevices_list+' => 'All the physical devices corresponding to this brand~~',
'Class:Brand/Attribute:physicaldevices_list+' => 'Alle physischen Geräte dieser Marke',
'Class:Brand/UniquenessRule:name+' => 'Der Name muss eindeutig sein',
'Class:Brand/UniquenessRule:name' => 'Diese Marke existiert bereits',
));
@@ -1099,7 +1100,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Model' => 'Modell',
'Class:Model+' => '',
'Class:Model/ComplementaryName' => '%1$s - %2$s~~',
'Class:Model/ComplementaryName' => '%1$s - %2$s',
'Class:Model/Attribute:brand_id' => 'Marke',
'Class:Model/Attribute:brand_id+' => '',
'Class:Model/Attribute:brand_name' => 'Markenname',
@@ -1107,43 +1108,43 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Model/Attribute:type' => 'Gerätetyp',
'Class:Model/Attribute:type+' => '',
'Class:Model/Attribute:type/Value:PowerSource' => 'Stromquelle',
'Class:Model/Attribute:type/Value:PowerSource+' => '',
'Class:Model/Attribute:type/Value:PowerSource+' => 'Stromquelle',
'Class:Model/Attribute:type/Value:DiskArray' => 'Plattenarray',
'Class:Model/Attribute:type/Value:DiskArray+' => '',
'Class:Model/Attribute:type/Value:DiskArray+' => 'Plattenarray',
'Class:Model/Attribute:type/Value:Enclosure' => 'Enclosure',
'Class:Model/Attribute:type/Value:Enclosure+' => '',
'Class:Model/Attribute:type/Value:Enclosure+' => 'Enclosure',
'Class:Model/Attribute:type/Value:IPPhone' => 'IP-Telefon',
'Class:Model/Attribute:type/Value:IPPhone+' => '',
'Class:Model/Attribute:type/Value:IPPhone+' => 'IP-Telefon',
'Class:Model/Attribute:type/Value:MobilePhone' => 'Mobiltelefon',
'Class:Model/Attribute:type/Value:MobilePhone+' => '',
'Class:Model/Attribute:type/Value:MobilePhone+' => 'Mobiltelefon',
'Class:Model/Attribute:type/Value:NAS' => 'NAS',
'Class:Model/Attribute:type/Value:NAS+' => '',
'Class:Model/Attribute:type/Value:NAS+' => 'NAS',
'Class:Model/Attribute:type/Value:NetworkDevice' => 'Netzwerkgerät',
'Class:Model/Attribute:type/Value:NetworkDevice+' => '',
'Class:Model/Attribute:type/Value:NetworkDevice+' => 'Netzwerkgerät',
'Class:Model/Attribute:type/Value:PC' => 'PC',
'Class:Model/Attribute:type/Value:PC+' => '',
'Class:Model/Attribute:type/Value:PC+' => 'PC',
'Class:Model/Attribute:type/Value:PDU' => 'PDU',
'Class:Model/Attribute:type/Value:PDU+' => '',
'Class:Model/Attribute:type/Value:PDU+' => 'PDU',
'Class:Model/Attribute:type/Value:Peripheral' => 'Peripheriegeräte',
'Class:Model/Attribute:type/Value:Peripheral+' => '',
'Class:Model/Attribute:type/Value:Peripheral+' => 'Peripheriegeräte',
'Class:Model/Attribute:type/Value:Printer' => 'Drucker',
'Class:Model/Attribute:type/Value:Printer+' => '',
'Class:Model/Attribute:type/Value:Printer+' => 'Drucker',
'Class:Model/Attribute:type/Value:Rack' => 'Rack',
'Class:Model/Attribute:type/Value:Rack+' => '',
'Class:Model/Attribute:type/Value:Rack+' => 'Rack',
'Class:Model/Attribute:type/Value:SANSwitch' => 'SAN-Switch',
'Class:Model/Attribute:type/Value:SANSwitch+' => '',
'Class:Model/Attribute:type/Value:SANSwitch+' => 'SAN-Switch',
'Class:Model/Attribute:type/Value:Server' => 'Server',
'Class:Model/Attribute:type/Value:Server+' => '',
'Class:Model/Attribute:type/Value:Server+' => 'Server',
'Class:Model/Attribute:type/Value:StorageSystem' => 'Storage-System',
'Class:Model/Attribute:type/Value:StorageSystem+' => '',
'Class:Model/Attribute:type/Value:StorageSystem+' => 'Storage-System',
'Class:Model/Attribute:type/Value:Tablet' => 'Tablet',
'Class:Model/Attribute:type/Value:Tablet+' => '',
'Class:Model/Attribute:type/Value:Tablet+' => 'Tablet',
'Class:Model/Attribute:type/Value:TapeLibrary' => 'Tape-Library',
'Class:Model/Attribute:type/Value:TapeLibrary+' => '',
'Class:Model/Attribute:type/Value:TapeLibrary+' => 'Tape-Library',
'Class:Model/Attribute:type/Value:Phone' => 'Telefon',
'Class:Model/Attribute:type/Value:Phone+' => '',
'Class:Model/Attribute:type/Value:Phone+' => 'Telefon',
'Class:Model/Attribute:physicaldevices_list' => 'Physische Geräte',
'Class:Model/Attribute:physicaldevices_list+' => 'All the physical devices corresponding to this model~~',
'Class:Model/Attribute:physicaldevices_list+' => 'Alle physischen Geräte, die diesem Modell entsprechen',
'Class:Model/UniquenessRule:name_brand+' => 'Der Modellname für eine Marke muss eindeutig sein',
'Class:Model/UniquenessRule:name_brand' => 'Es existiert bereits ein Modell mit diesem Namen für diese Marke',
));
@@ -1156,7 +1157,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:NetworkDeviceType' => 'Netzwerkgerätetyp',
'Class:NetworkDeviceType+' => '',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list' => 'Netzwerkgeräte',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list+' => 'All the network devices corresponding to this type~~',
'Class:NetworkDeviceType/Attribute:networkdevicesdevices_list+' => 'Alle Netzwerkgeräte, die diesem Typ entsprechen',
));
//
@@ -1179,7 +1180,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToPatch' => 'Verknüpfung Dokument/Patch',
'Class:lnkDocumentToPatch+' => '',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s',
'Class:lnkDocumentToPatch/Attribute:patch_id' => 'Patch',
'Class:lnkDocumentToPatch/Attribute:patch_id+' => '',
'Class:lnkDocumentToPatch/Attribute:patch_name' => 'Patch-Name',
@@ -1197,7 +1198,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Verknüpfung Software-Instanz/Softeware-Patch',
'Class:lnkSoftwareInstanceToSoftwarePatch+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s~~',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => 'Software-Patch',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_name' => 'Software-Patch-Name',
@@ -1215,7 +1216,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkFunctionalCIToOSPatch' => 'Verknüpfung FunctionalCI/OS-Patch',
'Class:lnkFunctionalCIToOSPatch+' => '',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS-Patch',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS-Patch-Name',
@@ -1233,7 +1234,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToSoftware' => 'Verknüpfung Dokument/Software',
'Class:lnkDocumentToSoftware+' => '',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s',
'Class:lnkDocumentToSoftware/Attribute:software_id' => 'Software',
'Class:lnkDocumentToSoftware/Attribute:software_id+' => '',
'Class:lnkDocumentToSoftware/Attribute:software_name' => 'Software-Name',
@@ -1251,8 +1252,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Subnet' => 'Subnetz',
'Class:Subnet+' => '',
'Class:Subnet/Name' => '%1$s/%2$s~~',
'Class:Subnet/ComplementaryName' => '%1$s - %2$s~~',
'Class:Subnet/Name' => '%1$s/%2$s',
'Class:Subnet/ComplementaryName' => '%1$s - %2$s',
'Class:Subnet/Attribute:description' => 'Beschreibung',
'Class:Subnet/Attribute:description+' => '',
'Class:Subnet/Attribute:subnet_name' => 'Subnetzname',
@@ -1297,7 +1298,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkSubnetToVLAN' => 'Verknüpfung Subnetz/VLAN',
'Class:lnkSubnetToVLAN+' => '',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s~~',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s',
'Class:lnkSubnetToVLAN/Attribute:subnet_id' => 'Subnetz',
'Class:lnkSubnetToVLAN/Attribute:subnet_id+' => '',
'Class:lnkSubnetToVLAN/Attribute:subnet_ip' => 'Subnetz-IP',
@@ -1320,7 +1321,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:NetworkInterface/Attribute:name' => 'Name',
'Class:NetworkInterface/Attribute:name+' => '',
'Class:NetworkInterface/Attribute:finalclass' => 'Typ',
'Class:NetworkInterface/Attribute:finalclass+' => '',
'Class:NetworkInterface/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
@@ -1351,7 +1352,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:PhysicalInterface' => 'Physisches Interface',
'Class:PhysicalInterface+' => '',
'Class:PhysicalInterface/Name' => '%2$s %1$s~~',
'Class:PhysicalInterface/Name' => '%2$s %1$s',
'Class:PhysicalInterface/Attribute:connectableci_id' => 'Gerät',
'Class:PhysicalInterface/Attribute:connectableci_id+' => '',
'Class:PhysicalInterface/Attribute:connectableci_name' => 'Gerätename',
@@ -1367,7 +1368,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkPhysicalInterfaceToVLAN' => 'Verknüpfung Physisches Interface / VLAN',
'Class:lnkPhysicalInterfaceToVLAN+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s~~',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id' => 'Physisches Interface',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_name' => 'Physisches Interface Name',
@@ -1422,7 +1423,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkConnectableCIToNetworkDevice' => 'Verknüpfung ConnectableCI/NetworkDevice',
'Class:lnkConnectableCIToNetworkDevice+' => '',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s~~',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id' => 'Netzwerkgerät',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id+' => '',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_name' => 'Netzwerkgerät-Name',
@@ -1450,7 +1451,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkApplicationSolutionToFunctionalCI' => 'Verknüpfung Anwendungslösung/FunctionalCI',
'Class:lnkApplicationSolutionToFunctionalCI+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id' => 'Anwendungslösung',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_name' => 'Anwendungslösungs-Name',
@@ -1468,7 +1469,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkApplicationSolutionToBusinessProcess' => 'Verknüpfung Anwendungslösung/Business-Prozess',
'Class:lnkApplicationSolutionToBusinessProcess+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id' => 'Business-Prozess',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_name' => 'Business-Prozess-Name',
@@ -1486,7 +1487,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Group' => 'Gruppe',
'Class:Group+' => '',
'Class:Group/ComplementaryName' => '%1$s - %2$s~~',
'Class:Group/ComplementaryName' => '%1$s - %2$s',
'Class:Group/Attribute:name' => 'Name',
'Class:Group/Attribute:name+' => '',
'Class:Group/Attribute:status' => 'Status',
@@ -1510,7 +1511,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Group/Attribute:parent_name' => 'Name',
'Class:Group/Attribute:parent_name+' => '',
'Class:Group/Attribute:ci_list' => 'Verbundene CIs',
'Class:Group/Attribute:ci_list+' => 'All the configuration items linked to this group~~',
'Class:Group/Attribute:ci_list+' => 'Alle mit dieser Gruppe verknüpften CIs',
'Class:Group/Attribute:parent_id_friendlyname' => 'Parent-Gruppe',
'Class:Group/Attribute:parent_id_friendlyname+' => '',
));
@@ -1522,7 +1523,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkGroupToCI' => 'Gruppe/CI',
'Class:lnkGroupToCI+' => '',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s~~',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s',
'Class:lnkGroupToCI/Attribute:group_id' => 'Gruppe',
'Class:lnkGroupToCI/Attribute:group_id+' => '',
'Class:lnkGroupToCI/Attribute:group_name' => 'Name',
@@ -1544,7 +1545,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Server:otherinfo' => 'Sonstige Informationen',
'Server:power' => 'Stromversorgung',
'Class:Subnet/Tab:IPUsage' => 'IP-Nutzung',
'Class:Subnet/Tab:IPUsage+' => 'Which IP within this Subnet are used or not~~',
'Class:Subnet/Tab:IPUsage+' => 'Welche IPs innerhalb dieses Subnetzes verwendet werden oder nicht',
'Class:Subnet/Tab:IPUsage-explain' => 'Interfaces mit einer IP in der Range: <em>%1$s</em> bis <em>%2$s</em>',
'Class:Subnet/Tab:FreeIPs' => 'Freie IPs',
'Class:Subnet/Tab:FreeIPs-count' => 'Freie IPs: %1$s',
@@ -1560,7 +1561,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToFunctionalCI' => 'Verknüpfung Dokument/FunctionalCI',
'Class:lnkDocumentToFunctionalCI+' => '',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id' => 'FunctionalCI',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_name' => 'FunctionalCI-Name',

View File

@@ -81,7 +81,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToFunctionalCI' => 'Lien Contact / CI Fonctionel',
'Class:lnkContactToFunctionalCI+' => '',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkContactToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id' => 'CI',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkContactToFunctionalCI/Attribute:functionalci_name' => 'Nom CI',
@@ -138,7 +138,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PhysicalDevice' => 'Matériel physique',
'Class:PhysicalDevice+' => '',
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:PhysicalDevice/ComplementaryName' => '%1$s - %2$s',
'Class:PhysicalDevice/Attribute:serialnumber' => 'Numéro de série',
'Class:PhysicalDevice/Attribute:serialnumber+' => '',
'Class:PhysicalDevice/Attribute:location_id' => 'Site',
@@ -178,7 +178,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Rack' => 'Rack',
'Class:Rack+' => '',
'Class:Rack/ComplementaryName' => '%1$s - %2$s~~',
'Class:Rack/ComplementaryName' => '%1$s - %2$s',
'Class:Rack/Attribute:nb_u' => 'NB Unité',
'Class:Rack/Attribute:nb_u+' => '',
'Class:Rack/Attribute:device_list' => 'Matériels',
@@ -245,7 +245,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:ConnectableCI' => 'CI connecté',
'Class:ConnectableCI+' => '',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s~~',
'Class:ConnectableCI/ComplementaryName' => '%1$s - %2$s',
'Class:ConnectableCI/Attribute:networkdevice_list' => 'Equipements réseaux',
'Class:ConnectableCI/Attribute:networkdevice_list+' => 'Tous les équipements réseaux connectés à ce matériel',
'Class:ConnectableCI/Attribute:physicalinterface_list' => 'Interfaces réseaux',
@@ -259,7 +259,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:DatacenterDevice' => 'Matériel Datacenter',
'Class:DatacenterDevice+' => '',
'Class:DatacenterDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatacenterDevice/ComplementaryName' => '%1$s - %2$s',
'Class:DatacenterDevice/Attribute:rack_id' => 'Rack',
'Class:DatacenterDevice/Attribute:rack_id+' => '',
'Class:DatacenterDevice/Attribute:rack_name' => 'Nom Rack',
@@ -298,7 +298,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:NetworkDevice' => 'Equipement réseau',
'Class:NetworkDevice+' => '',
'Class:NetworkDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:NetworkDevice/ComplementaryName' => '%1$s - %2$s',
'Class:NetworkDevice/Attribute:networkdevicetype_id' => 'Type',
'Class:NetworkDevice/Attribute:networkdevicetype_id+' => '',
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Nom Type',
@@ -320,7 +320,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Server' => 'Serveur',
'Class:Server+' => '',
'Class:Server/ComplementaryName' => '%1$s - %2$s~~',
'Class:Server/ComplementaryName' => '%1$s - %2$s',
'Class:Server/Attribute:osfamily_id' => 'Famille OS',
'Class:Server/Attribute:osfamily_id+' => '',
'Class:Server/Attribute:osfamily_name' => 'Nom Famille OS',
@@ -348,7 +348,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:StorageSystem' => 'Système de stockage',
'Class:StorageSystem+' => '',
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s~~',
'Class:StorageSystem/ComplementaryName' => '%1$s - %2$s',
'Class:StorageSystem/Attribute:logicalvolume_list' => 'Volumes logiques',
'Class:StorageSystem/Attribute:logicalvolume_list+' => 'Tous les volumes logiques dans ce système de stockage',
));
@@ -360,7 +360,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:SANSwitch' => 'Switch SAN',
'Class:SANSwitch+' => '',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s~~',
'Class:SANSwitch/ComplementaryName' => '%1$s - %2$s',
'Class:SANSwitch/Attribute:datacenterdevice_list' => 'Matériels connectés',
'Class:SANSwitch/Attribute:datacenterdevice_list+' => 'Tous les matériels connectés à ce switch SAN',
));
@@ -372,7 +372,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:TapeLibrary' => 'Bandothèque',
'Class:TapeLibrary+' => '',
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s~~',
'Class:TapeLibrary/ComplementaryName' => '%1$s - %2$s',
'Class:TapeLibrary/Attribute:tapes_list' => 'Bandes',
'Class:TapeLibrary/Attribute:tapes_list+' => 'Toutes les bandes dans cette bandothèque',
));
@@ -384,7 +384,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:NAS' => 'NAS',
'Class:NAS+' => '',
'Class:NAS/ComplementaryName' => '%1$s - %2$s~~',
'Class:NAS/ComplementaryName' => '%1$s - %2$s',
'Class:NAS/Attribute:nasfilesystem_list' => 'Systèmes de fichier NAS',
'Class:NAS/Attribute:nasfilesystem_list+' => 'Tous les systèmes de fichier dans ce NAS',
));
@@ -396,7 +396,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PC' => 'PC',
'Class:PC+' => '',
'Class:PC/ComplementaryName' => '%1$s - %2$s~~',
'Class:PC/ComplementaryName' => '%1$s - %2$s',
'Class:PC/Attribute:osfamily_id' => 'Famille OS',
'Class:PC/Attribute:osfamily_id+' => '',
'Class:PC/Attribute:osfamily_name' => 'Nom Famille OS',
@@ -424,7 +424,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Printer' => 'Imprimante',
'Class:Printer+' => '',
'Class:Printer/ComplementaryName' => '%1$s - %2$s~~',
'Class:Printer/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -434,7 +434,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PowerConnection' => 'Connexion électrique',
'Class:PowerConnection+' => '',
'Class:PowerConnection/ComplementaryName' => '%1$s - %2$s~~',
'Class:PowerConnection/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -444,7 +444,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PowerSource' => 'Arrivée électrique',
'Class:PowerSource+' => '',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s~~',
'Class:PowerSource/ComplementaryName' => '%1$s - %2$s',
'Class:PowerSource/Attribute:pdus_list' => 'PDUs',
'Class:PowerSource/Attribute:pdus_list+' => 'Toutes les PDUs de cette arrivée électrique',
));
@@ -456,7 +456,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PDU' => 'PDU',
'Class:PDU+' => '',
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s~~',
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s',
'Class:PDU/Attribute:rack_id' => 'Rack',
'Class:PDU/Attribute:rack_id+' => '',
'Class:PDU/Attribute:rack_name' => 'Nom rack',
@@ -474,7 +474,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Peripheral' => 'Périphérique',
'Class:Peripheral+' => '',
'Class:Peripheral/ComplementaryName' => '%1$s - %2$s~~',
'Class:Peripheral/ComplementaryName' => '%1$s - %2$s',
));
//
@@ -484,7 +484,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Enclosure' => 'Chassis',
'Class:Enclosure+' => '',
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s',
'Class:Enclosure/Attribute:rack_id' => 'Rack',
'Class:Enclosure/Attribute:rack_id+' => '',
'Class:Enclosure/Attribute:rack_name' => 'Nom rack',
@@ -603,7 +603,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PCSoftware' => 'Logiciel PC',
'Class:PCSoftware+' => '~~',
'Class:PCSoftware+' => 'Application logicielle sur PC',
));
//
@@ -622,7 +622,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:MiddlewareInstance' => 'Instance Middleware',
'Class:MiddlewareInstance+' => '',
'Class:MiddlewareInstance/ComplementaryName' => '%1$s - %2$s~~',
'Class:MiddlewareInstance/ComplementaryName' => '%1$s - %2$s',
'Class:MiddlewareInstance/Attribute:middleware_id' => 'Middleware',
'Class:MiddlewareInstance/Attribute:middleware_id+' => '',
'Class:MiddlewareInstance/Attribute:middleware_name' => 'Nom Middleware',
@@ -636,7 +636,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:DatabaseSchema' => 'Instance de base de données',
'Class:DatabaseSchema+' => '',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatabaseSchema/ComplementaryName' => '%1$s - %2$s',
'Class:DatabaseSchema/Attribute:dbserver_id' => 'Serveur de base de données',
'Class:DatabaseSchema/Attribute:dbserver_id+' => '',
'Class:DatabaseSchema/Attribute:dbserver_name' => 'Nom Serveur de base de données',
@@ -650,7 +650,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:WebApplication' => 'Application Web',
'Class:WebApplication+' => '',
'Class:WebApplication/ComplementaryName' => '%1$s - %2$s~~',
'Class:WebApplication/ComplementaryName' => '%1$s - %2$s',
'Class:WebApplication/Attribute:webserver_id' => 'Serveur Web',
'Class:WebApplication/Attribute:webserver_id+' => '',
'Class:WebApplication/Attribute:webserver_name' => 'Nom Serveur Web',
@@ -731,7 +731,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:VirtualMachine' => 'Machine virtuelle',
'Class:VirtualMachine+' => '',
'Class:VirtualMachine/ComplementaryName' => '%1$s - %2$s~~',
'Class:VirtualMachine/ComplementaryName' => '%1$s - %2$s',
'Class:VirtualMachine/Attribute:virtualhost_id' => 'vCluster / Hyperviseur',
'Class:VirtualMachine/Attribute:virtualhost_id+' => '',
'Class:VirtualMachine/Attribute:virtualhost_name' => 'Nom Host',
@@ -792,7 +792,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkServerToVolume' => 'Lien Serveur / Volume',
'Class:lnkServerToVolume+' => '',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkServerToVolume/Name' => '%1$s / %2$s',
'Class:lnkServerToVolume/Attribute:volume_id' => 'Volume logique',
'Class:lnkServerToVolume/Attribute:volume_id+' => '',
'Class:lnkServerToVolume/Attribute:volume_name' => 'Nom Volume logique',
@@ -812,7 +812,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkVirtualDeviceToVolume' => 'Lien Device virtuel / Volume',
'Class:lnkVirtualDeviceToVolume+' => '',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s~~',
'Class:lnkVirtualDeviceToVolume/Name' => '%1$s / %2$s',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id' => 'Volume logique',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_id+' => '',
'Class:lnkVirtualDeviceToVolume/Attribute:volume_name' => 'Nom Volume logique',
@@ -832,7 +832,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkSanToDatacenterDevice' => 'Lien San / Device',
'Class:lnkSanToDatacenterDevice+' => '',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s~~',
'Class:lnkSanToDatacenterDevice/Name' => '%1$s / %2$s',
'Class:lnkSanToDatacenterDevice/Attribute:san_id' => 'Switch SAN',
'Class:lnkSanToDatacenterDevice/Attribute:san_id+' => '',
'Class:lnkSanToDatacenterDevice/Attribute:san_name' => 'Nom Switch SAN',
@@ -894,7 +894,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Software' => 'Logiciel',
'Class:Software+' => '',
'Class:Software/ComplementaryName' => '%1$s - %2$s~~',
'Class:Software/ComplementaryName' => '%1$s - %2$s',
'Class:Software/Attribute:name' => 'Nom',
'Class:Software/Attribute:name+' => '',
'Class:Software/Attribute:vendor' => 'Vendeur',
@@ -1012,7 +1012,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:OSLicence' => 'Licence OS',
'Class:OSLicence+' => '',
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s~~',
'Class:OSLicence/ComplementaryName' => '%1$s - %2$s',
'Class:OSLicence/Attribute:osversion_id' => 'Version OS',
'Class:OSLicence/Attribute:osversion_id+' => '',
'Class:OSLicence/Attribute:osversion_name' => 'Nom Version OS',
@@ -1030,7 +1030,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:SoftwareLicence' => 'Licence Logiciel',
'Class:SoftwareLicence+' => '',
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s~~',
'Class:SoftwareLicence/ComplementaryName' => '%1$s - %2$s',
'Class:SoftwareLicence/Attribute:software_id' => 'Logiciel',
'Class:SoftwareLicence/Attribute:software_id+' => '',
'Class:SoftwareLicence/Attribute:software_name' => 'Nom Logiciel',
@@ -1046,7 +1046,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToLicence' => 'Lien Document / Licence',
'Class:lnkDocumentToLicence+' => '',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToLicence/Name' => '%1$s / %2$s',
'Class:lnkDocumentToLicence/Attribute:licence_id' => 'Licence',
'Class:lnkDocumentToLicence/Attribute:licence_id+' => '',
'Class:lnkDocumentToLicence/Attribute:licence_name' => 'Nom Licence',
@@ -1099,7 +1099,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Model' => 'Modèle',
'Class:Model+' => '',
'Class:Model/ComplementaryName' => '%1$s - %2$s~~',
'Class:Model/ComplementaryName' => '%1$s - %2$s',
'Class:Model/Attribute:brand_id' => 'Marque',
'Class:Model/Attribute:brand_id+' => '',
'Class:Model/Attribute:brand_name' => 'Nom marque',
@@ -1179,7 +1179,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToPatch' => 'Lien Document / Patch',
'Class:lnkDocumentToPatch+' => '',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToPatch/Name' => '%1$s / %2$s',
'Class:lnkDocumentToPatch/Attribute:patch_id' => 'Patch',
'Class:lnkDocumentToPatch/Attribute:patch_id+' => '',
'Class:lnkDocumentToPatch/Attribute:patch_name' => 'Nom patch',
@@ -1197,7 +1197,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkSoftwareInstanceToSoftwarePatch' => 'Lien Instance logiciel / Patch logiciel',
'Class:lnkSoftwareInstanceToSoftwarePatch+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s~~',
'Class:lnkSoftwareInstanceToSoftwarePatch/Name' => '%1$s / %2$s',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id' => 'Patch logiciel',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_id+' => '',
'Class:lnkSoftwareInstanceToSoftwarePatch/Attribute:softwarepatch_name' => 'Nom patch logiciel',
@@ -1215,7 +1215,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkFunctionalCIToOSPatch' => 'Lien CI Fonctionel / Patch OS',
'Class:lnkFunctionalCIToOSPatch+' => '',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToOSPatch/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'Patch OS',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'Nom Patch OS',
@@ -1233,7 +1233,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToSoftware' => 'Lien Document / Logiciel',
'Class:lnkDocumentToSoftware+' => '',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToSoftware/Name' => '%1$s / %2$s',
'Class:lnkDocumentToSoftware/Attribute:software_id' => 'Logiciel',
'Class:lnkDocumentToSoftware/Attribute:software_id+' => '',
'Class:lnkDocumentToSoftware/Attribute:software_name' => 'Nom logiciel',
@@ -1251,12 +1251,12 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Subnet' => 'Subnet',
'Class:Subnet+' => '',
'Class:Subnet/Name' => '%1$s/%2$s~~',
'Class:Subnet/ComplementaryName' => '%1$s - %2$s~~',
'Class:Subnet/Name' => '%1$s/%2$s',
'Class:Subnet/ComplementaryName' => '%1$s - %2$s',
'Class:Subnet/Attribute:description' => 'Description',
'Class:Subnet/Attribute:description+' => '',
'Class:Subnet/Attribute:subnet_name' => 'Nom de subnet',
'Class:Subnet/Attribute:subnet_name+' => '~~',
'Class:Subnet/Attribute:subnet_name+' => '',
'Class:Subnet/Attribute:org_id' => 'Organisation',
'Class:Subnet/Attribute:org_id+' => '',
'Class:Subnet/Attribute:org_name' => 'Nom organisation',
@@ -1297,7 +1297,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkSubnetToVLAN' => 'Lien Subnet / VLAN',
'Class:lnkSubnetToVLAN+' => '',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s~~',
'Class:lnkSubnetToVLAN/Name' => '%1$s / %2$s',
'Class:lnkSubnetToVLAN/Attribute:subnet_id' => 'Subnet',
'Class:lnkSubnetToVLAN/Attribute:subnet_id+' => '',
'Class:lnkSubnetToVLAN/Attribute:subnet_ip' => 'Subnet IP',
@@ -1351,7 +1351,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:PhysicalInterface' => 'Interface physique',
'Class:PhysicalInterface+' => '',
'Class:PhysicalInterface/Name' => '%2$s %1$s~~',
'Class:PhysicalInterface/Name' => '%2$s %1$s',
'Class:PhysicalInterface/Attribute:connectableci_id' => 'Matériel',
'Class:PhysicalInterface/Attribute:connectableci_id+' => '',
'Class:PhysicalInterface/Attribute:connectableci_name' => 'Nom matériel',
@@ -1367,7 +1367,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkPhysicalInterfaceToVLAN' => 'Lien Interface réseau / VLAN',
'Class:lnkPhysicalInterfaceToVLAN+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s~~',
'Class:lnkPhysicalInterfaceToVLAN/Name' => '%1$s %2$s / %3$s',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id' => 'Interface réseau',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_id+' => '',
'Class:lnkPhysicalInterfaceToVLAN/Attribute:physicalinterface_name' => 'Nom interface réseau',
@@ -1422,7 +1422,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkConnectableCIToNetworkDevice' => 'Lien Device / Equipement réseau',
'Class:lnkConnectableCIToNetworkDevice+' => '',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s~~',
'Class:lnkConnectableCIToNetworkDevice/Name' => '%1$s / %2$s',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id' => 'Equipement réseau',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_id+' => '',
'Class:lnkConnectableCIToNetworkDevice/Attribute:networkdevice_name' => 'Nom Equipement réseau',
@@ -1450,7 +1450,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkApplicationSolutionToFunctionalCI' => 'Lien Solution Applicative / CI Fonctionel',
'Class:lnkApplicationSolutionToFunctionalCI+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id' => 'Solution applicative',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_id+' => '',
'Class:lnkApplicationSolutionToFunctionalCI/Attribute:applicationsolution_name' => 'Nom Solution applicative',
@@ -1468,7 +1468,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkApplicationSolutionToBusinessProcess' => 'Lien Solution Applicative / Processus métier',
'Class:lnkApplicationSolutionToBusinessProcess+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s~~',
'Class:lnkApplicationSolutionToBusinessProcess/Name' => '%1$s / %2$s',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id' => 'Processus métier',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_id+' => '',
'Class:lnkApplicationSolutionToBusinessProcess/Attribute:businessprocess_name' => 'Nom Processus métier',
@@ -1486,7 +1486,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Group' => 'Groupe',
'Class:Group+' => '',
'Class:Group/ComplementaryName' => '%1$s - %2$s~~',
'Class:Group/ComplementaryName' => '%1$s - %2$s',
'Class:Group/Attribute:name' => 'Nom',
'Class:Group/Attribute:name+' => '',
'Class:Group/Attribute:status' => 'Etat',
@@ -1522,7 +1522,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkGroupToCI' => 'Lien Groupe / CI',
'Class:lnkGroupToCI+' => '',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s~~',
'Class:lnkGroupToCI/Name' => '%1$s / %2$s',
'Class:lnkGroupToCI/Attribute:group_id' => 'Groupe',
'Class:lnkGroupToCI/Attribute:group_id+' => '',
'Class:lnkGroupToCI/Attribute:group_name' => 'Nom du groupe',
@@ -1560,7 +1560,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToFunctionalCI' => 'Lien Document / CI Fonctionel',
'Class:lnkDocumentToFunctionalCI+' => '',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id' => 'CI',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkDocumentToFunctionalCI/Attribute:functionalci_name' => 'Nom CI',

View File

@@ -127,8 +127,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:FunctionalCI/Attribute:applicationsolution_list+' => '此配置项依赖的所有应用方案',
'Class:FunctionalCI/Attribute:softwares_list' => '软件',
'Class:FunctionalCI/Attribute:softwares_list+' => '此配置项上已安装的所有软件',
'Class:FunctionalCI/Attribute:finalclass' => '二级配置项',
'Class:FunctionalCI/Attribute:finalclass+' => 'Name of the final class',
'Class:FunctionalCI/Attribute:finalclass' => '类型',
'Class:FunctionalCI/Attribute:finalclass+' => '根本属性的名称',
'Class:FunctionalCI/Tab:OpenedTickets' => '活跃的工单',
'Class:FunctionalCI/Tab:OpenedTickets+' => 'Active Tickets which are impacting this functional CI~~',
));
@@ -149,8 +149,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:PhysicalDevice/Attribute:location_name+' => '',
'Class:PhysicalDevice/Attribute:status' => '状态',
'Class:PhysicalDevice/Attribute:status+' => '',
'Class:PhysicalDevice/Attribute:status/Value:implementation' => '上线',
'Class:PhysicalDevice/Attribute:status/Value:implementation+' => '上线',
'Class:PhysicalDevice/Attribute:status/Value:implementation' => '生效',
'Class:PhysicalDevice/Attribute:status/Value:implementation+' => '生效',
'Class:PhysicalDevice/Attribute:status/Value:obsolete' => '废弃',
'Class:PhysicalDevice/Attribute:status/Value:obsolete+' => '废弃',
'Class:PhysicalDevice/Attribute:status/Value:production' => '生产',
@@ -178,15 +178,15 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Rack' => '机',
'Class:Rack' => '机',
'Class:Rack+' => '',
'Class:Rack/ComplementaryName' => '%1$s - %2$s~~',
'Class:Rack/Attribute:nb_u' => '机高度',
'Class:Rack/Attribute:nb_u' => '机高度',
'Class:Rack/Attribute:nb_u+' => '',
'Class:Rack/Attribute:device_list' => '设备',
'Class:Rack/Attribute:device_list+' => '此机托管的所有物理设备',
'Class:Rack/Attribute:enclosure_list' => '机',
'Class:Rack/Attribute:enclosure_list+' => '此机上的所有机',
'Class:Rack/Attribute:device_list+' => '此机托管的所有物理设备',
'Class:Rack/Attribute:enclosure_list' => '机',
'Class:Rack/Attribute:enclosure_list+' => '此机上的所有机',
));
//
@@ -194,7 +194,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:TelephonyCI' => '电讯配置项',
'Class:TelephonyCI' => '通讯项',
'Class:TelephonyCI+' => '',
'Class:TelephonyCI/Attribute:phonenumber' => '电话号码',
'Class:TelephonyCI/Attribute:phonenumber+' => '',
@@ -262,13 +262,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:DatacenterDevice' => '数据中心设备',
'Class:DatacenterDevice+' => '',
'Class:DatacenterDevice/ComplementaryName' => '%1$s - %2$s~~',
'Class:DatacenterDevice/Attribute:rack_id' => '机',
'Class:DatacenterDevice/Attribute:rack_id' => '机',
'Class:DatacenterDevice/Attribute:rack_id+' => '',
'Class:DatacenterDevice/Attribute:rack_name' => '机名称',
'Class:DatacenterDevice/Attribute:rack_name' => '机名称',
'Class:DatacenterDevice/Attribute:rack_name+' => '',
'Class:DatacenterDevice/Attribute:enclosure_id' => '机',
'Class:DatacenterDevice/Attribute:enclosure_id' => '机',
'Class:DatacenterDevice/Attribute:enclosure_id+' => '',
'Class:DatacenterDevice/Attribute:enclosure_name' => '机名称',
'Class:DatacenterDevice/Attribute:enclosure_name' => '机名称',
'Class:DatacenterDevice/Attribute:enclosure_name+' => '',
'Class:DatacenterDevice/Attribute:nb_u' => '高度',
'Class:DatacenterDevice/Attribute:nb_u+' => '',
@@ -282,9 +282,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:DatacenterDevice/Attribute:powerB_id+' => '',
'Class:DatacenterDevice/Attribute:powerB_name' => '电源B名称',
'Class:DatacenterDevice/Attribute:powerB_name+' => '',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list' => '光纤口',
'Class:DatacenterDevice/Attribute:fiberinterfacelist_list+' => '此设备的所有光纤口',
'Class:DatacenterDevice/Attribute:san_list' => 'SANs',
'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:redundancy' => '冗余',
'Class:DatacenterDevice/Attribute:redundancy/count' => '此设备运行正常至少需要一路电源 (A 或 B)',
@@ -459,9 +459,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:PDU' => 'PDU',
'Class:PDU+' => '',
'Class:PDU/ComplementaryName' => '%1$s - %2$s - %3$s - %4$s~~',
'Class:PDU/Attribute:rack_id' => '机',
'Class:PDU/Attribute:rack_id' => '机',
'Class:PDU/Attribute:rack_id+' => '',
'Class:PDU/Attribute:rack_name' => '机名称',
'Class:PDU/Attribute:rack_name' => '机名称',
'Class:PDU/Attribute:rack_name+' => '',
'Class:PDU/Attribute:powerstart_id' => '上级电源',
'Class:PDU/Attribute:powerstart_id+' => '',
@@ -484,17 +484,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Enclosure' => '机',
'Class:Enclosure' => '机',
'Class:Enclosure+' => '',
'Class:Enclosure/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Enclosure/Attribute:rack_id' => '机',
'Class:Enclosure/Attribute:rack_id' => '机',
'Class:Enclosure/Attribute:rack_id+' => '',
'Class:Enclosure/Attribute:rack_name' => '机名称',
'Class:Enclosure/Attribute:rack_name' => '机名称',
'Class:Enclosure/Attribute:rack_name+' => '',
'Class:Enclosure/Attribute:nb_u' => '高度',
'Class:Enclosure/Attribute:nb_u+' => '',
'Class:Enclosure/Attribute:device_list' => '设备',
'Class:Enclosure/Attribute:device_list+' => '此机的所有设备',
'Class:Enclosure/Attribute:device_list+' => '此机的所有设备',
));
//
@@ -671,8 +671,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:VirtualDevice+' => '',
'Class:VirtualDevice/Attribute:status' => '状态',
'Class:VirtualDevice/Attribute:status+' => '',
'Class:VirtualDevice/Attribute:status/Value:implementation' => '上线',
'Class:VirtualDevice/Attribute:status/Value:implementation+' => '上线',
'Class:VirtualDevice/Attribute:status/Value:implementation' => '生效',
'Class:VirtualDevice/Attribute:status/Value:implementation+' => '生效',
'Class:VirtualDevice/Attribute:status/Value:obsolete' => '废弃',
'Class:VirtualDevice/Attribute:status/Value:obsolete+' => '废弃',
'Class:VirtualDevice/Attribute:status/Value:production' => '生产',
@@ -699,7 +699,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Hypervisor' => 'Hypervisor',
'Class:Hypervisor' => '虚拟机管理器',
'Class:Hypervisor+' => '',
'Class:Hypervisor/Attribute:farm_id' => '集群',
'Class:Hypervisor/Attribute:farm_id+' => '',
@@ -718,12 +718,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Farm' => '集群',
'Class:Farm+' => '',
'Class:Farm/Attribute:hypervisor_list' => 'Hypervisor',
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些Hypervisor 组成',
'Class:Farm/Attribute:hypervisor_list' => '虚拟机管理器',
'Class:Farm/Attribute:hypervisor_list+' => '集群由哪些虚拟机管理器组成',
'Class:Farm/Attribute:redundancy' => '高可用性',
'Class:Farm/Attribute:redundancy/disabled' => '所有Hypervisor 正常,集群才正常',
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个Hypervisor 是正常的,集群才是正常的',
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的Hypervisor 是正常的,集群才正常',
'Class:Farm/Attribute:redundancy/disabled' => '所有虚拟机管理器正常,集群才正常',
'Class:Farm/Attribute:redundancy/count' => '至少 %1$s 个虚拟机管理器是正常的,集群才是正常的',
'Class:Farm/Attribute:redundancy/percent' => '至少 %1$s %% 的虚拟机管理器是正常的,集群才正常',
));
//
@@ -938,8 +938,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Patch/Attribute:documents_list+' => '此补丁关联的所有文档',
'Class:Patch/Attribute:description' => '描述',
'Class:Patch/Attribute:description+' => '',
'Class:Patch/Attribute:finalclass' => '补丁子类别',
'Class:Patch/Attribute:finalclass+' => 'Name of the final class',
'Class:Patch/Attribute:finalclass' => '补丁类型',
'Class:Patch/Attribute:finalclass+' => '根本属性的名称',
));
//
@@ -1003,8 +1003,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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+' => 'Name of the final class',
'Class:Licence/Attribute:finalclass' => '许可证类型',
'Class:Licence/Attribute:finalclass+' => '根本属性的名称',
));
//
@@ -1112,8 +1112,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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: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:MobilePhone' => '手机',
@@ -1130,8 +1130,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Model/Attribute:type/Value:Peripheral+' => '配件',
'Class:Model/Attribute:type/Value:Printer' => '打印机',
'Class:Model/Attribute:type/Value:Printer+' => '打印机',
'Class:Model/Attribute:type/Value:Rack' => '机',
'Class:Model/Attribute:type/Value:Rack+' => '机',
'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' => '服务器',
@@ -1321,8 +1321,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:NetworkInterface+' => '',
'Class:NetworkInterface/Attribute:name' => '名称',
'Class:NetworkInterface/Attribute:name+' => '',
'Class:NetworkInterface/Attribute:finalclass' => '网卡子类别',
'Class:NetworkInterface/Attribute:finalclass+' => 'Name of the final class',
'Class:NetworkInterface/Attribute:finalclass' => '网卡类型',
'Class:NetworkInterface/Attribute:finalclass+' => '根本属性的名称',
));
//
@@ -1336,7 +1336,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:IPInterface/Attribute:ipaddress+' => '',
'Class:IPInterface/Attribute:macaddress' => 'MAC地址',
'Class:IPInterface/Attribute:macaddress+' => '',
'Class:IPInterface/Attribute:comment' => '注',
'Class:IPInterface/Attribute:comment' => '注',
'Class:IPInterface/Attribute:coment+' => '',
'Class:IPInterface/Attribute:ipgateway' => '网关',
'Class:IPInterface/Attribute:ipgateway+' => '',
@@ -1403,7 +1403,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:FiberChannelInterface' => '光纤通道接口',
'Class:FiberChannelInterface' => '光纤接口',
'Class:FiberChannelInterface+' => '',
'Class:FiberChannelInterface/Attribute:speed' => '速率',
'Class:FiberChannelInterface/Attribute:speed+' => '',
@@ -1493,8 +1493,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Group/Attribute:name+' => '',
'Class:Group/Attribute:status' => '状态',
'Class:Group/Attribute:status+' => '',
'Class:Group/Attribute:status/Value:implementation' => '上线',
'Class:Group/Attribute:status/Value:implementation+' => '上线',
'Class:Group/Attribute:status/Value:implementation' => '生效',
'Class:Group/Attribute:status/Value:implementation+' => '生效',
'Class:Group/Attribute:status/Value:obsolete' => '废弃',
'Class:Group/Attribute:status/Value:obsolete+' => '废弃',
'Class:Group/Attribute:status/Value:production' => '生产',

View File

@@ -25,7 +25,7 @@
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ConfigEditor' => 'Konfiguration',
'config-edit-title' => 'Konfigurations-Editor',
'config-edit-intro' => 'Seien sie bei der Bearbeitung der Konfigurationsdatei sehr vorsichtig.',
'config-edit-intro' => 'Achtung: Eine falsche Konfiguration kann dazu führen, dass '.ITOP_APPLICATION_SHORT.' für alle Benutzer unbenutzbar ist!',
'config-apply' => 'Anwenden (Ctrl+S)',
'config-apply-title' => 'Anwenden (Ctrl+S)',
'config-cancel' => 'Zurücksetzen',
@@ -36,8 +36,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'config-parse-error' => 'Zeile %2$d: %1$s.<br/>Die Datei wurde nicht aktualisiert.',
'config-current-line' => 'Editiere Zeile: %1$s',
'config-saved-warning-db-password' => 'Die Konfiguration wurde gespeichert. Das Backup wird NICHT funktionieren, im Datenbankpasswort sind unzulässige Zeichen enthalten.',
'config-error-transaction' => 'Error: invalid Transaction ID. The configuration was <b>NOT</b> modified.~~',
'config-error-file-changed' => 'Error: The Configuration file has changed since you opened it and cannot be saved. Refresh and apply your changes again.~~',
'config-not-allowed-in-demo' => 'Sorry, '.ITOP_APPLICATION_SHORT.' is in <b>demonstration mode</b>: the configuration file cannot be edited.~~',
'config-interactive-not-allowed' => ITOP_APPLICATION_SHORT.' interactive edition of the configuration as been disabled. See <code>\'config_editor\' => \'disabled\'</code> in the configuration file.~~',
'config-error-transaction' => 'Fehler: Ungültige Transaction ID. Die Konfiguration wurde <b>NICHT</b> modifiziert.',
'config-error-file-changed' => 'Fehler: Die Konfigurationsdatei hat sich seit dem Öffnen geändert und kann nicht gespeichert werden. Aktualisieren Sie die Datei und wenden Sie Ihre Änderungen erneut an.',
'config-not-allowed-in-demo' => 'Entschuldigung, '.ITOP_APPLICATION_SHORT.' befindet sich im <b>Demo-Modus</b>: Die Konfigurationsdatei kann nicht bearbeitet werden.',
'config-interactive-not-allowed' => 'Die interaktive Bearbeitung der '.ITOP_APPLICATION_SHORT.' Konfiguration wurde deaktiviert. Siehe <code>\'config_editor\' => \'disabled\'</code> in der Konfigurationsdatei.',
));

View File

@@ -51,7 +51,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => 'Während des Upgrades läuft die Anwendung im read-only Modus',
'iTopUpdate:UI:Status' => 'Status',
'iTopUpdate:UI:Action' => 'Update',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.' Setup',
'iTopUpdate:UI:History' => 'Versionshistorie',
'iTopUpdate:UI:Progress' => 'Upgradefortschritt',
'iTopUpdate:UI:DoBackup:Label' => 'Backup von Dateien und Datenbank',
@@ -70,9 +70,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'iTopUpdate:UI:CanCoreUpdate:No' => 'Anwendungsupgrade nicht möglich: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Vorsicht: App-Upgrade kann fehlschlagen: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>Einige angepasste Dateien wurden erkannt</b>, eine Teil-Update kann nicht ausgeführt werden.<br/>Befolgen Sie das <a target="_blank" href="%2$s">Verfahren</a>, um Ihr iTop manuell zu aktualisieren. Sie müssen das <a href="%1$s">Setup</a> benutzen, um Ihre Applikation zu aktualisieren.<br />',
'iTopUpdate:UI:CheckInProgress' => 'Please wait during integrity check~~',
'iTopUpdate:UI:SetupLaunch' => 'Launch '.ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:SetupLaunchConfirm' => 'This will launch '.ITOP_APPLICATION_SHORT.' setup, are you sure?~~',
'iTopUpdate:UI:CheckInProgress' => 'Bitte warten Sie während der Integritätsprüfung',
'iTopUpdate:UI:SetupLaunch' => 'Starte '.ITOP_APPLICATION_SHORT.' Setup',
'iTopUpdate:UI:SetupLaunchConfirm' => 'Hiermit wird der '.ITOP_APPLICATION_SHORT.' Setup, sind Sie sicher?',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => 'Bereit zum Upgrade',

View File

@@ -51,7 +51,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
'iTopUpdate:UI:WarningReadOnlyDuringUpdate' => 'Pendant toute la durée de la mise à jour, l\'application sera en lecture seule.',
'iTopUpdate:UI:Status' => 'Versions installées',
'iTopUpdate:UI:Action' => 'Mettre à jour',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:Setup' => ITOP_APPLICATION_SHORT.' Setup',
'iTopUpdate:UI:History' => 'Historique des versions',
'iTopUpdate:UI:Progress' => 'Progression de la mise à jour',
'iTopUpdate:UI:DoBackup:Label' => 'Sauvegarde de la base de données',
@@ -71,8 +71,8 @@ Dict::Add('FR FR', 'French', 'Français', array(
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Attention : la mise à jour de l\'application peut échouer : %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>Des fichiers modifiés ont été détectés</b>, une mise à jour partielle ne peut pas être effectuée.<br />Suivez la <a target="_blank" href="%2$s"> procedure</a> pour mettre à jour manuellement votre iTop. Vous devez utiliser la page <a href="%1$s">d\'installation</a> pour mettre à jour l\'application.',
'iTopUpdate:UI:CheckInProgress' => 'Veuillez patienter pendant la vérification d\'intégrité',
'iTopUpdate:UI:SetupLaunch' => 'Launch '.ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:SetupLaunchConfirm' => 'This will launch '.ITOP_APPLICATION_SHORT.' setup, are you sure?~~',
'iTopUpdate:UI:SetupLaunch' => 'Lancer le Setup',
'iTopUpdate:UI:SetupLaunchConfirm' => 'This will launch '.ITOP_APPLICATION_SHORT.' setup, are you sure?',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => 'Prêt pour l\\installation',

View File

@@ -44,8 +44,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="enclosure_list" xsi:type="AttributeLinkedSet">
<linked_class>Enclosure</linked_class>
@@ -53,8 +51,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -255,8 +251,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -613,8 +607,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -176,8 +176,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -55,7 +55,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:FAQCategory/Attribute:name' => 'Name',
'Class:FAQCategory/Attribute:name+' => '',
'Class:FAQCategory/Attribute:faq_list' => 'FAQs',
'Class:FAQCategory/Attribute:faq_list+' => 'All the frequently asked questions related to this category~~',
'Class:FAQCategory/Attribute:faq_list+' => 'Alle FAQ-Einträge (frequently asked questions) verknüpft mit dieser Kategorie',
));
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ProblemManagement' => 'Problem Management',

View File

@@ -24,7 +24,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
// Errors
'FilesInformation:Error:MissingFile' => 'Fehlende Datei: %1$s',
'FilesInformation:Error:CorruptedFile' => 'Datei %1$s ist beschädigt',
'FilesInformation:Error:ListCorruptedFile' => 'File(s) corrupted: %1$s~~',
'FilesInformation:Error:ListCorruptedFile' => 'Beschädigte Datei(en): %1$s',
'FilesInformation:Error:CantWriteToFile' => 'Datei %1$s kann nicht geschrieben werden',
));

View File

@@ -458,8 +458,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="child_incidents_list" xsi:type="AttributeLinkedSet">
<linked_class>Incident</linked_class>
@@ -467,8 +465,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="public_log" xsi:type="AttributeCaseLog">
<sql>public_log</sql>

View File

@@ -28,17 +28,17 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:Incident:Overview' => 'Übersicht',
'Menu:Incident:Overview+' => '',
'Menu:NewIncident' => 'Neuer Incident',
'Menu:NewIncident+' => '',
'Menu:NewIncident+' => 'Einen neuen Incident dokumentieren',
'Menu:SearchIncidents' => 'Nach Incidents suchen',
'Menu:SearchIncidents+' => '',
'Menu:SearchIncidents+' => 'Suche nach einem bestehendem Incident',
'Menu:Incident:Shortcuts' => 'Shortcuts',
'Menu:Incident:Shortcuts+' => '',
'Menu:Incident:MyIncidents' => 'Mir zugewiesene Incidents',
'Menu:Incident:MyIncidents+' => '',
'Menu:Incident:MyIncidents+' => 'Incidents die mir als Bearbeiter zugewiesen sind',
'Menu:Incident:EscalatedIncidents' => 'Eskalierte Incidents',
'Menu:Incident:EscalatedIncidents+' => '',
'Menu:Incident:EscalatedIncidents+' => 'Incidents die eskaliert sind',
'Menu:Incident:OpenIncidents' => 'Alle offenen Incidents',
'Menu:Incident:OpenIncidents+' => '',
'Menu:Incident:OpenIncidents+' => 'Alle offenen Incidents',
'UI-IncidentManagementOverview-IncidentByPriority-last-14-days' => 'Incidents der letzten 14 Tage nach Priorität',
'UI-IncidentManagementOverview-Last-14-days' => 'Anzahl Incidents der letzten 14 Tage',
'UI-IncidentManagementOverview-OpenIncidentByStatus' => 'Offene Incidents nach Status',
@@ -83,7 +83,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:status/Value:closed' => 'Geschlossen',
'Class:Incident/Attribute:status/Value:closed+' => '',
'Class:Incident/Attribute:impact' => 'Auswirkung',
'Class:Incident/Attribute:impact+' => '',
'Class:Incident/Attribute:impact+' => 'Die Auswirkung gibt die Schwere des Vorfalls an, oft geschätzt durch die Anzahl der Betroffenen',
'Class:Incident/Attribute:impact/Value:1' => 'Eine Abteilung',
'Class:Incident/Attribute:impact/Value:1+' => '',
'Class:Incident/Attribute:impact/Value:2' => 'Ein Service',
@@ -101,7 +101,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:priority/Value:4' => 'Niedrig',
'Class:Incident/Attribute:priority/Value:4+' => '',
'Class:Incident/Attribute:urgency' => 'Dringlichkeit',
'Class:Incident/Attribute:urgency+' => '',
'Class:Incident/Attribute:urgency+' => 'Wie schnell der Vorfall behandelt werden muss',
'Class:Incident/Attribute:urgency/Value:1' => 'Kritisch',
'Class:Incident/Attribute:urgency/Value:1+' => '',
'Class:Incident/Attribute:urgency/Value:2' => 'Hoch',
@@ -112,18 +112,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:urgency/Value:4+' => '',
'Class:Incident/Attribute:origin' => 'Herkunft',
'Class:Incident/Attribute:origin+' => '',
'Class:Incident/Attribute:origin/Value:in_person' => 'In-person~~',
'Class:Incident/Attribute:origin/Value:in_person+' => 'Incident created following a face-to-face discussion~~',
'Class:Incident/Attribute:origin/Value:chat' => 'Chat~~',
'Class:Incident/Attribute:origin/Value:chat+' => 'Incident created following a ~~',
'Class:Incident/Attribute:origin/Value:in_person' => 'Persönlich',
'Class:Incident/Attribute:origin/Value:in_person+' => 'Incident auf Basis einer Diskussion im direkten Gespräch',
'Class:Incident/Attribute:origin/Value:chat' => 'Chat',
'Class:Incident/Attribute:origin/Value:chat+' => 'Incident auf Basis einer Diskussion in einem Chat',
'Class:Incident/Attribute:origin/Value:mail' => 'Mail',
'Class:Incident/Attribute:origin/Value:mail+' => '',
'Class:Incident/Attribute:origin/Value:mail+' => 'Incident auf Basis einer empfangenen Mail',
'Class:Incident/Attribute:origin/Value:monitoring' => 'Monitoring',
'Class:Incident/Attribute:origin/Value:monitoring+' => '',
'Class:Incident/Attribute:origin/Value:monitoring+' => 'Incident auf Basis eines Monitoring-Events',
'Class:Incident/Attribute:origin/Value:phone' => 'Telefon',
'Class:Incident/Attribute:origin/Value:phone+' => '',
'Class:Incident/Attribute:origin/Value:phone+' => 'Incident auf Basis eines Telefonanrufs',
'Class:Incident/Attribute:origin/Value:portal' => 'Portal',
'Class:Incident/Attribute:origin/Value:portal+' => '',
'Class:Incident/Attribute:origin/Value:portal+' => 'Incident, der über das Portal erstellt wurde',
'Class:Incident/Attribute:service_id' => 'Service',
'Class:Incident/Attribute:service_id+' => '',
'Class:Incident/Attribute:service_name' => 'Service-Name',
@@ -169,7 +169,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:resolution_code' => 'Lösungs-Code',
'Class:Incident/Attribute:resolution_code+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance' => 'Unterstützung',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => '',
'Class:Incident/Attribute:resolution_code/Value:assistance+' => 'Was wurde unternommen, um den Incident zu beheben?',
'Class:Incident/Attribute:resolution_code/Value:bug fixed' => 'Bugfix',
'Class:Incident/Attribute:resolution_code/Value:bug fixed+' => '',
'Class:Incident/Attribute:resolution_code/Value:hardware repair' => 'Hardware-Reparatur',
@@ -201,7 +201,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:related_request_list' => 'Kind-Requests',
'Class:Incident/Attribute:related_request_list+' => '',
'Class:Incident/Attribute:child_incidents_list' => 'Abgeleitete Incidents',
'Class:Incident/Attribute:child_incidents_list+' => 'All the child incidents related to this incident~~',
'Class:Incident/Attribute:child_incidents_list+' => 'Alle abgeleiteten Incidents, die mit diesem Incident verknüpft sind',
'Class:Incident/Attribute:public_log' => 'Öffentliches Log',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => 'Benutzerzufriedenheit',
@@ -216,7 +216,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Incident/Attribute:user_satisfaction/Value:4+' => '',
'Class:Incident/Attribute:user_comment' => 'Benutzer-Kommentar',
'Class:Incident/Attribute:user_comment+' => '',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'Parent-Incident-Friendly Name',
'Class:Incident/Attribute:parent_incident_id_friendlyname' => 'Parent-Incident Anzeigename',
'Class:Incident/Attribute:parent_incident_id_friendlyname+' => '',
'Class:Incident/Stimulus:ev_assign' => 'Zuweisen',
'Class:Incident/Stimulus:ev_assign+' => '',

View File

@@ -198,8 +198,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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:child_incidents_list' => '事件',
'Class:Incident/Attribute:child_incidents_list+' => '此事件相关的所有衍生事件',
'Class:Incident/Attribute:public_log' => '评论',
'Class:Incident/Attribute:public_log+' => '',
'Class:Incident/Attribute:user_satisfaction' => '用户满意度',
@@ -234,8 +234,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Incident/Stimulus:ev_close+' => '',
'Class:Incident/Stimulus:ev_reopen' => '重新打开',
'Class:Incident/Stimulus:ev_reopen+' => '',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => '不能分配父级事件给自己',
'Class:Incident/Error:CannotAssignParentIncidentIdToSelf' => '无法分配父级事件给自己',
'Class:Incident/Method:ResolveChildTickets' => '解决子工单',
'Class:Incident/Method:ResolveChildTickets+' => '级联解决子Ticket(事件自动解决),调整以下内容保持一: 服务, 团队, 办理人, 解决方案',
'Class:Incident/Method:ResolveChildTickets+' => '递归解决子工单(自动解决),调整相关字段与父级工单保持一: 服务, 团队, 办理人, 解决方案',
'Tickets:Related:OpenIncidents' => '打开的事件',
));

View File

@@ -122,7 +122,6 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="document_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkDocumentToError</linked_class>
@@ -131,7 +130,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -24,7 +24,7 @@
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:KnownError' => 'Known Error',
'Class:KnownError+' => 'Dokumentierter Fehler für ein Issue',
'Class:KnownError+' => 'Dokumentierter Fehler für ein Problem',
'Class:KnownError/Attribute:name' => 'Name',
'Class:KnownError/Attribute:name+' => '',
'Class:KnownError/Attribute:org_id' => 'Kunde',
@@ -62,9 +62,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:KnownError/Attribute:version' => 'Version',
'Class:KnownError/Attribute:version+' => '',
'Class:KnownError/Attribute:ci_list' => 'CIs',
'Class:KnownError/Attribute:ci_list+' => 'All the configuration items that are related to this known error~~',
'Class:KnownError/Attribute:ci_list+' => 'Alle CIs, die mit diesem Known Error verknüpft sind',
'Class:KnownError/Attribute:document_list' => 'Dokumente',
'Class:KnownError/Attribute:document_list+' => 'All the documents linked to this known error~~',
'Class:KnownError/Attribute:document_list+' => 'Alle Dokumente, die mit diesem Known Error verknüpft sind',
));
//
@@ -74,7 +74,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkErrorToFunctionalCI' => 'Verknüpfung KnownError/FunctionalCI',
'Class:lnkErrorToFunctionalCI+' => '',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'CI',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'CI-Name',
@@ -94,7 +94,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToError' => 'Verknüpfung Dokumente/KnownError',
'Class:lnkDocumentToError+' => '',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s',
'Class:lnkDocumentToError/Attribute:document_id' => 'Dokument',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
'Class:lnkDocumentToError/Attribute:document_name' => 'Dokumentname',
@@ -112,9 +112,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ProblemManagement+' => 'Problem Management',
'Menu:Problem:Shortcuts' => 'Shortcuts',
'Menu:NewError' => 'Neuer Known Error',
'Menu:NewError+' => '',
'Menu:NewError+' => 'Neuen Known Error dokumentieren',
'Menu:SearchError' => 'Nach Known Error suchen',
'Menu:SearchError+' => '',
'Menu:SearchError+' => 'Nach dokumentierten Fehlern suchen',
'Menu:Problem:KnownErrors' => 'Alle Known Errors',
'Menu:Problem:KnownErrors+' => 'Alle Known Errors',
));

View File

@@ -74,7 +74,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkErrorToFunctionalCI' => 'Lien Erreur / CI',
'Class:lnkErrorToFunctionalCI+' => 'Lien entre une erreur et un ci',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkErrorToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id' => 'CI',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_id+' => '',
'Class:lnkErrorToFunctionalCI/Attribute:functionalci_name' => 'Nom CI',
@@ -94,7 +94,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToError' => 'Lien Documents / Errors',
'Class:lnkDocumentToError+' => 'Lien entre un document et une erreur',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToError/Name' => '%1$s / %2$s',
'Class:lnkDocumentToError/Attribute:document_id' => 'Document',
'Class:lnkDocumentToError/Attribute:document_id+' => '',
'Class:lnkDocumentToError/Attribute:document_name' => 'Nom Document',

View File

@@ -112,8 +112,6 @@
<ext_key_to_me>oauth_client_id</ext_key_to_me>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods>

View File

@@ -9,20 +9,20 @@ Dict::Add('DE DE', 'German', 'Deutsch', [
'Menu:CreateMailbox' => 'Mailpostfach erstellen...',
'Menu:OAuthClient' => 'OAuth-Client',
'Menu:OAuthClient+' => '',
'Menu:GenerateTokens' => 'Zugriffs-Token generieren...',
'Menu:RegenerateTokens' => 'Zugriffs-Token neu generieren...',
'Menu:GenerateTokens' => 'Zugriffstoken generieren...',
'Menu:RegenerateTokens' => 'Zugriffstoken neu generieren...',
'itop-oauth-client/Operation:CreateMailBox/Title' => 'Mailpostfach-Erstellung',
'itop-oauth-client:UsedForSMTP' => 'Dieser OAuth-Client wird für SMTP verwendet',
'itop-oauth-client:TestSMTP' => 'Mail-Versand testen',
'itop-oauth-client:MissingOAuthClient' => 'Fehlender OAuth-Client für den Benutzernamen %1$s',
'itop-oauth-client:Message:MissingToken' => 'Bitte Zugriffs-Token generieren bevor der OAuth-Client verwendet wird',
'itop-oauth-client:Message:RegenerateToken' => 'Regenerate access token to to take into account the changes~~',
'itop-oauth-client:Message:TokenCreated' => 'Zugriffs-Token erstellt',
'itop-oauth-client:Message:TokenRecreated' => 'Zugriffs-Token neu erstellt',
'itop-oauth-client:Message:TokenError' => 'Access token not generated due to server error~~',
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'The combination Login (%1$s) and Use for SMTP (%2$s) has already be used for OAuth Client~~',
'OAuthClient:baseinfo' => 'Base Information~~',
'OAuthClient:scope' => 'Scope~~',
'itop-oauth-client:Message:MissingToken' => 'Bitte Zugriffstoken generieren bevor der OAuth-Client verwendet wird',
'itop-oauth-client:Message:RegenerateToken' => 'Generieren Sie das Zugriffstoken neu, um die Änderungen zu berücksichtigen',
'itop-oauth-client:Message:TokenCreated' => 'Zugriffstoken erstellt',
'itop-oauth-client:Message:TokenRecreated' => 'Zugriffstoken neu erstellt',
'itop-oauth-client:Message:TokenError' => 'Das Zugriffstoken wurde aufgrund eines Serverfehlers nicht generiert.',
'OAuthClient:Name/UseForSMTPMustBeUnique' => 'Die Kombination aus "Login" (%1$s) und "Verwendung für SMTP" (%2$s) existiert bereits.',
'OAuthClient:baseinfo' => 'Allgemeine Informationen',
'OAuthClient:scope' => 'Scope',
]);
//
@@ -37,26 +37,30 @@ Dict::Add('DE DE', 'German', 'Deutsch', [
'Class:OAuthClient/Attribute:name+' => '',
'Class:OAuthClient/Attribute:scope' => 'Scope',
'Class:OAuthClient/Attribute:scope+' => '',
'Class:OAuthClient/Attribute:status' => 'Status~~',
'Class:OAuthClient/Attribute:status+' => 'After creation, use the action “Generate access token” to be able to use this OAuth client~~',
'Class:OAuthClient/Attribute:status/Value:active' => 'Access token generated~~',
'Class:OAuthClient/Attribute:status/Value:inactive' => 'No Access token~~',
'Class:OAuthClient/Attribute:status' => 'Status',
'Class:OAuthClient/Attribute:status+' => 'Führen Sie nach der Objekterstellung die Aktion "Zugriffstoken generieren..." aus, um diesen oAuth-Client zu aktivieren.',
'Class:OAuthClient/Attribute:status/Value:active' => 'Zugriffstoken erstellt',
'Class:OAuthClient/Attribute:status/Value:inactive' => 'Kein Zugriffstoken',
'Class:OAuthClient/Attribute:description' => 'Beschreibung',
'Class:OAuthClient/Attribute:description+' => '',
'Class:OAuthClient/Attribute:client_id' => 'Client ID',
'Class:OAuthClient/Attribute:client_id+' => '',
'Class:OAuthClient/Attribute:client_id+' => 'Eine lange Zeichenfolge, die durch den oAuth2-Provider bereitgestellt wird',
'Class:OAuthClient/Attribute:client_secret' => 'Client Secret',
'Class:OAuthClient/Attribute:client_secret+' => '',
'Class:OAuthClient/Attribute:client_secret+' => 'Eine weitere lange Zeichenfolge, die durch den oAuth2-Provider bereitgestellt wird',
'Class:OAuthClient/Attribute:refresh_token' => 'Erneuerungs-Token',
'Class:OAuthClient/Attribute:refresh_token+' => '',
'Class:OAuthClient/Attribute:refresh_token_expiration' => 'Erneuerungs-Token Ablaufzeitpunkt',
'Class:OAuthClient/Attribute:refresh_token_expiration+' => '',
'Class:OAuthClient/Attribute:token' => 'Zugriffs-Token',
'Class:OAuthClient/Attribute:token' => 'Zugriffstoken',
'Class:OAuthClient/Attribute:token+' => '',
'Class:OAuthClient/Attribute:token_expiration' => 'Zugriffs-Token Ablaufszeitpunkt',
'Class:OAuthClient/Attribute:token_expiration' => 'Zugriffstoken Ablaufszeitpunkt',
'Class:OAuthClient/Attribute:token_expiration+' => '',
'Class:OAuthClient/Attribute:redirect_url' => 'Umleitungs-URL',
'Class:OAuthClient/Attribute:redirect_url+' => '',
'Class:OAuthClient/Attribute:redirect_url+' => <<<EOF
Diese URL muss in die oAuth2-Konfiguration des Providers kopiert werden.
Löschen Sie das Feld, um den Standardwert neu zu berechnen.
EOF
,
'Class:OAuthClient/Attribute:mailbox_list' => 'Mailpostfächer',
'Class:OAuthClient/Attribute:mailbox_list+' => ''
]);
@@ -68,24 +72,24 @@ Dict::Add('DE DE', 'German', 'Deutsch', [
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:OAuthClientAzure' => 'OAuth-Client für Microsoft Azure',
'Class:OAuthClientAzure/Name' => '%1$s (%2$s)',
'Class:OAuthClientAzure/Attribute:scope' => 'Scope~~',
'Class:OAuthClientAzure/Attribute:scope+' => 'Usually default selection is appropriate~~',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP' => 'SMTP~~',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP+' => '~~',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP~~',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Advanced scope~~',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
'Class:OAuthClientAzure/Attribute:used_scope' => 'Used scope~~',
'Class:OAuthClientAzure/Attribute:used_scope+' => '~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => 'Simple~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple+' => '~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => 'Advanced~~',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => 'Used for SMTP~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => 'At least one OAuth client must have this flag to “Yes”, if you want iTop to use it for sending mails~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => 'Yes~~',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => 'No~~',
'Class:OAuthClientAzure/Attribute:scope' => 'Scope',
'Class:OAuthClientAzure/Attribute:scope+' => 'Normalerweise ist die Standardauswahl ausreichend.',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientAzure/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientAzure/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientAzure/Attribute:advanced_scope' => 'Erweiterter Scope',
'Class:OAuthClientAzure/Attribute:advanced_scope+' => 'Sobald Sie hier etwas eingeben, hat es Vorrang vor der Auswahl im Feld "Scope", die dann ignoriert wird.',
'Class:OAuthClientAzure/Attribute:used_scope' => 'Angewendeter Scope',
'Class:OAuthClientAzure/Attribute:used_scope+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple' => 'Einfach',
'Class:OAuthClientAzure/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced' => 'Erweitert',
'Class:OAuthClientAzure/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientAzure/Attribute:used_for_smtp' => 'Verwendung für SMTP',
'Class:OAuthClientAzure/Attribute:used_for_smtp+' => 'Mindestens ein oAuth-Client muss dieses Flag auf "Ja" gesetzt haben, um über diesen Weg Mails durch iTop senden zu lassen.',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:yes' => 'Ja',
'Class:OAuthClientAzure/Attribute:used_for_smtp/Value:no' => 'Nein',
));
//
@@ -95,22 +99,22 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:OAuthClientGoogle' => 'OAuth-Client für Google',
'Class:OAuthClientGoogle/Name' => '%1$s (%2$s)',
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope~~',
'Class:OAuthClientGoogle/Attribute:scope+' => 'Usually default selection is appropriate~~',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP' => 'SMTP~~',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP+' => '~~',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP~~',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '~~',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Advanced scope~~',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'As soon as you enter something here it takes precedence on the “Scope” selection which is then ignored~~',
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Used scope~~',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Simple~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => 'Advanced~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => 'Used for SMTP~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => 'At least one OAuth client must have this flag to “Yes”, if you want iTop to use it for sending mails~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => 'Yes~~',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => 'No~~',
'Class:OAuthClientGoogle/Attribute:scope' => 'Scope',
'Class:OAuthClientGoogle/Attribute:scope+' => 'Normalerweise ist die Standardauswahl ausreichend.',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP' => 'SMTP',
'Class:OAuthClientGoogle/Attribute:scope/Value:SMTP+' => '',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP' => 'IMAP',
'Class:OAuthClientGoogle/Attribute:scope/Value:IMAP+' => '',
'Class:OAuthClientGoogle/Attribute:advanced_scope' => 'Erweiterter Scope',
'Class:OAuthClientGoogle/Attribute:advanced_scope+' => 'Sobald Sie hier etwas eingeben, hat es Vorrang vor der Auswahl im Feld "Scope", die dann ignoriert wird.',
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Angewendeter Scope',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Einfach',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => 'Erweitert',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => 'Verwendung für SMTP',
'Class:OAuthClientGoogle/Attribute:used_for_smtp+' => 'Mindestens ein oAuth-Client muss dieses Flag auf "Ja" gesetzt haben, um über diesen Weg Mails durch iTop senden zu lassen.',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:yes' => 'Ja',
'Class:OAuthClientGoogle/Attribute:used_for_smtp/Value:no' => 'Nein',
));

View File

@@ -109,7 +109,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
'Class:OAuthClientGoogle/Attribute:used_scope' => 'Niveaux d\'accès utilisés',
'Class:OAuthClientGoogle/Attribute:used_scope+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple' => 'Simple',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '~~',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:simple+' => '',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced' => 'Avancé',
'Class:OAuthClientGoogle/Attribute:used_scope/Value:advanced+' => '',
'Class:OAuthClientGoogle/Attribute:used_for_smtp' => 'Utilisé pour SMTP',

View File

@@ -36,17 +36,17 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Error:HTTP:400' => '请求错误',
'Error:HTTP:401' => '认证错误',
'Error:HTTP:404' => '页面找不到',
'Error:HTTP:500' => 'Oops! 发生了一个错误.',
'Error:HTTP:500' => 'Oops! 发生了错误.',
'Error:HTTP:GetHelp' => '如果问题仍然存在,请联系管理员.',
'Error:XHR:Fail' => '无法加载数据, 请联系管理员',
'Portal:ErrorUserLoggedOut' => '您已退出,请重新登录.',
'Portal:Datatables:Language:Processing' => '请稍后...',
'Portal:Datatables:Language:Search' => '过滤器:',
'Portal:Datatables:Language:Search' => '筛选器:',
'Portal:Datatables:Language:LengthMenu' => '每页显示 _MENU_ 项',
'Portal:Datatables:Language:ZeroRecords' => '没有结果',
'Portal:Datatables:Language:Info' => '第 _PAGE_ 页,共 _PAGES_ 页',
'Portal:Datatables:Language:InfoEmpty' => '没有信息',
'Portal:Datatables:Language:InfoFiltered' => '最多过滤 _MAX_ 项',
'Portal:Datatables:Language:InfoFiltered' => '最多筛选 _MAX_ 项',
'Portal:Datatables:Language:EmptyTable' => '表格中没有数据',
'Portal:Datatables:Language:DisplayLength:All' => '全部',
'Portal:Datatables:Language:Paginate:First' => '首页',

View File

@@ -87,6 +87,12 @@ $(function()
// Submit event from the form should be treated as a click on the submit button
// as it processes things before sending the request
this.element.on('submit', function(oEvent) {
// N°6500 Abort if event doesn't come from this form
// eg. Extensions like "approval-base" add a sub (HTML) form in the buttons sections of this (conceptual) form, which can cause the submit of that sub form to be catched here first and therefore go to unexpected behavior.
if (oEvent.target !== oEvent.currentTarget) {
return;
}
me._onSubmitClick(oEvent);
});
},

View File

@@ -783,7 +783,7 @@ class ObjectFormManager extends FormManager
{
// Note: We can't do this in AttributeExternalKey::MakeFormField() in the Field::SetOnFinalizeCallback() because at this point we have no information about the portal scope and ignore_silos flag, hence it always applies silos.
// As a workaround we have to manually check if the field's current value is among the scope
$oField->VerifyCurrentValue();
$oField->ResetCurrentValueIfNotAmongAllowedValues();
}
// - Field that require processing on their subfields
if (in_array(get_class($oField), array('Combodo\\iTop\\Form\\Field\\SubFormField')))
@@ -820,7 +820,7 @@ class ObjectFormManager extends FormManager
if (in_array(get_class($oCustomField), array('Combodo\\iTop\\Form\\Field\\SelectObjectField')))
{
/** @var \Combodo\iTop\Form\Field\SelectObjectField $oCustomField */
$oCustomField->VerifyCurrentValue();
$oCustomField->ResetCurrentValueIfNotAmongAllowedValues();
}
}
}

View File

@@ -34,7 +34,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Brick:Portal:NewRequest:Title' => '新建工单',
'Brick:Portal:NewRequest:Title+' => '<p>需要帮助?</p><p>选择子服务,然后提交工单给我们的支持团队.</p>',
'Brick:Portal:OngoingRequests:Title' => '正在处理的工单',
'Brick:Portal:OngoingRequests:Title+' => '<p>跟踪正在处理的工单.</p><p>查询进度, 添加留言, 添加附件, 确认解决方案.</p>',
'Brick:Portal:OngoingRequests:Title+' => '<p>跟踪正在处理的工单.</p><p>查询进度, 添加评论, 添加附件, 确认解决方案.</p>',
'Brick:Portal:OngoingRequests:Tab:OnGoing' => '正在处理',
'Brick:Portal:OngoingRequests:Tab:Resolved' => '已解决',
'Brick:Portal:ClosedRequests:Title' => '已关闭的工单',

View File

@@ -215,8 +215,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_request_list" xsi:type="AttributeLinkedSet">
<linked_class>UserRequest</linked_class>
@@ -224,8 +222,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="related_incident_list" xsi:type="AttributeLinkedSet">
<linked_class>Incident</linked_class>
@@ -233,8 +229,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<lifecycle>

View File

@@ -24,16 +24,16 @@
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ProblemManagement' => 'Problem Management',
'Menu:ProblemManagement+' => 'Problem Management',
'Menu:ProblemManagement+' => '',
'Menu:Problem:Overview' => 'Übersicht',
'Menu:Problem:Overview+' => 'Übersicht',
'Menu:Problem:Overview+' => '',
'Menu:NewProblem' => 'Neues Problem',
'Menu:NewProblem+' => 'Neues Problem',
'Menu:NewProblem+' => '',
'Menu:SearchProblems' => 'Nach Problemen suchen',
'Menu:SearchProblems+' => 'Nach Problemen suchen',
'Menu:SearchProblems+' => '',
'Menu:Problem:Shortcuts' => 'Shortcuts',
'Menu:Problem:MyProblems' => 'Meine Probleme',
'Menu:Problem:MyProblems+' => 'Meine Probleme',
'Menu:Problem:MyProblems+' => '',
'Menu:Problem:OpenProblems' => 'Alle offenen Probleme',
'Menu:Problem:OpenProblems+' => 'Alle offenen (noch nicht geschlossenen) Probleme',
'UI-ProblemManagementOverview-ProblemByService' => 'Probleme nach Service',
@@ -110,11 +110,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Problem/Attribute:resolution_date' => 'Datum der Lösung',
'Class:Problem/Attribute:resolution_date+' => '',
'Class:Problem/Attribute:knownerrors_list' => 'Bekannte Fehler',
'Class:Problem/Attribute:knownerrors_list+' => 'All the known errors that are linked to this problem~~',
'Class:Problem/Attribute:knownerrors_list+' => 'Alle bekannten Fehler verknüpft mit diesem Problem',
'Class:Problem/Attribute:related_request_list' => 'Verwandte Requests',
'Class:Problem/Attribute:related_request_list+' => 'All the requests that are related to this problem~~',
'Class:Problem/Attribute:related_request_list+' => 'Alle Benutzeranfragen verknüpft mit diesem Problem',
'Class:Problem/Attribute:related_incident_list' => 'Verknüpfte Incidents',
'Class:Problem/Attribute:related_incident_list+' => 'Alle Incidents, die mit diesem Problem verknüpft sind',
'Class:Problem/Attribute:related_incident_list+' => 'Alle Incidents verknüpft mit diesem Problem',
'Class:Problem/Stimulus:ev_assign' => 'Zuweisen',
'Class:Problem/Stimulus:ev_assign+' => '',
'Class:Problem/Stimulus:ev_reassign' => 'Neu zuweisen',

View File

@@ -519,8 +519,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="public_log" xsi:type="AttributeCaseLog">
<sql>public_log</sql>

View File

@@ -8,27 +8,27 @@
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:RequestManagement' => 'Helpdesk',
'Menu:RequestManagement+' => '',
'Menu:RequestManagement+' => 'Verwaltung von Benutzeranfragen',
'Menu:RequestManagementProvider' => 'Helpdesk-Provider',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => 'Offene Benutzeranfragen beim Provider',
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => 'Übersicht',
'Menu:UserRequest:Overview+' => '',
'Menu:UserRequest:Overview+' => 'Übersicht über Benutzeranfragen',
'Menu:NewUserRequest' => 'Neue Benutzeranfrage',
'Menu:NewUserRequest+' => '',
'Menu:NewUserRequest+' => 'Neue Benutzeranfrage erstellen',
'Menu:SearchUserRequests' => 'Nach Benutzeranfrage suchen',
'Menu:SearchUserRequests+' => '',
'Menu:SearchUserRequests+' => 'Nach bestehenden Benutzeranfragen suchen',
'Menu:UserRequest:Shortcuts' => 'Shortcuts',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => 'Mir zugewiesene Benutzeranfragen',
'Menu:UserRequest:MyRequests+' => '',
'Menu:UserRequest:MySupportRequests' => 'Von mir gestellte Anfragen',
'Menu:UserRequest:MySupportRequests+' => '',
'Menu:UserRequest:MySupportRequests+' => 'Benutzeranfragen die ich gemeldet habe',
'Menu:UserRequest:EscalatedRequests' => 'Eskalierte Benutzeranfragen',
'Menu:UserRequest:EscalatedRequests+' => '',
'Menu:UserRequest:EscalatedRequests+' => 'Eskalierte Benutzeranfragen',
'Menu:UserRequest:OpenRequests' => 'Alle offenen Benutzeranfragen',
'Menu:UserRequest:OpenRequests+' => '',
'Menu:UserRequest:OpenRequests+' => 'Alle offenen Benutzeranfragen',
'UI:WelcomeMenu:MyAssignedCalls' => 'Mir zugewiesene Benutzeranfragen',
'UI-RequestManagementOverview-RequestByType-last-14-days' => 'Benutzeranfragen der letzten 14 Tage nach Typ',
'UI-RequestManagementOverview-Last-14-days' => 'Anzahl Benutzeranfragen der letzten 14 Tage',
@@ -37,7 +37,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'UI-RequestManagementOverview-OpenRequestByType' => 'Offene Benutzeranfragen nach Typ',
'UI-RequestManagementOverview-OpenRequestByCustomer' => 'Offene Benutzeranfragen nach Kunde',
'Class:UserRequest:KnownErrorList' => 'Known Errors',
'Class:UserRequest:KnownErrorList+' => 'Known Errors related to Functional CI linked to the current ticket~~',
'Class:UserRequest:KnownErrorList+' => 'Dokumentiere Fehler im Zusammenhang mit CIs, die mit dem aktuellen Ticket verknüpft sind',
));
// Dictionnay conventions
@@ -84,7 +84,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:request_type/Value:service_request' => 'Service-Request',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '',
'Class:UserRequest/Attribute:impact' => 'Auswirkung',
'Class:UserRequest/Attribute:impact+' => '',
'Class:UserRequest/Attribute:impact+' => 'Die Auswirkung gibt die Schwere des Vorfalls an, oft geschätzt durch die Anzahl der Betroffenen',
'Class:UserRequest/Attribute:impact/Value:1' => 'Eine Abteilung',
'Class:UserRequest/Attribute:impact/Value:1+' => '',
'Class:UserRequest/Attribute:impact/Value:2' => 'Ein Service',
@@ -102,7 +102,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:priority/Value:4' => 'Niedrig',
'Class:UserRequest/Attribute:priority/Value:4+' => '',
'Class:UserRequest/Attribute:urgency' => 'Dringlichkeit',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency+' => 'Wie schnell der Vorfall behandelt werden muss',
'Class:UserRequest/Attribute:urgency/Value:1' => 'Kritisch',
'Class:UserRequest/Attribute:urgency/Value:1+' => '',
'Class:UserRequest/Attribute:urgency/Value:2' => 'Hoch',
@@ -113,18 +113,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:urgency/Value:4+' => '',
'Class:UserRequest/Attribute:origin' => 'Herkunft',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:in_person' => 'In-person~~',
'Class:UserRequest/Attribute:origin/Value:in_person+' => 'Request created following a face-to-face discussion~~',
'Class:UserRequest/Attribute:origin/Value:chat' => 'Chat~~',
'Class:UserRequest/Attribute:origin/Value:chat+' => 'Request created following a chat discussion~~',
'Class:UserRequest/Attribute:origin/Value:in_person' => 'Persönlich',
'Class:UserRequest/Attribute:origin/Value:in_person+' => 'Benutzeranfrage auf Basis einer Diskussion im direkten Gespräch',
'Class:UserRequest/Attribute:origin/Value:chat' => 'Chat',
'Class:UserRequest/Attribute:origin/Value:chat+' => 'Benutzeranfrage auf Basis einer Diskussion in einem Chat',
'Class:UserRequest/Attribute:origin/Value:mail' => 'Mail',
'Class:UserRequest/Attribute:origin/Value:mail+' => '',
'Class:UserRequest/Attribute:origin/Value:mail+' => 'Benutzeranfrage auf Basis einer empfangenen Mail',
'Class:UserRequest/Attribute:origin/Value:monitoring' => 'Monitoring',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => 'Benutzeranfrage auf Basis eines Monitoring-Events',
'Class:UserRequest/Attribute:origin/Value:phone' => 'Telefon',
'Class:UserRequest/Attribute:origin/Value:phone+' => '',
'Class:UserRequest/Attribute:origin/Value:phone+' => 'Benutzeranfrage auf Basis eines Telefonanrufs',
'Class:UserRequest/Attribute:origin/Value:portal' => 'Portal',
'Class:UserRequest/Attribute:origin/Value:portal+' => '',
'Class:UserRequest/Attribute:origin/Value:portal+' => 'Benutzeranfrage, die über das Portal erstellt wurde',
'Class:UserRequest/Attribute:approver_id' => 'Genehmiger',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:approver_email' => 'Gemehhmiger-E-Mail',
@@ -172,7 +172,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:time_spent' => 'Lösungsdauer',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:resolution_code' => 'Lösungs-Code',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code+' => 'Was wurde unternommen, um die Anfrage zu lösen?',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => 'Unterstützung',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'Bugfix',
@@ -208,7 +208,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:parent_incident_ref' => 'Parent-Incident-Referenz',
'Class:UserRequest/Attribute:parent_incident_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => 'Abgeleitete Requests',
'Class:UserRequest/Attribute:related_request_list+' => 'All the requests that are linked to this parent request~~',
'Class:UserRequest/Attribute:related_request_list+' => 'Alle abgeleitete Anfragen, die mit dieser Benutzeranfrage verknüpft sind',
'Class:UserRequest/Attribute:public_log' => 'Öffentliches Log',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:user_satisfaction' => 'Benutzerzufriedenheit',
@@ -223,7 +223,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
'Class:UserRequest/Attribute:user_comment' => 'Benutzer-Kommentar',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'Parent-Benutzeranfrage-Id-Friendly Name',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'Parent-Benutzeranfrage-Anzeigename',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => 'Zuweisen',
'Class:UserRequest/Stimulus:ev_assign+' => '',

View File

@@ -205,7 +205,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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:related_request_list+' => '此父级需求相关的所有衍生需求',
'Class:UserRequest/Attribute:public_log' => '评论',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:user_satisfaction' => '用户满意度',
@@ -218,7 +218,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:UserRequest/Attribute:user_satisfaction/Value:3+' => '不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:4' => '非常不满意',
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '非常不满意',
'Class:UserRequest/Attribute:user_comment' => '用户留言',
'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+' => '',
@@ -246,9 +246,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:UserRequest/Stimulus:ev_reopen+' => '',
'Class:UserRequest/Stimulus:ev_wait_for_approval' => '等待批准',
'Class:UserRequest/Stimulus:ev_wait_for_approval+' => '',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '无法分配父级需求到本身',
'Class:UserRequest/Error:CannotAssignParentRequestIdToSelf' => '无法分配父级需求给自己',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '将此解决方案直接挪给子需求(自动解决), 包括下列字段: 服务, 团队, 办理人, 解决方案信息',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单(自动解决),并调整相关字段与父级工单保持一致: 服务, 团队, 办理人, 解决方案信息',
));

View File

@@ -546,8 +546,6 @@
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="public_log" xsi:type="AttributeCaseLog">
<sql>public_log</sql>

View File

@@ -8,27 +8,27 @@
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:RequestManagement' => 'Helpdesk',
'Menu:RequestManagement+' => '',
'Menu:RequestManagement+' => 'Verwaltung von Nutzeranfragen und Störungsmeldungen',
'Menu:RequestManagementProvider' => 'Helpdesk-Provider',
'Menu:RequestManagementProvider+' => '',
'Menu:UserRequest:Provider' => 'Offene Benutzeranfragen beim Provider',
'Menu:UserRequest:Provider+' => '',
'Menu:UserRequest:Overview' => 'Übersicht',
'Menu:UserRequest:Overview+' => '',
'Menu:UserRequest:Overview+' => 'Übersicht über Benutzeranfragen',
'Menu:NewUserRequest' => 'Neue Benutzeranfrage',
'Menu:NewUserRequest+' => '',
'Menu:NewUserRequest+' => 'Neue Benutzeranfrage erstellen',
'Menu:SearchUserRequests' => 'Nach Benutzeranfrage suchen',
'Menu:SearchUserRequests+' => '',
'Menu:SearchUserRequests+' => 'Nach bestehenden Benutzeranfragen suchen',
'Menu:UserRequest:Shortcuts' => 'Shortcuts',
'Menu:UserRequest:Shortcuts+' => '',
'Menu:UserRequest:MyRequests' => 'Mir zugewiesene Benutzeranfragen',
'Menu:UserRequest:MyRequests+' => '',
'Menu:UserRequest:MySupportRequests' => 'Von mir gestellte Anfragen',
'Menu:UserRequest:MySupportRequests+' => '',
'Menu:UserRequest:MySupportRequests+' => 'Benutzeranfragen die ich gemeldet habe',
'Menu:UserRequest:EscalatedRequests' => 'Eskalierte Benutzeranfragen',
'Menu:UserRequest:EscalatedRequests+' => '',
'Menu:UserRequest:EscalatedRequests+' => 'Eskalierte Benutzeranfragen',
'Menu:UserRequest:OpenRequests' => 'Alle offenen Benutzeranfragen',
'Menu:UserRequest:OpenRequests+' => '',
'Menu:UserRequest:OpenRequests+' => 'Alle offenen Benutzeranfragen',
'UI:WelcomeMenu:MyAssignedCalls' => 'Mir zugewiesene Benutzeranfragen',
'UI-RequestManagementOverview-RequestByType-last-14-days' => 'Benutzeranfragen der letzten 14 Tage nach Typ',
'UI-RequestManagementOverview-Last-14-days' => 'Benutzeranfragen der letzten 14 Tage nach Tag',
@@ -37,7 +37,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'UI-RequestManagementOverview-OpenRequestByType' => 'Offene Benutzeranfragen nach Typ',
'UI-RequestManagementOverview-OpenRequestByCustomer' => 'Offene Benutzeranfragen nach Organisation',
'Class:UserRequest:KnownErrorList' => 'Known Errors',
'Class:UserRequest:KnownErrorList+' => 'Known Errors related to Functional CI linked to the current ticket~~',
'Class:UserRequest:KnownErrorList+' => 'Dokumentiere Fehler im Zusammenhang mit CIs, die mit dem aktuellen Ticket verknüpft sind',
'Menu:UserRequest:MyWorkOrders' => 'Mir zugeordnete Arbeitsaufträge',
'Menu:UserRequest:MyWorkOrders+' => '',
'Class:Problem:KnownProblemList' => 'Bekannte Problems',
@@ -90,7 +90,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:request_type/Value:service_request' => 'Service-Request',
'Class:UserRequest/Attribute:request_type/Value:service_request+' => '',
'Class:UserRequest/Attribute:impact' => 'Auswirkung',
'Class:UserRequest/Attribute:impact+' => '',
'Class:UserRequest/Attribute:impact+' => 'Die Auswirkung gibt die Schwere des Vorfalls an, oft geschätzt durch die Anzahl der Betroffenen',
'Class:UserRequest/Attribute:impact/Value:1' => 'Eine Abteilung',
'Class:UserRequest/Attribute:impact/Value:1+' => '',
'Class:UserRequest/Attribute:impact/Value:2' => 'Ein Service',
@@ -108,7 +108,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:priority/Value:4' => 'Niedrig',
'Class:UserRequest/Attribute:priority/Value:4+' => '',
'Class:UserRequest/Attribute:urgency' => 'Dringlichkeit',
'Class:UserRequest/Attribute:urgency+' => '',
'Class:UserRequest/Attribute:urgency+' => 'Wie schnell der Vorfall behandelt werden muss',
'Class:UserRequest/Attribute:urgency/Value:1' => 'Kritisch',
'Class:UserRequest/Attribute:urgency/Value:1+' => '',
'Class:UserRequest/Attribute:urgency/Value:2' => 'Hoch',
@@ -119,18 +119,18 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:urgency/Value:4+' => '',
'Class:UserRequest/Attribute:origin' => 'Herkunft',
'Class:UserRequest/Attribute:origin+' => '',
'Class:UserRequest/Attribute:origin/Value:in_person' => 'In-person~~',
'Class:UserRequest/Attribute:origin/Value:in_person+' => 'Request created following a face-to-face discussion~~',
'Class:UserRequest/Attribute:origin/Value:chat' => 'Chat~~',
'Class:UserRequest/Attribute:origin/Value:chat+' => 'Request created following a chat discussion~~',
'Class:UserRequest/Attribute:origin/Value:in_person' => 'Persönlich',
'Class:UserRequest/Attribute:origin/Value:in_person+' => 'Benutzeranfrage auf Basis einer Diskussion im direkten Gespräch',
'Class:UserRequest/Attribute:origin/Value:chat' => 'Chat',
'Class:UserRequest/Attribute:origin/Value:chat+' => 'Benutzeranfrage auf Basis einer Diskussion in einem Chat',
'Class:UserRequest/Attribute:origin/Value:mail' => 'Mail',
'Class:UserRequest/Attribute:origin/Value:mail+' => '',
'Class:UserRequest/Attribute:origin/Value:mail+' => 'Benutzeranfrage auf Basis einer empfangenen Mail',
'Class:UserRequest/Attribute:origin/Value:monitoring' => 'Monitoring',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => '',
'Class:UserRequest/Attribute:origin/Value:monitoring+' => 'Benutzeranfrage auf Basis eines Monitoring-Events',
'Class:UserRequest/Attribute:origin/Value:phone' => 'Telefon',
'Class:UserRequest/Attribute:origin/Value:phone+' => '',
'Class:UserRequest/Attribute:origin/Value:phone+' => 'Benutzeranfrage auf Basis eines Telefonanrufs',
'Class:UserRequest/Attribute:origin/Value:portal' => 'Portal',
'Class:UserRequest/Attribute:origin/Value:portal+' => '',
'Class:UserRequest/Attribute:origin/Value:portal+' => 'Benutzeranfrage, die über das Portal erstellt wurde',
'Class:UserRequest/Attribute:approver_id' => 'Genehmiger',
'Class:UserRequest/Attribute:approver_id+' => '',
'Class:UserRequest/Attribute:approver_email' => 'Genehmiger-E-Mail',
@@ -178,7 +178,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:time_spent' => 'Lösungsdauer',
'Class:UserRequest/Attribute:time_spent+' => '',
'Class:UserRequest/Attribute:resolution_code' => 'Lösungs-Code',
'Class:UserRequest/Attribute:resolution_code+' => '',
'Class:UserRequest/Attribute:resolution_code+' => 'Was wurde unternommen, um die Anfrage zu lösen?',
'Class:UserRequest/Attribute:resolution_code/Value:assistance' => 'Unterstützung',
'Class:UserRequest/Attribute:resolution_code/Value:assistance+' => '',
'Class:UserRequest/Attribute:resolution_code/Value:bug fixed' => 'Bugfix',
@@ -210,7 +210,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:parent_change_ref' => 'Referenz Change',
'Class:UserRequest/Attribute:parent_change_ref+' => '',
'Class:UserRequest/Attribute:related_request_list' => 'Abgeleitete Requests',
'Class:UserRequest/Attribute:related_request_list+' => 'All the requests that are linked to this parent request~~',
'Class:UserRequest/Attribute:related_request_list+' => 'Alle abgeleitete Anfragen, die mit dieser Benutzeranfrage verknüpft sind',
'Class:UserRequest/Attribute:public_log' => 'Öffentliches Log',
'Class:UserRequest/Attribute:public_log+' => '',
'Class:UserRequest/Attribute:user_satisfaction' => 'Benutzerzufriedenheit',
@@ -225,7 +225,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:UserRequest/Attribute:user_satisfaction/Value:4+' => '',
'Class:UserRequest/Attribute:user_comment' => 'Benutzer-Kommentar',
'Class:UserRequest/Attribute:user_comment+' => '',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'Parent Request ID Friendly Name',
'Class:UserRequest/Attribute:parent_request_id_friendlyname' => 'Parent-Benutzeranfrage-Anzeigename',
'Class:UserRequest/Attribute:parent_request_id_friendlyname+' => '',
'Class:UserRequest/Stimulus:ev_assign' => 'Zuweisen',
'Class:UserRequest/Stimulus:ev_assign+' => '',

View File

@@ -276,7 +276,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Portal:LanguageChangedTo_Lang' => '语言更改为',
'Portal:ChooseYourFavoriteLanguage' => '选择您喜欢的语言',
'Class:UserRequest/Method:ResolveChildTickets' => '解决子工单',
'Class:UserRequest/Method:ResolveChildTickets+' => '级联解决子需求(需求自动解决),并使用以下需求的内容:服务,团队,办理人,解决方案',
'Class:UserRequest/Method:ResolveChildTickets+' => '递归解决子工单(自动解决),并调整相关字段与父级工单保持一致: 服务,团队,办理人,解决方案',
));

View File

@@ -100,7 +100,6 @@
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="documents_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContractToDocument</linked_class>
@@ -109,7 +108,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="description" xsi:type="AttributeText">
<sql>description</sql>
@@ -439,7 +437,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToFunctionalCI</linked_class>
@@ -448,7 +445,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="providercontracts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToProviderContract</linked_class>
@@ -457,7 +453,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>providercontract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -640,7 +635,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="sla" xsi:type="AttributeString">
<sql>sla</sql>
@@ -1067,8 +1061,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -1180,7 +1172,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContactToService</linked_class>
@@ -1189,7 +1180,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="status" xsi:type="AttributeEnum">
<sort_type>rank</sort_type>
@@ -1227,7 +1217,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>customercontract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="servicesubcategories_list" xsi:type="AttributeLinkedSet">
<linked_class>ServiceSubcategory</linked_class>
@@ -1236,8 +1225,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -1760,7 +1747,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>slt_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="customercontracts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkCustomerContractToService</linked_class>
@@ -1769,7 +1755,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>customercontract_id</ext_key_to_remote>
<duplicates>true</duplicates>
<read_only>false</read_only>
</field>
</fields>
<methods>
@@ -2506,7 +2491,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="customers_list" xsi:type="AttributeLinkedSet">
<linked_class>Organization</linked_class>
@@ -2515,8 +2499,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -23,34 +23,34 @@
*
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ServiceManagement' => 'Service-Management',
'Menu:ServiceManagement+' => '',
'Menu:ServiceManagement' => 'Service Management',
'Menu:ServiceManagement+' => 'Service-Management-Übersicht',
'Menu:Service:Overview' => 'Übersicht',
'Menu:Service:Overview+' => '',
'Menu:Service:Overview+' => 'Überblick über das Service-Management',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Verträge nach Service-Level',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Verträge nach Status',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Verträge, die in weniger als 30 Tagen auslaufen',
'Menu:ProviderContract' => 'Provider-Verträge',
'Menu:ProviderContract+' => '',
'Menu:CustomerContract' => 'Kunden-Verträge',
'Menu:CustomerContract+' => '',
'Menu:ServiceSubcategory' => 'Service-Unterkategorie',
'Menu:ServiceSubcategory+' => '',
'Menu:ProviderContract+' => 'Provider-Verträge',
'Menu:CustomerContract' => 'Kundenverträge',
'Menu:CustomerContract+' => 'Kundenverträge',
'Menu:ServiceSubcategory' => 'Service-Unterkategorien',
'Menu:ServiceSubcategory+' => 'Service-Unterkategorien',
'Menu:Service' => 'Services',
'Menu:Service+' => '',
'Menu:Service+' => 'Services',
'Menu:ServiceElement' => 'Service-Elemente',
'Menu:ServiceElement+' => '',
'Menu:ServiceElement+' => 'Service-Elemente',
'Menu:SLA' => 'SLAs',
'Menu:SLA+' => '',
'Menu:SLA+' => 'Service Level Agreements (SLAs)',
'Menu:SLT' => 'SLTs',
'Menu:SLT+' => '',
'Menu:SLT+' => 'Service Level Targets (SLTs)',
'Menu:DeliveryModel' => 'Delivery-Modelle',
'Menu:DeliveryModel+' => '',
'Menu:DeliveryModel+' => 'Delivery-Modelle',
'Menu:ServiceFamily' => 'Service-Familien',
'Menu:ServiceFamily+' => '',
'Contract:baseinfo' => 'General information~~',
'Contract:moreinfo' => 'Contractual information~~',
'Contract:cost' => 'Cost information~~',
'Menu:ServiceFamily+' => 'Service-Familien',
'Contract:baseinfo' => 'Allgemeine Informationen',
'Contract:moreinfo' => 'Vertragliche Informationen',
'Contract:cost' => 'Kosteninformation',
));
/*
@@ -99,9 +99,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Contract/Attribute:organization_name' => 'Organizations-Name',
'Class:Contract/Attribute:organization_name+' => '',
'Class:Contract/Attribute:contacts_list' => 'Kontakte',
'Class:Contract/Attribute:contacts_list+' => 'All the contacts for this customer contract~~',
'Class:Contract/Attribute:contacts_list+' => 'Alle Kontakte, die mit diesen Kundenvertrag verknüpft sind',
'Class:Contract/Attribute:documents_list' => 'Dokumente',
'Class:Contract/Attribute:documents_list+' => 'All the documents for this customer contract~~',
'Class:Contract/Attribute:documents_list+' => 'Alle Dokumente, die mit diesen Kundenvertrag verknüpft sind',
'Class:Contract/Attribute:description' => 'Beschreibung',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Startdatum',
@@ -148,11 +148,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:CustomerContract' => 'Kundenvertrag',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Services',
'Class:CustomerContract/Attribute:services_list+' => 'All the services purchased for this contract~~',
'Class:CustomerContract/Attribute:services_list+' => 'Alle für diesen Vertrag erworbenen Services',
'Class:CustomerContract/Attribute:functionalcis_list' => 'CIs',
'Class:CustomerContract/Attribute:functionalcis_list+' => 'All the configuration items covered by this contract~~',
'Class:CustomerContract/Attribute:functionalcis_list+' => 'Alle unter diesen Vertrag fallenden CIs',
'Class:CustomerContract/Attribute:providercontracts_list' => 'Provider-Verträge',
'Class:CustomerContract/Attribute:providercontracts_list+' => 'All the provider contracts to deliver the services for this contract (underpinning contract)~~',
'Class:CustomerContract/Attribute:providercontracts_list+' => 'Alle Provider-Verträge zur Erbringung der Dienstleistungen für diesen Vertrag (Underpinning Contracts)',
));
//
@@ -163,7 +163,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ProviderContract' => 'Provider-Vertrag',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'CIs',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'All the configuration items covered by this provider contract~~',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Alle CIs, die von diesem Provider-Vertrag abgedeckt werden',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => '',
'Class:ProviderContract/Attribute:coverage' => 'Servicezeiten',
@@ -177,7 +177,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToContract' => 'Verknüpfung Kontakt/Vertrag',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => 'Vertrag',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Vertragsname',
@@ -195,7 +195,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContractToDocument' => 'Verknüpfung Vertrag/Dokument',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Vertrag',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Vertragsname',
@@ -213,7 +213,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkFunctionalCIToProviderContract' => 'Verknüpfung FunctionalCI/Provider-Vertrag',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Provider-Vertrag',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => 'Provider-Vertrags-Name',
@@ -236,7 +236,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ServiceFamily/Attribute:icon' => 'Icon',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Services',
'Class:ServiceFamily/Attribute:services_list+' => 'All the services in this category~~',
'Class:ServiceFamily/Attribute:services_list+' => 'Alle Services dieser Kategorie',
));
//
@@ -246,7 +246,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service' => 'Service',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => 'Name',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Provider',
@@ -260,9 +260,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service/Attribute:servicefamily_name' => 'Service-Familien-Name',
'Class:Service/Attribute:servicefamily_name+' => '',
'Class:Service/Attribute:documents_list' => 'Dokumente',
'Class:Service/Attribute:documents_list+' => 'All the documents linked to the service~~',
'Class:Service/Attribute:documents_list+' => 'Alle mit dem Service verknüpften Dokumente',
'Class:Service/Attribute:contacts_list' => 'Kontakte',
'Class:Service/Attribute:contacts_list+' => 'All the contacts for this service~~',
'Class:Service/Attribute:contacts_list+' => 'Alle mit dem Service verknüpften Kontakte',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'Implementierung',
@@ -274,9 +274,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service/Attribute:icon' => 'Icon',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => 'Kunden-Verträge',
'Class:Service/Attribute:customercontracts_list+' => 'All the customer contracts that have purchased this service~~',
'Class:Service/Attribute:customercontracts_list+' => 'Alle Kundenverträge, die diesen Service erworben haben',
'Class:Service/Attribute:servicesubcategories_list' => 'Service-Unterkategorien',
'Class:Service/Attribute:servicesubcategories_list+' => 'All the sub categories for this service~~',
'Class:Service/Attribute:servicesubcategories_list+' => 'Alle Service-Unterkategorien für diesen Service',
));
//
@@ -286,7 +286,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToService' => 'Verknüpfung Dokument/Service',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => 'Service',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Service-Name',
@@ -304,7 +304,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToService' => 'Verknüpfung Kontakt/Service',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => 'Service',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Service-Name',
@@ -322,7 +322,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ServiceSubcategory' => 'Service-Unterkategorie',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => 'Name',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Beschreibung',
@@ -365,10 +365,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SLA/Attribute:organization_name' => 'Organisations-Name',
'Class:SLA/Attribute:organization_name+' => '',
'Class:SLA/Attribute:slts_list' => 'SLTs',
'Class:SLA/Attribute:slts_list+' => 'All the service level targets for this SLA~~',
'Class:SLA/Attribute:customercontracts_list' => 'Kunden-Verträge',
'Class:SLA/Attribute:customercontracts_list+' => 'All the customer contracts using this SLA~~',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Konnte Link zwischen Kundevertrag %1$s und Service %2$s nicht speichern: SLA existiert bereits',
'Class:SLA/Attribute:slts_list+' => 'Alle Service Level Tagrget für dieses SLA',
'Class:SLA/Attribute:customercontracts_list' => 'Kundenverträge',
'Class:SLA/Attribute:customercontracts_list+' => 'Alle Kundenverträge, die diese SLA verwenden',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Die Verknüpfung zwischen Kundenvertrag %1$s und Service %2$s konnte nicht gespeichert werden: SLA existiert bereits',
));
//
@@ -419,7 +419,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkSLAToSLT' => 'Verknüpfung SLA/SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA-Name',
@@ -447,7 +447,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkCustomerContractToService' => 'Verknüpfung Kundenvertrag/Service',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Kundenvertrag',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Kunden-Vertrags-Name',
@@ -469,7 +469,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkCustomerContractToProviderContract' => 'Verknüpfung Kunden-Vertrag/Provider-Vertrag',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => 'Kunden-Vertrag',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name' => 'Kundenvertrags-Name',
@@ -487,7 +487,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkCustomerContractToFunctionalCI' => 'Verknüpfung Kunden-Vertrag/FunctionalCI',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => 'Kunden-Vertrag',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name' => 'Kundenvertrags-Name',
@@ -514,9 +514,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DeliveryModel/Attribute:description' => 'Beschreibung',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakte',
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Alle Kontakte (Teams and Person) für dieses Delivery-Modell',
'Class:DeliveryModel/Attribute:customers_list' => 'Kunden',
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
'Class:DeliveryModel/Attribute:customers_list+' => 'Alle Kunden mit diesem Delivery-Modell',
));
//
@@ -526,7 +526,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDeliveryModelToContact' => 'Verknüpfung Delivery-Modell/Kontakt',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Delivery-Modell',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Delivery-Modell-Name',

View File

@@ -177,7 +177,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToContract' => 'Lien Contact / Contrat',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => 'Contrat',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Nom contrat',
@@ -195,7 +195,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContractToDocument' => 'Lien Contract / Document',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Contrat',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Nom contrat',
@@ -213,7 +213,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkFunctionalCIToProviderContract' => 'Lien CI / Contrat fournisseur',
'Class:lnkFunctionalCIToProviderContract+' => '',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkFunctionalCIToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id' => 'Contrat fournisseur',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_id+' => '',
'Class:lnkFunctionalCIToProviderContract/Attribute:providercontract_name' => 'Nom contrat fournisseur',
@@ -246,7 +246,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Service' => 'Service',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => 'Nom',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Fournisseur',
@@ -286,7 +286,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToService' => 'Lien Document / Service',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => 'Service',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Nom service',
@@ -304,7 +304,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToService' => 'Lien Contact / Service',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => 'Service',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Nom service',
@@ -322,7 +322,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:ServiceSubcategory' => 'Sous catégorie de service',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => 'Nom',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Description',
@@ -419,7 +419,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkSLAToSLT' => 'Lien SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'Nom SLA',
@@ -447,7 +447,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkCustomerContractToService' => 'Lien Contrat client / Service',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Contrat client',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Nom contrat client',
@@ -469,7 +469,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkCustomerContractToProviderContract' => 'Lien Contrat client / Contrat fournisseur',
'Class:lnkCustomerContractToProviderContract+' => '',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToProviderContract/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id' => 'Contrat client',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToProviderContract/Attribute:customercontract_name' => 'Contrat client',
@@ -487,7 +487,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkCustomerContractToFunctionalCI' => 'Lien Contrat client / CI',
'Class:lnkCustomerContractToFunctionalCI+' => '',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToFunctionalCI/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id' => 'Contrat client',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToFunctionalCI/Attribute:customercontract_name' => 'Contrat client',
@@ -526,7 +526,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDeliveryModelToContact' => 'Lien Modèle de support / Contact',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Modèle de support',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Nom Modèle de support',

View File

@@ -53,8 +53,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Menu:SLT+' => '服务等级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务',
'Menu:ServiceFamily+' => '服务',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Contract:baseinfo' => 'General information~~',
'Contract:moreinfo' => 'Contractual information~~',
'Contract:cost' => 'Cost information~~',
@@ -236,7 +236,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:ServiceFamily' => '服务',
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
@@ -262,9 +262,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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+' => '此服务相关的所有文档',

View File

@@ -100,7 +100,6 @@
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="documents_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContractToDocument</linked_class>
@@ -109,7 +108,6 @@
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="description" xsi:type="AttributeText">
<sql>description</sql>
@@ -439,7 +437,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -613,7 +610,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="sla" xsi:type="AttributeString">
<sql>sla</sql>
@@ -632,7 +628,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>service_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -1055,8 +1050,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -1168,7 +1161,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>document_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="contacts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkContactToService</linked_class>
@@ -1177,7 +1169,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="status" xsi:type="AttributeEnum">
<sort_type>rank</sort_type>
@@ -1215,7 +1206,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>customercontract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="providercontracts_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkProviderContractToService</linked_class>
@@ -1224,7 +1214,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>providercontract_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkFunctionalCIToService</linked_class>
@@ -1233,7 +1222,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="servicesubcategories_list" xsi:type="AttributeLinkedSet">
<linked_class>ServiceSubcategory</linked_class>
@@ -1242,8 +1230,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<duplicates/>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -1772,7 +1758,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>slt_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="customercontracts_list" xsi:type="AttributeLinkedSet">
<linked_class>lnkCustomerContractToService</linked_class>
@@ -1780,8 +1765,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_min>0</count_min>
<count_max>0</count_max>
<edit_mode>none</edit_mode>
<relation_type>link</relation_type>
<read_only>true</read_only>
</field>
</fields>
<methods/>
@@ -1949,7 +1932,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>sla_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -2442,7 +2424,6 @@ public function PrefillSearchForm(&$aContextParam)
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="customers_list" xsi:type="AttributeLinkedSet">
<linked_class>Organization</linked_class>
@@ -2450,8 +2431,6 @@ public function PrefillSearchForm(&$aContextParam)
<edit_mode>add_remove</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -24,12 +24,12 @@
*/
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ServiceManagement' => 'Service Management',
'Menu:ServiceManagement+' => 'Service Management-Übersicht',
'Menu:ServiceManagement+' => 'Service-Management-Übersicht',
'Menu:Service:Overview' => 'Übersicht',
'Menu:Service:Overview+' => '',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Verträge nach Service Level',
'Menu:Service:Overview+' => 'Überblick über das Service-Management',
'UI-ServiceManagementMenu-ContractsBySrvLevel' => 'Verträge nach Service-Level',
'UI-ServiceManagementMenu-ContractsByStatus' => 'Verträge nach Status',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Verträge, die in weniger als 30 Tagen enden',
'UI-ServiceManagementMenu-ContractsEndingIn30Days' => 'Verträge, die in weniger als 30 Tagen auslaufen',
'Menu:ProviderContract' => 'Provider-Verträge',
'Menu:ProviderContract+' => 'Provider-Verträge',
'Menu:CustomerContract' => 'Kundenverträge',
@@ -39,20 +39,20 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:Service' => 'Services',
'Menu:Service+' => 'Services',
'Menu:ServiceElement' => 'Service-Elemente',
'Menu:ServiceElement+' => '',
'Menu:ServiceElement+' => 'Service-Elemente',
'Menu:SLA' => 'SLAs',
'Menu:SLA+' => 'Service Level Agreements',
'Menu:SLA+' => 'Service Level Agreements (SLAs)',
'Menu:SLT' => 'SLTs',
'Menu:SLT+' => 'Service Level Targets',
'Menu:SLT+' => 'Service Level Targets (SLTs)',
'Menu:DeliveryModel' => 'Delivery-Modelle',
'Menu:DeliveryModel+' => '',
'Menu:DeliveryModel+' => 'Delivery-Modelle',
'Menu:ServiceFamily' => 'Service-Familien',
'Menu:ServiceFamily+' => '',
'Menu:ServiceFamily+' => 'Service-Familien',
'Menu:Procedure' => 'Verfahrens-Katalog',
'Menu:Procedure+' => '',
'Contract:baseinfo' => 'General information~~',
'Contract:moreinfo' => 'Contractual information~~',
'Contract:cost' => 'Cost information~~',
'Contract:baseinfo' => 'Allgemeine Informationen',
'Contract:moreinfo' => 'Vertragliche Informationen',
'Contract:cost' => 'Kosteninformation',
));
//
@@ -89,9 +89,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Contract/Attribute:organization_name' => 'Kunden-Name',
'Class:Contract/Attribute:organization_name+' => '',
'Class:Contract/Attribute:contacts_list' => 'Kontakte',
'Class:Contract/Attribute:contacts_list+' => 'All the contacts for this customer contract~~',
'Class:Contract/Attribute:contacts_list+' => 'Alle Kontakte für diesen Kundenvertrag',
'Class:Contract/Attribute:documents_list' => 'Dokumente',
'Class:Contract/Attribute:documents_list+' => 'All the documents for this customer contract~~',
'Class:Contract/Attribute:documents_list+' => 'Alle Dokumente für diesen Kundenvertrag',
'Class:Contract/Attribute:description' => 'Beschreibung',
'Class:Contract/Attribute:description+' => '',
'Class:Contract/Attribute:start_date' => 'Anfangsdatum',
@@ -127,7 +127,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Contract/Attribute:status/Value:production' => 'Produktion',
'Class:Contract/Attribute:status/Value:production+' => '',
'Class:Contract/Attribute:finalclass' => 'Typ',
'Class:Contract/Attribute:finalclass+' => '',
'Class:Contract/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
// Class: CustomerContract
@@ -137,7 +137,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:CustomerContract' => 'Kundenvertrag',
'Class:CustomerContract+' => '',
'Class:CustomerContract/Attribute:services_list' => 'Services',
'Class:CustomerContract/Attribute:services_list+' => 'All the services purchased for this contract~~',
'Class:CustomerContract/Attribute:services_list+' => 'Alle für diesen Vertrag erworbenen Services',
));
//
@@ -148,7 +148,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ProviderContract' => 'Provider-Vertrag',
'Class:ProviderContract+' => '',
'Class:ProviderContract/Attribute:functionalcis_list' => 'CIs',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'All the configuration items covered by this provider contract~~',
'Class:ProviderContract/Attribute:functionalcis_list+' => 'Alle CIs, die von diesem Provider-Vertrag abgedeckt werden',
'Class:ProviderContract/Attribute:sla' => 'SLA',
'Class:ProviderContract/Attribute:sla+' => 'Service Level Agreement',
'Class:ProviderContract/Attribute:coverage' => 'Abdeckung',
@@ -166,7 +166,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToContract' => 'Verknüpfung Kontakt/Vertrag',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => 'Vertrag',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Vertrags-Name',
@@ -184,7 +184,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContractToDocument' => 'Verknüpfung Vertrag/Dokument',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Vertrag',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Vertrags-Name',
@@ -207,7 +207,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ServiceFamily/Attribute:icon' => 'Icon',
'Class:ServiceFamily/Attribute:icon+' => '',
'Class:ServiceFamily/Attribute:services_list' => 'Services',
'Class:ServiceFamily/Attribute:services_list+' => 'All the services in this category~~',
'Class:ServiceFamily/Attribute:services_list+' => 'Alle Services dieser Kategorie',
));
//
@@ -217,7 +217,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service' => 'Service',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => 'Name',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Anbieter',
@@ -231,9 +231,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service/Attribute:description' => 'Beschreibung',
'Class:Service/Attribute:description+' => '',
'Class:Service/Attribute:documents_list' => 'Dokumente',
'Class:Service/Attribute:documents_list+' => 'All the documents linked to the service~~',
'Class:Service/Attribute:documents_list+' => 'Alle mit dem Service verknüpften Dokumente~',
'Class:Service/Attribute:contacts_list' => 'Kontakte',
'Class:Service/Attribute:contacts_list+' => 'All the contacts for this service~~',
'Class:Service/Attribute:contacts_list+' => 'Alle mit dem Service verknüpften Kontakte',
'Class:Service/Attribute:status' => 'Status',
'Class:Service/Attribute:status+' => '',
'Class:Service/Attribute:status/Value:implementation' => 'Implementation',
@@ -244,14 +244,14 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Service/Attribute:status/Value:production+' => '',
'Class:Service/Attribute:icon' => 'Icon',
'Class:Service/Attribute:icon+' => '',
'Class:Service/Attribute:customercontracts_list' => 'Kunden-Verträge',
'Class:Service/Attribute:customercontracts_list+' => 'All the customer contracts that have purchased this service~~',
'Class:Service/Attribute:customercontracts_list' => 'Kundenverträge',
'Class:Service/Attribute:customercontracts_list+' => 'Alle Kundenverträge, die diesen Service verwenden',
'Class:Service/Attribute:providercontracts_list' => 'Provider-Verträge',
'Class:Service/Attribute:providercontracts_list+' => 'All the provider contracts to support this service~~',
'Class:Service/Attribute:providercontracts_list+' => 'Alle Anbieterverträge zur Unterstützung dieses Services',
'Class:Service/Attribute:functionalcis_list' => 'Benötigte CIs',
'Class:Service/Attribute:functionalcis_list+' => 'All the configuration items that are used to provide this service~~',
'Class:Service/Attribute:functionalcis_list+' => 'Alle CIs, die zur Bereitstellung dieses Services verwendet werden',
'Class:Service/Attribute:servicesubcategories_list' => 'Service-Subkategorien',
'Class:Service/Attribute:servicesubcategories_list+' => 'All the sub categories for this service~~',
'Class:Service/Attribute:servicesubcategories_list+' => 'Alle Service-Unterkategorien für diesen Service',
));
//
@@ -261,7 +261,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDocumentToService' => 'Verknüpfung Dokument/Service',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => 'Service',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Service-Name',
@@ -279,7 +279,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToService' => 'Verknüpfung Kontakt/Service',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => 'Service',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Service-Name',
@@ -297,7 +297,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ServiceSubcategory' => 'Service-Unterkategorien',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => 'Name',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Beschreibung',
@@ -338,10 +338,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SLA/Attribute:organization_name' => 'Provider-Name',
'Class:SLA/Attribute:organization_name+' => '',
'Class:SLA/Attribute:slts_list' => 'SLTs',
'Class:SLA/Attribute:slts_list+' => 'Service Level Targets:',
'Class:SLA/Attribute:customercontracts_list' => 'Kunden-Verträge',
'Class:SLA/Attribute:customercontracts_list+' => 'All the customer contracts using this SLA~~',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Konnte den Link zwischen Kundevertrag %1$s und Service %2$s speichern: SLA existiert bereits',
'Class:SLA/Attribute:slts_list+' => 'Service Level Targets',
'Class:SLA/Attribute:customercontracts_list' => 'Kundenverträge',
'Class:SLA/Attribute:customercontracts_list+' => 'Alle Kundenverträge, die diese SLA verwenden',
'Class:SLA/Error:UniqueLnkCustomerContractToService' => 'Die Verknüpfung zwischen Kundenvertrag %1$s und Service %2$s konnte nicht gespeichert werden: SLA existiert bereits',
));
//
@@ -350,41 +350,41 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SLT' => 'SLT',
'Class:SLT+' => '',
'Class:SLT+' => 'Service-Level-Target (SLT)',
'Class:SLT/Attribute:name' => 'Name',
'Class:SLT/Attribute:name+' => '',
'Class:SLT/Attribute:priority' => 'Priorität',
'Class:SLT/Attribute:priority+' => '',
'Class:SLT/Attribute:priority/Value:1' => 'Kritisch',
'Class:SLT/Attribute:priority/Value:1+' => '',
'Class:SLT/Attribute:priority/Value:1+' => 'Kritisch',
'Class:SLT/Attribute:priority/Value:2' => 'Hoch',
'Class:SLT/Attribute:priority/Value:2+' => '',
'Class:SLT/Attribute:priority/Value:2+' => 'Hoch',
'Class:SLT/Attribute:priority/Value:3' => 'Mittel',
'Class:SLT/Attribute:priority/Value:3+' => '',
'Class:SLT/Attribute:priority/Value:3+' => 'Mittel',
'Class:SLT/Attribute:priority/Value:4' => 'Niedrig',
'Class:SLT/Attribute:priority/Value:4+' => '',
'Class:SLT/Attribute:priority/Value:4+' => 'Niedrig',
'Class:SLT/Attribute:request_type' => 'Request-Typ',
'Class:SLT/Attribute:request_type+' => '',
'Class:SLT/Attribute:request_type/Value:incident' => 'Incident',
'Class:SLT/Attribute:request_type/Value:incident+' => '',
'Class:SLT/Attribute:request_type/Value:incident+' => 'Incident',
'Class:SLT/Attribute:request_type/Value:service_request' => 'Service-Request',
'Class:SLT/Attribute:request_type/Value:service_request+' => '',
'Class:SLT/Attribute:request_type/Value:service_request+' => 'Service-Request',
'Class:SLT/Attribute:metric' => 'Metrik',
'Class:SLT/Attribute:metric+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO (Time To Own)',
'Class:SLT/Attribute:metric/Value:tto+' => '',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR (Time To Resolve)',
'Class:SLT/Attribute:metric/Value:ttr+' => '',
'Class:SLT/Attribute:metric/Value:tto' => 'TTO',
'Class:SLT/Attribute:metric/Value:tto+' => 'TTO (Time To Own)',
'Class:SLT/Attribute:metric/Value:ttr' => 'TTR',
'Class:SLT/Attribute:metric/Value:ttr+' => 'TTR (Time To Resolve)',
'Class:SLT/Attribute:value' => 'Wert',
'Class:SLT/Attribute:value+' => '',
'Class:SLT/Attribute:unit' => 'Einheit',
'Class:SLT/Attribute:unit+' => '',
'Class:SLT/Attribute:unit/Value:hours' => 'Stunden',
'Class:SLT/Attribute:unit/Value:hours+' => '',
'Class:SLT/Attribute:unit/Value:hours+' => 'Stunden',
'Class:SLT/Attribute:unit/Value:minutes' => 'Minuten',
'Class:SLT/Attribute:unit/Value:minutes+' => '',
'Class:SLT/Attribute:slas_list' => 'SLAs~~',
'Class:SLT/Attribute:slas_list+' => 'All the service level agreements using this SLT~~',
'Class:SLT/Attribute:unit/Value:minutes+' => 'Minuten',
'Class:SLT/Attribute:slas_list' => 'SLAs',
'Class:SLT/Attribute:slas_list+' => 'Alle Service Level Agreements, die diese SLT verwenden',
));
//
@@ -394,7 +394,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkSLAToSLT' => 'Verknüpfung SLA/SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'SLA-Name',
@@ -422,7 +422,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkCustomerContractToService' => 'Verknüpfung Kunden-Vertrag/Service',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Kunden-Vertrag',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Kundenvertrags-Name',
@@ -444,7 +444,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkProviderContractToService' => 'Verknüpfung Provider-Vertrag/Service',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s',
'Class:lnkProviderContractToService/Attribute:service_id' => 'Service',
'Class:lnkProviderContractToService/Attribute:service_id+' => '',
'Class:lnkProviderContractToService/Attribute:service_name' => 'Service-Name',
@@ -471,9 +471,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:DeliveryModel/Attribute:description' => 'Beschreibung',
'Class:DeliveryModel/Attribute:description+' => '',
'Class:DeliveryModel/Attribute:contacts_list' => 'Kontakte',
'Class:DeliveryModel/Attribute:contacts_list+' => 'All the contacts (Teams and Person) for this delivery model~~',
'Class:DeliveryModel/Attribute:contacts_list+' => 'Alle Kontakte (Teams and Person) für dieses Delivery-Modell',
'Class:DeliveryModel/Attribute:customers_list' => 'Kunden',
'Class:DeliveryModel/Attribute:customers_list+' => 'All the customers having this delivering model~~',
'Class:DeliveryModel/Attribute:customers_list+' => 'Alle Kunden mit diesem Delivery-Modell',
));
//
@@ -483,7 +483,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkDeliveryModelToContact' => 'Verknüpfung Delivery-Modell/Kontakt',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Delivery-Modell',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Delivery-Modell-Name',

View File

@@ -166,7 +166,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToContract' => 'Lien Contact / Contrat',
'Class:lnkContactToContract+' => '',
'Class:lnkContactToContract/Name' => '%1$s / %2$s~~',
'Class:lnkContactToContract/Name' => '%1$s / %2$s',
'Class:lnkContactToContract/Attribute:contract_id' => 'Contrat',
'Class:lnkContactToContract/Attribute:contract_id+' => '',
'Class:lnkContactToContract/Attribute:contract_name' => 'Nom contrat',
@@ -184,7 +184,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContractToDocument' => 'Lien Contrat / Document',
'Class:lnkContractToDocument+' => '',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s~~',
'Class:lnkContractToDocument/Name' => '%1$s / %2$s',
'Class:lnkContractToDocument/Attribute:contract_id' => 'Contrat',
'Class:lnkContractToDocument/Attribute:contract_id+' => '',
'Class:lnkContractToDocument/Attribute:contract_name' => 'Nom contrat',
@@ -217,7 +217,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Service' => 'Service',
'Class:Service+' => '',
'Class:Service/ComplementaryName' => '%1$s - %2$s~~',
'Class:Service/ComplementaryName' => '%1$s - %2$s',
'Class:Service/Attribute:name' => 'Nom',
'Class:Service/Attribute:name+' => '',
'Class:Service/Attribute:org_id' => 'Fournisseur',
@@ -261,7 +261,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDocumentToService' => 'Lien Document / Service',
'Class:lnkDocumentToService+' => '',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s~~',
'Class:lnkDocumentToService/Name' => '%1$s / %2$s',
'Class:lnkDocumentToService/Attribute:service_id' => 'Service',
'Class:lnkDocumentToService/Attribute:service_id+' => '',
'Class:lnkDocumentToService/Attribute:service_name' => 'Nom service',
@@ -279,7 +279,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToService' => 'Lien Contact / Service',
'Class:lnkContactToService+' => '',
'Class:lnkContactToService/Name' => '%1$s / %2$s~~',
'Class:lnkContactToService/Name' => '%1$s / %2$s',
'Class:lnkContactToService/Attribute:service_id' => 'Service',
'Class:lnkContactToService/Attribute:service_id+' => '',
'Class:lnkContactToService/Attribute:service_name' => 'Nom service',
@@ -297,7 +297,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:ServiceSubcategory' => 'Sous catégorie de service',
'Class:ServiceSubcategory+' => '',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s~~',
'Class:ServiceSubcategory/ComplementaryName' => '%1$s - %2$s',
'Class:ServiceSubcategory/Attribute:name' => 'Nom',
'Class:ServiceSubcategory/Attribute:name+' => '',
'Class:ServiceSubcategory/Attribute:description' => 'Description',
@@ -394,7 +394,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkSLAToSLT' => 'Lien SLA / SLT',
'Class:lnkSLAToSLT+' => '',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s~~',
'Class:lnkSLAToSLT/Name' => '%1$s / %2$s',
'Class:lnkSLAToSLT/Attribute:sla_id' => 'SLA',
'Class:lnkSLAToSLT/Attribute:sla_id+' => '',
'Class:lnkSLAToSLT/Attribute:sla_name' => 'Nom SLA',
@@ -422,7 +422,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkCustomerContractToService' => 'Lien Contrat client / Service',
'Class:lnkCustomerContractToService+' => '',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkCustomerContractToService/Name' => '%1$s / %2$s',
'Class:lnkCustomerContractToService/Attribute:customercontract_id' => 'Contrat client',
'Class:lnkCustomerContractToService/Attribute:customercontract_id+' => '',
'Class:lnkCustomerContractToService/Attribute:customercontract_name' => 'Nom contrat client',
@@ -444,7 +444,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkProviderContractToService' => 'Lien Contrat fournisseur / Service',
'Class:lnkProviderContractToService+' => '',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s~~',
'Class:lnkProviderContractToService/Name' => '%1$s / %2$s',
'Class:lnkProviderContractToService/Attribute:service_id' => 'Service',
'Class:lnkProviderContractToService/Attribute:service_id+' => '',
'Class:lnkProviderContractToService/Attribute:service_name' => 'Nom service',
@@ -483,7 +483,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkDeliveryModelToContact' => 'Lien Modèle de support / Contact',
'Class:lnkDeliveryModelToContact+' => '',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s~~',
'Class:lnkDeliveryModelToContact/Name' => '%1$s / %2$s',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id' => 'Modèle de support',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_id+' => '',
'Class:lnkDeliveryModelToContact/Attribute:deliverymodel_name' => 'Nom Modèle de support',

View File

@@ -53,8 +53,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Menu:SLT+' => '服务等级目标',
'Menu:DeliveryModel' => '交付模式',
'Menu:DeliveryModel+' => '交付模式',
'Menu:ServiceFamily' => '服务',
'Menu:ServiceFamily+' => '服务',
'Menu:ServiceFamily' => '服务系列',
'Menu:ServiceFamily+' => '服务系列',
'Menu:Procedure' => '流程清单',
'Menu:Procedure+' => '所有流程清单',
'Contract:baseinfo' => 'General information~~',
@@ -207,7 +207,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:ServiceFamily' => '服务',
'Class:ServiceFamily' => '服务系列',
'Class:ServiceFamily+' => '',
'Class:ServiceFamily/Attribute:name' => '名称',
'Class:ServiceFamily/Attribute:name+' => '',
@@ -231,9 +231,9 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'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+' => '',

View File

@@ -38,8 +38,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -302,7 +300,6 @@
<count_max>0</count_max>
<ext_key_to_remote>datacenterdevice_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -562,8 +559,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -823,8 +818,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -1515,7 +1508,6 @@
<count_max>0</count_max>
<ext_key_to_remote>server_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="virtualdevices_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkVirtualDeviceToVolume</linked_class>
@@ -1524,7 +1516,6 @@
<count_max>0</count_max>
<ext_key_to_remote>virtualdevice_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<presentation>

View File

@@ -285,8 +285,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -710,7 +708,6 @@
<count_max>0</count_max>
<ext_key_to_remote>team_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="user_list" xsi:type="AttributeLinkedSet">
<linked_class>User</linked_class>
@@ -718,8 +715,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<methods>
@@ -1028,7 +1023,6 @@
<count_max>0</count_max>
<ext_key_to_remote>person_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>

View File

@@ -94,9 +94,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Location/Attribute:country' => 'Land',
'Class:Location/Attribute:country+' => '',
'Class:Location/Attribute:physicaldevice_list' => 'Geräte',
'Class:Location/Attribute:physicaldevice_list+' => 'All the devices in this location~~',
'Class:Location/Attribute:physicaldevice_list+' => 'Alle Geräte an diesem Standort',
'Class:Location/Attribute:person_list' => 'Kontakte',
'Class:Location/Attribute:person_list+' => 'All the contacts located on this location~~',
'Class:Location/Attribute:person_list+' => 'Alle Kontakte, die sich an diesem Standort befinden',
));
//
@@ -106,7 +106,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Contact' => 'Kontakt',
'Class:Contact+' => '',
'Class:Contact/ComplementaryName' => '%1$s - %2$s~~',
'Class:Contact/ComplementaryName' => '%1$s - %2$s',
'Class:Contact/Attribute:name' => 'Name',
'Class:Contact/Attribute:name+' => '',
'Class:Contact/Attribute:status' => 'Status',
@@ -124,17 +124,17 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Contact/Attribute:phone' => 'Telefonnummer',
'Class:Contact/Attribute:phone+' => '',
'Class:Contact/Attribute:notify' => 'Benachrichtigung',
'Class:Contact/Attribute:notify+' => '',
'Class:Contact/Attribute:notify+' => 'Attribut, das bei der Suche nach Empfängern von Benachrichtigungen verwendet werden kann',
'Class:Contact/Attribute:notify/Value:no' => 'Nein',
'Class:Contact/Attribute:notify/Value:no+' => '',
'Class:Contact/Attribute:notify/Value:no+' => 'Nein',
'Class:Contact/Attribute:notify/Value:yes' => 'Ja',
'Class:Contact/Attribute:notify/Value:yes+' => '',
'Class:Contact/Attribute:notify/Value:yes+' => 'Ja',
'Class:Contact/Attribute:function' => 'Funktion',
'Class:Contact/Attribute:function+' => '',
'Class:Contact/Attribute:cis_list' => 'CIs',
'Class:Contact/Attribute:cis_list+' => 'All the configuration items linked to this contact~~',
'Class:Contact/Attribute:cis_list+' => 'Alle mit diesem Kontakt verknüpften CIs',
'Class:Contact/Attribute:finalclass' => 'Typ',
'Class:Contact/Attribute:finalclass+' => '',
'Class:Contact/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
@@ -144,7 +144,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Person' => 'Person',
'Class:Person+' => '',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/ComplementaryName' => '%1$s - %2$s',
'Class:Person/Attribute:name' => 'Name',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:first_name' => 'Vorname',
@@ -162,11 +162,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Person/Attribute:manager_name' => 'Manager-Name',
'Class:Person/Attribute:manager_name+' => '',
'Class:Person/Attribute:team_list' => 'Teams',
'Class:Person/Attribute:team_list+' => 'All the teams this person belongs to~~',
'Class:Person/Attribute:team_list+' => 'Alle Teams, denen diese Person angehört',
'Class:Person/Attribute:tickets_list' => 'Tickets',
'Class:Person/Attribute:tickets_list+' => 'All the tickets this person is the caller~~',
'Class:Person/Attribute:user_list' => 'Users~~',
'Class:Person/Attribute:user_list+' => 'All the Users associated to this person~~',
'Class:Person/Attribute:tickets_list+' => 'Alle Tickets, bei denen diese Person der Melder ist',
'Class:Person/Attribute:user_list' => 'Benutzer',
'Class:Person/Attribute:user_list+' => 'Alle Benutzer, die mit dieser Person verbunden sind',
'Class:Person/Attribute:manager_id_friendlyname' => 'Manager-Name (lesbar)',
'Class:Person/Attribute:manager_id_friendlyname+' => '',
'Class:Person/Attribute:picture' => 'Bild',
@@ -175,7 +175,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Person/UniquenessRule:employee_number' => 'In der Organisation \'$this->org_name$\' existiert bereits eine Person mit der gleichen Personalnummer',
'Class:Person/UniquenessRule:name+' => 'Innerhalb einer Organisation muss der Name einer Person eindeutig sein',
'Class:Person/UniquenessRule:name' => 'In der Organisation \'$this->org_name$\' existiert bereits eine Person mit dem gleichen Namen',
'Class:Person/Error:ChangingOrgDenied' => 'Impossible to move this person under organization \'%1$s\' as it would break his access to the User Portal, his associated user not being allowed on this organization~~',
'Class:Person/Error:ChangingOrgDenied' => 'Es ist nicht möglich, dieser Person der Organisation \'%1$s\' zuzuordnen, da dies seinen Zugang zum Benutzerportal unterbinden würde, da sein zugehöriger Benutzer nicht für diese Organisation zugelassen ist.',
));
//
@@ -185,11 +185,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Team' => 'Team',
'Class:Team+' => '',
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Mitglieder',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team~~',
'Class:Team/Attribute:persons_list+' => 'Alle Personen, die zu diesem Team gehören',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team~~',
'Class:Team/Attribute:tickets_list+' => 'Alle diesem Team zugewiesenen Tickets',
));
//
@@ -199,7 +199,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Document' => 'Dokument',
'Class:Document+' => '',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s',
'Class:Document/Attribute:name' => 'Name',
'Class:Document/Attribute:name+' => '',
'Class:Document/Attribute:org_id' => 'Organisation',
@@ -223,9 +223,9 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Document/Attribute:status/Value:published' => 'Veröffentlicht',
'Class:Document/Attribute:status/Value:published+' => '',
'Class:Document/Attribute:cis_list' => 'CIs',
'Class:Document/Attribute:cis_list+' => 'All the configuration items linked to this document~~',
'Class:Document/Attribute:finalclass' => 'Dokumenttyp',
'Class:Document/Attribute:finalclass+' => '',
'Class:Document/Attribute:cis_list+' => 'Alle mit diesem Dokument verknüpften CIs',
'Class:Document/Attribute:finalclass' => 'Unterklasse von Dokument',
'Class:Document/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
@@ -271,7 +271,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Typology/Attribute:name' => 'Name',
'Class:Typology/Attribute:name+' => '',
'Class:Typology/Attribute:finalclass' => 'Typ',
'Class:Typology/Attribute:finalclass+' => '',
'Class:Typology/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
));
//
@@ -299,8 +299,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkPersonToTeam' => 'Verknüpfung Person/Team',
'Class:lnkPersonToTeam+' => '',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s~~',
'Class:lnkPersonToTeam/Name+' => '~~',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s',
'Class:lnkPersonToTeam/Name+' => '',
'Class:lnkPersonToTeam/Attribute:team_id' => 'Team',
'Class:lnkPersonToTeam/Attribute:team_id+' => '',
'Class:lnkPersonToTeam/Attribute:team_name' => 'Teamname',
@@ -310,7 +310,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkPersonToTeam/Attribute:person_name' => 'Personenname',
'Class:lnkPersonToTeam/Attribute:person_name+' => '',
'Class:lnkPersonToTeam/Attribute:role_id' => 'Rolle',
'Class:lnkPersonToTeam/Attribute:role_id+' => '',
'Class:lnkPersonToTeam/Attribute:role_id+' => 'Eine Rolle aus einer Typologie möglicher Rollen',
'Class:lnkPersonToTeam/Attribute:role_name' => 'Rollenname',
'Class:lnkPersonToTeam/Attribute:role_name+' => '',
));
@@ -354,7 +354,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Menu:ConfigManagement:Shortcuts' => 'Shortcuts',
'Menu:ConfigManagement:AllContacts' => 'Alle Kontakte: %1$d',
'Menu:Typology' => 'Typologie-Konfiguration',
'Menu:Typology+' => '',
'Menu:Typology+' => 'Typologie-Konfiguration',
'UI_WelcomeMenu_AllConfigItems' => 'Zusammenfassung',
'Menu:ConfigManagement:Typology' => 'Typologie-Konfiguration',
));
@@ -364,7 +364,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Person:info' => 'Allgemeine Informationen',
'User:info' => 'Allgemeine Informationen',
'User:profiles' => 'Profiles (minimum one)~~',
'User:profiles' => 'Profile (mindestens eines)',
'Person:personal_info' => 'Persönliche Informationen',
'Person:notifiy' => 'Benachrichtigungen',
));

View File

@@ -77,9 +77,9 @@ Dict::Add('FR FR', 'French', 'Français', array(
'Class:Organization/Attribute:parent_name' => 'Nom du parent',
'Class:Organization/Attribute:parent_name+' => 'Nom de l\'organisation parente',
'Class:Organization/Attribute:deliverymodel_id' => 'Modèle de support',
'Class:Organization/Attribute:deliverymodel_id+' => '~~',
'Class:Organization/Attribute:deliverymodel_id+' => '',
'Class:Organization/Attribute:deliverymodel_name' => 'Nom modèle de support',
'Class:Organization/Attribute:deliverymodel_name+' => '~~',
'Class:Organization/Attribute:deliverymodel_name+' => '',
'Class:Organization/Attribute:parent_id_friendlyname' => 'Nom commun',
'Class:Organization/Attribute:parent_id_friendlyname+' => '',
'Class:Organization/Attribute:overview' => 'Tableau de bord',
@@ -128,7 +128,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Contact' => 'Contact',
'Class:Contact+' => '',
'Class:Contact/ComplementaryName' => '%1$s - %2$s~~',
'Class:Contact/ComplementaryName' => '%1$s - %2$s',
'Class:Contact/Attribute:name' => 'Nom',
'Class:Contact/Attribute:name+' => '',
'Class:Contact/Attribute:status' => 'Etat',
@@ -166,9 +166,9 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Person' => 'Personne',
'Class:Person+' => '',
'Class:Person/ComplementaryName' => '%1$s - %2$s~~',
'Class:Person/ComplementaryName' => '%1$s - %2$s',
'Class:Person/Attribute:name' => 'Nom',
'Class:Person/Attribute:name+' => '~~',
'Class:Person/Attribute:name+' => '',
'Class:Person/Attribute:first_name' => 'Prénom',
'Class:Person/Attribute:first_name+' => '',
'Class:Person/Attribute:employee_number' => 'Numéro d\'employé',
@@ -208,7 +208,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Team' => 'Equipe',
'Class:Team+' => '',
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Membres',
'Class:Team/Attribute:persons_list+' => 'Toutes les personnes appartenant à cette équipe',
'Class:Team/Attribute:tickets_list' => 'Tickets',
@@ -222,7 +222,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:Document' => 'Document',
'Class:Document+' => '',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s~~',
'Class:Document/ComplementaryName' => '%1$s - %2$s - %3$s',
'Class:Document/Attribute:name' => 'Nom',
'Class:Document/Attribute:name+' => '',
'Class:Document/Attribute:org_id' => 'Organisation',
@@ -322,8 +322,8 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkPersonToTeam' => 'Lien Personne / Equipe',
'Class:lnkPersonToTeam+' => '',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s~~',
'Class:lnkPersonToTeam/Name+' => '~~',
'Class:lnkPersonToTeam/Name' => '%1$s / %2$s',
'Class:lnkPersonToTeam/Name+' => '',
'Class:lnkPersonToTeam/Attribute:team_id' => 'Equipe',
'Class:lnkPersonToTeam/Attribute:team_id+' => 'Une équipe à laquelle appartient la personne',
'Class:lnkPersonToTeam/Attribute:team_name' => 'Nom Equipe',

View File

@@ -137,8 +137,8 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Contact/Attribute:function+' => '',
'Class:Contact/Attribute:cis_list' => '配置项',
'Class:Contact/Attribute:cis_list+' => '此联系人关联的所有配置项',
'Class:Contact/Attribute:finalclass' => '联系人子类别',
'Class:Contact/Attribute:finalclass+' => 'Name of the final class',
'Class:Contact/Attribute:finalclass' => '联系人类型',
'Class:Contact/Attribute:finalclass+' => '根本属性的名称',
));
//
@@ -225,12 +225,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Document/Attribute:status/Value:draft+' => '',
'Class:Document/Attribute:status/Value:obsolete' => '废弃',
'Class:Document/Attribute:status/Value:obsolete+' => '',
'Class:Document/Attribute:status/Value:published' => '已发布',
'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:finalclass' => '文档子类别',
'Class:Document/Attribute:finalclass+' => 'Name of the final class',
'Class:Document/Attribute:finalclass' => '文档类型',
'Class:Document/Attribute:finalclass+' => '根本属性的名称',
));
//
@@ -271,12 +271,12 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array(
//
Dict::Add('ZH CN', 'Chinese', '简体中文', array(
'Class:Typology' => '类型',
'Class:Typology' => '拓扑',
'Class:Typology+' => '',
'Class:Typology/Attribute:name' => '名称',
'Class:Typology/Attribute:name+' => '',
'Class:Typology/Attribute:finalclass' => '类型',
'Class:Typology/Attribute:finalclass+' => 'Name of the final class',
'Class:Typology/Attribute:finalclass' => '拓扑类型',
'Class:Typology/Attribute:finalclass+' => '根本属性的名称',
));
//

View File

@@ -203,7 +203,6 @@
<count_max>0</count_max>
<ext_key_to_remote>contact_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkFunctionalCIToTicket</linked_class>
@@ -212,15 +211,12 @@
<count_max>0</count_max>
<ext_key_to_remote>functionalci_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
<field id="workorders_list" xsi:type="AttributeLinkedSet">
<linked_class>WorkOrder</linked_class>
<ext_key_to_me>ticket_id</ext_key_to_me>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<event_listeners>
@@ -839,8 +835,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -861,8 +855,6 @@
<edit_mode>none</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>true</read_only>
</field>
</fields>
<presentation>
@@ -1393,6 +1385,15 @@
</scope>
</scopes>
</class>
<class id="lnkContactToTicket" _delta="define">
<lists>
<!-- Note: since 3.1.0, many to many attributes are displayed automatically, an empty list avoid this -->
<list id="list">
<items>
</items>
</list>
</lists>
</class>
</classes>
<action_rules>
<action_rule id="contact-to-userrequest" _delta="define">

View File

@@ -58,21 +58,21 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Ticket/Attribute:private_log' => 'Privates Log',
'Class:Ticket/Attribute:private_log+' => '',
'Class:Ticket/Attribute:contacts_list' => 'Kontakte',
'Class:Ticket/Attribute:contacts_list+' => 'All the contacts linked to this ticket~~',
'Class:Ticket/Attribute:contacts_list+' => 'Alle Kontakte, die mit diesem Ticket verknüpft sind',
'Class:Ticket/Attribute:functionalcis_list' => 'CIs',
'Class:Ticket/Attribute:functionalcis_list+' => 'All the configuration items impacted by this ticket. Items marked as "Computed" have been automatically marked as impacted. Items marked as "Not impacted" are excluded from the impact.~~',
'Class:Ticket/Attribute:functionalcis_list+' => 'Alle CIs, die von diesem Ticket betroffen sind. Elemente, die als "Berechnet" markiert sind, wurden automatisch als betroffen markiert. Elemente, die als "Nicht betroffen" markiert sind, sind von den Auswirkungen ausgeschlossen.',
'Class:Ticket/Attribute:workorders_list' => 'Arbeitsaufträge',
'Class:Ticket/Attribute:workorders_list+' => 'All the work orders for this ticket~~',
'Class:Ticket/Attribute:workorders_list+' => 'Alle Arbeitsaufträge für dieses Ticket',
'Class:Ticket/Attribute:finalclass' => 'Typ',
'Class:Ticket/Attribute:finalclass+' => '',
'Class:Ticket/Attribute:operational_status' => 'Betriebsstatus',
'Class:Ticket/Attribute:operational_status+' => 'Berechnet nach detailliertem Status',
'Class:Ticket/Attribute:operational_status+' => 'Berechnet aus dem Status jeder Ticketart',
'Class:Ticket/Attribute:operational_status/Value:ongoing' => 'In Bearbeitung',
'Class:Ticket/Attribute:operational_status/Value:ongoing+' => 'In Bearbeitung',
'Class:Ticket/Attribute:operational_status/Value:resolved' => 'Gelöst',
'Class:Ticket/Attribute:operational_status/Value:resolved+' => '',
'Class:Ticket/Attribute:operational_status/Value:resolved+' => 'Gelöst',
'Class:Ticket/Attribute:operational_status/Value:closed' => 'Geschlossen',
'Class:Ticket/Attribute:operational_status/Value:closed+' => '',
'Class:Ticket/Attribute:operational_status/Value:closed+' => 'Geschlossen',
'Ticket:ImpactAnalysis' => 'Auswirkungsanalyse',
));
@@ -84,15 +84,15 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:lnkContactToTicket' => 'Verknüpfung Kontakt/Ticket',
'Class:lnkContactToTicket+' => '',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s',
'Class:lnkContactToTicket/Attribute:ticket_id' => 'Ticket',
'Class:lnkContactToTicket/Attribute:ticket_id+' => '',
'Class:lnkContactToTicket/Attribute:ticket_ref' => 'Referenz',
'Class:lnkContactToTicket/Attribute:ticket_ref+' => '',
'Class:lnkContactToTicket/Attribute:contact_id' => 'Kontakt',
'Class:lnkContactToTicket/Attribute:contact_id+' => '',
'Class:lnkContactToTicket/Attribute:contact_name' => 'Contact name~~',
'Class:lnkContactToTicket/Attribute:contact_name+' => '~~',
'Class:lnkContactToTicket/Attribute:contact_name' => 'Kontaktname',
'Class:lnkContactToTicket/Attribute:contact_name+' => '',
'Class:lnkContactToTicket/Attribute:contact_email' => 'Kontakt-E-Mail',
'Class:lnkContactToTicket/Attribute:contact_email+' => '',
'Class:lnkContactToTicket/Attribute:role' => 'Rolle (Text)',

View File

@@ -84,7 +84,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
Dict::Add('FR FR', 'French', 'Français', array(
'Class:lnkContactToTicket' => 'Lien Contact / Ticket',
'Class:lnkContactToTicket+' => '',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s~~',
'Class:lnkContactToTicket/Name' => '%1$s / %2$s',
'Class:lnkContactToTicket/Attribute:ticket_id' => 'Ticket',
'Class:lnkContactToTicket/Attribute:ticket_id+' => '',
'Class:lnkContactToTicket/Attribute:ticket_ref' => 'Référence',

View File

@@ -69,7 +69,6 @@
<count_max>0</count_max>
<ext_key_to_remote>volume_id</ext_key_to_remote>
<duplicates/>
<read_only>false</read_only>
</field>
</fields>
<methods/>
@@ -184,8 +183,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
</fields>
<presentation>
@@ -473,8 +470,6 @@
<edit_mode>add_only</edit_mode>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>link</relation_type>
<read_only>false</read_only>
</field>
<field id="redundancy" xsi:type="AttributeRedundancySettings">
<sql>redundancy</sql>
@@ -676,8 +671,6 @@
<tracking_level>all</tracking_level>
<count_min>0</count_min>
<count_max>0</count_max>
<relation_type>property</relation_type>
<read_only>false</read_only>
</field>
<field id="managementip" xsi:type="AttributeIPAddress">
<sql>managementip</sql>

View File

@@ -1,95 +0,0 @@
<?php
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Menu:DataSources' => 'Senkronizasyon veri kaynakları',
'Menu:DataSources+' => 'Tüm senkronizasyon veri kaynakları',
'Menu:WelcomeMenu' => 'Hoşgeldiniz',
'Menu:WelcomeMenu+' => ITOP_APPLICATION_SHORT.'\'a Hoşgeldiniz',
'Menu:WelcomeMenuPage' => 'Hoşgeldiniz',
'Menu:WelcomeMenuPage+' => ITOP_APPLICATION_SHORT.'\'a Hoşgeldiniz',
'Menu:AdminTools' => 'Yönetim araçları',
'Menu:AdminTools+' => 'Yönetim araçları',
'Menu:AdminTools?' => 'Yönetici profiline izin verilen araçlar',
'Menu:DataModelMenu' => 'Veri modeli',
'Menu:DataModelMenu+' => 'Veri modeli Özeti',
'Menu:ExportMenu' => 'Dışarı ver',
'Menu:ExportMenu+' => 'Sorgu sonucunu HTML, CSV veya XML olarak dışarı aktar',
'Menu:NotificationsMenu' => 'Uyarılar',
'Menu:NotificationsMenu+' => 'Uyarıların yapılandırılması',
'Menu:AuditCategories' => 'Denetleme kategorileri',
'Menu:AuditCategories+' => 'Denetleme kategorileri',
'Menu:Notifications:Title' => 'Denetleme kategorileri',
'Menu:RunQueriesMenu' => 'Sorgu çalıştır',
'Menu:RunQueriesMenu+' => 'Sorgu çalıştır',
'Menu:QueryMenu' => 'Sorgu deyişleri kitabı',
'Menu:QueryMenu+' => 'Sorgu deyişleri kitabı',
'Menu:UniversalSearchMenu' => 'Genel sorgu',
'Menu:UniversalSearchMenu+' => 'Herhangi bir arama...',
'Menu:UserManagementMenu' => 'Kullanıcı yönetimi',
'Menu:UserManagementMenu+' => 'Kullanıcı yönetimi',
'Menu:ProfilesMenu' => 'Profiller',
'Menu:ProfilesMenu+' => 'Profiller',
'Menu:ProfilesMenu:Title' => 'Profiller',
'Menu:UserAccountsMenu' => 'Kullanıcı hesapları',
'Menu:UserAccountsMenu+' => 'Kullanıcı hesapları',
'Menu:UserAccountsMenu:Title' => 'Kullanıcı hesapları',
'Menu:MyShortcuts' => 'Kısayollarım',
'Menu:UserManagement' => 'User management~~',
'Menu:Queries' => 'Queries~~',
'Menu:ConfigurationTools' => 'Configuration~~',
));
//
// Class: AbstractResource
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Class:AbstractResource' => 'Abstract Resource~~',
'Class:AbstractResource+' => '~~',
));
//
// Class: ResourceAdminMenu
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Class:ResourceAdminMenu' => 'Resource Admin Menu~~',
'Class:ResourceAdminMenu+' => '~~',
));
//
// Class: ResourceRunQueriesMenu
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Class:ResourceRunQueriesMenu' => 'Resource Run Queries Menu~~',
'Class:ResourceRunQueriesMenu+' => '~~',
));
//
// Class: Action
//
Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
'Class:ResourceSystemMenu' => 'Resource System Menu~~',
'Class:ResourceSystemMenu+' => '~~',
));

View File

@@ -21,6 +21,6 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('DE DE', 'German', 'Deutsch', [
'Core:ormValue:ormDocument:DownloadsCount' => '%1s~~',
'Core:ormValue:ormDocument:DownloadsCount+' => 'Downloaded %1$s time(s)~~',
'Core:ormValue:ormDocument:DownloadsCount' => '%1s',
'Core:ormValue:ormDocument:DownloadsCount+' => '%1$s mal heruntergeladen',
]);

View File

@@ -21,5 +21,5 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('DE DE', 'German', 'Deutsch', [
'Class:cmdbAbstractObject/UniquenessRule:no_duplicate' => '%1$s: %2$s is already linked to %3$s: %4$s, duplicates are not allowed on this relation.~~',
'Class:cmdbAbstractObject/UniquenessRule:no_duplicate' => '%1$s: %2$s ist bereits mit einer/einem %3$s verknüpft: %4$s, doppelte Einträge sind in dieser Verknüpfung nicht erlaubt.',
]);

View File

@@ -26,8 +26,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Core:UnknownObjectLabel' => 'Objekt nicht gefunden (Klasse: %1$s, id: %2$d)',
'Core:UnknownObjectTip' => 'Das Objekt konnte nicht gefunden werden. Es könnte bereits vor einiger Zeit gelöscht worden sein und das Log wurde seither bereinigt.',
'Core:UniquenessDefaultError' => 'Eindeutigkeitsfehler: \'%1$s\'',
'Core:CheckConsistencyError' => 'Consistency rules not followed: %1$s~~',
'Core:CheckValueError' => 'Unexpected value for attribute \'%1$s\' (%2$s) : %3$s~~',
'Core:CheckConsistencyError' => 'Integritätsregeln werden nicht eingehalten: %1$s',
'Core:CheckValueError' => 'Ungültiger Attributwert \'%1$s\' (%2$s) : %3$s',
'Core:AttributeLinkedSet' => 'Array von Objekten',
'Core:AttributeLinkedSet+' => 'Beliebige Art von Objekten der [subclass] der selben Klasse',
'Core:AttributeLinkedSetDuplicatesFound' => 'Dubletten im \'%1$s\' Feld: %2$s',
@@ -48,7 +48,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Core:AttributeMetaEnum' => 'Berechnetes Enum',
'Core:AttributeMetaEnum+' => 'Liste berechneter alphanumerischer Strings',
'Core:AttributeLinkedSetIndirect' => 'Array von Objekten (N-N)',
'Core:AttributeLinkedSetIndirect+' => 'Beliebige Art von Objekten der [subclass] der selben Klasse',
'Core:AttributeLinkedSetIndirect+' => 'Liste von Objekten einer Klasse, die über eine Zwischenklasse mit dem aktuellen Objekt verbunden sind.',
'Core:AttributeInteger' => 'Integer',
'Core:AttributeInteger+' => 'Numerischer Wert (kann negativ sein)',
'Core:AttributeDecimal' => 'Decimal',
@@ -181,7 +181,7 @@ Operatoren:<br/>
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:CMDBChange' => 'Change',
'Class:CMDBChange+' => 'Protokollierung der Changes',
'Class:CMDBChange+' => 'Protokollierung der Änderungen',
'Class:CMDBChange/Attribute:date' => 'Datum',
'Class:CMDBChange/Attribute:date+' => 'Datum und Uhrzeit der Änderungen',
'Class:CMDBChange/Attribute:userinfo' => 'Sonstige Informationen',
@@ -202,7 +202,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:CMDBChangeOp' => 'Change-Operation',
'Class:CMDBChangeOp+' => 'Protokoll der Change-Operation',
'Class:CMDBChangeOp+' => 'Protokoll einer Änderung',
'Class:CMDBChangeOp/Attribute:change' => 'Change',
'Class:CMDBChangeOp/Attribute:change+' => '',
'Class:CMDBChangeOp/Attribute:date' => 'Datum',
@@ -329,7 +329,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:EventNotification/Attribute:action_id' => 'Aktion',
'Class:EventNotification/Attribute:action_id+' => '',
'Class:EventNotification/Attribute:object_id' => 'Objekt-ID',
'Class:EventNotification/Attribute:object_id+' => 'Objekt-ID (Klasse, die von Trigger definiert wurde?)',
'Class:EventNotification/Attribute:object_id+' => '',
));
//
@@ -438,7 +438,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Action' => 'Benutzerdefinierte Aktion',
'Class:Action+' => 'Benutzerdefinierte Aktionen',
'Class:Action/ComplementaryName' => '%1$s: %2$s~~',
'Class:Action/ComplementaryName' => '%1$s: %2$s',
'Class:Action/Attribute:name' => 'Name',
'Class:Action/Attribute:name+' => '',
'Class:Action/Attribute:description' => 'Beschreibung',
@@ -454,7 +454,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Action/Attribute:trigger_list' => 'Zugehörige Trigger',
'Class:Action/Attribute:trigger_list+' => 'Trigger, die mit dieser Aktion verknüpft sind',
'Class:Action/Attribute:finalclass' => 'Typ',
'Class:Action/Attribute:finalclass+' => '',
'Class:Action/Attribute:finalclass+' => 'Name der instanziierbaren Klasse',
'Action:WarningNoTriggerLinked' => 'Warnung, es ist kein Trigger mit dieser Aktion verknüpft. Die Aktion ist nicht aktiv solange nicht mindestens 1 Trigger verknüpft ist.',
));
@@ -481,7 +481,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ActionEmail/Attribute:test_recipient' => 'Testempfänger',
'Class:ActionEmail/Attribute:test_recipient+' => 'Empfänger im Fall eines "Test"-Status',
'Class:ActionEmail/Attribute:from' => 'Von (E-Mail)',
'Class:ActionEmail/Attribute:from+' => 'Absenderad­resse wird im E-Mail-Header mitgesendet',
'Class:ActionEmail/Attribute:from+' => 'Absenderadresse wird im E-Mail-Header mitgesendet',
'Class:ActionEmail/Attribute:from_label' => 'Von (Label)',
'Class:ActionEmail/Attribute:from_label+' => 'Absendername wird im E-Mail-Header mitgesendet',
'Class:ActionEmail/Attribute:reply_to' => 'Antworten an (E-Mail)',
@@ -496,8 +496,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ActionEmail/Attribute:bcc+' => '',
'Class:ActionEmail/Attribute:subject' => 'Betreff',
'Class:ActionEmail/Attribute:subject+' => 'Betreff der E-Mail',
'Class:ActionEmail/Attribute:body' => 'Inhalt der Nachricht',
'Class:ActionEmail/Attribute:body+' => '',
'Class:ActionEmail/Attribute:body' => 'Nachricht',
'Class:ActionEmail/Attribute:body+' => 'Inhalt der Nachricht',
'Class:ActionEmail/Attribute:importance' => 'Priorität',
'Class:ActionEmail/Attribute:importance+' => 'Prioritätseinstufung',
'Class:ActionEmail/Attribute:importance/Value:low' => 'niedrig',
@@ -506,22 +506,22 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:ActionEmail/Attribute:importance/Value:normal+' => '',
'Class:ActionEmail/Attribute:importance/Value:high' => 'hoch',
'Class:ActionEmail/Attribute:importance/Value:high+' => '',
'Class:ActionEmail/Attribute:language' => 'Language~~',
'Class:ActionEmail/Attribute:language+' => 'Language to use for placeholders ($xxx$) inside the message (state, importance, priority, etc)~~',
'Class:ActionEmail/Attribute:html_template' => 'HTML template~~',
'Class:ActionEmail/Attribute:html_template+' => 'Optional HTML template wrapping around the content of the \'Body\' attribute below, useful for tailored email layouts (in the template, content of the \'Body\' attribute will replace the $content$ placeholder)~~',
'Class:ActionEmail/Attribute:ignore_notify' => 'Ignore the Notify flag~~',
'Class:ActionEmail/Attribute:ignore_notify+' => 'If set to \'Yes\' the \'Notify\' flag on Contacts has no effect.~~',
'Class:ActionEmail/Attribute:ignore_notify/Value:no' => 'No~~',
'Class:ActionEmail/Attribute:ignore_notify/Value:yes' => 'Yes~~',
'ActionEmail:main' => 'Message~~',
'ActionEmail:trigger' => 'Triggers~~',
'ActionEmail:recipients' => 'Contacts~~',
'ActionEmail:preview_tab' => 'Preview~~',
'ActionEmail:preview_tab+' => 'Preview of the eMail template~~',
'ActionEmail:preview_warning' => 'The actual eMail may look different in the eMail client than this preview in your browser.~~',
'ActionEmail:preview_more_info' => 'For more information about the CSS features supported by the different eMail clients, refer to %1$s~~',
'ActionEmail:content_placeholder_missing' => 'The placeholder "%1$s" was not found in the HTML template. The content of the field "%2$s" will not be included in the generated emails.~~',
'Class:ActionEmail/Attribute:language' => 'Sprache',
'Class:ActionEmail/Attribute:language+' => 'Sprache, die für die Platzhalter ($xxx$) in der Nachricht verwendet wird (Status, Dringlichkeit, Priorität, etc.)',
'Class:ActionEmail/Attribute:html_template' => 'HTML-Template',
'Class:ActionEmail/Attribute:html_template+' => 'Optional: HTML-Vorlage, die den Inhalt des Feldes \'Nachricht\' einbettet, nützlich für maßgeschneiderte Layouts (in der Vorlage ersetzt der Inhalt des Feldes \'Nachricht\' das Schlüsselwort $content$).',
'Class:ActionEmail/Attribute:ignore_notify' => 'Ignorieren des Benachrichtigen-Flags',
'Class:ActionEmail/Attribute:ignore_notify+' => 'Falls dieser Wert auf "Ja" gesetzt ist, hat das Kennzeichen "Benachrichtigung" bei Kontakten keine Auswirkungen.',
'Class:ActionEmail/Attribute:ignore_notify/Value:no' => 'Nein',
'Class:ActionEmail/Attribute:ignore_notify/Value:yes' => 'Ja',
'ActionEmail:main' => 'Nachricht',
'ActionEmail:trigger' => 'Trigger',
'ActionEmail:recipients' => 'Kontakte',
'ActionEmail:preview_tab' => 'Vorschau',
'ActionEmail:preview_tab+' => 'Vorschau der E-Mail-Vorlage',
'ActionEmail:preview_warning' => 'Die tatsächliche E-Mail kann im E-Mail-Client anders aussehen als diese Vorschau in Ihrem Browser.',
'ActionEmail:preview_more_info' => 'Weitere Informationen zu den CSS-Funktionen, die von den verschiedenen E-Mail-Clients unterstützt werden, finden Sie unter %1$s',
'ActionEmail:content_placeholder_missing' => 'Der Platzhalter "%1$s" wurde in der HTML-Vorlage nicht gefunden. Der Inhalt des Feldes "%2$s" wird nicht in den generierten E-Mails enthalten sein.',
));
//
@@ -531,7 +531,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Trigger' => 'Trigger',
'Class:Trigger+' => 'Custom event handler',
'Class:Trigger/ComplementaryName' => '%1$s, %2$s~~',
'Class:Trigger/ComplementaryName' => '%1$s, %2$s',
'Class:Trigger/Attribute:description' => 'Beschreibung',
'Class:Trigger/Attribute:description+' => 'Kurzbeschreibung',
'Class:Trigger/Attribute:action_list' => 'Verbundene Trigger-Aktionen',
@@ -540,8 +540,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:Trigger/Attribute:finalclass+' => '',
'Class:Trigger/Attribute:context' => 'Kontext',
'Class:Trigger/Attribute:context+' => 'Kontext, der diesen Trigger auslösen lassen darf',
'Class:Trigger/Attribute:complement' => 'Additional information~~',
'Class:Trigger/Attribute:complement+' => 'Further information as provided in english, by this trigger~~',
'Class:Trigger/Attribute:complement' => 'Zusätzliche Informationen',
'Class:Trigger/Attribute:complement+' => 'Weitere Informationen in englischer Sprache, die durch diesen Trigger bereitgestellt werden',
));
//
@@ -642,10 +642,10 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:TriggerOnAttributeBlobDownload' => 'Trigger (on object\'s document download)~~',
'Class:TriggerOnAttributeBlobDownload+' => 'Trigger on object\'s document field download of [a child class of] the given class~~',
'Class:TriggerOnAttributeBlobDownload/Attribute:target_attcodes' => 'Target fields~~',
'Class:TriggerOnAttributeBlobDownload/Attribute:target_attcodes+' => '~~',
'Class:TriggerOnAttributeBlobDownload' => 'Trigger (beim Herunterladen einer Datei eines Objekts)',
'Class:TriggerOnAttributeBlobDownload+' => 'Trigger für das Herunterladen einer Datei (Blob) der angegebenen Klasse oder einer Unterklasse',
'Class:TriggerOnAttributeBlobDownload/Attribute:target_attcodes' => 'Ziel-Felder',
'Class:TriggerOnAttributeBlobDownload/Attribute:target_attcodes+' => '',
));
//
@@ -690,7 +690,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SynchroDataSource/Attribute:description' => 'Beschreibung',
'Class:SynchroDataSource/Attribute:status' => 'Status',
'Class:SynchroDataSource/Attribute:scope_class' => 'Ziel-Klasse',
'Class:SynchroDataSource/Attribute:scope_class+' => 'A Synchro Data Source can only populate a single '.ITOP_APPLICATION_SHORT.' class~~',
'Class:SynchroDataSource/Attribute:scope_class+' => 'Eine Synchro-Datenquelle kann nur eine '.ITOP_APPLICATION_SHORT.'-Klasse befüllen.',
'Class:SynchroDataSource/Attribute:user_id' => 'Benutzer',
'Class:SynchroDataSource/Attribute:notify_contact_id' => 'Zu benachrichtigender Kontakt',
'Class:SynchroDataSource/Attribute:notify_contact_id+' => 'Kontakt, der im Fehlerfall benachrichtigt werden muss',
@@ -699,8 +699,8 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SynchroDataSource/Attribute:url_application' => 'Hyperlink zur Applikation',
'Class:SynchroDataSource/Attribute:url_application+' => 'Hyperlink zum '.ITOP_APPLICATION_SHORT.' Objekt in der externen Applikation mit der '.ITOP_APPLICATION_SHORT.' synchronisiert wird (falls anwendbar). Mögliche Platzhalter: $this->attribute$ und $replica->primary_key$',
'Class:SynchroDataSource/Attribute:reconciliation_policy' => 'Abgleichsvorgehen',
'Class:SynchroDataSource/Attribute:reconciliation_policy+' => '"Use the attributes": '.ITOP_APPLICATION_SHORT.' object matches replica values for each Synchro attributes flagged for Reconciliation.
"Use primary_key": the column primary_key of the replica is expected to contain the identifier of the '.ITOP_APPLICATION_SHORT.' object~~',
'Class:SynchroDataSource/Attribute:reconciliation_policy+' => '"Attribute benutzen": Das '.ITOP_APPLICATION_SHORT.'-Objekt stimmt mit den Werten der Replica für jedes Synchro-Attribut überein, das für den Abgleich gekennzeichnet ist.
"Feld primary_key benutzen": Die Spalte primary_key des Replicas soll den Bezeichner des '.ITOP_APPLICATION_SHORT.'-Objekts enthalten.',
'Class:SynchroDataSource/Attribute:full_load_periodicity' => 'Intervall zwischen zwei vollständigen Reloads',
'Class:SynchroDataSource/Attribute:full_load_periodicity+' => 'Ein vollständiger Reload des gesamten Datenbestands muss mindestens in diesem Intervall erfolgen',
'Class:SynchroDataSource/Attribute:action_on_zero' => 'Verhalten bei keinen Treffern',
@@ -734,11 +734,11 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:SynchroDataSource/Attribute:action_on_multiple/Value:error' => 'Fehler',
'Class:SynchroDataSource/Attribute:action_on_multiple/Value:take_first' => 'Ersten Treffer benutzen',
'Class:SynchroDataSource/Attribute:delete_policy' => 'Löschrichtlinie',
'Class:SynchroDataSource/Attribute:delete_policy+' => 'What to do when a replica becomes obsolete:
"Ignore": do nothing, the associated object remains as is in iTop.
"Delete": Delete the associated object in iTop (and the replica in the data table).
"Update": Update the associated object as specified by the Update rules (see below).
"Update then Delete": apply the "Update rules". When Retention Duration expires, execute a "Delete" ~~',
'Class:SynchroDataSource/Attribute:delete_policy+' => 'Vorgehen wenn eine Replik obsolet ist:
"Ignorieren": Nichts tun, das zugehörige Objekt verbleibt unverändert in '.ITOP_APPLICATION_SHORT.'.
"Löschen": Löschen des zugehörigen Objekts in '.ITOP_APPLICATION_SHORT.' (und der Replica in der Datentabelle).
"Update": Aktualisierung des zugehörigen Objekts gemäß den "Update-Regeln".
"Update, danach Löschen": Die "Update-Regeln" anwenden. Wenn die Aufbewahrungsdauer abgelaufen ist, "Löschen" durchführen.',
'Class:SynchroDataSource/Attribute:delete_policy/Value:delete' => 'Löschen',
'Class:SynchroDataSource/Attribute:delete_policy/Value:ignore' => 'Ignorieren',
'Class:SynchroDataSource/Attribute:delete_policy/Value:update' => 'Update',
@@ -1042,7 +1042,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
// Class: BackgroundTask
//
Dict::Add('DE DE', 'German', 'Deutsch', array(
'Class:BackgroundTask' => 'Hintergrund Task',
'Class:BackgroundTask' => 'Hintergrund-Task',
'Class:BackgroundTask+' => '',
'Class:BackgroundTask/Attribute:class_name' => 'Klassenname',
'Class:BackgroundTask/Attribute:class_name+' => '',

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