diff --git a/components/DecodeResultPaper.tsx b/components/DecodeResultPaper.tsx index 617ffb5..5c20dca 100644 --- a/components/DecodeResultPaper.tsx +++ b/components/DecodeResultPaper.tsx @@ -10,7 +10,7 @@ import { Download } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { formatFileSize } from '@/utils/base64Converter'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; interface DecodeResultPaperProps { /** 标题文案,由调用方传入 i18n key 对应的值(如 decodedFileOutput / decodedImageOutput) */ @@ -38,7 +38,7 @@ export default function DecodeResultPaper({ onDownload, children, }: DecodeResultPaperProps) { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); return (
diff --git a/pages/Base64Converter/Base64ConverterSection.tsx b/pages/Base64Converter/Base64ConverterSection.tsx index 5543201..3cc0d4e 100644 --- a/pages/Base64Converter/Base64ConverterSection.tsx +++ b/pages/Base64Converter/Base64ConverterSection.tsx @@ -1,6 +1,6 @@ import { Image as ImageIcon, Trash2, Upload } from 'lucide-react'; import TextInputArea from '@/components/TextInputArea'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; import CopyButton from '@/components/CopyButton'; import DecodeResultPaper from '@/components/DecodeResultPaper'; import { Button } from '@/components/ui/button'; @@ -19,7 +19,7 @@ interface Base64ConverterSectionProps { } export default function Base64ConverterSection({ mode }: Base64ConverterSectionProps) { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); const [direction, setDirection] = useStorageState( `base64Converter/${mode}Mode/direction`, diff --git a/pages/Base64Converter/FileMode.tsx b/pages/Base64Converter/FileMode.tsx index 5cf89a1..c331fac 100644 --- a/pages/Base64Converter/FileMode.tsx +++ b/pages/Base64Converter/FileMode.tsx @@ -1,6 +1,6 @@ import { Trash2, Upload } from 'lucide-react'; import TextInputArea from '@/components/TextInputArea'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; import CopyButton from '@/components/CopyButton'; import DecodeResultPaper from '@/components/DecodeResultPaper'; import { Button } from '@/components/ui/button'; @@ -15,7 +15,7 @@ const isValidDirection = (val: unknown): val is Base64ConvertDirection => val === 'encode' || val === 'decode'; export default function FileMode() { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); const [direction, setDirection] = useStorageState( 'base64Converter/fileMode/direction', 'encode', diff --git a/pages/Base64Converter/ImageMode.tsx b/pages/Base64Converter/ImageMode.tsx index 7c5cd00..a61285a 100644 --- a/pages/Base64Converter/ImageMode.tsx +++ b/pages/Base64Converter/ImageMode.tsx @@ -1,6 +1,6 @@ import { Image as ImageIcon, Trash2 } from 'lucide-react'; import TextInputArea from '@/components/TextInputArea'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; import CopyButton from '@/components/CopyButton'; import DecodeResultPaper from '@/components/DecodeResultPaper'; import { Button } from '@/components/ui/button'; @@ -15,7 +15,7 @@ const isValidDirection = (val: unknown): val is Base64ConvertDirection => val === 'encode' || val === 'decode'; export default function ImageMode() { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); const [direction, setDirection] = useStorageState( 'base64Converter/imageMode/direction', 'encode', diff --git a/pages/Base64Converter/TextMode.tsx b/pages/Base64Converter/TextMode.tsx index c78960d..3c34e72 100644 --- a/pages/Base64Converter/TextMode.tsx +++ b/pages/Base64Converter/TextMode.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import TextInputArea from '@/components/TextInputArea'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; import CopyButton from '@/components/CopyButton'; import { base64ToText, textToBase64 } from '@/utils/base64Converter'; import SwitchButtonGroup from '@/components/SwitchButtonGroup'; @@ -20,7 +20,7 @@ interface TextModeProps { } export default function TextMode({ onSwitchToImageMode }: TextModeProps = {}) { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); // 1. 纯净的核心源状态机:只保留输入源和转换方向 const [input, setInput] = useState(''); diff --git a/pages/Base64Converter/useBase64Converter.ts b/pages/Base64Converter/useBase64Converter.ts index b0d406b..d341334 100644 --- a/pages/Base64Converter/useBase64Converter.ts +++ b/pages/Base64Converter/useBase64Converter.ts @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { useTranslation } from 'react-i18next'; +import { useLazyTranslation } from '@/utils/useLazyTranslation'; import type { FileToBase64Result } from '@/utils/base64Converter'; import { base64ToBlob, @@ -21,7 +21,7 @@ interface UseBase64ConverterProps { } export function useBase64Converter({ mode }: UseBase64ConverterProps) { - const { t } = useTranslation('base64Converter'); + const { t } = useLazyTranslation('base64Converter'); const [result, setResult] = useState(null); const [info, setInfo] = useState(null);