From fd01cb057343d563b1ca4773b47eb7eedf76ea5b Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 24 Jul 2018 16:04:55 +0200 Subject: [PATCH] translate users module --- scm-ui/public/locales/en/users.json | 30 +++++++++++++++++++ .../src/users/containers/DeleteUserButton.js | 21 ++++++++----- scm-ui/src/users/containers/EditUserButton.js | 14 +++++++-- scm-ui/src/users/containers/UserForm.js | 27 ++++++++++------- scm-ui/src/users/containers/UserTable.js | 14 +++++---- scm-ui/src/users/containers/Users.js | 15 ++++++---- 6 files changed, 89 insertions(+), 32 deletions(-) create mode 100644 scm-ui/public/locales/en/users.json diff --git a/scm-ui/public/locales/en/users.json b/scm-ui/public/locales/en/users.json new file mode 100644 index 0000000000..7f8e026fb9 --- /dev/null +++ b/scm-ui/public/locales/en/users.json @@ -0,0 +1,30 @@ +{ + "user": { + "name": "Username", + "displayName": "Display Name", + "mail": "E-Mail", + "password": "Password", + "admin": "Admin", + "active": "Active" + }, + "users": { + "title": "Users", + "subtitle": "Create, read, update and delete users", + "add-button": "Add User" + }, + "delete-user-button": { + "label": "Delete", + "confirm-alert": { + "title": "Delete user", + "message": "Do you really want to delete the user?", + "submit": "Yes", + "cancel": "No" + } + }, + "edit-user-button": { + "label": "Edit" + }, + "user-form": { + "submit": "Submit" + } +} diff --git a/scm-ui/src/users/containers/DeleteUserButton.js b/scm-ui/src/users/containers/DeleteUserButton.js index 19576996f3..31190505a5 100644 --- a/scm-ui/src/users/containers/DeleteUserButton.js +++ b/scm-ui/src/users/containers/DeleteUserButton.js @@ -1,5 +1,6 @@ // @flow import React from "react"; +import { translate } from "react-i18next"; import type { User } from "../types/User"; import type { UserEntry } from "../types/UserEntry"; import { confirmAlert } from "../../components/ConfirmAlert"; @@ -8,6 +9,7 @@ import DeleteButton from "../../components/DeleteButton"; type Props = { entry: UserEntry, confirmDialog?: boolean, + t: string => string, deleteUser: (user: User) => void }; @@ -21,16 +23,17 @@ class DeleteUserButton extends React.Component { }; confirmDelete = () => { + const { t } = this.props; confirmAlert({ - title: "Delete user", - message: "Do you really want to delete the user?", + title: t("delete-user-button.confirm-alert.title"), + message: t("delete-user-button.confirm-alert.message"), buttons: [ { - label: "Yes", + label: t("delete-user-button.confirm-alert.submit"), onClick: () => this.deleteUser() }, { - label: "No", + label: t("delete-user-button.confirm-alert.cancel"), onClick: () => null } ] @@ -42,16 +45,20 @@ class DeleteUserButton extends React.Component { }; render() { - const { confirmDialog, entry } = this.props; + const { confirmDialog, entry, t } = this.props; const action = confirmDialog ? this.confirmDelete : this.deleteUser; if (!this.isDeletable()) { return null; } return ( - + ); } } -export default DeleteUserButton; +export default translate("users")(DeleteUserButton); diff --git a/scm-ui/src/users/containers/EditUserButton.js b/scm-ui/src/users/containers/EditUserButton.js index c7a0a736a0..6bafa73468 100644 --- a/scm-ui/src/users/containers/EditUserButton.js +++ b/scm-ui/src/users/containers/EditUserButton.js @@ -1,21 +1,29 @@ //@flow import React from "react"; +import { translate } from "react-i18next"; import EditButton from "../../components/EditButton"; import type { UserEntry } from "../types/UserEntry"; type Props = { + t: string => string, entry: UserEntry }; class EditUserButton extends React.Component { render() { - const { entry } = this.props; + const { entry, t } = this.props; const link = "/users/edit/" + entry.entry.name; if (!this.isEditable()) { return ""; } - return ; + return ( + + ); } isEditable = () => { @@ -23,4 +31,4 @@ class EditUserButton extends React.Component { }; } -export default EditUserButton; +export default translate("users")(EditUserButton); diff --git a/scm-ui/src/users/containers/UserForm.js b/scm-ui/src/users/containers/UserForm.js index 8389c98ad2..ffa6069f9b 100644 --- a/scm-ui/src/users/containers/UserForm.js +++ b/scm-ui/src/users/containers/UserForm.js @@ -1,14 +1,17 @@ // @flow import React from "react"; +import { translate } from "react-i18next"; import type { User } from "../types/User"; import InputField from "../../components/InputField"; import Checkbox from "../../components/Checkbox"; import SubmitButton from "../../components/SubmitButton"; +import Loading from "../../components/Loading"; type Props = { submitForm: User => void, user?: User, - loading?: boolean + loading?: boolean, + t: string => string }; class UserForm extends React.Component { @@ -34,48 +37,52 @@ class UserForm extends React.Component { }; render() { + const { t } = this.props; const user = this.state; if (user) { return (
- +
); } else { - return
Loading...
; + return ; } } @@ -104,4 +111,4 @@ class UserForm extends React.Component { }; } -export default UserForm; +export default translate("users")(UserForm); diff --git a/scm-ui/src/users/containers/UserTable.js b/scm-ui/src/users/containers/UserTable.js index 19d0766cb2..7e321293e8 100644 --- a/scm-ui/src/users/containers/UserTable.js +++ b/scm-ui/src/users/containers/UserTable.js @@ -1,26 +1,28 @@ // @flow import React from "react"; +import { translate } from "react-i18next"; import UserRow from "./UserRow"; import type { User } from "../types/User"; import type { UserEntry } from "../types/UserEntry"; type Props = { + t: string => string, entries: Array, deleteUser: User => void }; class UserTable extends React.Component { render() { - const { deleteUser } = this.props; + const { deleteUser, t } = this.props; const entries = this.props.entries; return ( - - - - + + + + @@ -37,4 +39,4 @@ class UserTable extends React.Component { } } -export default UserTable; +export default translate("users")(UserTable); diff --git a/scm-ui/src/users/containers/Users.js b/scm-ui/src/users/containers/Users.js index 9b39cdf6f4..047369c407 100644 --- a/scm-ui/src/users/containers/Users.js +++ b/scm-ui/src/users/containers/Users.js @@ -1,6 +1,7 @@ // @flow import React from "react"; import { connect } from "react-redux"; +import { translate } from "react-i18next"; import { fetchUsers, deleteUser, getUsersFromState } from "../modules/users"; import Page from "../../components/Page"; @@ -12,6 +13,7 @@ import type { UserEntry } from "../types/UserEntry"; type Props = { loading?: boolean, error: Error, + t: string => string, userEntries: Array, fetchUsers: () => void, deleteUser: User => void, @@ -24,11 +26,11 @@ class Users extends React.Component { } render() { - const { userEntries, deleteUser, loading, error } = this.props; + const { userEntries, deleteUser, loading, t, error } = this.props; return ( @@ -39,10 +41,11 @@ class Users extends React.Component { } renderAddButton() { - if (this.props.canAddUsers) { + const { canAddUsers, t } = this.props; + if (canAddUsers) { return (
- +
); } else { @@ -83,4 +86,4 @@ const mapDispatchToProps = dispatch => { export default connect( mapStateToProps, mapDispatchToProps -)(Users); +)(translate("users")(Users));
NameDisplay NameE-MailAdmin{t("user.name")}{t("user.displayName")}{t("user.mail")}{t("user.admin")}