-
+ {errorMessage(props.error)}
{isDevelopmentContext() ? (
) : null}
@@ -26,25 +26,20 @@ export const ErrorView: React.FC<{ error: null | AnyError }> = (props) => {
);
};
-const ErrorMessage: React.FC<{ error: null | AnyError }> = (props) => {
- if (isECMAScriptError(props.error)) {
- return (<>{props.error.message}>);
+const errorMessage = (error: null|AnyError) => {
+ if (isECMAScriptError(error)) {
+ return error.message;
}
- if (isServerSideError(props.error)) {
- return (<>#{props.error.code}: {props.error.message}>);
+ if (isServerSideError(error)) {
+ return `#${error.code}: ${error.message}`;
}
- if (isStringError(props.error)) {
- return (<>{props.error}>);
+ if (isStringError(error)) {
+ return error;
}
- return (
-
- );
+ return translate('Neos.Neos.Ui:Error:unknown', 'An unkown error ocurred.');
};
const isDevelopmentContext = () => {
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/AddNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/AddNode/index.js
index 329b33933c..fa4c142353 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/AddNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/AddNode/index.js
@@ -1,7 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import {selectors, actions} from '@neos-project/neos-ui-redux-store';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
@@ -37,8 +37,7 @@ export default class AddNode extends PureComponent {
fusionPath: PropTypes.string,
className: PropTypes.string,
commenceNodeCreation: PropTypes.func.isRequired,
- isAllowedToAddChildOrSiblingNodes: PropTypes.bool,
- i18nRegistry: PropTypes.object.isRequired
+ isAllowedToAddChildOrSiblingNodes: PropTypes.bool
};
handleCommenceNodeCreation = () => {
@@ -52,7 +51,7 @@ export default class AddNode extends PureComponent {
}
render() {
- const {isAllowedToAddChildOrSiblingNodes, i18nRegistry} = this.props;
+ const {isAllowedToAddChildOrSiblingNodes} = this.props;
return (
);
}
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CopySelectedNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CopySelectedNode/index.js
index 8f1db2b5c4..8ca6ea0e9a 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CopySelectedNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CopySelectedNode/index.js
@@ -1,7 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import {actions} from '@neos-project/neos-ui-redux-store';
@@ -26,7 +26,7 @@ export default class CopySelectedNode extends PureComponent {
}
render() {
- const {destructiveOperationsAreDisabled, className, isCopied, i18nRegistry} = this.props;
+ const {destructiveOperationsAreDisabled, className, isCopied} = this.props;
return (
);
}
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CutSelectedNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CutSelectedNode/index.js
index 09c9254701..897274f520 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CutSelectedNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/CutSelectedNode/index.js
@@ -1,7 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import {actions} from '@neos-project/neos-ui-redux-store';
@@ -16,8 +16,7 @@ export default class CutSelectedNode extends PureComponent {
destructiveOperationsAreDisabled: PropTypes.bool.isRequired,
isCut: PropTypes.bool.isRequired,
canBeEdited: PropTypes.bool.isRequired,
- cutNode: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ cutNode: PropTypes.func.isRequired
};
handleCutSelectedNodeClick = () => {
@@ -31,8 +30,7 @@ export default class CutSelectedNode extends PureComponent {
destructiveOperationsAreDisabled,
isCut,
className,
- canBeEdited,
- i18nRegistry
+ canBeEdited
} = this.props;
return (
@@ -44,7 +42,7 @@ export default class CutSelectedNode extends PureComponent {
onClick={this.handleCutSelectedNodeClick}
icon="cut"
hoverStyle="brand"
- title={i18nRegistry.translate('cut')}
+ title={translate('Neos.Neos:Main:cut')}
/>
);
}
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/DeleteSelectedNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/DeleteSelectedNode/index.js
index 18f3035852..c2e8323aae 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/DeleteSelectedNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/DeleteSelectedNode/index.js
@@ -1,7 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import {actions} from '@neos-project/neos-ui-redux-store';
@@ -16,8 +16,7 @@ export default class DeleteSelectedNode extends PureComponent {
destructiveOperationsAreDisabled: PropTypes.bool.isRequired,
canBeDeleted: PropTypes.bool.isRequired,
canBeEdited: PropTypes.bool.isRequired,
- commenceNodeRemoval: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ commenceNodeRemoval: PropTypes.func.isRequired
};
handleDeleteSelectedNodeClick = () => {
@@ -29,7 +28,7 @@ export default class DeleteSelectedNode extends PureComponent {
}
render() {
- const {className, destructiveOperationsAreDisabled, canBeDeleted, canBeEdited, i18nRegistry} = this.props;
+ const {className, destructiveOperationsAreDisabled, canBeDeleted, canBeEdited} = this.props;
return (
);
}
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/HideSelectedNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/HideSelectedNode/index.js
index 40ae0c3de0..49579008f7 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/HideSelectedNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/HideSelectedNode/index.js
@@ -1,7 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import {selectors, actions} from '@neos-project/neos-ui-redux-store';
@@ -20,8 +20,7 @@ export default class HideSelectedNode extends PureComponent {
showNode: PropTypes.func.isRequired,
destructiveOperationsAreDisabled: PropTypes.bool.isRequired,
canBeEdited: PropTypes.bool.isRequired,
- visibilityCanBeToggled: PropTypes.bool.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ visibilityCanBeToggled: PropTypes.bool.isRequired
};
handleHideNode = () => {
@@ -41,7 +40,7 @@ export default class HideSelectedNode extends PureComponent {
}
render() {
- const {className, node, destructiveOperationsAreDisabled, canBeEdited, visibilityCanBeToggled, i18nRegistry} = this.props;
+ const {className, node, destructiveOperationsAreDisabled, canBeEdited, visibilityCanBeToggled} = this.props;
const isHidden = node?.properties?._hidden;
return (
@@ -53,7 +52,7 @@ export default class HideSelectedNode extends PureComponent {
onClick={isHidden ? this.handleShowNode : this.handleHideNode}
icon="eye-slash"
hoverStyle="brand"
- title={i18nRegistry.translate('hideUnhide')}
+ title={translate('Neos.Neos:Main:hideUnhide')}
/>
);
}
diff --git a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/PasteClipBoardNode/index.js b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/PasteClipBoardNode/index.js
index fecf882255..e4aa9e49e9 100644
--- a/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/PasteClipBoardNode/index.js
+++ b/packages/neos-ui-guest-frame/src/InlineUI/NodeToolbar/Buttons/PasteClipBoardNode/index.js
@@ -2,7 +2,7 @@ import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import {neos} from '@neos-project/neos-ui-decorators';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import {selectors, actions} from '@neos-project/neos-ui-redux-store';
@@ -35,8 +35,7 @@ export default class PasteClipBoardNode extends PureComponent {
contextPath: PropTypes.string,
fusionPath: PropTypes.string,
- pasteNode: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ pasteNode: PropTypes.func.isRequired
};
handlePasteButtonClick = () => {
@@ -46,7 +45,7 @@ export default class PasteClipBoardNode extends PureComponent {
}
render() {
- const {className, canBePasted, i18nRegistry} = this.props;
+ const {className, canBePasted} = this.props;
if (!canBePasted) {
return null;
@@ -59,7 +58,7 @@ export default class PasteClipBoardNode extends PureComponent {
icon="paste"
onClick={this.handlePasteButtonClick}
hoverStyle="brand"
- title={i18nRegistry.translate('paste')}
+ title={translate('Neos.Neos:Main:paste')}
/>
);
}
diff --git a/packages/neos-ui-i18n/src/translate.ts b/packages/neos-ui-i18n/src/translate.ts
index 4db4870abd..acd5794a4d 100644
--- a/packages/neos-ui-i18n/src/translate.ts
+++ b/packages/neos-ui-i18n/src/translate.ts
@@ -57,6 +57,12 @@ function renderFallback(
parameters: Parameters
) {
const fallbackHasPluralForms = Array.isArray(fallback);
+ if (fallbackHasPluralForms ? !(typeof fallback[0] === 'string' && typeof fallback[1] === 'string') : typeof fallback !== 'string') {
+ // error handling for legacy codebase if the translate() call is not validated by typescript
+ console.error('The translation fallback must be provided in the form of: string|[string,string]. Got: ', fallback);
+ return '';
+ }
+
let result: string;
if (fallbackHasPluralForms) {
result = quantity === 1 ? fallback[0] : fallback[1];
diff --git a/packages/neos-ui-sagas/src/UI/Impersonate/index.js b/packages/neos-ui-sagas/src/UI/Impersonate/index.js
index fd819bc6e6..aa95dee050 100644
--- a/packages/neos-ui-sagas/src/UI/Impersonate/index.js
+++ b/packages/neos-ui-sagas/src/UI/Impersonate/index.js
@@ -3,19 +3,13 @@ import {call, takeEvery} from 'redux-saga/effects';
import {actionTypes} from '@neos-project/neos-ui-redux-store';
import backend from '@neos-project/neos-ui-backend-connector';
import {showFlashMessage} from '@neos-project/neos-ui-error';
+import {translate} from '@neos-project/neos-ui-i18n';
-export function * impersonateRestore({globalRegistry, routes}) {
+export function * impersonateRestore({routes}) {
const {impersonateRestore} = backend.get().endpoints;
- const i18nRegistry = globalRegistry.get('i18n');
yield takeEvery(actionTypes.User.Impersonate.RESTORE, function * restore(action) {
- const errorMessage = i18nRegistry.translate(
- 'impersonate.error.restoreUser',
- 'Could not switch back to the original user.',
- {},
- 'Neos.Neos',
- 'Main'
- );
+ const errorMessage = translate('Neos.Neos:Main:impersonate.error.restoreUser', 'Could not switch back to the original user.');
try {
const feedback = yield call(impersonateRestore, action.payload);
@@ -23,16 +17,7 @@ export function * impersonateRestore({globalRegistry, routes}) {
const user = feedback?.impersonate?.accountIdentifier;
const status = feedback?.status;
- const restoreMessage = i18nRegistry.translate(
- 'impersonate.success.restoreUser',
- 'Switched back from {0} to the orginal user {1}.',
- {
- 0: user,
- 1: originUser
- },
- 'Neos.Neos',
- 'Main'
- );
+ const restoreMessage = translate('Neos.Neos:Main:impersonate.success.restoreUser', 'Switched back from {0} to the orginal user {1}.', {0: user, 1: originUser});
if (status) {
showFlashMessage({
diff --git a/packages/neos-ui-validators/src/Count/index.spec.js b/packages/neos-ui-validators/src/Count/index.spec.js
index a6758dcef9..4e87a02df3 100644
--- a/packages/neos-ui-validators/src/Count/index.spec.js
+++ b/packages/neos-ui-validators/src/Count/index.spec.js
@@ -1,4 +1,9 @@
import countValidator from './index';
+import {setupI18n} from "@neos-project/neos-ui-i18n";
+
+beforeAll(() => {
+ setupI18n('en-US', 'one,other', {});
+});
test('2 element object should be valid for min:0 max: 10', () => {
const validatorOptions = {
diff --git a/packages/neos-ui-validators/src/Count/index.tsx b/packages/neos-ui-validators/src/Count/index.tsx
index 35f6960349..9715a6c5af 100644
--- a/packages/neos-ui-validators/src/Count/index.tsx
+++ b/packages/neos-ui-validators/src/Count/index.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import I18n from '@neos-project/neos-ui-i18n';
+import I18n, {translate} from '@neos-project/neos-ui-i18n';
import logger from '@neos-project/utils-logger';
/**
@@ -28,7 +28,7 @@ const Count = (value: any, validatorOptions: CountOptions) => {
}
if (typeof value !== 'object' || value === null) {
- return
;
+ return translate('Neos.Neos:Main:content.inspector.validators.countValidator.notCountable', '');
}
const {length} = Object.keys(value);
diff --git a/packages/neos-ui-validators/src/NumberRange/index.spec.js b/packages/neos-ui-validators/src/NumberRange/index.spec.js
index 0edb94646d..1b1c5cb0bd 100644
--- a/packages/neos-ui-validators/src/NumberRange/index.spec.js
+++ b/packages/neos-ui-validators/src/NumberRange/index.spec.js
@@ -1,4 +1,9 @@
import numberRangeValidator from './index';
+import {setupI18n} from "@neos-project/neos-ui-i18n";
+
+beforeAll(() => {
+ setupI18n('en-US', 'one,other', {});
+});
test('0 for min: 0 max: 10 should be valid', () => {
const validatorOptions = {
diff --git a/packages/neos-ui-validators/src/NumberRange/index.tsx b/packages/neos-ui-validators/src/NumberRange/index.tsx
index e0cf204ce4..41952977c7 100644
--- a/packages/neos-ui-validators/src/NumberRange/index.tsx
+++ b/packages/neos-ui-validators/src/NumberRange/index.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import I18n from '@neos-project/neos-ui-i18n';
+import I18n, {translate} from '@neos-project/neos-ui-i18n';
import logger from '@neos-project/utils-logger';
/**
@@ -33,7 +33,7 @@ const NumberRange = (value: any, validatorOptions: NumberRangeOptions) => {
}
if (value.length > 0 && !Number.isSafeInteger(number)) {
- return
;
+ return translate('Neos.Neos:Main:content.inspector.validators.numberRangeValidator.validNumberExpected', '');
}
if (number < minimum || number > maximum) {
const label = validatorOptions?.validationErrorMessage ?? 'content.inspector.validators.numberRangeValidator.numberShouldBeInRange';
diff --git a/packages/neos-ui-views/src/Data/DataLoader/index.js b/packages/neos-ui-views/src/Data/DataLoader/index.js
index 5dde983736..048ec06338 100644
--- a/packages/neos-ui-views/src/Data/DataLoader/index.js
+++ b/packages/neos-ui-views/src/Data/DataLoader/index.js
@@ -5,9 +5,9 @@ import {neos} from '@neos-project/neos-ui-decorators';
import {selectors} from '@neos-project/neos-ui-redux-store';
import Widget from '../../Widget/index';
import Icon from '@neos-project/react-ui-components/src/Icon/';
-import I18n from '@neos-project/neos-ui-i18n';
import style from './style.module.css';
import isEqual from 'lodash.isequal';
+import {translate} from '@neos-project/neos-ui-i18n';
/*
* This HOC is responsible for fetching data for Data views and wraping
@@ -91,7 +91,7 @@ export default () => WrappedComponent => {
}
if (!this.state.data) {
- return (
);
+ return (
{translate('Neos.Neos:Main:loading')}
);
}
return (
);
diff --git a/packages/neos-ui-views/src/NodeInfoView/index.js b/packages/neos-ui-views/src/NodeInfoView/index.js
index e82d6a2baa..4e7b7b347b 100644
--- a/packages/neos-ui-views/src/NodeInfoView/index.js
+++ b/packages/neos-ui-views/src/NodeInfoView/index.js
@@ -1,25 +1,20 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-import {neos} from '@neos-project/neos-ui-decorators';
import {selectors} from '@neos-project/neos-ui-redux-store';
import {IconButton} from '@neos-project/react-ui-components';
import style from './style.module.css';
+import {translate} from '@neos-project/neos-ui-i18n';
@connect(state => ({
focusedNodeContextPath: selectors.CR.Nodes.focusedNodePathSelector(state),
getNodeByContextPath: selectors.CR.Nodes.nodeByContextPath(state)
}))
-@neos(globalRegistry => ({
- i18nRegistry: globalRegistry.get('i18n')
-}))
export default class NodeInfoView extends PureComponent {
static propTypes = {
commit: PropTypes.func.isRequired,
focusedNodeContextPath: PropTypes.string,
- getNodeByContextPath: PropTypes.func.isRequired,
-
- i18nRegistry: PropTypes.object.isRequired
+ getNodeByContextPath: PropTypes.func.isRequired
}
nodeTypeNameRef = React.createRef();
@@ -36,7 +31,7 @@ export default class NodeInfoView extends PureComponent {
}
render() {
- const {focusedNodeContextPath, getNodeByContextPath, i18nRegistry} = this.props;
+ const {focusedNodeContextPath, getNodeByContextPath} = this.props;
const node = getNodeByContextPath(focusedNodeContextPath);
const properties = {
@@ -55,32 +50,32 @@ export default class NodeInfoView extends PureComponent {
return (
- {i18nRegistry.translate('created', 'Created', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:created', 'Created')}
{new Date(properties.created).toLocaleString()}
- {i18nRegistry.translate('lastModification', 'Last modification', {}, 'Neos.Neos')}
- {properties.lastModification ? new Date(properties.lastModification).toLocaleString() : i18nRegistry.translate('unavailable', 'unavailable', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:lastModification', 'Last modification')}
+ {properties.lastModification ? new Date(properties.lastModification).toLocaleString() : translate('Neos.Neos:Main:unavailable', 'unavailable')}
- {i18nRegistry.translate('lastPublication', 'Last publication', {}, 'Neos.Neos')}
- {properties.lastPublication ? new Date(properties.lastPublication).toLocaleString() : i18nRegistry.translate('unavailable', 'unavailable', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:lastPublication', 'Last publication')}
+ {properties.lastPublication ? new Date(properties.lastPublication).toLocaleString() : translate('Neos.Neos:Main:unavailable', 'unavailable')}
- {i18nRegistry.translate('identifier', 'Identifier', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:identifier', 'Identifier')}
{properties.identifier}
- {i18nRegistry.translate('nodeAddress', 'Node Address', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:nodeAddress', 'Node Address')}
{properties.nodeAddress}
- {i18nRegistry.translate('name', 'Name', {}, 'Neos.Neos')}
- {properties.name ?? i18nRegistry.translate('unavailable', 'unavailable', {}, 'Neos.Neos')}
+ {translate('Neos.Neos:Main:name', 'Name')}
+ {properties.name ?? translate('Neos.Neos:Main:unavailable', 'unavailable')}
{i18nRegistry.translate('type', 'Type', {}, 'Neos.Neos')}
+ className={style.nodeInfoView__title}>{translate('Neos.Neos:Main:type', 'Type')}
@@ -88,7 +83,7 @@ export default class NodeInfoView extends PureComponent {
diff --git a/packages/neos-ui/src/Containers/Drawer/UserDropDown/RestoreButtonItem.js b/packages/neos-ui/src/Containers/Drawer/UserDropDown/RestoreButtonItem.js
index e4fc5840ba..80b80e9b52 100644
--- a/packages/neos-ui/src/Containers/Drawer/UserDropDown/RestoreButtonItem.js
+++ b/packages/neos-ui/src/Containers/Drawer/UserDropDown/RestoreButtonItem.js
@@ -2,10 +2,9 @@ import React from 'react';
import PropTypes from 'prop-types';
import {Icon} from '@neos-project/react-ui-components';
-import {neos} from '@neos-project/neos-ui-decorators';
import {connect} from 'react-redux';
import {actions} from '@neos-project/neos-ui-redux-store';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import buttonTheme from './style.module.css';
@@ -17,25 +16,15 @@ import buttonTheme from './style.module.css';
impersonateRestore: actions.User.Impersonate.restore
}
)
-@neos(globalRegistry => ({
- i18nRegistry: globalRegistry.get('i18n')
-}))
export default class RestoreButtonItem extends React.PureComponent {
static propTypes = {
originUser: PropTypes.object,
- impersonateRestore: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ impersonateRestore: PropTypes.func.isRequired
};
render() {
- const {originUser, i18nRegistry, impersonateRestore} = this.props;
- const title = i18nRegistry.translate(
- 'impersonate.title.restoreUserButton',
- 'Switch back to the orginal user account',
- {},
- 'Neos.Neos',
- 'Main'
- );
+ const {originUser, impersonateRestore} = this.props;
+ const title = translate('Neos.Neos:Main:impersonate.title.restoreUserButton', 'Switch back to the orginal user account',);
return (originUser ? (
@@ -50,13 +39,7 @@ export default class RestoreButtonItem extends React.PureComponent {
aria-hidden="true"
className={buttonTheme.dropDown__itemIcon}
/>
-
+ {translate('Neos.Neos:Main:impersonate.label.restoreUserButton', 'Back to user "{0}"', {0: originUser.fullName})}
) : null);
diff --git a/packages/neos-ui/src/Containers/Drawer/UserDropDown/index.js b/packages/neos-ui/src/Containers/Drawer/UserDropDown/index.js
index 18efa136ab..c576700985 100644
--- a/packages/neos-ui/src/Containers/Drawer/UserDropDown/index.js
+++ b/packages/neos-ui/src/Containers/Drawer/UserDropDown/index.js
@@ -7,7 +7,7 @@ import {Icon, DropDown} from '@neos-project/react-ui-components';
import UserImage from './UserImage';
import RestoreButtonItem from './RestoreButtonItem';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import style from './style.module.css';
@connect(state => ({
@@ -36,7 +36,7 @@ export default class UserDropDown extends PureComponent {
-
+ {translate('Neos.Neos:Modules:userSettings.label', 'User Settings')}
@@ -44,7 +44,7 @@ export default class UserDropDown extends PureComponent {
e.stopPropagation()} type="submit" name="" value="logout">
-
+ {translate('Neos.Neos:Main:logout', 'Logout')}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/index.js
index 2c91381a12..c1f141ee0d 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTree/index.js
@@ -13,6 +13,7 @@ import {PageTreeNode, ContentTreeNode} from './Node/index';
import style from './style.module.css';
import {neos} from '@neos-project/neos-ui-decorators';
+import {translate} from '@neos-project/neos-ui-i18n';
const ConnectedDragLayer = connect((state, {currentlyDraggedNodes}) => {
const getNodeByContextPath = selectors.CR.Nodes.nodeByContextPath(state);
@@ -35,8 +36,7 @@ export default class NodeTree extends PureComponent {
setActiveContentCanvasContextPath: PropTypes.func,
moveNodes: PropTypes.func,
allCollapsibleNodes: PropTypes.object,
- loadingDepth: PropTypes.number,
- i18nRegistry: PropTypes.object.isRequired
+ loadingDepth: PropTypes.number
};
state = {
@@ -131,7 +131,7 @@ export default class NodeTree extends PureComponent {
}
render() {
- const {rootNode, ChildRenderer, i18nRegistry} = this.props;
+ const {rootNode, ChildRenderer} = this.props;
if (!rootNode) {
return (
@@ -149,7 +149,7 @@ export default class NodeTree extends PureComponent {
@@ -177,12 +177,11 @@ export default class NodeTree extends PureComponent {
}
}
-const withNodeTypeRegistryAndI18nRegistry = neos(globalRegistry => ({
- nodeTypesRegistry: globalRegistry.get('@neos-project/neos-ui-contentrepository'),
- i18nRegistry: globalRegistry.get('i18n')
+const withNodeTypeRegistry = neos(globalRegistry => ({
+ nodeTypesRegistry: globalRegistry.get('@neos-project/neos-ui-contentrepository')
}));
-export const PageTree = withNodeTypeRegistryAndI18nRegistry(connect(
+export const PageTree = withNodeTypeRegistry(connect(
(state, {neos, nodeTypesRegistry}) => {
const documentNodesSelector = selectors.CR.Nodes.makeGetCollapsibleDocumentNodes(nodeTypesRegistry);
return ({
@@ -207,7 +206,7 @@ export const PageTree = withNodeTypeRegistryAndI18nRegistry(connect(
}
)(NodeTree));
-export const ContentTree = withNodeTypeRegistryAndI18nRegistry(connect(
+export const ContentTree = withNodeTypeRegistry(connect(
(state, {neos, nodeTypesRegistry}) => {
const contentNodesSelector = selectors.CR.Nodes.makeGetCollapsibleContentNodes(nodeTypesRegistry);
return ({
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/NodeTreeFilter/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/NodeTreeFilter/index.js
index 9ba22a90e2..3836cdd143 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/NodeTreeFilter/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/NodeTreeFilter/index.js
@@ -5,6 +5,7 @@ import {neos} from '@neos-project/neos-ui-decorators';
import {SelectBox} from '@neos-project/react-ui-components';
import {searchOptions} from '@neos-project/neos-ui-editors/src/Editors/SelectBox/selectBoxHelpers.js';
+import {translate} from '@neos-project/neos-ui-i18n';
import style from './style.module.css';
@@ -32,7 +33,7 @@ export default class NodeTreeFilter extends PureComponent {
render() {
const {i18nRegistry, nodeTypesRegistry, neos, onChange, value} = this.props;
- const label = i18nRegistry.translate('filter', 'Filter', {}, 'Neos.Neos', 'Main');
+ const label = translate('Neos.Neos:Main:filter', 'Filter');
const presets = neos?.configuration?.nodeTree?.presets;
let options = Object.keys(presets)
@@ -70,8 +71,8 @@ export default class NodeTreeFilter extends PureComponent {
searchTerm={this.state.filterTerm}
onSearchTermChange={this.handleFilterTermChange}
threshold={0}
- noMatchesFoundLabel={this.props.i18nRegistry.translate('Neos.Neos:Main:noMatchesFound')}
- searchBoxLeftToTypeLabel={this.props.i18nRegistry.translate('Neos.Neos:Main:searchBoxLeftToType')}
+ noMatchesFoundLabel={translate('Neos.Neos:Main:noMatchesFound')}
+ searchBoxLeftToTypeLabel={translate('Neos.Neos:Main:searchBoxLeftToType')}
/>
);
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/index.js
index e889e701cb..aa1dd02c72 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeSearchBar/index.js
@@ -4,7 +4,7 @@ import {connect} from 'react-redux';
import debounce from 'lodash.debounce';
import mergeClassNames from 'classnames';
-import {neos} from '@neos-project/neos-ui-decorators';
+import {translate} from '@neos-project/neos-ui-i18n';
import {actions, selectors} from '@neos-project/neos-ui-redux-store';
import {IconButton} from '@neos-project/react-ui-components';
@@ -14,10 +14,6 @@ import style from './style.module.css';
const searchDelay = 300;
-@neos(globalRegistry => ({
- i18nRegistry: globalRegistry.get('i18n')
-}))
-
@connect(state => ({
isSearchBarVisible: state?.ui?.leftSideBar?.searchBar?.isVisible
}), {
@@ -26,7 +22,6 @@ const searchDelay = 300;
class NodeTreeSearchBar extends PureComponent {
static propTypes = {
- i18nRegistry: PropTypes.object.isRequired,
rootNode: PropTypes.object,
commenceSearch: PropTypes.func.isRequired,
isSearchBarVisible: PropTypes.bool.isRequired,
@@ -83,9 +78,9 @@ class NodeTreeSearchBar extends PureComponent {
}
render() {
- const {i18nRegistry, isSearchBarVisible} = this.props;
+ const {isSearchBarVisible} = this.props;
const {searchValue, searchFocused, filterNodeType} = this.state;
- const searchLabel = i18nRegistry.translate('search', 'Search', {}, 'Neos.Neos', 'Main');
+ const searchLabel = translate('Neos.Neos:Main:search', 'Search');
const searchToggleClassName = mergeClassNames({
[style.searchToggleButton]: true,
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/AddNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/AddNode/index.js
index 20b1ee7576..a96cb9944e 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/AddNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/AddNode/index.js
@@ -1,6 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
export default class AddNode extends PureComponent {
@@ -9,8 +9,7 @@ export default class AddNode extends PureComponent {
id: PropTypes.string,
onClick: PropTypes.func.isRequired,
focusedNodeContextPath: PropTypes.string,
- disabled: PropTypes.bool.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ disabled: PropTypes.bool.isRequired
};
handleClick = () => {
@@ -20,7 +19,7 @@ export default class AddNode extends PureComponent {
}
render() {
- const {focusedNodeContextPath, disabled, className, id, i18nRegistry} = this.props;
+ const {focusedNodeContextPath, disabled, className, id} = this.props;
return (
@@ -31,7 +30,7 @@ export default class AddNode extends PureComponent {
icon="plus"
onClick={this.handleClick}
hoverStyle="brand"
- title={i18nRegistry.translate('createNew')}
+ title={translate('Neos.Neos:Main:createNew')}
/>
);
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CopySelectedNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CopySelectedNode/index.js
index b04a04c272..80f50a4c40 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CopySelectedNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CopySelectedNode/index.js
@@ -1,6 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
export default class CopySelectedNode extends PureComponent {
@@ -15,9 +15,7 @@ export default class CopySelectedNode extends PureComponent {
disabled: PropTypes.bool,
- isActive: PropTypes.bool,
-
- i18nRegistry: PropTypes.object.isRequired
+ isActive: PropTypes.bool
};
handleClick = () => {
@@ -31,8 +29,7 @@ export default class CopySelectedNode extends PureComponent {
className,
id,
disabled,
- isActive,
- i18nRegistry
+ isActive
} = this.props;
return (
@@ -44,7 +41,7 @@ export default class CopySelectedNode extends PureComponent {
onClick={this.handleClick}
icon="far copy"
hoverStyle="brand"
- title={i18nRegistry.translate('copy')}
+ title={translate('Neos.Neos:Main:copy')}
/>
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CutSelectedNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CutSelectedNode/index.js
index 42bb2345a4..1efcdc49e9 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CutSelectedNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/CutSelectedNode/index.js
@@ -1,6 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
+import {translate} from '@neos-project/neos-ui-i18n';
export default class CutSelectedNode extends PureComponent {
static propTypes = {
@@ -11,8 +12,7 @@ export default class CutSelectedNode extends PureComponent {
disabled: PropTypes.bool.isRequired,
isActive: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
handleClick = () => {
@@ -22,7 +22,7 @@ export default class CutSelectedNode extends PureComponent {
}
render() {
- const {className, id, disabled, isActive, i18nRegistry} = this.props;
+ const {className, id, disabled, isActive} = this.props;
return (
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/DeleteSelectedNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/DeleteSelectedNode/index.js
index ca11c65e72..6f9c5ad20f 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/DeleteSelectedNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/DeleteSelectedNode/index.js
@@ -1,6 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
export default class DeleteSelectedNode extends PureComponent {
@@ -11,9 +11,7 @@ export default class DeleteSelectedNode extends PureComponent {
focusedNodeContextPath: PropTypes.string,
disabled: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
-
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
handleClick = () => {
@@ -23,7 +21,7 @@ export default class DeleteSelectedNode extends PureComponent {
}
render() {
- const {className, id, disabled, i18nRegistry} = this.props;
+ const {className, id, disabled} = this.props;
return (
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/HideSelectedNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/HideSelectedNode/index.js
index f4e45c5f49..2e7a6e119a 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/HideSelectedNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/HideSelectedNode/index.js
@@ -1,6 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
export default class HideSelectedNode extends PureComponent {
@@ -11,12 +11,11 @@ export default class HideSelectedNode extends PureComponent {
disabled: PropTypes.bool.isRequired,
isHidden: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
render() {
- const {className, id, disabled, isHidden, i18nRegistry, onClick} = this.props;
+ const {className, id, disabled, isHidden, onClick} = this.props;
return (
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/PasteClipBoardNode/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/PasteClipBoardNode/index.js
index c97d9cb38a..5595a91ce9 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/PasteClipBoardNode/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/PasteClipBoardNode/index.js
@@ -1,6 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
-
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
export default class PasteClipBoardNode extends PureComponent {
@@ -11,8 +11,7 @@ export default class PasteClipBoardNode extends PureComponent {
focusedNodeContextPath: PropTypes.string,
disabled: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
handleClick = () => {
@@ -25,8 +24,7 @@ export default class PasteClipBoardNode extends PureComponent {
const {
className,
id,
- disabled,
- i18nRegistry
+ disabled
} = this.props;
return (
@@ -37,7 +35,7 @@ export default class PasteClipBoardNode extends PureComponent {
icon="paste"
onClick={this.handleClick}
hoverStyle="brand"
- title={i18nRegistry.translate('paste')}
+ title={translate('Neos.Neos:Main:paste')}
/>
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/RefreshPageTree/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/RefreshPageTree/index.js
index ab5efef12b..007d9a096f 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/RefreshPageTree/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/RefreshPageTree/index.js
@@ -1,6 +1,7 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import mergeClassNames from 'classnames';
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import style from './style.module.css';
@@ -13,9 +14,7 @@ export default class RefreshPageTree extends PureComponent {
isLoading: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
-
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
handleClick = () => {
@@ -25,7 +24,7 @@ export default class RefreshPageTree extends PureComponent {
}
render() {
- const {isLoading, className, id, i18nRegistry} = this.props;
+ const {isLoading, className, id} = this.props;
const finalClassName = mergeClassNames({
[style.spinning]: isLoading,
[className]: className && className.length
@@ -39,7 +38,7 @@ export default class RefreshPageTree extends PureComponent {
onClick={this.handleClick}
icon="sync"
hoverStyle="brand"
- title={i18nRegistry.translate('refresh')}
+ title={translate('Neos.Neos:Main:refresh')}
/>
);
}
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/ToggleContentTree/index.js b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/ToggleContentTree/index.js
index ed9ba0e101..93bbd1854f 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/ToggleContentTree/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/NodeTreeToolBar/Buttons/ToggleContentTree/index.js
@@ -1,5 +1,6 @@
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
+import {translate} from '@neos-project/neos-ui-i18n';
import IconButton from '@neos-project/react-ui-components/src/IconButton/';
import style from './style.module.css';
@@ -12,9 +13,7 @@ export default class ToggleContentTree extends PureComponent {
isPanelOpen: PropTypes.bool.isRequired,
- onClick: PropTypes.func.isRequired,
-
- i18nRegistry: PropTypes.object.isRequired
+ onClick: PropTypes.func.isRequired
};
handleClick = () => {
@@ -24,7 +23,7 @@ export default class ToggleContentTree extends PureComponent {
}
render() {
- const {id, isPanelOpen, i18nRegistry} = this.props;
+ const {id, isPanelOpen} = this.props;
return (
@@ -33,10 +32,10 @@ export default class ToggleContentTree extends PureComponent {
className={style.toggleBtn}
icon={isPanelOpen ? 'chevron-circle-down' : 'chevron-circle-up'}
hoverStyle="clean"
- aria-label={i18nRegistry.translate('Neos.Neos:Main:toggleContentTree', 'Toggle content tree')}
+ aria-label={translate('Neos.Neos:Main:toggleContentTree', 'Toggle content tree')}
/>
- {i18nRegistry.translate('Neos.Neos:Main:contentTree', 'Content Tree')}
+ {translate('Neos.Neos:Main:contentTree', 'Content Tree')}
);
diff --git a/packages/neos-ui/src/Containers/LeftSideBar/index.js b/packages/neos-ui/src/Containers/LeftSideBar/index.js
index ae4e90018e..c61dbbfa58 100644
--- a/packages/neos-ui/src/Containers/LeftSideBar/index.js
+++ b/packages/neos-ui/src/Containers/LeftSideBar/index.js
@@ -2,6 +2,7 @@ import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import mergeClassNames from 'classnames';
import {connect} from 'react-redux';
+import {translate} from '@neos-project/neos-ui-i18n';
import {actions, selectors} from '@neos-project/neos-ui-redux-store';
@@ -11,8 +12,7 @@ import {neos} from '@neos-project/neos-ui-decorators';
import style from './style.module.css';
@neos(globalRegistry => ({
- containerRegistry: globalRegistry.get('containers'),
- i18nRegistry: globalRegistry.get('i18n')
+ containerRegistry: globalRegistry.get('containers')
}))
@connect(state => ({
isHidden: state?.ui?.leftSideBar?.isHidden,
@@ -26,7 +26,6 @@ import style from './style.module.css';
export default class LeftSideBar extends PureComponent {
static propTypes = {
containerRegistry: PropTypes.object.isRequired,
- i18nRegistry: PropTypes.object.isRequired,
isHidden: PropTypes.bool.isRequired,
isHiddenContentTree: PropTypes.bool.isRequired,
@@ -40,7 +39,7 @@ export default class LeftSideBar extends PureComponent {
}
render() {
- const {isHidden, isFullScreen, isHiddenContentTree, containerRegistry, i18nRegistry} = this.props;
+ const {isHidden, isFullScreen, isHiddenContentTree, containerRegistry} = this.props;
const classNames = mergeClassNames({
[style.leftSideBar]: true,
@@ -69,7 +68,7 @@ export default class LeftSideBar extends PureComponent {
icon={toggleIcon}
className={style.leftSideBar__toggleBtn}
hoverStyle="clean"
- title={i18nRegistry.translate('Neos.Neos:Main:navigate')}
+ title={translate('Neos.Neos:Main:navigate')}
/>
);
@@ -77,7 +76,7 @@ export default class LeftSideBar extends PureComponent {
{toggle}
- {!isHidden && !isFullScreen && i18nRegistry.translate('Neos.Neos:Main:documentTree', 'Document Tree')}
+ {!isHidden && !isFullScreen && translate('Neos.Neos:Main:documentTree', 'Document Tree')}
@@ -66,13 +67,7 @@ export default class DeleteNodeModal extends PureComponent {
);
}
- const deleteMultipleNodesLabel = i18nRegistry.translate(
- 'deleteXNodes',
- 'Delete multiple nodes',
- {amount: nodesToBeDeletedContextPaths.length},
- 'Neos.Neos.Ui',
- 'Main'
- )
+ const deleteMultipleNodesLabel = translate('Neos.Neos.Ui:Main:deleteXNodes', 'Delete multiple nodes', {amount: nodesToBeDeletedContextPaths.length})
return (
@@ -84,7 +79,7 @@ export default class DeleteNodeModal extends PureComponent {
}
renderAbort() {
- const abortLabel = this.props.i18nRegistry.translate('cancel', 'Cancel')
+ const abortLabel = translate('Neos.Neos:Main:cancel', 'Cancel')
return (
- {i18nRegistry.translate('content.navigate.deleteNodeDialog.header')}
- {nodesToBeDeletedContextPaths.length > 1 ? `${nodesToBeDeletedContextPaths.length} ${i18nRegistry.translate('nodes', 'nodes', {}, 'Neos.Neos.Ui', 'Main')}` : `"$${node?.label}"`}?
+ {translate('Neos.Neos:Main:content.navigate.deleteNodeDialog.header')}
+ {nodesToBeDeletedContextPaths.length > 1 ? `${nodesToBeDeletedContextPaths.length} ${translate('Neos.Neos.Ui:Main:nodes', 'nodes')}` : `"$${node?.label}"`}?
{warnings.length > 0 ?
: ''}
{warnings.map((warning, index) =>
diff --git a/packages/neos-ui/src/Containers/Modals/InsertMode/index.js b/packages/neos-ui/src/Containers/Modals/InsertMode/index.js
index 0a1a371794..f85057d592 100644
--- a/packages/neos-ui/src/Containers/Modals/InsertMode/index.js
+++ b/packages/neos-ui/src/Containers/Modals/InsertMode/index.js
@@ -5,7 +5,7 @@ import {connect} from 'react-redux';
import {neos} from '@neos-project/neos-ui-decorators';
import {Button, Dialog, Icon} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {InsertModeSelector} from '@neos-project/neos-ui-containers';
@@ -68,7 +68,7 @@ export default class InsertModeModal extends PureComponent {
renderNodeLabel(contextPaths) {
const {getNodeByContextPath, nodeTypesRegistry, i18nRegistry} = this.props;
if (contextPaths.length > 1) {
- return `${contextPaths.length} ${i18nRegistry.translate('nodes', 'nodes', {}, 'Neos.Neos.Ui', 'Main')}`;
+ return `${contextPaths.length} ${translate('Neos.Neos.Ui:Main:nodes', 'nodes')}`;
}
const contextPath = contextPaths[0];
const node = getNodeByContextPath(contextPath);
@@ -81,41 +81,22 @@ export default class InsertModeModal extends PureComponent {
renderTitle() {
const {subjectContextPaths, referenceContextPath, operationType} = this.props;
-
+ const parameters = {
+ source: this.renderNodeLabel(subjectContextPaths),
+ target: this.renderNodeLabel([referenceContextPath])
+ };
+
+ let label = '';
+ if (operationType === actionTypes.CR.Nodes.COPY) {
+ label = translate('Neos.Neos:Main:copy__from__to--title', '', parameters);
+ } else if (operationType === actionTypes.CR.Nodes.CUT || operationType === actionTypes.CR.Nodes.MOVE) {
+ label = translate('Neos.Neos:Main:move__from__to--title', '', parameters);
+ }
return (
- {operationType === actionTypes.CR.Nodes.COPY &&
-
- }
- {operationType === actionTypes.CR.Nodes.CUT &&
-
- }
- {operationType === actionTypes.CR.Nodes.MOVE &&
-
- }
+ {label}
);
@@ -130,7 +111,7 @@ export default class InsertModeModal extends PureComponent {
hoverStyle="brand"
onClick={this.handleCancel}
>
-
+ {translate('Neos.Neos:Main:cancel', 'Cancel')}
);
}
@@ -145,7 +126,7 @@ export default class InsertModeModal extends PureComponent {
onClick={this.handleApply}
className={style.applyBtn}
>
-
+ {translate('Neos.Neos:Main:apply', 'Apply')}
);
}
@@ -173,13 +154,7 @@ export default class InsertModeModal extends PureComponent {
>
-
+ {translate('Neos.Neos:Main:copy__from__to--description', '', {source: this.renderNodeLabel(subjectContextPaths), target: this.renderNodeLabel([referenceContextPath])})}
(
-
+ {translate(`Neos.Neos.Ui:Main:Shortcut__${id}`, description)}
{keys}
@@ -41,7 +41,7 @@ class KeyboardShortcutModal extends PureComponent {
hoverStyle="brand"
onClick={() => this.props.close()}
>
-
+ {translate('Neos.Neos:Main:close', 'Close')}
);
}
@@ -52,12 +52,12 @@ class KeyboardShortcutModal extends PureComponent {
return (
}
+ title="Keyboard Shortcuts"
isOpen={isOpen}
onRequestClose={() => close()}
>
-
+ {translate('Neos.Neos.Ui:Main:Shortcut__Introduction')}
{hotkeyRegistry.getAllAsList().map(key => this.renderShortcut(key))}
diff --git a/packages/neos-ui/src/Containers/Modals/NodeCreationDialog/index.js b/packages/neos-ui/src/Containers/Modals/NodeCreationDialog/index.js
index 3724de38bb..7f266041ea 100644
--- a/packages/neos-ui/src/Containers/Modals/NodeCreationDialog/index.js
+++ b/packages/neos-ui/src/Containers/Modals/NodeCreationDialog/index.js
@@ -10,7 +10,7 @@ import validate from '@neos-project/neos-ui-validators';
import preprocessNodeConfiguration from '../../../preprocessNodeConfiguration';
import {Icon, Button, Dialog} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import I18n, {translate} from '@neos-project/neos-ui-i18n';
import EditorEnvelope from '@neos-project/neos-ui-editors/src/EditorEnvelope/index';
import style from './style.module.css';
@@ -210,7 +210,7 @@ export default class NodeCreationDialog extends PureComponent {
hoverStyle="brand"
onClick={this.handleBack}
>
-
+ {translate('Neos.Neos:Main:back', 'Back')}
);
}
@@ -220,7 +220,7 @@ export default class NodeCreationDialog extends PureComponent {
return (
-
+ {translate('Neos.Neos:Main:createNew', 'Create new')}
);
@@ -238,7 +238,7 @@ export default class NodeCreationDialog extends PureComponent {
disabled={validationErrors && isDirty}
>
-
+ {translate('Neos.Neos:Main:createNew', 'Create')}
);
}
diff --git a/packages/neos-ui/src/Containers/Modals/NodeVariantCreationDialog/index.js b/packages/neos-ui/src/Containers/Modals/NodeVariantCreationDialog/index.js
index 13fbb9789f..3ade0e2dc4 100644
--- a/packages/neos-ui/src/Containers/Modals/NodeVariantCreationDialog/index.js
+++ b/packages/neos-ui/src/Containers/Modals/NodeVariantCreationDialog/index.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import {Button, Dialog} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {selectors, actions} from '@neos-project/neos-ui-redux-store';
import {neos} from '@neos-project/neos-ui-decorators';
@@ -63,7 +63,7 @@ export default class NodeVariantCreationDialog extends PureComponent {
return (
-
+ {translate('Neos.Neos:Main:content.dimension.createDialog.header', 'Start with an empty or pre-filled document?')}
);
@@ -77,7 +77,7 @@ export default class NodeVariantCreationDialog extends PureComponent {
hoverStyle="brand"
onClick={this.handleAbort}
>
-
+ {translate('Neos.Neos:Main:cancel', 'Cancel')}
);
}
@@ -91,7 +91,7 @@ export default class NodeVariantCreationDialog extends PureComponent {
hoverStyle="brand"
onClick={this.handleCreateEmpty}
>
-
+ {translate('Neos.Neos:Main:content.dimension.createDialog.createEmpty', 'Create empty')}
);
}
@@ -105,7 +105,7 @@ export default class NodeVariantCreationDialog extends PureComponent {
hoverStyle="brand"
onClick={this.handleCreateAndCopy}
>
-
+ {translate('Neos.Neos:Main:content.dimension.createDialog.createAndCopy', 'Create and copy')}
);
}
@@ -147,14 +147,16 @@ export default class NodeVariantCreationDialog extends PureComponent {
>
-
+ {translate('Neos.Neos:Main:content.dimension.createDialog.nodeTypeDoesNotExistInDimension', '', i18nParams)}
-
+ {translate('Neos.Neos:Main:content.dimension.createDialog.createEmptyOrCopy', '', i18nParams)}
{numberOfParentNodesToBeCreated > 0 ?
-
: null
+
+ {translate('Neos.Neos:Main:content.dimension.createDialog.existingAncestorDocuments', '', {numberOfNodesMissingInRootline: numberOfParentNodesToBeCreated})}
+
: null
}
diff --git a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ConfirmationDialog.tsx b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ConfirmationDialog.tsx
index 49e3e3e03b..df19425145 100644
--- a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ConfirmationDialog.tsx
+++ b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ConfirmationDialog.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {Button, Dialog, Icon} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {PublishingMode, PublishingPhase, PublishingScope} from '@neos-project/neos-ui-redux-store/src/CR/Publishing';
import {Diagram} from './Diagram';
@@ -29,13 +29,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publish all changes in workspace "${props.scopeTitle}"`
+ fallback: 'Publish all changes in workspace "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; targetWorkspaceName: null | string; }) =>
- `Are you sure that you want to publish all ${props.numberOfChanges} change(s) in workspace "${props.scopeTitle}" to workspace "${props.targetWorkspaceName}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to publish all {numberOfChanges} change(s) in workspace "{scopeTitle}" to workspace "{targetWorkspaceName}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.confirmation.cancel',
@@ -51,13 +49,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publish all changes in site "${props.scopeTitle}"`
+ fallback: 'Publish all changes in site "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; sourceWorkspaceName: string; targetWorkspaceName: null | string; }) =>
- `Are you sure that you want to publish all ${props.numberOfChanges} change(s) in site "${props.scopeTitle}" from workspace "${props.sourceWorkspaceName}" to workspace "${props.targetWorkspaceName}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to publish all {numberOfChanges} change(s) in site "{scopeTitle}" from workspace "{sourceWorkspaceName}" to workspace "{targetWorkspaceName}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.confirmation.cancel',
@@ -74,13 +70,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publish all changes in document "${props.scopeTitle}"`
+ fallback: 'Publish all changes in document "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; sourceWorkspaceName: string; targetWorkspaceName: null | string; }) =>
- `Are you sure that you want to publish all ${props.numberOfChanges} change(s) in document "${props.scopeTitle}" from workspace "${props.sourceWorkspaceName}" to workspace "${props.targetWorkspaceName}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to publish all {numberOfChanges} change(s) in document "{scopeTitle}" from workspace "{sourceWorkspaceName}" to workspace "{targetWorkspaceName}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.confirmation.cancel',
@@ -104,13 +98,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discard all changes in workspace "${props.scopeTitle}"`
+ fallback: 'Discard all changes in workspace "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; }) =>
- `Are you sure that you want to discard all ${props.numberOfChanges} change(s) in workspace "${props.scopeTitle}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to discard all {numberOfChanges} change(s) in workspace "{scopeTitle}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.confirmation.cancel',
@@ -126,13 +118,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discard all changes in site "${props.scopeTitle}"`
+ fallback: 'Discard all changes in site "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; sourceWorkspaceName: string; }) =>
- `Are you sure that you want to discard all ${props.numberOfChanges} change(s) in site "${props.scopeTitle}" from workspace "${props.sourceWorkspaceName}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to discard all {numberOfChanges} change(s) in site "{scopeTitle}" from workspace "{sourceWorkspaceName}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.confirmation.cancel',
@@ -148,13 +138,11 @@ const ConfirmationDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.confirmation.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discard all changes in document "${props.scopeTitle}"`
+ fallback: 'Discard all changes in document "{scopeTitle}"'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.confirmation.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; sourceWorkspaceName: string; }) =>
- `Are you sure that you want to discard all ${props.numberOfChanges} change(s) in document "${props.scopeTitle}" from workspace "${props.sourceWorkspaceName}"? Be careful: This cannot be undone!`
+ fallback: 'Are you sure that you want to discard all {numberOfChanges} change(s) in document "{scopeTitle}" from workspace "{sourceWorkspaceName}"? Be careful: This cannot be undone!'
},
cancel: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.confirmation.cancel',
@@ -193,7 +181,7 @@ export const ConfirmationDialog: React.FC = (props) =>
hoverStyle="brand"
onClick={props.onAbort}
>
-
+ {translate(variant[props.scope].label.cancel.id, variant[props.scope].label.cancel.fallback)}
,
= (props) =>
onClick={props.onConfirm}
>
-
+ {translate(variant[props.scope].label.confirm.id, variant[props.scope].label.confirm.fallback)}
]}
title={
-
+ {translate(variant[props.scope].label.title.id, variant[props.scope].label.title.fallback, props as any)}
}
onRequestClose={props.onAbort}
@@ -230,11 +214,7 @@ export const ConfirmationDialog: React.FC = (props) =>
targetWorkspaceName={props.targetWorkspaceName}
numberOfChanges={props.numberOfChanges}
/>
-
+ {translate(variant[props.scope].label.message.id, variant[props.scope].label.message.fallback, props as any)}
);
diff --git a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ProcessIndicator.tsx b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ProcessIndicator.tsx
index 49a0a2286a..1af5092ddb 100644
--- a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ProcessIndicator.tsx
+++ b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ProcessIndicator.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {Dialog, Icon} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {PublishingMode, PublishingPhase, PublishingScope} from '@neos-project/neos-ui-redux-store/src/CR/Publishing';
import {Diagram} from './Diagram';
@@ -23,13 +23,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publishing all changes in workspace "${props.scopeTitle}"...`
+ fallback: 'Publishing all changes in workspace "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being published. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being published. This may take a while.'
}
}
},
@@ -37,13 +35,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publishing all changes in site "${props.scopeTitle}"...`
+ fallback: 'Publishing all changes in site "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being published. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being published. This may take a while.'
}
}
},
@@ -51,13 +47,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Publishing all changes in document "${props.scopeTitle}"...`
+ fallback: 'Publishing all changes in document "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being published. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being published. This may take a while.'
}
}
}
@@ -68,13 +62,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discarding all changes in workspace "${props.scopeTitle}"...`
+ fallback: 'Discarding all changes in workspace "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being discarded. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being discarded. This may take a while.'
}
}
},
@@ -82,13 +74,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discarding all changes in site "${props.scopeTitle}"...`
+ fallback: 'Discarding all changes in site "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being discarded. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being discarded. This may take a while.'
}
}
},
@@ -96,13 +86,11 @@ const ProcessIndicatorVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.process.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Discarding all changes in document "${props.scopeTitle}"...`
+ fallback: 'Discarding all changes in document "{scopeTitle}"...'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.process.message',
- fallback: (props: { numberOfChanges: number; }) =>
- `Please wait while ${props.numberOfChanges} change(s) are being discarded. This may take a while.`
+ fallback: 'Please wait while {numberOfChanges} change(s) are being discarded. This may take a while.'
}
}
}
@@ -126,11 +114,7 @@ export const ProcessIndicator: React.FC<{
-
+ {translate(variant[props.scope].label.title.id, variant[props.scope].label.title.fallback, props as any)}
}
@@ -148,11 +132,7 @@ export const ProcessIndicator: React.FC<{
targetWorkspaceName={props.targetWorkspaceName}
numberOfChanges={props.numberOfChanges}
/>
-
+ {translate(variant[props.scope].label.message.id, variant[props.scope].label.message.fallback, props as any)}
);
diff --git a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ResultDialog.tsx b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ResultDialog.tsx
index 60bdf9550a..1e94016c1d 100644
--- a/packages/neos-ui/src/Containers/Modals/PublishingDialog/ResultDialog.tsx
+++ b/packages/neos-ui/src/Containers/Modals/PublishingDialog/ResultDialog.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {Button, Dialog, Icon} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {PublishingMode, PublishingPhase, PublishingScope} from '@neos-project/neos-ui-redux-store/src/CR/Publishing';
import {AnyError, ErrorView} from '@neos-project/neos-ui-error';
@@ -28,13 +28,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `All changes in workspace "${props.scopeTitle}" were published`
+ fallback: 'All changes in workspace "{scopeTitle}" were published'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; targetWorkspaceName: null | string; }) =>
- `All ${props.numberOfChanges} change(s) in workspace "${props.scopeTitle}" were sucessfully published to workspace "${props.targetWorkspaceName}".`
+ fallback: 'All {numberOfChanges} change(s) in workspace "{scopeTitle}" were sucessfully published to workspace "{targetWorkspaceName}".'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.success.acknowledge',
@@ -46,13 +44,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in site "${props.scopeTitle}" were published`
+ fallback: 'Changes in site "{scopeTitle}" were published'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; targetWorkspaceName: null | string; }) =>
- `${props.numberOfChanges} change(s) in site "${props.scopeTitle}" were sucessfully published to workspace "${props.targetWorkspaceName}".`
+ fallback: '{numberOfChanges} change(s) in site "{scopeTitle}" were sucessfully published to workspace "{targetWorkspaceName}".'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.success.acknowledge',
@@ -65,13 +61,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in document "${props.scopeTitle}" were published`
+ fallback: 'Changes in document "{scopeTitle}" were published'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; targetWorkspaceName: null | string; }) =>
- `${props.numberOfChanges} change(s) in document "${props.scopeTitle}" were sucessfully published to workspace "${props.targetWorkspaceName}".`
+ fallback: '{numberOfChanges} change(s) in document "{scopeTitle}" were sucessfully published to workspace "{targetWorkspaceName}".'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.success.acknowledge',
@@ -87,8 +81,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in workspace "${props.scopeTitle}" could not be published`
+ fallback: 'Changes in workspace "{scopeTitle}" could not be published'
},
retry: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.all.error.retry',
@@ -104,8 +97,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in site "${props.scopeTitle}" could not be published`
+ fallback: 'Changes in site "{scopeTitle}" could not be published'
},
retry: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.site.error.retry',
@@ -121,8 +113,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in document "${props.scopeTitle}" could not be published`
+ fallback: 'Changes in document "{scopeTitle}" could not be published'
},
retry: {
id: 'Neos.Neos.Ui:PublishingDialog:publish.document.error.retry',
@@ -145,13 +136,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `All changes in workspace "${props.scopeTitle}" were discarded`
+ fallback: 'All changes in workspace "{scopeTitle}" were discarded'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; }) =>
- `All ${props.numberOfChanges} change(s) in workspace "${props.scopeTitle}" were sucessfully discarded.`
+ fallback: 'All {numberOfChanges} change(s) in workspace "{scopeTitle}" were sucessfully discarded.'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.success.acknowledge',
@@ -163,13 +152,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in site "${props.scopeTitle}" were discarded`
+ fallback: 'Changes in site "{scopeTitle}" were discarded'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; }) =>
- `${props.numberOfChanges} change(s) in site "${props.scopeTitle}" were sucessfully discarded.`
+ fallback: '{numberOfChanges} change(s) in site "{scopeTitle}" were sucessfully discarded.'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.success.acknowledge',
@@ -181,13 +168,11 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.success.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in document "${props.scopeTitle}" were discarded`
+ fallback: 'Changes in document "{scopeTitle}" were discarded'
},
message: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.success.message',
- fallback: (props: { numberOfChanges: number; scopeTitle: string; }) =>
- `${props.numberOfChanges} change(s) in document "${props.scopeTitle}" were sucessfully discarded.`
+ fallback: '{numberOfChanges} change(s) in document "{scopeTitle}" were sucessfully discarded.'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.success.acknowledge',
@@ -203,8 +188,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in workspace "${props.scopeTitle}" could not be discarded`
+ fallback: 'Changes in workspace "{scopeTitle}" could not be discarded'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.all.error.acknowledge',
@@ -220,8 +204,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in site "${props.scopeTitle}" could not be discarded`
+ fallback: 'Changes in site "{scopeTitle}" could not be discarded'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.site.error.acknowledge',
@@ -237,8 +220,7 @@ const ResultDialogVariants = {
label: {
title: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.error.title',
- fallback: (props: { scopeTitle: string; }) =>
- `Changes in document "${props.scopeTitle}" could not be discarded`
+ fallback: 'Changes in document "{scopeTitle}" could not be discarded'
},
acknowledge: {
id: 'Neos.Neos.Ui:PublishingDialog:discard.document.error.acknowledge',
@@ -284,7 +266,7 @@ export const ResultDialog: React.FC<{
hoverStyle="brand"
onClick={props.onAcknowledge}
>
-
+ {translate(variant[props.result.phase][props.scope].label.acknowledge.id, variant[props.result.phase][props.scope].label.acknowledge.fallback)}
,
-
+ {translate(variant[props.result.phase][props.scope].label.retry.id, variant[props.result.phase][props.scope].label.retry.fallback)}
] : [
-
+ {translate(variant[props.result.phase][props.scope].label.acknowledge.id, variant[props.result.phase][props.scope].label.acknowledge.fallback)}
]}
title={
-
+ {translate(variant[props.result.phase][props.scope].label.title.id, variant[props.result.phase][props.scope].label.title.fallback, props as any)}
}
@@ -337,13 +315,7 @@ export const ResultDialog: React.FC<{
/>
{props.result.phase === PublishingPhase.ERROR
? (
)
- : (
-
- )
+ : translate(variant[props.result.phase][props.scope].label.message.id, variant[props.result.phase][props.scope].label.message.fallback, props as any)
}
diff --git a/packages/neos-ui/src/Containers/Modals/ReloginDialog/index.js b/packages/neos-ui/src/Containers/Modals/ReloginDialog/index.js
index f5bf7e783c..2f58e4fd91 100644
--- a/packages/neos-ui/src/Containers/Modals/ReloginDialog/index.js
+++ b/packages/neos-ui/src/Containers/Modals/ReloginDialog/index.js
@@ -2,18 +2,14 @@ import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
-import {neos} from '@neos-project/neos-ui-decorators';
import {actions, selectors} from '@neos-project/neos-ui-redux-store';
import backend from '@neos-project/neos-ui-backend-connector';
import fetchWithErrorHandling from '@neos-project/neos-ui-backend-connector/src/FetchWithErrorHandling/index';
import {Button, Dialog, TextInput, Tooltip} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import style from './style.module.css';
-@neos(globalRegistry => ({
- i18nRegistry: globalRegistry.get('i18n')
-}))
@connect(state => ({
authenticationTimeout: selectors.System.authenticationTimeout(state)
}), {
@@ -30,7 +26,6 @@ export default class ReloginDialog extends PureComponent {
state = {...this.defaultState};
static propTypes = {
- i18nRegistry: PropTypes.object.isRequired,
authenticationTimeout: PropTypes.bool.isRequired,
reauthenticationSucceeded: PropTypes.func.isRequired
};
@@ -53,7 +48,7 @@ export default class ReloginDialog extends PureComponent {
this.setState(this.defaultState);
} else {
this.setState({
- message: this.props.i18nRegistry.translate('Neos.Neos:Main:wrongCredentials', 'The entered username or password was wrong'),
+ message: translate('Neos.Neos:Main:wrongCredentials', 'The entered username or password was wrong'),
isLoading: false
});
}
@@ -61,7 +56,7 @@ export default class ReloginDialog extends PureComponent {
};
render() {
- const {authenticationTimeout, i18nRegistry} = this.props;
+ const {authenticationTimeout} = this.props;
if (!authenticationTimeout) {
return null;
@@ -69,7 +64,7 @@ export default class ReloginDialog extends PureComponent {
return (
}
+ title={translate('Neos.Neos:Main:login.expired', 'Your login has expired. Please log in again.')}
style="narrow"
isOpen
id="neos-ReloginDialog"
@@ -80,7 +75,7 @@ export default class ReloginDialog extends PureComponent {
containerClassName={style.inputFieldWrapper}
value={this.state.username}
name="__authentication[Neos][Flow][Security][Authentication][Token][UsernamePassword][username]"
- placeholder={i18nRegistry.translate('Neos.Neos:Main:username', 'Username')}
+ placeholder={translate('Neos.Neos:Main:username', 'Username')}
onChange={this.handleUsernameChange}
onEnterKey={this.handleTryLogin}
setFocus={true}
@@ -91,7 +86,7 @@ export default class ReloginDialog extends PureComponent {
containerClassName={style.inputFieldWrapper}
value={this.state.password}
name="__authentication[Neos][Flow][Security][Authentication][Token][UsernamePassword][password]"
- placeholder={i18nRegistry.translate('Neos.Neos:Main:password', 'Password')}
+ placeholder={translate('Neos.Neos:Main:password', 'Password')}
onChange={this.handlePasswordChange}
onEnterKey={this.handleTryLogin}
/>
@@ -103,9 +98,9 @@ export default class ReloginDialog extends PureComponent {
disabled={this.state.isLoading}
className={style.loginButton}
>
- {this.state.isLoading ?
- :
-
+ {this.state.isLoading
+ ? translate('Neos.Neos:Main:authenticating', 'Authenticating')
+ : translate('Neos.Neos:Main:login', 'Login')
}
diff --git a/packages/neos-ui/src/Containers/Modals/SelectNodeType/index.js b/packages/neos-ui/src/Containers/Modals/SelectNodeType/index.js
index 178f88c76e..b42cbee4c3 100644
--- a/packages/neos-ui/src/Containers/Modals/SelectNodeType/index.js
+++ b/packages/neos-ui/src/Containers/Modals/SelectNodeType/index.js
@@ -8,7 +8,7 @@ import {neos} from '@neos-project/neos-ui-decorators';
import {actions, selectors} from '@neos-project/neos-ui-redux-store';
import {Button, Dialog} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {InsertModeSelector} from '@neos-project/neos-ui-containers';
import NodeTypeGroupPanel from './nodeTypeGroupPanel';
@@ -185,7 +185,7 @@ export default class SelectNodeType extends PureComponent {
hoverStyle="brand"
onClick={this.handleCancel}
>
-
+ {translate('Neos.Neos:Main:cancel', 'Cancel')}
);
}
@@ -196,15 +196,15 @@ export default class SelectNodeType extends PureComponent {
const nodeTypeLabel = nodeTypesRegistry.get(referenceNodeType)?.ui?.label
const nodeTypeLabelText = i18nRegistry.translate(nodeTypeLabel, 'Node')
- const addLabel = i18nRegistry.translate('Neos.Neos.Ui:Main:add', 'Add')
+ const addLabel = translate('Neos.Neos.Ui:Main:add', 'Add')
const insertModeLabel = (function () {
switch (insertMode) {
case 'into':
- return i18nRegistry.translate('Neos.Neos.Ui:Main:InsertModeTitleInto', 'inside');
+ return translate('Neos.Neos.Ui:Main:InsertModeTitleInto', 'inside');
case 'before':
- return i18nRegistry.translate('Neos.Neos.Ui:Main:InsertModeTitleBefore', 'above');
+ return translate('Neos.Neos.Ui:Main:InsertModeTitleBefore', 'above');
case 'after':
- return i18nRegistry.translate('Neos.Neos.Ui:Main:InsertModeTitleAfter', 'below');
+ return translate('Neos.Neos.Ui:Main:InsertModeTitleAfter', 'below');
default:
return 'to';
}
diff --git a/packages/neos-ui/src/Containers/Modals/SelectNodeType/nodeTypeFilter.js b/packages/neos-ui/src/Containers/Modals/SelectNodeType/nodeTypeFilter.js
index 56af0dfd16..62e119813d 100644
--- a/packages/neos-ui/src/Containers/Modals/SelectNodeType/nodeTypeFilter.js
+++ b/packages/neos-ui/src/Containers/Modals/SelectNodeType/nodeTypeFilter.js
@@ -1,10 +1,10 @@
import React from 'react';
import PropTypes from 'prop-types';
import {TextInput, IconButton, Icon} from '@neos-project/react-ui-components';
-import {neos} from '@neos-project/neos-ui-decorators';
+import {translate} from '@neos-project/neos-ui-i18n';
import style from './style.module.css';
-const NodeTypeFilter = ({onChange, onEnterKey, filterSearchTerm, i18nRegistry}) => {
+const NodeTypeFilter = ({onChange, onEnterKey, filterSearchTerm}) => {
const handleResetFilter = () => {
onChange('');
};
@@ -17,7 +17,7 @@ const NodeTypeFilter = ({onChange, onEnterKey, filterSearchTerm, i18nRegistry})
onEnterKey();
};
- const label = i18nRegistry.translate('filter', 'Filter', {}, 'Neos.Neos', 'Main');
+ const label = translate('Neos.Neos:Main:filter', 'Filter');
return (
@@ -47,10 +47,7 @@ const NodeTypeFilter = ({onChange, onEnterKey, filterSearchTerm, i18nRegistry})
NodeTypeFilter.propTypes = {
onChange: PropTypes.func.isRequired,
onEnterKey: PropTypes.func.isRequired,
- filterSearchTerm: PropTypes.string,
- i18nRegistry: PropTypes.object.isRequired
+ filterSearchTerm: PropTypes.string
};
-export default neos(globalRegistry => ({
- i18nRegistry: globalRegistry.get('i18n')
-}))(NodeTypeFilter);
+export default NodeTypeFilter;
diff --git a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConfirmationDialog.tsx b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConfirmationDialog.tsx
index 36ec8a8f8d..b79363138e 100644
--- a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConfirmationDialog.tsx
+++ b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConfirmationDialog.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {WorkspaceName} from '@neos-project/neos-ts-interfaces';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {Button, Dialog, Icon} from '@neos-project/react-ui-components';
import {SyncingPhase} from '@neos-project/neos-ui-redux-store/src/CR/Syncing';
@@ -35,10 +35,7 @@ export const ConfirmationDialog: React.FC<{
hoverStyle="brand"
onClick={props.onCancel}
>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:confirmation.cancel', 'No, cancel')}
,
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:confirmation.confirm', 'Yes, synchronize now')}
]}
title={
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:confirmation.title', 'Synchronize workspace "{workspaceName}" with "{baseWorkspaceName}"', props as any)}
}
onRequestClose={props.onCancel}
@@ -78,11 +68,7 @@ export const ConfirmationDialog: React.FC<{
baseWorkspaceName={props.baseWorkspaceName}
phase={SyncingPhase.START}
/>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:confirmation.message', 'Workspace "{baseWorkspaceName}" has been modified. You need to synchronize your workspace "{workspaceName}" with it in order to see those changes and avoid conflicts. Do you wish to proceed?', props as any)}
);
diff --git a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConflictList.tsx b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConflictList.tsx
index e473d7c685..86a2efd614 100644
--- a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConflictList.tsx
+++ b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ConflictList.tsx
@@ -9,7 +9,7 @@
*/
import React from 'react';
-import I18n, {I18nRegistry} from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {Icon} from '@neos-project/react-ui-components';
import {Conflict, ReasonForConflict} from '@neos-project/neos-ui-redux-store/src/CR/Syncing';
import {TypeOfChange} from '@neos-project/neos-ui-redux-store/src/CR/Workspaces';
@@ -18,7 +18,6 @@ import style from './style.module.css';
export const ConflictList: React.FC<{
conflicts: Conflict[];
- i18n: I18nRegistry;
}> = (props) => {
return (
@@ -26,7 +25,6 @@ export const ConflictList: React.FC<{
))}
@@ -38,32 +36,28 @@ const VARIANTS_BY_TYPE_OF_CHANGE = {
icon: 'pencil',
label: {
id: 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.NODE_HAS_BEEN_CHANGED.label',
- fallback: (props: { label: string }) =>
- `"${props.label}" has been edited.`
+ fallback: '"{label}" has been edited.'
}
},
[TypeOfChange.NODE_HAS_BEEN_CREATED]: {
icon: 'plus',
label: {
id: 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.NODE_HAS_BEEN_CREATED.label',
- fallback: (props: { label: string }) =>
- `"${props.label}" has been created.`
+ fallback: '"{label}" has been created.'
}
},
[TypeOfChange.NODE_HAS_BEEN_DELETED]: {
icon: 'times',
label: {
id: 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.NODE_HAS_BEEN_DELETED.label',
- fallback: (props: { label: string }) =>
- `"${props.label}" has been deleted.`
+ fallback: '"{label}" has been deleted.'
}
},
[TypeOfChange.NODE_HAS_BEEN_MOVED]: {
icon: 'long-arrow-right',
label: {
id: 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.NODE_HAS_BEEN_MOVED.label',
- fallback: (props: { label: string }) =>
- `"${props.label}" has been moved.`
+ fallback: '"{label}" has been moved.'
}
}
} as const;
@@ -73,15 +67,13 @@ const VARIANTS_BY_REASON_FOR_CONFLICT = {
icon: 'times',
label: {
id: 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.reasonForConflict.NODE_HAS_BEEN_DELETED.label',
- fallback: (props: { label: string }) =>
- `"${props.label}" or one of its ancestor nodes has been deleted.`
+ fallback: '"{label}" or one of its ancestor nodes has been deleted.'
}
}
} as const;
const ConflictItem: React.FC<{
conflict: Conflict;
- i18n: I18nRegistry;
}> = (props) => {
const changeVariant = props.conflict.typeOfChange === null
? null
@@ -91,24 +83,15 @@ const ConflictItem: React.FC<{
: VARIANTS_BY_REASON_FOR_CONFLICT[props.conflict.reasonForConflict];
const affectedNode = props.conflict.affectedNode ?? {
icon: 'question',
- label: props.i18n.translate(
- 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownNode',
- 'Unknown Node'
- )
+ label: translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownNode', 'Unknown Node')
};
const affectedDocument = props.conflict.affectedDocument ?? {
icon: 'question',
- label: props.i18n.translate(
- 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownDocument',
- 'Unknown Document'
- )
+ label: translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownDocument', 'Unknown Document')
};
const affectedSite = props.conflict.affectedSite ?? {
icon: 'question',
- label: props.i18n.translate(
- 'Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownSite',
- 'Unknown Site'
- )
+ label: translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownSite', 'Unknown Site')
};
return (
@@ -126,10 +109,7 @@ const ConflictItem: React.FC<{
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.affectedSite.label', 'Affected Site')}
@@ -137,10 +117,7 @@ const ConflictItem: React.FC<{
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.affectedDocument.label', 'Affected Document')}
@@ -148,10 +125,7 @@ const ConflictItem: React.FC<{
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.label', 'What was changed?')}
{changeVariant ? (
@@ -159,52 +133,27 @@ const ConflictItem: React.FC<{
className={style.conflict__changeIcon}
icon={changeVariant.icon}
/>
-
+ {translate(changeVariant.label.id, changeVariant.label.fallback, {label: affectedNode.label})}
) : (
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.typeOfChange.unknownMessage', 'Sorry, but there is no available information on this change.')}
)}
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.reasonForConflict.label', 'Why is there a conflict?')}
{reasonVariant ? (
-
+ {translate(reasonVariant.label.id, reasonVariant.label.fallback, {label: affectedNode.label})}
) : (
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.reasonForConflict.unknownMessage', 'Sorry, but there is no available information on the reason for this conflict.')}
)}
@@ -230,11 +179,6 @@ const Node: React.FC<{
icon={VARIANTS_BY_TYPE_OF_CHANGE[props.typeOfChange].icon}
/>
) : null}
- {props.label ?? (
-
- )}
+ {props.label ?? translate('Neos.Neos.Ui:SyncWorkspaceDialog:conflictList.unknownNode', 'Unknown Node')}
);
diff --git a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ProcessIndicator.tsx b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ProcessIndicator.tsx
index ee0323a1b7..ca7e22e118 100644
--- a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ProcessIndicator.tsx
+++ b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ProcessIndicator.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {Dialog, Icon} from '@neos-project/react-ui-components';
-import I18n from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {SyncingPhase} from '@neos-project/neos-ui-redux-store/src/CR/Syncing';
import {Diagram} from './Diagram';
@@ -26,11 +26,7 @@ export const ProcessIndicator: React.FC<{
title={
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:process.title', 'Synchronizing workspace "{workspaceName}"...', props as any)}
}
type={undefined as any}
@@ -46,11 +42,7 @@ export const ProcessIndicator: React.FC<{
workspaceName={props.workspaceName}
baseWorkspaceName={props.baseWorkspaceName}
/>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:process.message', 'Please wait, while workspace "{workspaceName}" is being synchronized with recent changes in workspace "{baseWorkspaceName}". This may take a while.', props as any)}
);
diff --git a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ResolutionStrategyConfirmationDialog.tsx b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ResolutionStrategyConfirmationDialog.tsx
index 43923d4b52..bd618637ef 100644
--- a/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ResolutionStrategyConfirmationDialog.tsx
+++ b/packages/neos-ui/src/Containers/Modals/SyncWorkspaceDialog/ResolutionStrategyConfirmationDialog.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {WorkspaceName} from '@neos-project/neos-ts-interfaces';
-import I18n, {I18nRegistry} from '@neos-project/neos-ui-i18n';
+import {translate} from '@neos-project/neos-ui-i18n';
import {Button, Dialog, Icon} from '@neos-project/react-ui-components';
import {PublishingPhase} from '@neos-project/neos-ui-redux-store/src/CR/Publishing';
import {Conflict, ResolutionStrategy} from '@neos-project/neos-ui-redux-store/src/CR/Syncing';
@@ -27,7 +27,6 @@ export const ResolutionStrategyConfirmationDialog: React.FC<{
baseWorkspaceName: WorkspaceName;
strategy: ResolutionStrategy;
conflicts: Conflict[];
- i18n: I18nRegistry;
onCancelConflictResolution: () => void;
onConfirmResolutionStrategy: () => void;
}> = (props) => {
@@ -44,7 +43,6 @@ const ForceConfirmationDialog: React.FC<{
workspaceName: WorkspaceName;
baseWorkspaceName: WorkspaceName;
conflicts: Conflict[];
- i18n: I18nRegistry;
onCancelConflictResolution: () => void;
onConfirmResolutionStrategy: () => void;
}> = (props) => {
@@ -58,10 +56,7 @@ const ForceConfirmationDialog: React.FC<{
hoverStyle="brand"
onClick={props.onCancelConflictResolution}
>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.FORCE.confirmation.cancel', 'No, cancel')}
,
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.FORCE.confirmation.confirm', 'Yes, drop those changes')}
]}
title={
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.FORCE.confirmation.title', 'Drop conflicting changes in workspace "{workspaceName}"', props as any)}
}
onRequestClose={props.onCancelConflictResolution}
@@ -96,18 +84,11 @@ const ForceConfirmationDialog: React.FC<{
style={undefined as any}
>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.FORCE.confirmation.conflicts.label', 'You are about to drop the following changes:')}
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.FORCE.confirmation.message', 'Do you wish to proceed? Be careful: This cannot be undone!')}
);
@@ -129,10 +110,7 @@ const DiscardAllConfirmationDialog: React.FC<{
hoverStyle="brand"
onClick={props.onCancelConflictResolution}
>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.DISCARD_ALL.confirmation.cancel', 'No, cancel')}
,
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.DISCARD_ALL.confirmation.confirm', 'Yes, discard everything')}
]}
title={
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.DISCARD_ALL.confirmation.title', 'Discard all changes in workspace "{workspaceName}"', props as any)}
}
onRequestClose={props.onCancelConflictResolution}
@@ -173,11 +144,7 @@ const DiscardAllConfirmationDialog: React.FC<{
targetWorkspaceName={null}
phase={PublishingPhase.START}
/>
-
+ {translate('Neos.Neos.Ui:SyncWorkspaceDialog:resolutionStrategy.DISCARD_ALL.confirmation.message', 'You are about to discard all {numberOfChanges} change(s) in workspace "{workspaceName}". This includes all changes on other sites. Do you wish to proceed? Be careful: This cannot be undone!', {numberOfChanges: props.totalNumberOfChangesInWorkspace, workspaceName: props.workspaceName})}