diff --git a/src/components/Apps/AppRating.tsx b/src/components/Apps/AppRating.tsx index 881cfec..8894f3c 100644 --- a/src/components/Apps/AppRating.tsx +++ b/src/components/Apps/AppRating.tsx @@ -7,6 +7,7 @@ import { StarFilledIcon } from '../../assets/Icons/StarFilled'; import { StarEmptyIcon } from '../../assets/Icons/StarEmpty'; import { AppInfoUserName } from './Apps-styles'; import { Spacer } from '../../common/Spacer'; +import { useTranslation } from 'react-i18next'; export const AppRating = ({ app, myName, ratingCountPosition = 'right' }) => { const [value, setValue] = useState(0); @@ -19,6 +20,7 @@ export const AppRating = ({ app, myName, ratingCountPosition = 'right' }) => { const [openSnack, setOpenSnack] = useState(false); const [infoSnack, setInfoSnack] = useState(null); const hasCalledRef = useRef(false); + const { t } = useTranslation(['core', 'group']); const getRating = useCallback(async (name, service) => { try { @@ -101,26 +103,39 @@ export const AppRating = ({ app, myName, ratingCountPosition = 'right' }) => { const rateFunc = async (event, chosenValue, currentValue) => { try { const newValue = chosenValue || currentValue; - if (!myName) throw new Error('You need a name to rate.'); + if (!myName) + throw new Error( + t('core:message.generic.name_rate', { + postProcess: 'capitalize', + }) + ); if (!app?.name) return; const fee = await getFee('CREATE_POLL'); await show({ - // TODO translate - message: `Would you like to rate this app a rating of ${newValue}?. It will create a POLL tx.`, + message: t('core:message.error.generic', { + rate: newValue, + postProcess: 'capitalize', + }), publishFee: fee.fee + ' QORT', }); if (hasPublishedRating === false) { const pollName = `app-library-${app.service}-rating-${app.name}`; const pollOptions = [`1, 2, 3, 4, 5, initialValue-${newValue}`]; + const pollDescription = t('core:message.error.generic', { + name: app.name, + service: app.service, + postProcess: 'capitalize', + }); + await new Promise((res, rej) => { window .sendMessage( 'createPoll', { pollName: pollName, - pollDescription: `Rating for ${app.service} ${app.name}`, + pollDescription: pollDescription, pollOptions: pollOptions, pollOwnerAddress: myName, }, @@ -137,7 +152,7 @@ export const AppRating = ({ app, myName, ratingCountPosition = 'right' }) => { message: 'Successfully rated. Please wait a couple minutes for the network to propogate the changes.', }); - setOpenSnack(true); + setOpenSnack(true); // TODO translate } }) .catch((error) => { diff --git a/src/components/Apps/useHandlePrivateApps.tsx b/src/components/Apps/useHandlePrivateApps.tsx index 9a324bb..f8dd2a1 100644 --- a/src/components/Apps/useHandlePrivateApps.tsx +++ b/src/components/Apps/useHandlePrivateApps.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useState } from 'react'; +import { useContext, useState } from 'react'; import { executeEvent } from '../../utils/events'; import { getBaseApiReact, MyContext } from '../../App'; import { createEndpoint } from '../../background'; @@ -7,10 +7,9 @@ import { sortablePinnedAppsAtom, } from '../../atoms/global'; import { saveToLocalStorage } from './AppsNavBarDesktop'; -import { base64ToBlobUrl } from '../../utils/fileReading'; import { base64ToUint8Array } from '../../qdn/encryption/group-encryption'; import { uint8ArrayToObject } from '../../backgroundFunctions/encryption'; -import { useAtom, useSetAtom } from 'jotai'; +import { useSetAtom } from 'jotai'; export const useHandlePrivateApps = () => { const [status, setStatus] = useState(''); diff --git a/src/components/Apps/useQortalMessageListener.tsx b/src/components/Apps/useQortalMessageListener.tsx index b1736a2..e2bb3c6 100644 --- a/src/components/Apps/useQortalMessageListener.tsx +++ b/src/components/Apps/useQortalMessageListener.tsx @@ -1,7 +1,7 @@ -import { useCallback, useContext, useEffect, useMemo, useState } from 'react'; +import { useCallback, useContext, useEffect, useState } from 'react'; import { executeEvent } from '../../utils/events'; import { navigationControllerAtom } from '../../atoms/global'; -import { Filesystem, Directory, Encoding } from '@capacitor/filesystem'; +import { Filesystem, Directory } from '@capacitor/filesystem'; import { saveFile } from '../../qortalRequests/get'; import { mimeToExtensionMap } from '../../utils/memeTypes'; import { MyContext } from '../../App'; diff --git a/src/components/GeneralNotifications.tsx b/src/components/GeneralNotifications.tsx index c7a6072..b88000e 100644 --- a/src/components/GeneralNotifications.tsx +++ b/src/components/GeneralNotifications.tsx @@ -111,7 +111,7 @@ export const GeneralNotifications = ({ address }) => { userSelect: 'none', }} > - No new notifications + {t('core:message.generic.no_notifications')} )} {hasNewPayment && ( diff --git a/src/components/Save/Save.tsx b/src/components/Save/Save.tsx index 23032ee..36edbdd 100644 --- a/src/components/Save/Save.tsx +++ b/src/components/Save/Save.tsx @@ -233,7 +233,7 @@ export const Save = ({ isDesktop, disableWidth, myName }) => { {isDesktop ? ( { onClick={saveToQdn} variant="contained" > - {t('core:save_options.save_qdn', { + {t('core:action.save_qdn', { postProcess: 'capitalize', })} diff --git a/src/i18n/locales/en/core.json b/src/i18n/locales/en/core.json index 22c1c25..23c5fce 100644 --- a/src/i18n/locales/en/core.json +++ b/src/i18n/locales/en/core.json @@ -98,12 +98,15 @@ "name_available": "{{ name }} is available", "name_benefits": "benefits of a name", "name_checking": "checking if name already exists", + "name_rate": "you need a name to rate.", "name_registration": "your balance is {{ balance }} QORT. A name registration requires a {{ fee }} QORT fee", "name_unavailable": "{{ name }} is unavailable", "no_description": "no description", + "no_notifications": "no new notifications", "one_app_per_name": "note: Currently, only one App and Website is allowed per Name.", "publish_data": "publish data to Qortal: anything from apps to videos. Fully decentralized!", "publishing": "publishing... Please wait.", + "rating": "rating for {{ service }} {{ name }}", "secure_ownership": "secure ownership of data published by your name. You can even sell your name, along with your data to a third party.", "select_zip": "select .zip file containing static content:" }, @@ -146,13 +149,13 @@ "publish_app": "would you like to publish this app?", "publish_qdn": "would you like to publish your settings to QDN (encrypted)?", "qdn": "use QDN saving", + "rate_app": "would you like to rate this app a rating of {{ rate }}?. It will create a POLL tx.", "register_name": "you need a registered Qortal name to save your pinned apps to QDN.", "reset_pinned": "don't like your current local changes? Would you like to reset to the default pinned apps?", "reset_qdn": "don't like your current local changes? Would you like to reset to your saved QDN pinned apps?", "revert_default": "revert to default", "revert_qdn": "revert to QDN", "save_qdn": "save to QDN", - "save": "save", "settings": "you are using the export/import way of saving settings.", "unsaved_changes": " you have unsaved changes to your pinned apps. Save them to QDN." },