From 75de20af6a2ad290f9e2729d1e41feb96de4354b Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:34:24 +1100 Subject: [PATCH] fix(ui): fix plurals in translation --- invokeai/frontend/web/public/locales/en.json | 17 +++++++------ .../listeners/batchEnqueued.ts | 2 +- .../listeners/modelSelected.ts | 11 +++----- .../SettingsClearIntermediates.tsx | 25 +++++-------------- 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 2e6df644a2..b6bad9b3cd 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -275,7 +275,8 @@ "batchValues": "Batch Values", "notReady": "Unable to Queue", "batchQueued": "Batch Queued", - "batchQueuedDesc": "Added {{item_count}} sessions to {{direction}} of queue", + "batchQueuedDesc_one": "Added {{count}} sessions to {{direction}} of queue", + "batchQueuedDesc_other": "Added {{count}} sessions to {{direction}} of queue", "front": "front", "back": "back", "batchFailedToQueue": "Failed to Queue Batch", @@ -1111,17 +1112,17 @@ "clearIntermediatesDesc2": "Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space.", "clearIntermediatesDesc3": "Your gallery images will not be deleted.", "clearIntermediates": "Clear Intermediates", - "clearIntermediates_one": "Clear 1 Intermediate", - "clearIntermediates_other": "Clear {{number}} Intermediates", - "noIntermediates": "No Intermediates to Clear", - "intermediatesCleared_one": "Cleared 1 Intermediate", - "intermediatesCleared_other": "Cleared {{number}} Intermediates", + "clearIntermediatesWithCount_one": "Clear {{count}} Intermediate", + "clearIntermediatesWithCount_other": "Clear {{count}} Intermediates", + "clearIntermediatesWithCount_zero": "No Intermediates to Clear", + "intermediatesCleared_one": "Cleared {{count}} Intermediate", + "intermediatesCleared_other": "Cleared {{count}} Intermediates", "intermediatesClearedFailed": "Problem Clearing Intermediates" }, "toast": { "addedToBoard": "Added to board", - "baseModelChangedCleared_one": "Base model changed, cleared or disabled {{number}} incompatible submodel", - "baseModelChangedCleared_many": "$t(toast.baseModelChangedCleared_one)s", + "baseModelChangedCleared_one": "Base model changed, cleared or disabled {{count}} incompatible submodel", + "baseModelChangedCleared_other": "Base model changed, cleared or disabled {{count}} incompatible submodels", "canceled": "Processing Canceled", "canvasCopiedClipboard": "Canvas Copied to Clipboard", "canvasDownloaded": "Canvas Downloaded", diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/batchEnqueued.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/batchEnqueued.ts index bdb8e03ad2..62a661756b 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/batchEnqueued.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/batchEnqueued.ts @@ -30,7 +30,7 @@ export const addBatchEnqueuedListener = () => { id: 'batch-queued', title: t('queue.batchQueued'), description: t('queue.batchQueuedDesc', { - item_count: response.enqueued, + count: response.enqueued, direction: arg.prepend ? t('queue.front') : t('queue.back'), }), duration: 1000, diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts index c320c437f6..6ed0b93e99 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts @@ -73,14 +73,9 @@ export const addModelSelectedListener = () => { dispatch( addToast( makeToast({ - title: t( - modelsCleared === 1 - ? 'toast.baseModelChangedCleared_one' - : 'toast.baseModelChangedCleared_many', - { - number: modelsCleared, - } - ), + title: t('toast.baseModelChangedCleared', { + count: modelsCleared, + }), status: 'warning', }) ) diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsClearIntermediates.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsClearIntermediates.tsx index 4282b849c3..423ce41bcd 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsClearIntermediates.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsClearIntermediates.tsx @@ -1,7 +1,7 @@ import { Heading, Text } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; import { controlAdaptersReset } from 'features/controlAdapters/store/controlAdaptersSlice'; -import { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import IAIButton from '../../../../common/components/IAIButton'; import { @@ -25,15 +25,12 @@ export default function SettingsClearIntermediates() { const handleClickClearIntermediates = useCallback(() => { clearIntermediates() .unwrap() - .then((number) => { + .then((clearedCount) => { dispatch(controlAdaptersReset()); dispatch(resetCanvas()); dispatch( addToast({ - title: - number === 1 - ? t('settings.intermediatesCleared_one') - : t('settings.intermediatesCleared_other', { number }), + title: t('settings.intermediatesCleared', { count: clearedCount }), status: 'info', }) ); @@ -53,18 +50,6 @@ export default function SettingsClearIntermediates() { updateIntermediatesCount(); }, [updateIntermediatesCount]); - const buttonText = useMemo(() => { - if (!intermediatesCount) { - return t('settings.noIntermediates'); - } - if (intermediatesCount === 1) { - return t('settings.clearIntermediates_one'); - } - return t('settings.clearIntermediates_other', { - number: intermediatesCount, - }); - }, [intermediatesCount, t]); - return ( <StyledFlex> <Heading size="sm">{t('settings.clearIntermediates')}</Heading> @@ -74,7 +59,9 @@ export default function SettingsClearIntermediates() { isLoading={isLoadingClearIntermediates} isDisabled={!intermediatesCount} > - {buttonText} + {t('settings.clearIntermediatesWithCount', { + count: intermediatesCount ?? 0, + })} </IAIButton> <Text fontWeight="bold">{t('settings.clearIntermediatesDesc1')}</Text> <Text variant="subtext">{t('settings.clearIntermediatesDesc2')}</Text>