From 687f4a50d7e7e6f1ffba6cec2d767a5f151b7307 Mon Sep 17 00:00:00 2001 From: Denis Nikiforov Date: Mon, 13 May 2024 13:55:53 +0500 Subject: [PATCH] [3464] Improve i18n support for domain and view forms Bug: https://github.com/eclipse-sirius/sirius-web/issues/3464 Signed-off-by: Denis Nikiforov --- CHANGELOG.adoc | 1 + .../emf/forms/EEnumIfDescriptionProvider.java | 8 +- .../emf/forms/EEnumLiteralLabelProvider.java | 66 +++++ .../emf/forms/EMFFormDescriptionProvider.java | 2 +- .../emf/services/DefaultEditService.java | 15 +- .../services/messages/EMFMessageService.java | 22 +- .../services/messages/IEMFMessageService.java | 30 +- .../messages/sirius-web-emf.properties | 6 +- .../messages/sirius-web-emf_ru.properties | 20 ++ .../DomainPropertiesConfigurer.java | 48 ++-- .../MultipleDomainPropertiesConfigurer.java | 24 +- .../DomainPropertiesMessageService.java | 41 +++ ...s-web-sample-application-domain.properties | 24 ++ ...eb-sample-application-domain_ru.properties | 24 ++ .../messages/IServicesMessageService.java | 2 + .../messages/ServicesMessageService.java | 5 + .../RepresentationsDescriptionProvider.java | 12 +- .../RepresentationsMetadataProvider.java | 13 +- .../messages/sirius-web-services.properties | 3 +- .../sirius-web-services_ru.properties | 19 ++ .../projects/NoOpServicesMessageService.java | 5 + .../src/main/resources/plugin_ru.properties | 71 +++++ .../src/main/resources/plugin_ru.properties | 27 ++ .../src/main/resources/plugin_ru.properties | 215 +++++++++++++++ .../src/main/resources/plugin_ru.properties | 72 +++++ .../sirius-components-view-emf/pom.xml | 5 + .../emf/FixedColorPropertiesConfigurer.java | 15 +- ...opertiesDescriptionRegistryConfigurer.java | 2 +- .../PropertiesWidgetCreationService.java | 9 +- .../EdgeStylePropertiesConfigurer.java | 40 ++- .../NodeStylePropertiesConfigurer.java | 47 +++- .../src/main/resources/plugin_ru.properties | 257 ++++++++++++++++++ .../src/main/resources/plugin_ru.properties | 66 +++++ .../src/main/resources/plugin_ru.properties | 35 +++ 34 files changed, 1153 insertions(+), 98 deletions(-) create mode 100644 packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumLiteralLabelProvider.java create mode 100644 packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf_ru.properties create mode 100644 packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/messages/DomainPropertiesMessageService.java create mode 100644 packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain.properties create mode 100644 packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain_ru.properties create mode 100644 packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services_ru.properties create mode 100644 packages/view/backend/sirius-components-view-deck-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-view-diagram-customnodes-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-view-diagram-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-view-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-view-form-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-view-gantt-edit/src/main/resources/plugin_ru.properties create mode 100644 packages/view/backend/sirius-components-widget-reference-view-edit/src/main/resources/plugin_ru.properties diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index e2905e4164c..45508e7598f 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -155,6 +155,7 @@ They still support returning an `java.time.Instant` object directly. - https://github.com/eclipse-sirius/sirius-web/issues/3391[#3391] [diagram] Accept gradient for node background - https://github.com/eclipse-sirius/sirius-web/issues/3435[#3435] [diagram] Extract diagram style from useDropNode - https://github.com/eclipse-sirius/sirius-web/issues/3453[#3453] [diagram] Memoizing edges and nodes style +- https://github.com/eclipse-sirius/sirius-web/issues/3464[#3464] [view] Improve i18n support for domain and view forms == v2024.3.0 diff --git a/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumIfDescriptionProvider.java b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumIfDescriptionProvider.java index e942990f559..588eb47c55e 100644 --- a/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumIfDescriptionProvider.java +++ b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumIfDescriptionProvider.java @@ -128,13 +128,7 @@ private Function getOptionIdProvider() { } private Function getOptionLabelProvider() { - return variableManager -> { - Object litteral = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE); - if (litteral instanceof Enumerator) { - return ((Enumerator) litteral).getLiteral(); - } - return ""; - }; + return new EEnumLiteralLabelProvider(EMFFormDescriptionProvider.ESTRUCTURAL_FEATURE, this.composedAdapterFactory); } private Function getOptionSelectedProvider() { diff --git a/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumLiteralLabelProvider.java b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumLiteralLabelProvider.java new file mode 100644 index 00000000000..93867bfff8d --- /dev/null +++ b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EEnumLiteralLabelProvider.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2024 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.components.emf.forms; + +import java.util.Objects; +import java.util.function.Function; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.sirius.components.forms.components.SelectComponent; +import org.eclipse.sirius.components.representations.VariableManager; + +/** + * Utility class used to provide a label for an enumeration literal in the variable manager. + * + * @author aresekb + */ +public class EEnumLiteralLabelProvider implements Function { + + private final String featureVariableName; + + private final AdapterFactory adapterFactory; + + public EEnumLiteralLabelProvider(String featureVariableName, AdapterFactory adapterFactory) { + this.featureVariableName = Objects.requireNonNull(featureVariableName); + this.adapterFactory = Objects.requireNonNull(adapterFactory); + } + + @Override + public String apply(VariableManager variableManager) { + Object object = variableManager.getVariables().get(VariableManager.SELF); + Object feature = variableManager.getVariables().get(this.featureVariableName); + Object literal = variableManager.getVariables().get(SelectComponent.CANDIDATE_VARIABLE); + + String result = ""; + if (object instanceof EObject eObject && feature instanceof EStructuralFeature eStructuralFeature) { + Adapter adapter = this.adapterFactory.adapt(eObject, IItemPropertySource.class); + if (adapter instanceof IItemPropertySource itemPropertySource) { + IItemPropertyDescriptor descriptor = itemPropertySource.getPropertyDescriptor(eObject, eStructuralFeature); + if (descriptor != null) { + result = descriptor.getLabelProvider(eObject).getText(literal); + } + } + } + if (result.isEmpty() && literal instanceof Enumerator enumerator) { + result = enumerator.getLiteral(); + } + return result; + } + +} diff --git a/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EMFFormDescriptionProvider.java b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EMFFormDescriptionProvider.java index 099de47f329..6078c70bfbb 100644 --- a/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EMFFormDescriptionProvider.java +++ b/packages/emf/backend/sirius-components-emf-forms/src/main/java/org/eclipse/sirius/components/emf/forms/EMFFormDescriptionProvider.java @@ -204,7 +204,7 @@ private GroupDescription getGroupDescription() { return GroupDescription.newGroupDescription("groupId") .idProvider(variableManager -> "Core Properties") - .labelProvider(variableManager -> "Core Properties") + .labelProvider(variableManager -> this.emfMessageService.coreProperties()) .semanticElementsProvider(variableManager -> Collections.singletonList(variableManager.getVariables().get(VariableManager.SELF))) .controlDescriptions(controlDescriptions) .build(); diff --git a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/DefaultEditService.java b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/DefaultEditService.java index 618253f112d..9a4ceeadce8 100644 --- a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/DefaultEditService.java +++ b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/DefaultEditService.java @@ -161,6 +161,8 @@ public List getChildCreationDescriptions(IEditingConte @Override public Optional createChild(IEditingContext editingContext, Object object, String childCreationDescriptionId) { + String childEClassName = childCreationDescriptionId.replace(" ", ""); + var optionalEditingDomain = Optional.of(editingContext) .filter(IEMFEditingContext.class::isInstance) .map(IEMFEditingContext.class::cast) @@ -181,16 +183,9 @@ public Optional createChild(IEditingContext editingContext, Object objec .map(CommandParameter.class::cast) .toList(); - Adapter adapter = editingDomain.getAdapterFactory().adapt(eObject, IEditingDomainItemProvider.class); - if (adapter instanceof IEditingDomainItemProvider editingDomainItemProvider) { - if (editingDomainItemProvider instanceof Helper helper) { - for (CommandParameter commandParameter : commandParameters) { - String text = helper.getCreateChildText(eObject, commandParameter.getFeature(), commandParameter.getValue(), null); - - if (childCreationDescriptionId.equals(text)) { - return this.createObject(editingDomain, eObject, commandParameter); - } - } + for (CommandParameter commandParameter : commandParameters) { + if (commandParameter.getValue() instanceof EObject value && childEClassName.equals(value.eClass().getName())) { + return this.createObject(editingDomain, eObject, commandParameter); } } } diff --git a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/EMFMessageService.java b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/EMFMessageService.java index a283a0bbcce..7d9e3f259ce 100644 --- a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/EMFMessageService.java +++ b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/EMFMessageService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019, 2023 Obeo. + * Copyright (c) 2019, 2024 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -52,4 +52,24 @@ public String upperBoundaryReached(String newInstanceClass, String feature) { return this.messageSourceAccessor.getMessage("UPPER_BOUNDARY_REACHED", new Object[] { newInstanceClass, feature }); } + @Override + public String properties() { + return this.messageSourceAccessor.getMessage("PROPERTIES"); + } + + @Override + public String coreProperties() { + return this.messageSourceAccessor.getMessage("CORE_PROPERTIES"); + } + + @Override + public String general() { + return this.messageSourceAccessor.getMessage("GENERAL"); + } + + @Override + public String shapePreview() { + return this.messageSourceAccessor.getMessage("SHAPE_PREVIEW"); + } + } diff --git a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/IEMFMessageService.java b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/IEMFMessageService.java index f8bd0f34c88..08a2219ad11 100644 --- a/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/IEMFMessageService.java +++ b/packages/emf/backend/sirius-components-emf/src/main/java/org/eclipse/sirius/components/emf/services/messages/IEMFMessageService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019, 2023 Obeo. + * Copyright (c) 2019, 2024 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -27,6 +27,14 @@ public interface IEMFMessageService { String upperBoundaryReached(String newInstanceClass, String feature); + String properties(); + + String coreProperties(); + + String general(); + + String shapePreview(); + /** * Implementation which does nothing, used for mocks in unit tests. * @@ -53,5 +61,25 @@ public String invalidNumber(String newValue) { public String upperBoundaryReached(String newInstanceClass, String feature) { return ""; } + + @Override + public String properties() { + return ""; + } + + @Override + public String coreProperties() { + return ""; + } + + @Override + public String general() { + return ""; + } + + @Override + public String shapePreview() { + return ""; + } } } diff --git a/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf.properties b/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf.properties index 071856c9289..eb7a1fda497 100644 --- a/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf.properties +++ b/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf.properties @@ -1,5 +1,5 @@ ################################################################################ -# Copyright (c) 2019, 2023 Obeo. +# Copyright (c) 2019, 2024 Obeo. # This program and the accompanying materials # are made available under the terms of the Eclipse Public License v2.0 # which accompanies this distribution, and is available at @@ -14,3 +14,7 @@ INVALID_INPUT = Invalid input type, "{0}" has been received while "{1}" was expe UNEXPECTED_ERROR = An unexpected error has occurred, please contact the server administrator INVALID_NUMBER = The new value "{0}" is not a valid number UPPER_BOUNDARY_REACHED = Unable to create a new instance of "{0}" in feature "{1}" because it has reached its upper-bound cardinality. +PROPERTIES = Properties +CORE_PROPERTIES = Core Properties +GENERAL = General +SHAPE_PREVIEW = Shape Preview diff --git a/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf_ru.properties b/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf_ru.properties new file mode 100644 index 00000000000..69c03deef85 --- /dev/null +++ b/packages/emf/backend/sirius-components-emf/src/main/resources/messages/sirius-web-emf_ru.properties @@ -0,0 +1,20 @@ +################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################# +INVALID_INPUT = \u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0442\u0438\u043F, \u0431\u044B\u043B\u043E \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E "{0}", \u0430 \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C "{1}" +UNEXPECTED_ERROR = \u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0441 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C +INVALID_NUMBER = \u041D\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 "{0}" \u043D\u0435 \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0447\u0438\u0441\u043B\u043E\u043C +UPPER_BOUNDARY_REACHED = \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}", \u043F\u043E\u0442\u043E\u043C\u0443 \u0447\u0442\u043E \u0434\u043E\u0441\u0442\u0438\u0433\u043D\u0443\u0442 \u043F\u0440\u0435\u0434\u0435\u043B \u043D\u0430 \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432. +PROPERTIES = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 +CORE_PROPERTIES = \u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 +GENERAL = \u041E\u0431\u0449\u0438\u0435 +SHAPE_PREVIEW = \u041F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0444\u0438\u0433\u0443\u0440\u044B diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/DomainPropertiesConfigurer.java b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/DomainPropertiesConfigurer.java index a0ceb3d9c2c..9448c7247cf 100644 --- a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/DomainPropertiesConfigurer.java +++ b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/DomainPropertiesConfigurer.java @@ -45,6 +45,7 @@ import org.eclipse.sirius.components.view.form.WidgetDescription; import org.eclipse.sirius.components.view.widget.reference.ReferenceFactory; import org.eclipse.sirius.components.view.widget.reference.ReferenceWidgetDescription; +import org.eclipse.sirius.web.sample.messages.DomainPropertiesMessageService; import org.eclipse.sirius.web.sample.services.DomainAttributeServices; import org.eclipse.sirius.web.services.api.representations.IInMemoryViewRegistry; import org.springframework.context.annotation.Configuration; @@ -65,10 +66,13 @@ public class DomainPropertiesConfigurer implements IPropertiesDescriptionRegistr private final IInMemoryViewRegistry viewRegistry; - public DomainPropertiesConfigurer(ViewFormDescriptionConverter converter, IFeedbackMessageService feedbackMessageService, IInMemoryViewRegistry viewRegistry) { + private final DomainPropertiesMessageService messageService; + + public DomainPropertiesConfigurer(ViewFormDescriptionConverter converter, IFeedbackMessageService feedbackMessageService, IInMemoryViewRegistry viewRegistry, DomainPropertiesMessageService messageService) { this.viewRegistry = Objects.requireNonNull(viewRegistry); this.converter = Objects.requireNonNull(converter); this.feedbackMessageService = Objects.requireNonNull(feedbackMessageService); + this.messageService = Objects.requireNonNull(messageService); } @Override @@ -101,7 +105,7 @@ private FormDescription getAttributeDetails() { FormDescription form = FormFactory.eINSTANCE.createFormDescription(); form.setName("Attribute Details"); form.setDomainType("domain::Attribute"); - form.setTitleExpression("Attribute Details"); + form.setTitleExpression(this.messageService.getMessage("ATTRIBUTE_DETAILS")); PageDescription page = FormFactory.eINSTANCE.createPageDescription(); page.setDomainType("domain::Attribute"); @@ -123,13 +127,13 @@ private GroupDescription createEntityGroup() { GroupDescription group = FormFactory.eINSTANCE.createGroupDescription(); group.setDisplayMode(GroupDisplayMode.LIST); group.setName(CORE_PROPERTIES); - group.setLabelExpression(CORE_PROPERTIES); + group.setLabelExpression(this.messageService.getMessage("CORE_PROPERTIES")); group.setSemanticCandidatesExpression("aql:self"); - group.getChildren().add(this.createStringAttributeEditWidget("Name", DomainPackage.Literals.NAMED_ELEMENT__NAME.getName())); - group.getChildren().add(this.createReferenceWidget("Super Type", DomainPackage.Literals.ENTITY__SUPER_TYPES.getName())); - group.getChildren().add(this.createReferenceWidget("Attributes", DomainPackage.Literals.ENTITY__ATTRIBUTES.getName())); - group.getChildren().add(this.createReferenceWidget("Relations", DomainPackage.Literals.ENTITY__RELATIONS.getName())); - group.getChildren().add(this.createBooleanAttributeEditWidget("Abstract", DomainPackage.Literals.ENTITY__ABSTRACT.getName())); + group.getChildren().add(this.createStringAttributeEditWidget("Name", "NAME", DomainPackage.Literals.NAMED_ELEMENT__NAME.getName())); + group.getChildren().add(this.createReferenceWidget("Super Types", "SUPER_TYPES", DomainPackage.Literals.ENTITY__SUPER_TYPES.getName())); + group.getChildren().add(this.createReferenceWidget("Attributes", "ATTRIBUTES", DomainPackage.Literals.ENTITY__ATTRIBUTES.getName())); + group.getChildren().add(this.createReferenceWidget("Relations", "RELATIONS", DomainPackage.Literals.ENTITY__RELATIONS.getName())); + group.getChildren().add(this.createBooleanAttributeEditWidget("Abstract", "ABSTRACT", DomainPackage.Literals.ENTITY__ABSTRACT.getName())); return group; } @@ -137,20 +141,20 @@ private GroupDescription createGroup() { GroupDescription group = FormFactory.eINSTANCE.createGroupDescription(); group.setDisplayMode(GroupDisplayMode.LIST); group.setName(CORE_PROPERTIES); - group.setLabelExpression(CORE_PROPERTIES); + group.setLabelExpression(this.messageService.getMessage("CORE_PROPERTIES")); group.setSemanticCandidatesExpression("aql:self"); - group.getChildren().add(this.createStringAttributeEditWidget("Name", DomainPackage.Literals.NAMED_ELEMENT__NAME.getName())); + group.getChildren().add(this.createStringAttributeEditWidget("Name", "NAME", DomainPackage.Literals.NAMED_ELEMENT__NAME.getName())); group.getChildren().add(this.createTypeSelectorWidget()); - group.getChildren().add(this.createBooleanAttributeEditWidget("Optional", DomainPackage.Literals.FEATURE__OPTIONAL.getName())); - group.getChildren().add(this.createBooleanAttributeEditWidget("Many", DomainPackage.Literals.FEATURE__MANY.getName())); + group.getChildren().add(this.createBooleanAttributeEditWidget("Optional", "OPTIONAL", DomainPackage.Literals.FEATURE__OPTIONAL.getName())); + group.getChildren().add(this.createBooleanAttributeEditWidget("Many", "MANY", DomainPackage.Literals.FEATURE__MANY.getName())); group.getChildren().add(this.createCardinalityLabel()); return group; } - private WidgetDescription createStringAttributeEditWidget(String title, String attributeName) { + private WidgetDescription createStringAttributeEditWidget(String name, String label, String attributeName) { TextfieldDescription textfield = FormFactory.eINSTANCE.createTextfieldDescription(); - textfield.setName(title); - textfield.setLabelExpression(title); + textfield.setName(name); + textfield.setLabelExpression(this.messageService.getMessage(label)); textfield.setValueExpression("aql:self.%s".formatted(attributeName)); SetValue setValueOperation = ViewFactory.eINSTANCE.createSetValue(); setValueOperation.setFeatureName(attributeName); @@ -159,10 +163,10 @@ private WidgetDescription createStringAttributeEditWidget(String title, String a return textfield; } - private WidgetDescription createBooleanAttributeEditWidget(String title, String attributeName) { + private WidgetDescription createBooleanAttributeEditWidget(String name, String label, String attributeName) { CheckboxDescription checkbox = FormFactory.eINSTANCE.createCheckboxDescription(); - checkbox.setName(title); - checkbox.setLabelExpression(title); + checkbox.setName(name); + checkbox.setLabelExpression(this.messageService.getMessage(label)); checkbox.setValueExpression("aql:self.%s".formatted(attributeName)); SetValue setValueOperation = ViewFactory.eINSTANCE.createSetValue(); setValueOperation.setFeatureName(attributeName); @@ -174,7 +178,7 @@ private WidgetDescription createBooleanAttributeEditWidget(String title, String private WidgetDescription createTypeSelectorWidget() { SelectDescription selectWidget = FormFactory.eINSTANCE.createSelectDescription(); selectWidget.setName("Type"); - selectWidget.setLabelExpression("Type"); + selectWidget.setLabelExpression(this.messageService.getMessage("TYPE")); selectWidget.setCandidatesExpression("aql:self.getAvailableDataTypes()"); selectWidget.setValueExpression("aql:self.getDataType()"); selectWidget.setCandidateLabelExpression("aql:candidate.capitalize()"); @@ -184,10 +188,10 @@ private WidgetDescription createTypeSelectorWidget() { return selectWidget; } - private WidgetDescription createReferenceWidget(String name, String referenceName) { + private WidgetDescription createReferenceWidget(String name, String label, String referenceName) { ReferenceWidgetDescription refWidget = ReferenceFactory.eINSTANCE.createReferenceWidgetDescription(); refWidget.setName(name); - refWidget.setLabelExpression(name); + refWidget.setLabelExpression(this.messageService.getMessage(label)); refWidget.setReferenceNameExpression(referenceName); return refWidget; } @@ -195,7 +199,7 @@ private WidgetDescription createReferenceWidget(String name, String referenceNam private WidgetDescription createCardinalityLabel() { LabelDescription cardinalityLabel = FormFactory.eINSTANCE.createLabelDescription(); cardinalityLabel.setName("Cardinality"); - cardinalityLabel.setLabelExpression("Cardinality"); + cardinalityLabel.setLabelExpression(this.messageService.getMessage("CARDINALITY")); cardinalityLabel.setValueExpression("aql:(if self.optional then '0' else '1' endif) + '..' + (if self.many then '*' else '1' endif)"); return cardinalityLabel; } diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/MultipleDomainPropertiesConfigurer.java b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/MultipleDomainPropertiesConfigurer.java index 68a765d278b..de87007591a 100644 --- a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/MultipleDomainPropertiesConfigurer.java +++ b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/configuration/MultipleDomainPropertiesConfigurer.java @@ -37,6 +37,7 @@ import org.eclipse.sirius.components.view.form.PageDescription; import org.eclipse.sirius.components.view.form.SelectDescription; import org.eclipse.sirius.components.view.form.WidgetDescription; +import org.eclipse.sirius.web.sample.messages.DomainPropertiesMessageService; import org.eclipse.sirius.web.sample.services.DomainAttributeServices; import org.springframework.context.annotation.Configuration; @@ -50,8 +51,11 @@ public class MultipleDomainPropertiesConfigurer implements IPropertiesDescriptio private final ViewFormDescriptionConverter converter; - public MultipleDomainPropertiesConfigurer(ViewFormDescriptionConverter converter) { + private final DomainPropertiesMessageService messageService; + + public MultipleDomainPropertiesConfigurer(ViewFormDescriptionConverter converter, DomainPropertiesMessageService messageService) { this.converter = Objects.requireNonNull(converter); + this.messageService = Objects.requireNonNull(messageService); } @Override @@ -78,13 +82,13 @@ private FormDescription getAttributeDetails() { FormDescription form = FormFactory.eINSTANCE.createFormDescription(); form.setName("Attribute Details"); form.setDomainType("domain::Attribute"); - form.setTitleExpression("Attribute Details"); + form.setTitleExpression(this.messageService.getMessage("ATTRIBUTE_DETAILS")); PageDescription page = FormFactory.eINSTANCE.createPageDescription(); page.setSemanticCandidatesExpression("aql:self"); page.setDomainType("domain::Attribute"); page.setPreconditionExpression("aql:selection->filter(domain::Attribute)->size()>1"); - page.setLabelExpression("MultiSelection"); + page.setLabelExpression(this.messageService.getMessage("MULTI_SELECTION")); form.getPages().add(page); page.getGroups().add(this.createGroup()); return form; @@ -94,19 +98,19 @@ private GroupDescription createGroup() { GroupDescription group = FormFactory.eINSTANCE.createGroupDescription(); group.setDisplayMode(GroupDisplayMode.LIST); group.setName("Core Properties"); - group.setLabelExpression("Core Properties"); + group.setLabelExpression(this.messageService.getMessage("CORE_PROPERTIES")); group.setSemanticCandidatesExpression("aql:self"); group.getChildren().add(this.createTypeSelectorWidget()); - group.getChildren().add(this.createBooleanAttributeEditWidget("Optional", DomainPackage.Literals.FEATURE__OPTIONAL.getName())); - group.getChildren().add(this.createBooleanAttributeEditWidget("Many", DomainPackage.Literals.FEATURE__MANY.getName())); + group.getChildren().add(this.createBooleanAttributeEditWidget("Optional", "OPTIONAL", DomainPackage.Literals.FEATURE__OPTIONAL.getName())); + group.getChildren().add(this.createBooleanAttributeEditWidget("Many", "MANY", DomainPackage.Literals.FEATURE__MANY.getName())); return group; } - private WidgetDescription createBooleanAttributeEditWidget(String title, String attributeName) { + private WidgetDescription createBooleanAttributeEditWidget(String name, String label, String attributeName) { CheckboxDescription checkbox = FormFactory.eINSTANCE.createCheckboxDescription(); - checkbox.setName(title); - checkbox.setLabelExpression(title); + checkbox.setName(name); + checkbox.setLabelExpression(this.messageService.getMessage(label)); checkbox.setValueExpression("aql:self.%s".formatted(attributeName)); ChangeContext changeContext = ViewFactory.eINSTANCE.createChangeContext(); changeContext.setExpression("aql:selection->filter(domain::Attribute).setValue('%s',newValue)".formatted(attributeName)); @@ -117,7 +121,7 @@ private WidgetDescription createBooleanAttributeEditWidget(String title, String private WidgetDescription createTypeSelectorWidget() { SelectDescription selectWidget = FormFactory.eINSTANCE.createSelectDescription(); selectWidget.setName("Type"); - selectWidget.setLabelExpression("Type"); + selectWidget.setLabelExpression(this.messageService.getMessage("TYPE")); selectWidget.setCandidatesExpression("aql:self.getAvailableDataTypes()"); selectWidget.setValueExpression("aql:self.getDataType()"); selectWidget.setCandidateLabelExpression("aql:candidate.capitalize()"); diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/messages/DomainPropertiesMessageService.java b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/messages/DomainPropertiesMessageService.java new file mode 100644 index 00000000000..28d3e5a3b24 --- /dev/null +++ b/packages/sirius-web/backend/sirius-web-sample-application/src/main/java/org/eclipse/sirius/web/sample/messages/DomainPropertiesMessageService.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2024 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.web.sample.messages; + +import org.springframework.context.support.MessageSourceAccessor; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.stereotype.Service; + +/** + * The message service for a domain property form. + * + * @author aresekb + */ +@Service +public class DomainPropertiesMessageService { + + private static final String MESSAGES_PATH = "messages/sirius-web-sample-application-domain"; + + private final MessageSourceAccessor messageSourceAccessor; + + public DomainPropertiesMessageService() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.addBasenames(MESSAGES_PATH); + this.messageSourceAccessor = new MessageSourceAccessor(messageSource); + } + + public String getMessage(String code) { + return this.messageSourceAccessor.getMessage(code); + } + +} diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain.properties b/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain.properties new file mode 100644 index 00000000000..f0466439dd5 --- /dev/null +++ b/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain.properties @@ -0,0 +1,24 @@ +################################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################################ +ABSTRACT=Abstract +ATTRIBUTE_DETAILS=Attribute Details +ATTRIBUTES=Attributes +CARDINALITY=Cardinality +CORE_PROPERTIES=Core Properties +MANY=Many +MULTI_SELECTION=MultiSelection +NAME=Name +OPTIONAL=Optional +RELATIONS=Relations +SUPER_TYPES=Super Types +TYPE=Type diff --git a/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain_ru.properties b/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain_ru.properties new file mode 100644 index 00000000000..99fcdaa4583 --- /dev/null +++ b/packages/sirius-web/backend/sirius-web-sample-application/src/main/resources/messages/sirius-web-sample-application-domain_ru.properties @@ -0,0 +1,24 @@ +################################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################################ +ABSTRACT=\u0410\u0431\u0441\u0442\u0440\u0430\u043A\u0442\u043D\u044B\u0439 +ATTRIBUTE_DETAILS=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 +ATTRIBUTES=\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044B +CARDINALITY=\u041C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C +CORE_PROPERTIES=\u041E\u0441\u043D\u043E\u0432\u043D\u044B\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 +MANY=\u041C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 +MULTI_SELECTION=\u041C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 +NAME=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +OPTIONAL=\u041D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 +RELATIONS=\u041E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u044F +SUPER_TYPES=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0435 \u0442\u0438\u043F\u044B +TYPE=\u0422\u0438\u043F diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/IServicesMessageService.java b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/IServicesMessageService.java index 1afae141281..d6d536c4036 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/IServicesMessageService.java +++ b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/IServicesMessageService.java @@ -33,4 +33,6 @@ public interface IServicesMessageService { String stereotypeNotFound(UUID stereotypeId); + String representations(); + } diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/ServicesMessageService.java b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/ServicesMessageService.java index eb16fb65a7e..6f7a82013a1 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/ServicesMessageService.java +++ b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/messages/ServicesMessageService.java @@ -62,4 +62,9 @@ public String invalidDocumentName(String name) { public String stereotypeNotFound(UUID stereotypeId) { return this.messageSourceAccessor.getMessage("STEREOTYPE_NOT_FOUND", new Object[] { stereotypeId }); } + + @Override + public String representations() { + return this.messageSourceAccessor.getMessage("REPRESENTATIONS"); + } } diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsDescriptionProvider.java b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsDescriptionProvider.java index f5c698b5a72..e1c22b2403f 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsDescriptionProvider.java +++ b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsDescriptionProvider.java @@ -53,6 +53,7 @@ import org.eclipse.sirius.components.representations.Success; import org.eclipse.sirius.components.representations.VariableManager; import org.eclipse.sirius.web.services.api.representations.IRepresentationService; +import org.eclipse.sirius.web.services.messages.IServicesMessageService; import org.springframework.stereotype.Service; /** @@ -63,8 +64,6 @@ @Service public class RepresentationsDescriptionProvider implements IRepresentationsDescriptionProvider { - public static final String TITLE = "Representations"; - public static final String PREFIX = "representations://"; public static final String REPRESENTATIONS_DEFAULT_FORM_DESCRIPTION_ID = "representations_default_form_description"; @@ -75,15 +74,18 @@ public class RepresentationsDescriptionProvider implements IRepresentationsDescr private final IRepresentationSearchService representationSearchService; + private final IServicesMessageService servicesMessageService; + private final List representationImageProviders; private final Function semanticTargetIdProvider; public RepresentationsDescriptionProvider(IObjectService objectService, IRepresentationService representationService, IRepresentationSearchService representationSearchService, - List representationImageProviders) { + IServicesMessageService servicesMessageService, List representationImageProviders) { this.objectService = Objects.requireNonNull(objectService); this.representationService = Objects.requireNonNull(representationService); this.representationSearchService = Objects.requireNonNull(representationSearchService); + this.servicesMessageService = Objects.requireNonNull(servicesMessageService); this.representationImageProviders = Objects.requireNonNull(representationImageProviders); this.semanticTargetIdProvider = variableManager -> variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getId).orElse(null); } @@ -101,7 +103,7 @@ public FormDescription getRepresentationsDescription() { Function labelProvider = variableManager -> variableManager.get(VariableManager.SELF, Object.class) .map(this.objectService::getFullLabel) - .orElse(TITLE); + .orElse(this.servicesMessageService.representations()); return FormDescription.newFormDescription(UUID.nameUUIDFromBytes(REPRESENTATIONS_DEFAULT_FORM_DESCRIPTION_ID.getBytes()).toString()) .label("Representations default form description") @@ -137,7 +139,7 @@ private GroupDescription getGroupDescription() { ListDescription listDescription = ListDescription.newListDescription("RepresentationsList") .idProvider(new WidgetIdProvider()) - .labelProvider(variableManager -> TITLE) + .labelProvider(variableManager -> this.servicesMessageService.representations()) .itemsProvider(this.getItemsProvider()) .itemIdProvider(this.getItemIdProvider()) .itemLabelProvider(this.getItemLabelProvider()) diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsMetadataProvider.java b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsMetadataProvider.java index ddbbfff8049..602e3f0f601 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsMetadataProvider.java +++ b/packages/sirius-web/backend/sirius-web-services/src/main/java/org/eclipse/sirius/web/services/representations/RepresentationsMetadataProvider.java @@ -12,17 +12,28 @@ *******************************************************************************/ package org.eclipse.sirius.web.services.representations; +import java.util.Objects; + import org.eclipse.sirius.components.core.RepresentationMetadata; import org.eclipse.sirius.components.core.api.IRepresentationMetadataProvider; import org.eclipse.sirius.components.forms.Form; +import org.eclipse.sirius.web.services.messages.IServicesMessageService; +import org.springframework.stereotype.Service; /** * Provides the metadata for the "Representations" representation. * * @author pcdavid */ +@Service public class RepresentationsMetadataProvider implements IRepresentationMetadataProvider { + private final IServicesMessageService servicesMessageService; + + public RepresentationsMetadataProvider(IServicesMessageService servicesMessageService) { + this.servicesMessageService = Objects.requireNonNull(servicesMessageService); + } + @Override public boolean canHandle(String representationId) { return representationId != null && representationId.startsWith(RepresentationsDescriptionProvider.PREFIX); @@ -30,7 +41,7 @@ public boolean canHandle(String representationId) { @Override public RepresentationMetadata handle(String representationId) { - return new RepresentationMetadata(representationId, Form.KIND, RepresentationsDescriptionProvider.TITLE, RepresentationsDescriptionProvider.REPRESENTATIONS_DEFAULT_FORM_DESCRIPTION_ID); + return new RepresentationMetadata(representationId, Form.KIND, this.servicesMessageService.representations(), RepresentationsDescriptionProvider.REPRESENTATIONS_DEFAULT_FORM_DESCRIPTION_ID); } } diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services.properties b/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services.properties index ad68dab4d18..5af8cbf3a39 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services.properties +++ b/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services.properties @@ -15,4 +15,5 @@ INVALID_PROJECT_NAME=The name must contain between 3 and 20 characters PROJECT_NOT_FOUND=The project does not exist UNEXPECTED_ERROR=An unexpected error has occurred, please contact the server administrator INVALID_DOCUMENT_NAME=You cannot create a model with the name "{0}". Please use a valid name (no spaces, at least one character) for the new model -STEREOTYPE_NOT_FOUND=The model type with id "{0}" does not exist, therefore you cannot create a model from it \ No newline at end of file +STEREOTYPE_NOT_FOUND=The model type with id "{0}" does not exist, therefore you cannot create a model from it +REPRESENTATIONS=Representations diff --git a/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services_ru.properties b/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services_ru.properties new file mode 100644 index 00000000000..e0ab21c8407 --- /dev/null +++ b/packages/sirius-web/backend/sirius-web-services/src/main/resources/messages/sirius-web-services_ru.properties @@ -0,0 +1,19 @@ +################################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################################ +INVALID_INPUT=\u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u0442\u0438\u043F, \u0431\u044B\u043B\u043E \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E "{0}", \u0430 \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C "{1}" +INVALID_PROJECT_NAME=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043B\u0436\u043D\u043E \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u043E\u0442 3 \u0434\u043E 20 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 +PROJECT_NOT_FOUND=\u041F\u0440\u043E\u0435\u043A\u0442 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 +UNEXPECTED_ERROR=\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0441 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C +INVALID_DOCUMENT_NAME=\u0412\u044B \u043D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C \u0441 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435\u043C "{0}". \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 (\u0431\u0435\u0437 \u043F\u0440\u043E\u0431\u0435\u043B\u043E\u0432, \u0445\u043E\u0442\u044F \u0431\u044B \u043E\u0434\u0438\u043D \u0441\u0438\u043C\u0432\u043E\u043B) \u0434\u043B\u044F \u043D\u043E\u0432\u043E\u0439 \u043C\u043E\u0434\u0435\u043B\u0438 +STEREOTYPE_NOT_FOUND=\u0422\u0438\u043F \u043C\u043E\u0434\u0435\u043B\u0435\u0439 \u0441 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u043C "{0}" \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0432\u044B \u043D\u0435 \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C \u043D\u0430 \u0435\u0433\u043E \u043E\u0441\u043D\u043E\u0432\u0435 +REPRESENTATIONS=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F diff --git a/packages/sirius-web/backend/sirius-web-services/src/test/java/org/eclipse/sirius/web/services/projects/NoOpServicesMessageService.java b/packages/sirius-web/backend/sirius-web-services/src/test/java/org/eclipse/sirius/web/services/projects/NoOpServicesMessageService.java index a72909d6df4..90c40ef0836 100644 --- a/packages/sirius-web/backend/sirius-web-services/src/test/java/org/eclipse/sirius/web/services/projects/NoOpServicesMessageService.java +++ b/packages/sirius-web/backend/sirius-web-services/src/test/java/org/eclipse/sirius/web/services/projects/NoOpServicesMessageService.java @@ -53,4 +53,9 @@ public String stereotypeNotFound(UUID stereotypeId) { return ""; } + @Override + public String representations() { + return ""; + } + } diff --git a/packages/view/backend/sirius-components-view-deck-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-deck-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..96498e832e0 --- /dev/null +++ b/packages/view/backend/sirius-components-view-deck-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,71 @@ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation + +pluginName = Deck Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. + +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" + +_UI_DeckDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0434\u043E\u0441\u043E\u043A +_UI_LaneDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0434\u043E\u0440\u043E\u0436\u0435\u043A +_UI_CardDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_DeckTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 +_UI_CreateCardTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_EditCardTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_DeleteCardTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_EditLaneTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u0440\u043E\u0436\u0435\u043A +_UI_CardDropTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_LaneDropTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u0440\u043E\u0436\u0435\u043A +_UI_DeckElementDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 +_UI_DeckDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C +_UI_ConditionalDeckDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C +_UI_DeckElementDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C +_UI_ConditionalDeckElementDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 + +_UI_Unknown_datatype= \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 + +_UI_DeckDescription_laneDescriptions_feature = \u0414\u043E\u0440\u043E\u0436\u043A\u0438 +_UI_DeckDescription_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_DeckDescription_laneDropTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0434\u043E\u0440\u043E\u0436\u0435\u043A +_UI_DeckDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_DeckDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_LaneDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_LaneDescription_domainType_feature = \u0422\u0438\u043F +_UI_LaneDescription_ownedCardDescriptions_feature = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_LaneDescription_editTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F +_UI_LaneDescription_createTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F +_UI_LaneDescription_cardDropTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u043A\u0430\u0440\u0442\u043E\u0447\u0435\u043A +_UI_LaneDescription_isCollapsibleExpression_feature = \u041C\u043E\u0436\u0435\u0442 \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CardDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_CardDescription_domainType_feature = \u0422\u0438\u043F +_UI_CardDescription_descriptionExpression_feature = \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CardDescription_editTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F +_UI_CardDescription_deleteTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F +_UI_DeckTool_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_DeckTool_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_DeckElementDescription_semanticCandidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DeckElementDescription_titleExpression_feature = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DeckElementDescription_labelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DeckElementDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_DeckElementDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_DeckDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_DeckElementDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_DeckElementDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E + diff --git a/packages/view/backend/sirius-components-view-diagram-customnodes-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-diagram-customnodes-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..fc519cdf502 --- /dev/null +++ b/packages/view/backend/sirius-components-view-diagram-customnodes-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,27 @@ +################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################# +pluginName = Customnodes Edit Support +providerName = www.example.org +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" +_UI_EllipseNodeStyleDescription_type = \u0421\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B \u0432 \u0432\u0438\u0434\u0435 \u044D\u043B\u043B\u0438\u043F\u0441\u0430 +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 +_UI_Unknown_datatype = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_EllipseNodeStyleDescription_background_feature = \u0424\u043E\u043D +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E + diff --git a/packages/view/backend/sirius-components-view-diagram-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-diagram-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..be86280b608 --- /dev/null +++ b/packages/view/backend/sirius-components-view-diagram-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,215 @@ +################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################# +pluginName=Diagram Edit Support +providerName=www.example.org +_UI_CreateChild_text={0} +_UI_CreateChild_text2={1} "{0}" +_UI_CreateChild_text3={1} +_UI_CreateChild_tooltip=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. +_UI_PropertyDescriptor_description=\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" +_UI_DiagramDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C +_UI_DiagramElementDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C +_UI_NodeDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_EdgeDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_LayoutStrategyDescription_type=\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_ListLayoutStrategyDescription_type=\u0420\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043F\u0438\u0441\u043A\u0430 +_UI_FreeFormLayoutStrategyDescription_type=\u0421\u0432\u043E\u0431\u043E\u0434\u043D\u043E\u0435 \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_LabelDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_InsideLabelDescription_type=\u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0432\u043D\u0443\u0442\u0440\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_OutsideLabelDescription_type=\u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_Style_type=\u0421\u0442\u0438\u043B\u044C +_UI_BorderStyle_type=\u0421\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_InsideLabelStyle_type=\u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0432\u043D\u0443\u0442\u0440\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_OutsideLabelStyle_type=\u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_NodeLabelStyle_type=\u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440\u044B +_UI_NodeStyleDescription_type=\u0421\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B +_UI_ConditionalNodeStyle_type=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B +_UI_ConditionalInsideLabelStyle_type=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0432\u043D\u0443\u0442\u0440\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_ConditionalOutsideLabelStyle_type=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_RectangularNodeStyleDescription_type=\u0421\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B \u0432 \u0432\u0438\u0434\u0435 \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u0438\u043A\u0430 +_UI_ImageNodeStyleDescription_type=\u0421\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B \u0432 \u0432\u0438\u0434\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F +_UI_IconLabelNodeStyleDescription_type=\u0421\u0442\u0438\u043B\u044C \u0444\u0438\u0433\u0443\u0440\u044B \u0432 \u0432\u0438\u0434\u0435 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 \u0441\u043E \u0437\u043D\u0430\u0447\u043A\u043E\u043C +_UI_EdgeStyle_type=\u0421\u0442\u0438\u043B\u044C \u0441\u0432\u044F\u0437\u0438 +_UI_ConditionalEdgeStyle_type=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0441\u0432\u044F\u0437\u0438 +_UI_DiagramPalette_type=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 +_UI_NodePalette_type=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_EdgePalette_type=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 \u0434\u043B\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_Tool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 +_UI_DeleteTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F +_UI_DropTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F +_UI_EdgeTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_EdgeReconnectionTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_LabelEditTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u0435\u0439 +_UI_NodeTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_SourceEdgeEndReconnectionTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_TargetEdgeEndReconnectionTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043A\u043E\u043D\u0446\u0430 \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_CreateView_type=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 +_UI_DeleteView_type=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 +_UI_SelectionDescription_type=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0432\u044B\u0431\u043E\u0440\u0430 +_UI_ToolSection_type=\u0413\u0440\u0443\u043F\u043F\u0430 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_DiagramToolSection_type=\u0413\u0440\u0443\u043F\u043F\u0430 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B +_UI_NodeToolSection_type=\u0413\u0440\u0443\u043F\u043F\u0430 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440\u044B +_UI_EdgeToolSection_type=\u0413\u0440\u0443\u043F\u043F\u0430 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0441\u0432\u044F\u0437\u0438 +_UI_DropNodeTool_type=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_Unknown_type=\u041E\u0431\u044A\u0435\u043A\u0442 +_UI_Unknown_datatype=\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_DiagramDescription_autoLayout_feature=\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0435 \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0444\u0438\u0433\u0443\u0440 +_UI_DiagramDescription_palette_feature=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 +_UI_DiagramDescription_nodeDescriptions_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0444\u0438\u0433\u0443\u0440 +_UI_DiagramDescription_edgeDescriptions_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_DiagramDescription_arrangeLayoutDirection_feature=\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_DiagramElementDescription_name_feature=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_DiagramElementDescription_domainType_feature=\u0422\u0438\u043F +_UI_DiagramElementDescription_semanticCandidatesExpression_feature=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043C\u043E\u0434\u0435\u043B\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DiagramElementDescription_preconditionExpression_feature=\u041F\u0440\u0435\u0434\u0443\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DiagramElementDescription_synchronizationPolicy_feature=\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u0438 +_UI_NodeDescription_collapsible_feature=\u041C\u043E\u0436\u043D\u043E \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044C +_UI_NodeDescription_palette_feature=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 +_UI_NodeDescription_childrenLayoutStrategy_feature=\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044F \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0445 \u0444\u0438\u0433\u0443\u0440 +_UI_NodeDescription_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_NodeDescription_conditionalStyles_feature=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_NodeDescription_childrenDescriptions_feature=\u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_NodeDescription_borderNodesDescriptions_feature=\u0424\u0438\u0433\u0443\u0440\u044B \u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u0435 +_UI_NodeDescription_reusedChildNodeDescriptions_feature=\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_NodeDescription_reusedBorderNodeDescriptions_feature=\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435 \u0444\u0438\u0433\u0443\u0440\u044B \u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u0435 +_UI_NodeDescription_userResizable_feature=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u043C\u043E\u0433\u0443\u0442 \u0438\u0437\u043C\u0435\u043D\u044F\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 +_UI_NodeDescription_defaultWidthExpression_feature=\u0428\u0438\u0440\u0438\u043D\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeDescription_defaultHeightExpression_feature=\u0412\u044B\u0441\u043E\u0442\u0430 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeDescription_keepAspectRatio_feature=\u0421\u043E\u0445\u0440\u0430\u043D\u044F\u0442\u044C \u0441\u043E\u043E\u0442\u043D\u043E\u0448\u0435\u043D\u0438\u0435 \u0441\u0442\u043E\u0440\u043E\u043D +_UI_NodeDescription_isCollapsedByDefaultExpression_feature=\u0421\u0432\u0451\u0440\u043D\u0443\u0442\u043E \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeDescription_isHiddenByDefaultExpression_feature=\u0421\u043A\u0440\u044B\u0442\u043E \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeDescription_isFadedByDefaultExpression_feature=\u0417\u0430\u0442\u0435\u043D\u0435\u043D\u043E \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeDescription_insideLabel_feature=\u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0432\u043D\u0443\u0442\u0440\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_NodeDescription_outsideLabels_feature=\u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0441\u043D\u0430\u0440\u0443\u0436\u0438 \u0444\u0438\u0433\u0443\u0440\u044B +_UI_EdgeDescription_beginLabelExpression_feature=\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_EdgeDescription_centerLabelExpression_feature=\u0426\u0435\u043D\u0442\u0440\u0430\u043B\u044C\u043D\u0430\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_EdgeDescription_endLabelExpression_feature=\u041A\u043E\u043D\u0435\u0447\u043D\u0430\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_EdgeDescription_isDomainBasedEdge_feature=\u041E\u0441\u043D\u043E\u0432\u0430\u043D\u043E \u043D\u0430 \u0442\u0438\u043F\u0435 +_UI_EdgeDescription_palette_feature=\u041F\u0430\u043B\u0438\u0442\u0440\u0430 +_UI_EdgeDescription_sourceNodeDescriptions_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0445 \u0444\u0438\u0433\u0443\u0440 +_UI_EdgeDescription_targetNodeDescriptions_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u0444\u0438\u0433\u0443\u0440 +_UI_EdgeDescription_sourceNodesExpression_feature=\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0435 \u0444\u0438\u0433\u0443\u0440\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_EdgeDescription_targetNodesExpression_feature=\u0426\u0435\u043B\u0435\u0432\u044B\u0435 \u0444\u0438\u0433\u0443\u0440\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_EdgeDescription_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_EdgeDescription_conditionalStyles_feature=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_ListLayoutStrategyDescription_areChildNodesDraggableExpression_feature=\u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u0444\u0438\u0433\u0443\u0440\u044B \u043C\u043E\u0433\u0443\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u0442\u044C\u0441\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ListLayoutStrategyDescription_topGapExpression_feature=\u041E\u0442\u0441\u0442\u0443\u043F \u0441\u0432\u0435\u0440\u0445\u0443 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ListLayoutStrategyDescription_bottomGapExpression_feature=\u041E\u0442\u0441\u0442\u0443\u043F \u0441\u043D\u0438\u0437\u0443 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelDescription_labelExpression_feature=\u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelDescription_overflowStrategy_feature=\u041F\u043E\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u0434\u043B\u0438\u043D\u043D\u044B\u0445 \u043D\u0430\u0434\u043F\u0438\u0441\u0435\u0439 +_UI_InsideLabelDescription_position_feature=\u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 +_UI_InsideLabelDescription_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_InsideLabelDescription_conditionalStyles_feature=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_OutsideLabelDescription_position_feature=\u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 +_UI_OutsideLabelDescription_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_OutsideLabelDescription_conditionalStyles_feature=\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_ListLayoutStrategyDescription_growableNodes_feature=\u0424\u0438\u0433\u0443\u0440\u044B \u043C\u043E\u0433\u0443\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F +_UI_Style_color_feature=\u0426\u0432\u0435\u0442 +_UI_BorderStyle_borderColor_feature=\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_BorderStyle_borderRadius_feature=\u0420\u0430\u0434\u0438\u0443\u0441 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_BorderStyle_borderSize_feature=\u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_BorderStyle_borderLineStyle_feature=\u0421\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_InsideLabelStyle_withHeader_feature=\u0421 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u043E\u043C +_UI_InsideLabelStyle_displayHeaderSeparator_feature=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 +_UI_NodeLabelStyle_labelColor_feature=\u0426\u0432\u0435\u0442 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_NodeLabelStyle_showIcon_feature=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A +_UI_NodeLabelStyle_labelIcon_feature=\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_ConditionalNodeStyle_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_ConditionalInsideLabelStyle_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_ConditionalOutsideLabelStyle_style_feature=\u0421\u0442\u0438\u043B\u044C +_UI_RectangularNodeStyleDescription_background_feature=\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_ImageNodeStyleDescription_shape_feature=\u0424\u0438\u0433\u0443\u0440\u0430 +_UI_ImageNodeStyleDescription_positionDependentRotation_feature=\u041F\u043E\u0432\u043E\u0440\u043E\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442 \u0440\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u044F +_UI_IconLabelNodeStyleDescription_background_feature=\u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_EdgeStyle_lineStyle_feature=\u0421\u0442\u0438\u043B\u044C \u043B\u0438\u043D\u0438\u0438 +_UI_EdgeStyle_sourceArrowStyle_feature=\u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0438 +_UI_EdgeStyle_targetArrowStyle_feature=\u0421\u0442\u0438\u043B\u044C \u043A\u043E\u043D\u0435\u0447\u043D\u043E\u0439 \u0441\u0442\u0440\u0435\u043B\u043A\u0438 +_UI_EdgeStyle_edgeWidth_feature=\u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u043B\u0438\u043D\u0438\u0438 +_UI_EdgeStyle_showIcon_feature=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A +_UI_EdgeStyle_labelIcon_feature=\u0417\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_DiagramPalette_dropTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F +_UI_DiagramPalette_dropNodeTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_DiagramPalette_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_DiagramPalette_toolSections_feature=\u0413\u0440\u0443\u043F\u043F\u044B \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_NodePalette_deleteTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F +_UI_NodePalette_labelEditTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_NodePalette_dropNodeTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_NodePalette_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_NodePalette_edgeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_NodePalette_toolSections_feature=\u0413\u0440\u0443\u043F\u043F\u044B \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_EdgePalette_deleteTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F +_UI_EdgePalette_centerLabelEditTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0446\u0435\u043D\u0442\u0440\u0430\u043B\u044C\u043D\u043E\u0439 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_EdgePalette_beginLabelEditTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_EdgePalette_endLabelEditTool_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u043A\u043E\u043D\u0435\u0447\u043D\u043E\u0439 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_EdgePalette_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_EdgePalette_edgeReconnectionTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u043F\u0435\u0440\u0435\u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_EdgePalette_toolSections_feature=\u0413\u0440\u0443\u043F\u043F\u044B \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_Tool_name_feature=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_Tool_preconditionExpression_feature=\u041F\u0440\u0435\u0434\u0443\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_Tool_body_feature=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_EdgeTool_targetElementDescriptions_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0446\u0435\u043B\u0435\u0432\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_EdgeTool_iconURLsExpression_feature=\u0410\u0434\u0440\u0435\u0441\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelEditTool_initialDirectEditLabelExpression_feature=\u041D\u0430\u0447\u0430\u043B\u044C\u043D\u0430\u044F \u043D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_NodeTool_selectionDescription_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0432\u044B\u0431\u043E\u0440\u0430 +_UI_NodeTool_iconURLsExpression_feature=\u0410\u0434\u0440\u0435\u0441\u0430 \u0437\u043D\u0430\u0447\u043A\u043E\u0432 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CreateView_parentViewExpression_feature=\u0420\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CreateView_elementDescription_feature=\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 +_UI_CreateView_semanticElementExpression_feature=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CreateView_variableName_feature=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 +_UI_CreateView_containmentKind_feature=\u0422\u0438\u043F \u0432\u043B\u043E\u0436\u0435\u043D\u0438\u044F +_UI_DeleteView_viewExpression_feature=\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectionDescription_selectionCandidatesExpression_feature=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectionDescription_selectionMessage_feature=\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 +_UI_ToolSection_name_feature=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_DiagramToolSection_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_NodeToolSection_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_NodeToolSection_edgeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0441\u0432\u044F\u0437\u0435\u0439 +_UI_EdgeToolSection_nodeTools_feature=\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0444\u0438\u0433\u0443\u0440 +_UI_DropNodeTool_acceptedNodeTypes_feature=\u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0442\u0438\u043F\u044B \u0444\u0438\u0433\u0443\u0440 +_UI_Unknown_feature=\u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E +_UI_ArrowStyle_None_literal=\u043D\u0435\u0442 +_UI_ArrowStyle_OutputArrow_literal=\u0432\u044B\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_InputArrow_literal=\u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_OutputClosedArrow_literal=\u0432\u044B\u0445\u043E\u0434\u043D\u0430\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_InputClosedArrow_literal=\u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0437\u0430\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_OutputFillClosedArrow_literal=\u0432\u044B\u0445\u043E\u0434\u043D\u0430\u044F \u0437\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_InputFillClosedArrow_literal=\u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0437\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 +_UI_ArrowStyle_Diamond_literal=\u0440\u043E\u043C\u0431 +_UI_ArrowStyle_FillDiamond_literal=\u0437\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043D\u044B\u0439 \u0440\u043E\u043C\u0431 +_UI_ArrowStyle_InputArrowWithDiamond_literal=\u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u0441 \u0440\u043E\u043C\u0431\u043E\u043C +_UI_ArrowStyle_InputArrowWithFillDiamond_literal=\u0432\u0445\u043E\u0434\u043D\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u0441 \u0437\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043D\u044B\u043C \u0440\u043E\u043C\u0431\u043E\u043C +_UI_ArrowStyle_Circle_literal=\u043A\u0440\u0443\u0433 +_UI_ArrowStyle_FillCircle_literal=\u0437\u0430\u043A\u0440\u0430\u0448\u0435\u043D\u043D\u044B\u0439 \u043A\u0440\u0443\u0433 +_UI_ArrowStyle_CrossedCircle_literal=\u043F\u0435\u0440\u0435\u0447\u0435\u0440\u043A\u043D\u0443\u0442\u044B\u0439 \u043A\u0440\u0443\u0433 +_UI_ArrowStyle_ClosedArrowWithVerticalBar_literal=\u0437\u0430\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u0441 \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u043E\u0439 \u043B\u0438\u043D\u0438\u0435\u0439 +_UI_ArrowStyle_ClosedArrowWithDots_literal=\u0437\u0430\u043A\u0440\u044B\u0442\u0430\u044F \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u0441 \u0442\u043E\u0447\u043A\u0430\u043C\u0438 +_UI_LayoutDirection_Column_literal=\u0441\u0442\u043E\u043B\u0431\u0435\u0446 +_UI_LineStyle_Solid_literal=\u0441\u043F\u043B\u043E\u0448\u043D\u0430\u044F +_UI_LineStyle_Dash_literal=\u0448\u0442\u0440\u0438\u0445\u043E\u0432\u0430\u044F +_UI_LineStyle_Dot_literal=\u043F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u0430\u044F +_UI_LineStyle_Dash_Dot_literal=\u0448\u0442\u0440\u0438\u0445\u043F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u0430\u044F +_UI_NodeContainmentKind_CHILD_NODE_literal=\u0434\u043E\u0447\u0435\u0440\u043D\u044F\u044F \u0444\u0438\u0433\u0443\u0440\u0430 +_UI_NodeContainmentKind_BORDER_NODE_literal=\u0444\u0438\u0433\u0443\u0440\u0430 \u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u0435 +_UI_SynchronizationPolicy_SYNCHRONIZED_literal=\u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043E +_UI_SynchronizationPolicy_UNSYNCHRONIZED_literal=\u043D\u0435 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u043E +_UI_InsideLabelPosition_TOP_CENTER_literal=\u0441\u0432\u0435\u0440\u0445\u0443 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 +_UI_OutsideLabelPosition_BOTTOM_CENTER_literal=\u0441\u043D\u0438\u0437\u0443 \u043F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 +_UI_LabelOverflowStrategy_NONE_literal=\u043D\u0435\u0442 +_UI_LabelOverflowStrategy_WRAP_literal=\u043F\u0435\u0440\u0435\u043D\u043E\u0441 +_UI_LabelOverflowStrategy_ELLIPSIS_literal=\u043C\u043D\u043E\u0433\u043E\u0442\u043E\u0447\u0438\u0435 +_UI_ArrangeLayoutDirection_RIGHT_literal=\u043D\u0430\u043F\u0440\u0430\u0432\u043E +_UI_ArrangeLayoutDirection_DOWN_literal=\u0432\u043D\u0438\u0437 +_UI_ArrangeLayoutDirection_LEFT_literal=\u043D\u0430\u043B\u0435\u0432\u043E +_UI_ArrangeLayoutDirection_UP_literal=\u043D\u0430\u0432\u0435\u0440\u0445 diff --git a/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..845e17d5ad6 --- /dev/null +++ b/packages/view/backend/sirius-components-view-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,72 @@ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation + +pluginName = View Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. + +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" + +_UI_View_type = \u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 +_UI_ColorPalette_type = \u041F\u0430\u043B\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043E\u0432 +_UI_FixedColor_type = \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u0446\u0432\u0435\u0442 +_UI_UserColor_type = \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0446\u0432\u0435\u0442 +_UI_RepresentationDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F +_UI_LabelStyle_type = \u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_Operation_type = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_ChangeContext_type = \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 +_UI_CreateInstance_type = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 +_UI_SetValue_type = \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_UnsetValue_type = \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_DeleteElement_type = \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442 +_UI_Let_type = \u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F +_UI_If_type = \u0423\u0441\u043B\u043E\u0432\u0438\u0435 +_UI_Conditional_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 + +_UI_Unknown_datatype= \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 + +_UI_View_descriptions_feature = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 +_UI_View_colorPalettes_feature = \u041F\u0430\u043B\u0438\u0442\u0440\u044B \u0446\u0432\u0435\u0442\u043E\u0432 +_UI_ColorPalette_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_ColorPalette_colors_feature = \u0426\u0432\u0435\u0442\u0430 +_UI_FixedColor_value_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_UserColor_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_RepresentationDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_RepresentationDescription_domainType_feature = \u0422\u0438\u043F \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 +_UI_RepresentationDescription_preconditionExpression_feature = \u041F\u0440\u0435\u0434\u0443\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RepresentationDescription_titleExpression_feature = \u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelStyle_fontSize_feature = \u0420\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 +_UI_LabelStyle_italic_feature = \u041A\u0443\u0440\u0441\u0438\u0432 +_UI_LabelStyle_bold_feature = \u041F\u043E\u043B\u0443\u0436\u0438\u0440\u043D\u044B\u0439 +_UI_LabelStyle_underline_feature = \u041F\u043E\u0434\u0447\u0435\u0440\u043A\u043D\u0443\u0442\u044B\u0439 +_UI_LabelStyle_strikeThrough_feature = \u0417\u0430\u0447\u0435\u0440\u043A\u043D\u0443\u0442\u044B\u0439 +_UI_Operation_children_feature = \u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u043E\u0431\u044A\u0435\u043A\u0442 +_UI_ChangeContext_expression_feature = \u0412\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435 +_UI_CreateInstance_typeName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0442\u0438\u043F\u0430 +_UI_CreateInstance_referenceName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 +_UI_CreateInstance_variableName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 +_UI_SetValue_featureName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 +_UI_SetValue_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_UnsetValue_featureName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0432\u043E\u0439\u0441\u0442\u0432\u0430 +_UI_UnsetValue_elementExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_Let_variableName_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 +_UI_Let_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_If_conditionExpression_feature = \u0423\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_Conditional_condition_feature = \u0423\u0441\u043B\u043E\u0432\u0438\u0435 +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E + diff --git a/packages/view/backend/sirius-components-view-emf/pom.xml b/packages/view/backend/sirius-components-view-emf/pom.xml index 7a283aa7d8d..77269c9ef96 100644 --- a/packages/view/backend/sirius-components-view-emf/pom.xml +++ b/packages/view/backend/sirius-components-view-emf/pom.xml @@ -95,6 +95,11 @@ sirius-components-view-diagram 2024.3.4 + + org.eclipse.sirius + sirius-components-view-diagram-edit + 2024.3.4 + org.eclipse.sirius sirius-components-view-form diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/FixedColorPropertiesConfigurer.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/FixedColorPropertiesConfigurer.java index 564593389c5..e4771837d97 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/FixedColorPropertiesConfigurer.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/FixedColorPropertiesConfigurer.java @@ -30,6 +30,7 @@ import org.eclipse.sirius.components.core.api.IIdentityService; import org.eclipse.sirius.components.core.api.ILabelService; import org.eclipse.sirius.components.core.api.IValidationService; +import org.eclipse.sirius.components.emf.services.messages.IEMFMessageService; import org.eclipse.sirius.components.forms.description.AbstractControlDescription; import org.eclipse.sirius.components.forms.description.GroupDescription; import org.eclipse.sirius.components.forms.description.PageDescription; @@ -41,6 +42,7 @@ import org.eclipse.sirius.components.view.FixedColor; import org.eclipse.sirius.components.view.UserColor; import org.eclipse.sirius.components.view.ViewPackage; +import org.eclipse.sirius.components.view.provider.ViewEditPlugin; import org.eclipse.sirius.components.view.util.services.ColorPaletteService; import org.springframework.stereotype.Component; @@ -59,10 +61,13 @@ public class FixedColorPropertiesConfigurer implements IPropertiesDescriptionReg private final List validationServices; - public FixedColorPropertiesConfigurer(IIdentityService identityService, ILabelService labelService, List validationServices) { + private final IEMFMessageService emfMessageService; + + public FixedColorPropertiesConfigurer(IIdentityService identityService, ILabelService labelService, List validationServices, IEMFMessageService emfMessageService) { this.identityService = Objects.requireNonNull(identityService); this.labelService = Objects.requireNonNull(labelService); this.validationServices = Objects.requireNonNull(validationServices); + this.emfMessageService = Objects.requireNonNull(emfMessageService); } @Override @@ -86,13 +91,15 @@ private PageDescription getFixedColorProperties() { private List getGeneralControlDescription() { List controls = new ArrayList<>(); - var name = this.createTextField("fixedcolor.name", "Name", + var name = this.createTextField("fixedcolor.name", + ViewEditPlugin.INSTANCE.getString("_UI_UserColor_name_feature"), color -> ((UserColor) color).getName(), (color, newName) -> ((UserColor) color).setName(newName), ViewPackage.Literals.USER_COLOR__NAME); controls.add(name); - var value = this.createTextField("fixedcolor.value", "Value", + var value = this.createTextField("fixedcolor.value", + ViewEditPlugin.INSTANCE.getString("_UI_FixedColor_value_feature"), color -> ((FixedColor) color).getValue(), (color, newValue) -> ((FixedColor) color).setValue(newValue), ViewPackage.Literals.FIXED_COLOR__VALUE); @@ -122,7 +129,7 @@ private GroupDescription createSimpleGroupDescription(List "group") - .labelProvider(variableManager -> "Core Properties") + .labelProvider(variableManager -> this.emfMessageService.coreProperties()) .semanticElementsProvider(semanticElementsProvider) .controlDescriptions(controls) .build(); diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java index 36491f4802f..b97a994d5fd 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/ViewPropertiesDescriptionRegistryConfigurer.java @@ -235,7 +235,7 @@ public boolean handles(EAttribute eAttribute) { return GroupDescription.newGroupDescription("groupId") .idProvider(variableManager -> "Core Properties") - .labelProvider(variableManager -> "Core Properties") + .labelProvider(variableManager -> this.emfMessageService.coreProperties()) .semanticElementsProvider(variableManager -> Collections.singletonList(variableManager.getVariables().get(VariableManager.SELF))) .controlDescriptions(controlDescriptions) .build(); diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/compatibility/PropertiesWidgetCreationService.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/compatibility/PropertiesWidgetCreationService.java index 7ff8686a922..2b6200fc724 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/compatibility/PropertiesWidgetCreationService.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/compatibility/PropertiesWidgetCreationService.java @@ -31,6 +31,7 @@ import org.eclipse.sirius.components.core.api.IFeedbackMessageService; import org.eclipse.sirius.components.core.api.IObjectService; import org.eclipse.sirius.components.emf.services.api.IEMFKindService; +import org.eclipse.sirius.components.emf.services.messages.IEMFMessageService; import org.eclipse.sirius.components.forms.description.AbstractControlDescription; import org.eclipse.sirius.components.forms.description.CheckboxDescription; import org.eclipse.sirius.components.forms.description.GroupDescription; @@ -61,13 +62,15 @@ public class PropertiesWidgetCreationService implements IPropertiesWidgetCreatio private final IObjectService objectService; private final IEMFKindService emfKindService; private final IFeedbackMessageService feedbackMessageService; + private final IEMFMessageService emfMessageService; private final AQLTextfieldCustomizer aqlTextfieldCustomizer; - public PropertiesWidgetCreationService(IPropertiesConfigurerService propertiesConfigurerService, IObjectService objectService, IEMFKindService emfKindService, IFeedbackMessageService feedbackMessageService, AQLTextfieldCustomizer aqlTextfieldCustomizer) { + public PropertiesWidgetCreationService(IPropertiesConfigurerService propertiesConfigurerService, IObjectService objectService, IEMFKindService emfKindService, IFeedbackMessageService feedbackMessageService, IEMFMessageService emfMessageService, AQLTextfieldCustomizer aqlTextfieldCustomizer) { this.propertiesConfigurerService = Objects.requireNonNull(propertiesConfigurerService); this.objectService = Objects.requireNonNull(objectService); this.emfKindService = Objects.requireNonNull(emfKindService); this.feedbackMessageService = Objects.requireNonNull(feedbackMessageService); + this.emfMessageService = Objects.requireNonNull(emfMessageService); this.aqlTextfieldCustomizer = Objects.requireNonNull(aqlTextfieldCustomizer); } @@ -75,7 +78,7 @@ public PropertiesWidgetCreationService(IPropertiesConfigurerService propertiesCo public PageDescription createSimplePageDescription(String id, GroupDescription groupDescription, Predicate canCreatePredicate) { return PageDescription.newPageDescription(id) .idProvider(variableManager -> "page") - .labelProvider(variableManager -> "Properties") + .labelProvider(variableManager -> this.emfMessageService.properties()) .semanticElementsProvider(this.propertiesConfigurerService.getSemanticElementsProvider()) .canCreatePredicate(canCreatePredicate) .groupDescriptions(List.of(groupDescription)) @@ -86,7 +89,7 @@ public PageDescription createSimplePageDescription(String id, GroupDescription g public GroupDescription createSimpleGroupDescription(List controls) { return GroupDescription.newGroupDescription("group") .idProvider(variableManager -> "group") - .labelProvider(variableManager -> "General") + .labelProvider(variableManager -> this.emfMessageService.general()) .semanticElementsProvider(this.propertiesConfigurerService.getSemanticElementsProvider()) .controlDescriptions(controls) .build(); diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/EdgeStylePropertiesConfigurer.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/EdgeStylePropertiesConfigurer.java index 375aa66faa6..5df893b0ee1 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/EdgeStylePropertiesConfigurer.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/EdgeStylePropertiesConfigurer.java @@ -23,7 +23,6 @@ import java.util.stream.Stream; import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.Enumerator; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.edit.domain.EditingDomain; @@ -49,6 +48,7 @@ import org.eclipse.sirius.components.view.diagram.DiagramPackage; import org.eclipse.sirius.components.view.diagram.EdgeStyle; import org.eclipse.sirius.components.view.diagram.LineStyle; +import org.eclipse.sirius.components.view.diagram.provider.DiagramEditPlugin; import org.eclipse.sirius.components.view.emf.api.CustomImageMetadata; import org.eclipse.sirius.components.view.emf.api.ICustomImageMetadataSearchService; import org.eclipse.sirius.components.view.emf.compatibility.IPropertiesConfigurerService; @@ -66,6 +66,7 @@ public class EdgeStylePropertiesConfigurer implements IPropertiesDescriptionRegi private static final String EMPTY = ""; private static final String INT_PATTERN = "\\d+"; + private static final String LITERAL = "_literal"; private final ICustomImageMetadataSearchService customImageSearchService; private final IPropertiesConfigurerService propertiesConfigurerService; private final IPropertiesWidgetCreationService propertiesWidgetCreationService; @@ -97,7 +98,8 @@ public void addPropertiesDescriptions(IPropertiesDescriptionRegistry registry) { private List getGeneralControlDescription() { List controls = new ArrayList<>(); - var fontSize = this.propertiesWidgetCreationService.createTextField("nodestyle.fontSize", "Font Size", + var fontSize = this.propertiesWidgetCreationService.createTextField("nodestyle.fontSize", + DiagramEditPlugin.INSTANCE.getString("_UI_LabelStyle_fontSize_feature"), style -> String.valueOf(((LabelStyle) style).getFontSize()), (style, newColor) -> { try { @@ -109,31 +111,36 @@ private List getGeneralControlDescription() { ViewPackage.Literals.LABEL_STYLE__FONT_SIZE); controls.add(fontSize); - var italic = this.propertiesWidgetCreationService.createCheckbox("nodestyle.italic", "Italic", + var italic = this.propertiesWidgetCreationService.createCheckbox("nodestyle.italic", + DiagramEditPlugin.INSTANCE.getString("_UI_LabelStyle_italic_feature"), style -> ((LabelStyle) style).isItalic(), (style, newItalic) -> ((LabelStyle) style).setItalic(newItalic), ViewPackage.Literals.LABEL_STYLE__ITALIC, Optional.empty()); controls.add(italic); - var bold = this.propertiesWidgetCreationService.createCheckbox("nodestyle.bold", "Bold", + var bold = this.propertiesWidgetCreationService.createCheckbox("nodestyle.bold", + DiagramEditPlugin.INSTANCE.getString("_UI_LabelStyle_bold_feature"), style -> ((LabelStyle) style).isBold(), (style, newBold) -> ((LabelStyle) style).setBold(newBold), ViewPackage.Literals.LABEL_STYLE__BOLD, Optional.empty()); controls.add(bold); - var underline = this.propertiesWidgetCreationService.createCheckbox("nodestyle.underline", "Underline", + var underline = this.propertiesWidgetCreationService.createCheckbox("nodestyle.underline", + DiagramEditPlugin.INSTANCE.getString("_UI_LabelStyle_underline_feature"), style -> ((LabelStyle) style).isUnderline(), (style, newUnderline) -> ((LabelStyle) style).setUnderline(newUnderline), ViewPackage.Literals.LABEL_STYLE__UNDERLINE, Optional.empty()); controls.add(underline); - var strikeThrough = this.propertiesWidgetCreationService.createCheckbox("nodestyle.strikeThrough", "Strike Through", + var strikeThrough = this.propertiesWidgetCreationService.createCheckbox("nodestyle.strikeThrough", + DiagramEditPlugin.INSTANCE.getString("_UI_LabelStyle_strikeThrough_feature"), style -> ((LabelStyle) style).isStrikeThrough(), (style, newStrikeThrough) -> ((LabelStyle) style).setStrikeThrough(newStrikeThrough), ViewPackage.Literals.LABEL_STYLE__STRIKE_THROUGH, Optional.empty()); controls.add(strikeThrough); - var showIcon = this.propertiesWidgetCreationService.createCheckbox("nodestyle.showIcon", "Show Icon", + var showIcon = this.propertiesWidgetCreationService.createCheckbox("nodestyle.showIcon", + DiagramEditPlugin.INSTANCE.getString("_UI_EdgeStyle_showIcon_feature"), style -> ((EdgeStyle) style).isShowIcon(), (style, newValue) -> ((EdgeStyle) style).setShowIcon(newValue), DiagramPackage.Literals.EDGE_STYLE__SHOW_ICON, @@ -147,7 +154,10 @@ private List getGeneralControlDescription() { controls.add(this.createTargetArrowStyleSelectionField()); Function> colorOptionsProvider = variableManager -> this.getColorsFromColorPalettesStream(variableManager).toList(); - var userColor = this.propertiesWidgetCreationService.createReferenceWidget("edgestyle.Color", "Color", DiagramPackage.Literals.STYLE__COLOR, colorOptionsProvider); + var userColor = this.propertiesWidgetCreationService.createReferenceWidget("edgestyle.Color", + DiagramEditPlugin.INSTANCE.getString("_UI_Style_color_feature"), + DiagramPackage.Literals.STYLE__COLOR, + colorOptionsProvider); controls.add(userColor); return controls; @@ -176,7 +186,7 @@ private SelectDescription createSourceArrowStyleSelectionField() { return SelectDescription.newSelectDescription("edgestyle.sourceArrowStyleSelector") .idProvider(variableManager -> "edgestyle.sourceArrowStyleSelector") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Source Arrow Syle") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_EdgeStyle_sourceArrowStyle_feature")) .styleProvider(vm -> SelectStyle.newSelectStyle().showIcon(true).build()) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, EdgeStyle.class).map(EdgeStyle::getSourceArrowStyle) .map(ArrowStyle::getValue) @@ -188,7 +198,7 @@ private SelectDescription createSourceArrowStyleSelectionField() { .map(String::valueOf) .orElse(EMPTY)) .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, ArrowStyle.class) - .map(Enumerator::getName) + .map(literal -> DiagramEditPlugin.INSTANCE.getString("_UI_ArrowStyle_" + literal.getName() + LITERAL)) .orElse(EMPTY)) .optionIconURLProvider(variableManager -> List.of()) .newValueHandler(this.getSourceArrowValueHandler()) @@ -217,7 +227,7 @@ private SelectDescription createTargetArrowStyleSelectionField() { return SelectDescription.newSelectDescription("edgestyle.targetArrowStyleSelector") .idProvider(variableManager -> "edgestyle.targetArrowStyleSelector") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Target Arrow Syle") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_EdgeStyle_targetArrowStyle_feature")) .styleProvider(vm -> SelectStyle.newSelectStyle().showIcon(true).build()) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, EdgeStyle.class).map(EdgeStyle::getTargetArrowStyle) .map(ArrowStyle::getValue) @@ -229,7 +239,7 @@ private SelectDescription createTargetArrowStyleSelectionField() { .map(String::valueOf) .orElse(EMPTY)) .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, ArrowStyle.class) - .map(Enumerator::getName) + .map(literal -> DiagramEditPlugin.INSTANCE.getString("_UI_ArrowStyle_" + literal.getName() + LITERAL)) .orElse(EMPTY)) .optionIconURLProvider(variableManager -> List.of()) .newValueHandler(this.getTargetArrowValueHandler()) @@ -258,7 +268,7 @@ private SelectDescription createLineStyleSelectionField() { return SelectDescription.newSelectDescription("edgestyle.lineStyleSelector") .idProvider(variableManager -> "edgestyle.lineStyleSelector") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Line Syle") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_EdgeStyle_lineStyle_feature")) .styleProvider(vm -> SelectStyle.newSelectStyle().showIcon(true).build()) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, EdgeStyle.class).map(EdgeStyle::getLineStyle) .map(LineStyle::getValue) @@ -270,7 +280,7 @@ private SelectDescription createLineStyleSelectionField() { .map(String::valueOf) .orElse(EMPTY)) .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, LineStyle.class) - .map(Enumerator::getName) + .map(literal -> DiagramEditPlugin.INSTANCE.getString("_UI_LineStyle_" + literal.getName() + LITERAL)) .orElse(EMPTY)) .optionIconURLProvider(variableManager -> List.of()) .newValueHandler(this.getLineStyleValueHandler()) @@ -299,7 +309,7 @@ private SelectDescription createIconSelectionField() { return SelectDescription.newSelectDescription("edgestyle.iconLabelSelector") .idProvider(variableManager -> "edgestyle.iconLabelSelector") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Custom Icon") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_EdgeStyle_labelIcon_feature")) .styleProvider(vm -> SelectStyle.newSelectStyle().showIcon(true).build()) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, EdgeStyle.class).map(EdgeStyle::getLabelIcon).orElse(EMPTY)) .optionsProvider(variableManager -> variableManager.get(IEditingContext.EDITING_CONTEXT, IEditingContext.class) diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/NodeStylePropertiesConfigurer.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/NodeStylePropertiesConfigurer.java index 4e34701ab7a..3e6abe02fc6 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/NodeStylePropertiesConfigurer.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/NodeStylePropertiesConfigurer.java @@ -36,6 +36,7 @@ import org.eclipse.sirius.components.core.api.IObjectService; import org.eclipse.sirius.components.diagrams.NodeType; import org.eclipse.sirius.components.emf.services.api.IEMFEditingContext; +import org.eclipse.sirius.components.emf.services.messages.IEMFMessageService; import org.eclipse.sirius.components.forms.components.SelectComponent; import org.eclipse.sirius.components.forms.description.AbstractControlDescription; import org.eclipse.sirius.components.forms.description.GroupDescription; @@ -58,6 +59,7 @@ import org.eclipse.sirius.components.view.diagram.NodeDescription; import org.eclipse.sirius.components.view.diagram.NodeStyleDescription; import org.eclipse.sirius.components.view.diagram.RectangularNodeStyleDescription; +import org.eclipse.sirius.components.view.diagram.provider.DiagramEditPlugin; import org.eclipse.sirius.components.view.emf.api.CustomImageMetadata; import org.eclipse.sirius.components.view.emf.api.ICustomImageMetadataSearchService; import org.eclipse.sirius.components.view.emf.compatibility.IPropertiesConfigurerService; @@ -78,14 +80,16 @@ public class NodeStylePropertiesConfigurer implements IPropertiesDescriptionRegi private final IPropertiesConfigurerService propertiesConfigurerService; private final IPropertiesWidgetCreationService propertiesWidgetCreationService; private final IObjectService objectService; + private final IEMFMessageService emfMessageService; public NodeStylePropertiesConfigurer(ICustomImageMetadataSearchService customImageSearchService, - List parametricSVGImageRegistries, PropertiesConfigurerService propertiesConfigurerService, IPropertiesWidgetCreationService propertiesWidgetCreationService, IObjectService objectService) { + List parametricSVGImageRegistries, PropertiesConfigurerService propertiesConfigurerService, IPropertiesWidgetCreationService propertiesWidgetCreationService, IObjectService objectService, IEMFMessageService emfMessageService) { this.customImageSearchService = Objects.requireNonNull(customImageSearchService); this.parametricSVGImageRegistries = parametricSVGImageRegistries; this.propertiesConfigurerService = Objects.requireNonNull(propertiesConfigurerService); this.propertiesWidgetCreationService = Objects.requireNonNull(propertiesWidgetCreationService); this.objectService = Objects.requireNonNull(objectService); + this.emfMessageService = Objects.requireNonNull(emfMessageService); } @Override @@ -101,26 +105,26 @@ private PageDescription getListLayoutStrategyProperties() { List controls = new ArrayList<>(); var areChildNodesDraggableExpression = this.propertiesWidgetCreationService.createExpressionField("listLayoutStrategy.areChildNodesDraggableExpression", - "Are Child Nodes Draggable Expression", + DiagramEditPlugin.INSTANCE.getString("_UI_ListLayoutStrategyDescription_areChildNodesDraggableExpression_feature"), desc -> String.valueOf(((ListLayoutStrategyDescription) desc).getAreChildNodesDraggableExpression()), (desc, newValue) -> ((ListLayoutStrategyDescription) desc).setAreChildNodesDraggableExpression(newValue), DiagramPackage.Literals.LIST_LAYOUT_STRATEGY_DESCRIPTION__ARE_CHILD_NODES_DRAGGABLE_EXPRESSION); controls.add(areChildNodesDraggableExpression); var topGapExpression = this.propertiesWidgetCreationService.createExpressionField("listLayoutStrategy.topGapExpression", - "Top Gap Expression", + DiagramEditPlugin.INSTANCE.getString("_UI_ListLayoutStrategyDescription_topGapExpression_feature"), desc -> String.valueOf(((ListLayoutStrategyDescription) desc).getTopGapExpression()), (desc, newValue) -> ((ListLayoutStrategyDescription) desc).setTopGapExpression(newValue), DiagramPackage.Literals.LIST_LAYOUT_STRATEGY_DESCRIPTION__TOP_GAP_EXPRESSION); controls.add(topGapExpression); var bottomGapExpression = this.propertiesWidgetCreationService.createExpressionField("listLayoutStrategy.bottomGapExpression", - "Bottom Gap Expression", + DiagramEditPlugin.INSTANCE.getString("_UI_ListLayoutStrategyDescription_bottomGapExpression_feature"), desc -> String.valueOf(((ListLayoutStrategyDescription) desc).getBottomGapExpression()), (desc, newValue) -> ((ListLayoutStrategyDescription) desc).setBottomGapExpression(newValue), DiagramPackage.Literals.LIST_LAYOUT_STRATEGY_DESCRIPTION__BOTTOM_GAP_EXPRESSION); controls.add(bottomGapExpression); var growableNodes = this.propertiesWidgetCreationService.createReferenceWidget("listLayoutStrategy.growableNodes", - "Growable Nodes", + DiagramEditPlugin.INSTANCE.getString("_UI_ListLayoutStrategyDescription_growableNodes_feature"), DiagramPackage.Literals.LIST_LAYOUT_STRATEGY_DESCRIPTION__GROWABLE_NODES, this::getSubNodes); controls.add(growableNodes); @@ -150,7 +154,8 @@ private PageDescription getImageNodeStyleProperties() { controls.add(this.createShapeSelectionField()); controls.add(this.createShapePreviewField()); controls.addAll(this.getGeneralControlDescription(NodeType.NODE_IMAGE)); - var isPositionDependentRotation = this.propertiesWidgetCreationService.createCheckbox("nodestyle.positionDependentRotation", "Position-Dependent Rotation", + var isPositionDependentRotation = this.propertiesWidgetCreationService.createCheckbox("nodestyle.positionDependentRotation", + DiagramEditPlugin.INSTANCE.getString("_UI_ImageNodeStyleDescription_positionDependentRotation_feature"), style -> ((ImageNodeStyleDescription) style).isPositionDependentRotation(), (style, newValue) -> ((ImageNodeStyleDescription) style).setPositionDependentRotation(newValue), DiagramPackage.Literals.IMAGE_NODE_STYLE_DESCRIPTION__POSITION_DEPENDENT_ROTATION, @@ -202,18 +207,27 @@ private List getGeneralControlDescription(String nod Function> colorOptionsProvider = variableManager -> this.getColorsFromColorPalettesStream(variableManager).toList(); if (Objects.equals(nodeType, NodeType.NODE_RECTANGLE)) { - var color = this.propertiesWidgetCreationService.createReferenceWidget("rectangular.nodestyle.background", "Background", DiagramPackage.Literals.RECTANGULAR_NODE_STYLE_DESCRIPTION__BACKGROUND, colorOptionsProvider); + var color = this.propertiesWidgetCreationService.createReferenceWidget("rectangular.nodestyle.background", + DiagramEditPlugin.INSTANCE.getString("_UI_RectangularNodeStyleDescription_background_feature"), + DiagramPackage.Literals.RECTANGULAR_NODE_STYLE_DESCRIPTION__BACKGROUND, + colorOptionsProvider); controls.add(color); } if (Objects.equals(nodeType, NodeType.NODE_ICON_LABEL)) { - var color = this.propertiesWidgetCreationService.createReferenceWidget("icon.nodestyle.background", "Background", DiagramPackage.Literals.ICON_LABEL_NODE_STYLE_DESCRIPTION__BACKGROUND, + var color = this.propertiesWidgetCreationService.createReferenceWidget("icon.nodestyle.background", + DiagramEditPlugin.INSTANCE.getString("_UI_IconLabelNodeStyleDescription_background_feature"), + DiagramPackage.Literals.ICON_LABEL_NODE_STYLE_DESCRIPTION__BACKGROUND, colorOptionsProvider); controls.add(color); } - var borderColor = this.propertiesWidgetCreationService.createReferenceWidget("nodestyle.borderColor", "Border Color", DiagramPackage.Literals.BORDER_STYLE__BORDER_COLOR, colorOptionsProvider); + var borderColor = this.propertiesWidgetCreationService.createReferenceWidget("nodestyle.borderColor", + DiagramEditPlugin.INSTANCE.getString("_UI_BorderStyle_borderColor_feature"), + DiagramPackage.Literals.BORDER_STYLE__BORDER_COLOR, + colorOptionsProvider); controls.add(borderColor); - var borderRadius = this.propertiesWidgetCreationService.createTextField("nodestyle.borderRadius", "Border Radius", + var borderRadius = this.propertiesWidgetCreationService.createTextField("nodestyle.borderRadius", + DiagramEditPlugin.INSTANCE.getString("_UI_BorderStyle_borderRadius_feature"), style -> String.valueOf(((NodeStyleDescription) style).getBorderRadius()), (style, newBorderRadius) -> { try { @@ -225,7 +239,8 @@ private List getGeneralControlDescription(String nod DiagramPackage.Literals.BORDER_STYLE__BORDER_RADIUS); controls.add(borderRadius); - var borderSize = this.propertiesWidgetCreationService.createTextField("nodestyle.borderSize", "Border Size", + var borderSize = this.propertiesWidgetCreationService.createTextField("nodestyle.borderSize", + DiagramEditPlugin.INSTANCE.getString("_UI_BorderStyle_borderSize_feature"), style -> String.valueOf(((NodeStyleDescription) style).getBorderSize()), (style, newBorderSize) -> { try { @@ -247,14 +262,16 @@ private SelectDescription createBorderLineStyleSelectionField() { return SelectDescription.newSelectDescription("nodestyle.borderstyle") .idProvider(variableManager -> "nodestyle.borderstyle") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Border Line Style") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_BorderStyle_borderLineStyle_feature")) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, BorderStyle.class) .map(BorderStyle::getBorderLineStyle) .map(LineStyle::toString) .orElse("")) .optionsProvider(variableManager -> LineStyle.VALUES.stream().toList()) .optionIdProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, LineStyle.class).map(LineStyle::getLiteral).orElse("")) - .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, LineStyle.class).map(LineStyle::getName).orElse("")) + .optionLabelProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, LineStyle.class) + .map(literal -> DiagramEditPlugin.INSTANCE.getString("_UI_LineStyle_" + literal.getName() + "_literal")) + .orElse("")) .optionIconURLProvider(variableManager -> variableManager.get(SelectComponent.CANDIDATE_VARIABLE, Object.class).map(this.objectService::getImagePath) .orElse(List.of())) .newValueHandler((variableManager, newValue) -> { @@ -300,7 +317,7 @@ private SelectDescription createShapeSelectionField() { return SelectDescription.newSelectDescription("nodestyle.shapeSelector") .idProvider(variableManager -> "nodestyle.shapeSelector") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) - .labelProvider(variableManager -> "Shape") + .labelProvider(variableManager -> DiagramEditPlugin.INSTANCE.getString("_UI_ImageNodeStyleDescription_shape_feature")) .valueProvider(variableManager -> variableManager.get(VariableManager.SELF, ImageNodeStyleDescription.class).map(ImageNodeStyleDescription::getShape).orElse("")) .optionsProvider(variableManager -> { Optional optionalEditingContextId = variableManager.get(IEditingContext.EDITING_CONTEXT, IEditingContext.class).map(IEditingContext::getId); @@ -335,7 +352,7 @@ private ImageDescription createShapePreviewField() { return ImageDescription.newImageDescription("nodestyle.shapePreview") .targetObjectIdProvider(this.propertiesConfigurerService.getSemanticTargetIdProvider()) .idProvider(variableManager -> "nodestyle.shapePreview") - .labelProvider(variableManager -> "Shape Preview") + .labelProvider(variableManager -> this.emfMessageService.shapePreview()) .urlProvider(variableManager -> variableManager.get(VariableManager.SELF, ImageNodeStyleDescription.class).map(ImageNodeStyleDescription::getShape).orElse("")) .maxWidthProvider(variableManager -> "300px") .diagnosticsProvider(variableManager -> List.of()) diff --git a/packages/view/backend/sirius-components-view-form-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-form-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..e9bbf7713eb --- /dev/null +++ b/packages/view/backend/sirius-components-view-form-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,257 @@ +################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################# +pluginName = Form Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. + +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" + +_UI_FormDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0444\u043E\u0440\u043C +_UI_FormVariable_type = \u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F +_UI_PageDescription_type = \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430 +_UI_GroupDescription_type = \u0413\u0440\u0443\u043F\u043F\u0430 +_UI_FormElementDescription_type = \u042D\u043B\u0435\u043C\u0435\u043D\u0442 +_UI_WidgetDescription_type = \u041F\u043E\u043B\u0435 +_UI_BarChartDescription_type = \u0413\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u0430 +_UI_ButtonDescription_type = \u041A\u043D\u043E\u043F\u043A\u0430 +_UI_CheckboxDescription_type = \u0424\u043B\u0430\u0436\u043E\u043A +_UI_DateTimeDescription_type = \u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F +_UI_FlexboxContainerDescription_type = \u041A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440 +_UI_ImageDescription_type = \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 +_UI_LabelDescription_type = \u041D\u0430\u0434\u043F\u0438\u0441\u044C +_UI_LinkDescription_type = \u0421\u0441\u044B\u043B\u043A\u0430 +_UI_ListDescription_type = \u0421\u043F\u0438\u0441\u043E\u043A +_UI_MultiSelectDescription_type = \u041C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440 +_UI_PieChartDescription_type = \u041A\u0440\u0443\u0433\u043E\u0432\u0430\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u0430 +_UI_RadioDescription_type = \u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C +_UI_RichTextDescription_type = \u0422\u0435\u043A\u0441\u0442 \u0441 \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435\u043C +_UI_SelectDescription_type = \u0412\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u0439 \u0441\u043F\u0438\u0441\u043E\u043A +_UI_SplitButtonDescription_type = \u041A\u043D\u043E\u043F\u043A\u0430 \u0441 \u0432\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0438\u043C \u0441\u043F\u0438\u0441\u043A\u043E\u043C +_UI_TextAreaDescription_type = \u041C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442 +_UI_TextfieldDescription_type = \u0422\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0435 \u043F\u043E\u043B\u0435 +_UI_TreeDescription_type = \u0414\u0435\u0440\u0435\u0432\u043E +_UI_SliderDescription_type = \u041F\u043E\u043B\u0437\u0443\u043D\u043E\u043A +_UI_WidgetDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043F\u043E\u043B\u044F +_UI_BarChartDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0433\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B +_UI_ConditionalBarChartDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0433\u0438\u0441\u0442\u043E\u0433\u0440\u0430\u043C\u043C\u044B +_UI_ButtonDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438 +_UI_ConditionalButtonDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438 +_UI_CheckboxDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0444\u043B\u0430\u0436\u043A\u0430 +_UI_ConditionalCheckboxDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0444\u043B\u0430\u0436\u043A\u0430 +_UI_DateTimeDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0434\u0430\u0442\u044B \u0438 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 +_UI_ConditionalDateTimeDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0434\u0430\u0442\u044B \u0438 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 +_UI_LabelDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_ConditionalLabelDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_LinkDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0441\u0441\u044B\u043B\u043A\u0438 +_UI_ConditionalLinkDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0441\u0441\u044B\u043B\u043A\u0438 +_UI_ListDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0441\u043F\u0438\u0441\u043A\u0430 +_UI_ConditionalListDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0441\u043F\u0438\u0441\u043A\u0430 +_UI_MultiSelectDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 +_UI_ConditionalMultiSelectDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0433\u043E \u0432\u044B\u0431\u043E\u0440\u0430 +_UI_PieChartDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043A\u0440\u0443\u0433\u043E\u0432\u043E\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B +_UI_ConditionalPieChartDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043A\u0440\u0443\u0433\u043E\u0432\u043E\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C\u044B +_UI_RadioDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044F +_UI_ConditionalRadioDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044F +_UI_SelectDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0432\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0435\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 +_UI_ConditionalSelectDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0432\u044B\u043F\u0430\u0434\u0430\u044E\u0449\u0435\u0433\u043E \u0441\u043F\u0438\u0441\u043A\u0430 +_UI_TextareaDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_ConditionalTextareaDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043C\u043D\u043E\u0433\u043E\u0441\u0442\u0440\u043E\u0447\u043D\u043E\u0433\u043E \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_TextfieldDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u043B\u044F +_UI_ConditionalTextfieldDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u043B\u044F +_UI_ContainerBorderStyle_type = \u0421\u0442\u0438\u043B\u044C \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430 +_UI_ConditionalContainerBorderStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430 +_UI_FormElementFor_type = \u0426\u0438\u043A\u043B +_UI_FormElementIf_type = \u0423\u0441\u043B\u043E\u0432\u0438\u0435 +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 + +_UI_Unknown_datatype= \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 + +_UI_FormDescription_pages_feature = \u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B +_UI_FormDescription_formVariables_feature = \u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 +_UI_FormVariable_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_FormVariable_defaultValueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PageDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_PageDescription_labelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PageDescription_domainType_feature = \u0422\u0438\u043F +_UI_PageDescription_semanticCandidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PageDescription_preconditionExpression_feature = \u041F\u0440\u0435\u0434\u0443\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PageDescription_groups_feature = \u0413\u0440\u0443\u043F\u043F\u044B +_UI_PageDescription_toolbarActions_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_GroupDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_GroupDescription_labelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_GroupDescription_displayMode_feature = \u0420\u0435\u0436\u0438\u043C \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F +_UI_GroupDescription_semanticCandidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_GroupDescription_toolbarActions_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u043D\u0430 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_GroupDescription_children_feature = \u041F\u043E\u043B\u044F +_UI_GroupDescription_borderStyle_feature = \u0421\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_GroupDescription_conditionalBorderStyles_feature =\u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_FormElementDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_WidgetDescription_labelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_WidgetDescription_helpExpression_feature = \u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_BarChartDescription_valuesExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_BarChartDescription_keysExpression_feature = \u041A\u043B\u044E\u0447\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_BarChartDescription_yAxisLabelExpression_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u043E\u0439 \u043E\u0441\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_BarChartDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_BarChartDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_BarChartDescription_width_feature = \u0428\u0438\u0440\u0438\u043D\u0430 +_UI_BarChartDescription_height_feature = \u0412\u044B\u0441\u043E\u0442\u0430 +_UI_ButtonDescription_buttonLabelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ButtonDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_ButtonDescription_imageExpression_feature = \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ButtonDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_ButtonDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_ButtonDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CheckboxDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_CheckboxDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_CheckboxDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_CheckboxDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_CheckboxDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DateTimeDescription_stringValueExpression_feature = \u0421\u0442\u0440\u043E\u043A\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DateTimeDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_DateTimeDescription_isEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_DateTimeDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_DateTimeDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_DateTimeDescription_type_feature = \u0422\u0438\u043F +_UI_FlexboxContainerDescription_children_feature = \u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B +_UI_FlexboxContainerDescription_flexDirection_feature = \u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0440\u0430\u0437\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 +_UI_FlexboxContainerDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_FlexboxContainerDescription_borderStyle_feature = \u0421\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_FlexboxContainerDescription_conditionalBorderStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_ImageDescription_urlExpression_feature = \u0410\u0434\u0440\u0435\u0441 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ImageDescription_maxWidthExpression_feature = \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LabelDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_LabelDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_LinkDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_LinkDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_LinkDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_ListDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ListDescription_displayExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ListDescription_isDeletableExpression_feature = \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u043E \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ListDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_ListDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_ListDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_ListDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_MultiSelectDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_MultiSelectDescription_candidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_MultiSelectDescription_candidateLabelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_MultiSelectDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_MultiSelectDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_MultiSelectDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_MultiSelectDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PieChartDescription_valuesExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PieChartDescription_keysExpression_feature = \u041A\u043B\u044E\u0447\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_PieChartDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_PieChartDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_RadioDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RadioDescription_candidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RadioDescription_candidateLabelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RadioDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_RadioDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_RadioDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_RadioDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RichTextDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_RichTextDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_RichTextDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectDescription_candidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectDescription_candidateLabelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SelectDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_SelectDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_SelectDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_SelectDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SplitButtonDescription_actions_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F +_UI_SplitButtonDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TextAreaDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TextAreaDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_TextAreaDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_TextAreaDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_TextAreaDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TextfieldDescription_valueExpression_feature = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TextfieldDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_TextfieldDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_TextfieldDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_TextfieldDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_childrenExpression_feature = \u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_treeItemLabelExpression_feature = \u041D\u0430\u0434\u043F\u0438\u0441\u044C \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_isTreeItemSelectableExpression_feature = \u041C\u043E\u0436\u0435\u0442 \u043B\u0438 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0431\u044B\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_treeItemBeginIconExpression_feature = \u041D\u0430\u0447\u0430\u043B\u044C\u043D\u044B\u0439 \u0437\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_treeItemEndIconsExpression_feature = \u041A\u043E\u043D\u0435\u0447\u043D\u044B\u0439 \u0437\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_isCheckableExpression_feature = \u041C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D \u0444\u043B\u0430\u0436\u043A\u043E\u043C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_checkedValueExpression_feature = \u041E\u0442\u043C\u0435\u0447\u0435\u043D \u0444\u043B\u0430\u0436\u043A\u043E\u043C (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_IsEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TreeDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_SliderDescription_minValueExpression_feature = \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SliderDescription_maxValueExpression_feature = \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SliderDescription_currentValueExpression_feature = \u0422\u0435\u043A\u0443\u0449\u0435\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_SliderDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_SliderDescription_isEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_BarChartDescriptionStyle_barsColor_feature = \u0426\u0432\u0435\u0442 \u0441\u0442\u043E\u043B\u0431\u0446\u043E\u0432 +_UI_ButtonDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_ButtonDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_CheckboxDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_CheckboxDescriptionStyle_labelPlacement_feature = \u0420\u0430\u0441\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 +_UI_DateTimeDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_DateTimeDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_DateTimeDescriptionStyle_italic_feature = \u041A\u0443\u0440\u0441\u0438\u0432 +_UI_DateTimeDescriptionStyle_bold_feature = \u041F\u043E\u043B\u0443\u0436\u0438\u0440\u043D\u044B\u0439 +_UI_LabelDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_LinkDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_ListDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_MultiSelectDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_MultiSelectDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_MultiSelectDescriptionStyle_showIcon_feature = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A +_UI_PieChartDescriptionStyle_colors_feature = \u0426\u0432\u0435\u0442\u0430 +_UI_PieChartDescriptionStyle_strokeWidth_feature = \u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u043B\u0438\u043D\u0438\u0439 +_UI_PieChartDescriptionStyle_strokeColor_feature = \u0426\u0432\u0438\u0442 \u043B\u0438\u043D\u0438\u0439 +_UI_RadioDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_SelectDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_SelectDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_SelectDescriptionStyle_showIcon_feature = \u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A +_UI_TextareaDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_TextareaDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_TextfieldDescriptionStyle_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_TextfieldDescriptionStyle_foregroundColor_feature = \u0426\u0432\u0435\u0442 \u0442\u0435\u043A\u0441\u0442\u0430 +_UI_ContainerBorderStyle_borderColor_feature = \u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_ContainerBorderStyle_borderRadius_feature = \u0420\u0430\u0434\u0438\u0443\u0441 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_ContainerBorderStyle_borderSize_feature = \u0422\u043E\u043B\u0449\u0438\u043D\u0430 \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_ContainerBorderStyle_borderLineStyle_feature = \u0421\u0442\u0438\u043B\u044C \u0433\u0440\u0430\u043D\u0438\u0446\u044B +_UI_FormElementFor_iterator_feature = \u0418\u0442\u0435\u0440\u0430\u0442\u043E\u0440 +_UI_FormElementFor_iterableExpression_feature = \u041A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u044F \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_FormElementFor_children_feature = \u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B +_UI_FormElementIf_predicateExpression_feature = \u0423\u0441\u043B\u043E\u0432\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_FormElementIf_children_feature = \u0414\u043E\u0447\u0435\u0440\u043D\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E + +_UI_FlexDirection_row_literal = \u0441\u0442\u0440\u043E\u043A\u0430 +_UI_FlexDirection_rowReverse_literal = \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u043C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0438 +_UI_FlexDirection_column_literal = \u0441\u0442\u043E\u043B\u0431\u0435\u0446 +_UI_FlexDirection_columnReverse_literal = \u0441\u0442\u043E\u043B\u0431\u0435\u0446 \u0432 \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u043C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0438 +_UI_GroupDisplayMode_LIST_literal = \u0441\u043F\u0438\u0441\u043E\u043A +_UI_GroupDisplayMode_TOGGLEABLE_AREAS_literal = \u0441\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043C\u044B\u0435 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 +_UI_LabelPlacement_end_literal = \u0432 \u043A\u043E\u043D\u0446\u0435 +_UI_LabelPlacement_top_literal = \u0441\u0432\u0435\u0440\u0445\u0443 +_UI_LabelPlacement_start_literal = \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 +_UI_LabelPlacement_bottom_literal = \u0441\u043D\u0438\u0437\u0443 +_UI_ContainerBorderLineStyle_Solid_literal = \u0441\u043F\u043B\u043E\u0448\u043D\u0430\u044F +_UI_ContainerBorderLineStyle_Dashed_literal = \u0448\u0442\u0440\u0438\u0445\u043E\u0432\u0430\u044F +_UI_ContainerBorderLineStyle_Dotted_literal = \u043F\u0443\u043D\u043A\u0442\u0438\u0440\u043D\u0430\u044F +_UI_DateTimeType_DATE_TIME_literal = \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F +_UI_DateTimeType_DATE_literal = \u0434\u0430\u0442\u0430 +_UI_DateTimeType_TIME_literal = \u0432\u0440\u0435\u043C\u044F diff --git a/packages/view/backend/sirius-components-view-gantt-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-view-gantt-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..9ae05392746 --- /dev/null +++ b/packages/view/backend/sirius-components-view-gantt-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,66 @@ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation + +pluginName = Gantt Edit Support +providerName = www.example.org + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. + +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" + +_UI_GanttDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u043C \u0413\u0430\u043D\u0442\u0430 +_UI_TaskDescription_type = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_TaskStyleDescription_type = \u0421\u0442\u0438\u043B\u044C \u0437\u0430\u0434\u0430\u0447\u0438 +_UI_ConditionalTaskStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0437\u0430\u0434\u0430\u0447\u0438 +_UI_TaskTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0434\u043B\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_CreateTaskTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_EditTaskTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_DeleteTaskTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_DropTaskTool_type= \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u0434\u0430\u0447 +_UI_CreateTaskDependencyTool_type = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0435\u0439 \u043C\u0435\u0436\u0434\u0443 \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438 +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 + +_UI_Unknown_datatype= \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 + +_UI_GanttDescription_taskElementDescriptions_feature = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447 +_UI_GanttDescription_backgroundColor_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 +_UI_GanttDescription_createTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F +_UI_GanttDescription_editTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F +_UI_GanttDescription_deleteTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F +_UI_GanttDescription_dropTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u043F\u0435\u0440\u0435\u0442\u0430\u0441\u043A\u0438\u0432\u0430\u043D\u0438\u044F +_UI_GanttDescription_createTaskDependencyTool_feature = \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0435\u0439 \u043C\u0435\u0436\u0434\u0443 \u0437\u0430\u0434\u0430\u0447\u0430\u043C\u0438 +_UI_TaskDescription_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_TaskDescription_domainType_feature = \u0422\u0438\u043F +_UI_TaskDescription_semanticCandidatesExpression_feature = \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_nameExpression_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_descriptionExpression_feature = \u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_startTimeExpression_feature = \u041D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_endTimeExpression_feature = \u041A\u043E\u043D\u0435\u0447\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_progressExpression_feature = \u041F\u0440\u043E\u0433\u0440\u0435\u0441\u0441 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_computeStartEndDynamicallyExpression_feature = \u0412\u044B\u0447\u0438\u0441\u043B\u044F\u0442\u044C \u043D\u0430\u0447\u0430\u043B\u043E \u0438 \u043A\u043E\u043D\u0435\u0446 \u0434\u0438\u043D\u0430\u043C\u0438\u0447\u0435\u0441\u043A\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_taskDependenciesExpression_feature = \u0417\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_TaskDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0435 \u0441\u0442\u0438\u043B\u0438 +_UI_TaskDescription_subTaskElementDescriptions_feature = \u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u043F\u043E\u0434\u0437\u0430\u0434\u0430\u0447 +_UI_TaskDescription_reusedTaskElementDescriptions_feature = \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435 \u0441\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0447 +_UI_TaskStyleDescription_labelColorExpression_feature = \u0426\u0432\u0435\u0442 \u043D\u0430\u0434\u043F\u0438\u0441\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskStyleDescription_backgroundColorExpression_feature = \u0426\u0432\u0435\u0442 \u0444\u043E\u043D\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_TaskStyleDescription_progressColorExpression_feature = \u0426\u0432\u0435\u0442 \u043F\u0440\u043E\u0433\u0440\u0435\u0441\u0441\u0430 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ConditionalTaskStyle_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_TaskTool_name_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 +_UI_TaskTool_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E + diff --git a/packages/view/backend/sirius-components-widget-reference-view-edit/src/main/resources/plugin_ru.properties b/packages/view/backend/sirius-components-widget-reference-view-edit/src/main/resources/plugin_ru.properties new file mode 100644 index 00000000000..e9beeb7b081 --- /dev/null +++ b/packages/view/backend/sirius-components-widget-reference-view-edit/src/main/resources/plugin_ru.properties @@ -0,0 +1,35 @@ +################################################################################ +# Copyright (c) 2024 Obeo. +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Obeo - initial API and implementation +################################################################################# +pluginName = Reference Model Edit Support +providerName = www.example.org +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} "{0}" +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" +_UI_CreateChild_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0434\u043E\u0447\u0435\u0440\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}". +_UI_CreateSibling_description = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0439 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0439 \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0442\u0438\u043F\u0430 "{0}" \u0434\u043B\u044F \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{2}", \u0432 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 "{1}" \u0438\u0445 \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0433\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u0430. +_UI_PropertyDescriptor_description = \u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E "{0}" \u043E\u0431\u044A\u0435\u043A\u0442\u0430 "{1}" +_UI_ReferenceWidgetDescription_type = \u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043E\u0431\u044A\u0435\u043A\u0442 +_UI_ReferenceWidgetDescriptionStyle_type = \u0421\u0442\u0438\u043B\u044C \u0441\u0441\u044B\u043B\u043A\u0438 \u043D\u0430 \u043E\u0431\u044A\u0435\u043A\u0442 +_UI_ConditionalReferenceWidgetDescriptionStyle_type = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C \u0441\u0441\u044B\u043B\u043A\u0438 \u043D\u0430 \u043E\u0431\u044A\u0435\u043A\u0442 +_UI_Unknown_type = \u041E\u0431\u044A\u0435\u043A\u0442 +_UI_Unknown_datatype = \u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 +_UI_ReferenceWidgetDescription_isEnabledExpression_feature = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u043E (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ReferenceWidgetDescription_referenceOwnerExpression_feature = \u041E\u0431\u044A\u0435\u043A\u0442, \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0441\u044B\u043B\u043A\u0443 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ReferenceWidgetDescription_referenceNameExpression_feature = \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438 (\u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435) +_UI_ReferenceWidgetDescription_body_feature = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 +_UI_ReferenceWidgetDescription_style_feature = \u0421\u0442\u0438\u043B\u044C +_UI_ReferenceWidgetDescription_conditionalStyles_feature = \u0423\u0441\u043B\u043E\u0432\u043D\u044B\u0439 \u0441\u0442\u0438\u043B\u044C +_UI_ReferenceWidgetDescriptionStyle_color_feature = \u0426\u0432\u0435\u0442 +_UI_Unknown_feature = \u041D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E +