diff --git a/editors/demo/src/locale/en.js b/editors/demo/src/locale/en.js index 3aad7acaedd13cb1357ed2025faa88e03df3d03a..288f37915cb2c7582b89c20b0b140111b70483a7 100644 --- a/editors/demo/src/locale/en.js +++ b/editors/demo/src/locale/en.js @@ -20,6 +20,7 @@ const en = { 'Wrap in ordered list': 'Wrap in ordered list', 'Join with above block': 'Join with above block', 'Lift out of enclosing block': 'Lift out of enclosing block', + 'Insert Note': 'Insert Note', }, BlockLevel: { 'Block Level': ' Heading styles', @@ -62,6 +63,13 @@ const en = { 'Lower Case': 'Lower Case', 'Sentence Case': 'Sentence Case', }, + Images: { + 'Upload Image': 'Upload Image', + }, + SpecialCharacters: { + 'Special Characters': 'Special Characters', + Search: 'Search', + }, Tables: { 'Insert table': 'Insert Table', 'Table Options': 'Table Options', diff --git a/editors/demo/src/locale/es.js b/editors/demo/src/locale/es.js index cfff57a69571c07c2daf6d232343d142846371db..89ae0ba165e28c60ecd2d4438ccc445bc665b69c 100644 --- a/editors/demo/src/locale/es.js +++ b/editors/demo/src/locale/es.js @@ -20,6 +20,7 @@ const es = { 'Wrap in ordered list': 'Envolver en lista ordenada', 'Join with above block': 'Unirse al bloque anterior', 'Lift out of enclosing block': 'Levante fuera del bloque envolvente', + 'Insert Note': 'Insertar nota', }, BlockLevel: { 'Block Level': 'Estilos de encabezado', @@ -62,6 +63,13 @@ const es = { 'Lower Case': 'Minúscula', 'Sentence Case': 'Caso de sentencia', }, + Images: { + 'Upload Image': 'Cargar imagen', + }, + SpecialCharacters: { + 'Special Characters': 'Caracteres especiales', + Search: 'Buscar', + }, Tables: { 'Insert table': 'Insertar tabla', 'Table Options': 'Opciones de tabla', diff --git a/wax-prosemirror-services/src/ImageService/Image.js b/wax-prosemirror-services/src/ImageService/Image.js index e76e68c38fc64d841d17fddddbe60d849e310307..48212224dcaa229c7ffd7321018cf158ff39d77a 100644 --- a/wax-prosemirror-services/src/ImageService/Image.js +++ b/wax-prosemirror-services/src/ImageService/Image.js @@ -7,7 +7,7 @@ import ImageUploadComponent from './components/ImageUploadComponent'; @injectable() export default class Image extends Tools { - title = 'Insert image'; + title = 'Upload Image'; icon = 'image'; name = 'Image'; diff --git a/wax-prosemirror-services/src/ImageService/components/ImageUpload.js b/wax-prosemirror-services/src/ImageService/components/ImageUpload.js index 26a59f7e94771b33f83c3cdcb38dfcfd719abec7..899b7d219365bca0713f6d0765d14dd923903526 100644 --- a/wax-prosemirror-services/src/ImageService/components/ImageUpload.js +++ b/wax-prosemirror-services/src/ImageService/components/ImageUpload.js @@ -1,7 +1,9 @@ /* eslint react/prop-types: 0 */ -import React, { useContext, useRef, useMemo, useEffect } from 'react'; -import { WaxContext, DocumentHelpers, MenuButton } from 'wax-prosemirror-core'; +import React, { useContext, useRef, useMemo } from 'react'; import { TextSelection } from 'prosemirror-state'; +import { isEmpty } from 'lodash'; +import { useTranslation } from 'react-i18next'; +import { WaxContext, DocumentHelpers, MenuButton } from 'wax-prosemirror-core'; import styled from 'styled-components'; import insertImage from './Upload'; @@ -12,6 +14,8 @@ const Wrapper = styled.div` `; const ImageUpload = ({ item, fileUpload, view }) => { + const { t, i18n } = useTranslation(); + const { title } = item; const context = useContext(WaxContext); const { app, @@ -79,7 +83,11 @@ const ImageUpload = ({ item, fileUpload, view }) => { e.preventDefault(); handleMouseDown(); }} - title="Upload Image" + title={ + !isEmpty(i18n) && i18n.exists(`Wax.Images.${title}`) + ? t(`Wax.Images.${title}`) + : title + } /> <input @@ -96,7 +104,7 @@ const ImageUpload = ({ item, fileUpload, view }) => { </label> </Wrapper> ), - [isDisabled, activeViewId], + [isDisabled, activeViewId, t(`Wax.Images.${title}`)], ); return ImageUploadComponent; diff --git a/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersComponent.js b/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersComponent.js index d1adfc181933b9bbf83c36c8f62cde337379a1ce..8cdebefe25741f2f91db83dede4ae9ce9c3c067e 100644 --- a/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersComponent.js +++ b/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersComponent.js @@ -7,10 +7,11 @@ import React, { useEffect, } from 'react'; import styled from 'styled-components'; +import { filter, groupBy, debounce, isEmpty } from 'lodash'; +import { useTranslation } from 'react-i18next'; import { grid, th, override } from '@pubsweet/ui-toolkit'; import { v4 as uuidv4 } from 'uuid'; import { WaxContext } from 'wax-prosemirror-core'; -import { filter, groupBy, debounce } from 'lodash'; const Wrapper = styled.div` width: 400px; @@ -105,7 +106,9 @@ const SpecialCharacter = styled.div` ${override('Wax.SpecialCharacterButton')} `; -const SpecialCharactersComponent = ({ close }) => { +const SpecialCharactersComponent = () => { + const { t, i18n } = useTranslation(); + const searchRef = useRef(null); const { activeView, app } = useContext(WaxContext); const [searchValue, setSearchValue] = useState(''); @@ -184,7 +187,11 @@ const SpecialCharactersComponent = ({ close }) => { <SearchInputContainer> <SearchInput onChange={onChange} - placeholder="Search" + placeholder={ + !isEmpty(i18n) && i18n.exists('Wax.SpecialCharacters.Search') + ? t('Wax.SpecialCharacters.Search') + : 'Search' + } ref={searchRef} type="text" value={searchValue} diff --git a/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersTool.js b/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersTool.js index 8943b8c38606941bf68fbd2b819ea4a84a21a7b9..04b4299c3f12cdd082f4b062d8e88ca27cc6e79d 100644 --- a/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersTool.js +++ b/wax-prosemirror-services/src/SpecialCharactersService/components/SpecialCharactersTool.js @@ -1,5 +1,7 @@ import React, { useContext, useMemo, useState, useRef } from 'react'; import styled from 'styled-components'; +import { isEmpty } from 'lodash'; +import { useTranslation } from 'react-i18next'; import { grid, override } from '@pubsweet/ui-toolkit'; import { WaxContext, @@ -24,6 +26,7 @@ const DropWrapper = styled.div` `; const SpecialCharactersTool = ({ item }) => { + const { t, i18n } = useTranslation(); const { pmViews: { main }, } = useContext(WaxContext); @@ -50,7 +53,11 @@ const SpecialCharactersTool = ({ item }) => { onMouseDown={() => { setIsOpen(!isOpen); }} - title={title} + title={ + !isEmpty(i18n) && i18n.exists(`Wax.SpecialCharacters.${title}`) + ? t(`Wax.SpecialCharacters.${title}`) + : title + } /> {isOpen && ( @@ -64,7 +71,7 @@ const SpecialCharactersTool = ({ item }) => { )} </Wrapper> ), - [isOpen, isDisabled], + [isOpen, isDisabled, t(`Wax.SpecialCharacters.${title}`)], ); return MemorizedDropdown;