From a4876c3c19a54cb19c695335fcb2f8b9651a54d5 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 17 Oct 2023 14:07:03 +0300
Subject: [PATCH] image, notes, special char translations

---
 editors/demo/src/locale/en.js                    |  8 ++++++++
 editors/demo/src/locale/es.js                    |  8 ++++++++
 .../src/ImageService/Image.js                    |  2 +-
 .../src/ImageService/components/ImageUpload.js   | 16 ++++++++++++----
 .../components/SpecialCharactersComponent.js     | 13 ++++++++++---
 .../components/SpecialCharactersTool.js          | 11 +++++++++--
 6 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/editors/demo/src/locale/en.js b/editors/demo/src/locale/en.js
index 3aad7acae..288f37915 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 cfff57a69..89ae0ba16 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 e76e68c38..48212224d 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 26a59f7e9..899b7d219 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 d1adfc181..8cdebefe2 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 8943b8c38..04b4299c3 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;
-- 
GitLab