From 0afed95b11c31f5305b7cac1de16e3b424b94ed5 Mon Sep 17 00:00:00 2001
From: VailElla <63608800+VailElla@users.noreply.github.com>
Date: Sun, 12 Jul 2026 20:47:58 +0800
Subject: [PATCH 1/4] fix(i18n): fill Chinese gaps in metadata and dialogs
---
src-tauri/Info.plist | 25 +++
src/components/modals/ImportSettingsModal.tsx | 9 +-
src/components/modals/RenameFileModal.tsx | 9 +-
src/components/panel/SettingsPanel.tsx | 11 +-
src/components/panel/right/ExportPanel.tsx | 9 +-
src/components/panel/right/MetadataPanel.tsx | 166 +++++++++++++++++-
src/components/ui/ExportImportProperties.tsx | 18 +-
src/context/TaggingSubMenu.tsx | 7 +-
src/hooks/useFileOperations.ts | 23 ++-
src/i18n/locales/de.json | 31 +++-
src/i18n/locales/en.json | 131 +++++++++++++-
src/i18n/locales/es.json | 31 +++-
src/i18n/locales/fr.json | 31 +++-
src/i18n/locales/it.json | 31 +++-
src/i18n/locales/ja.json | 31 +++-
src/i18n/locales/ko.json | 31 +++-
src/i18n/locales/pl.json | 31 +++-
src/i18n/locales/pt.json | 31 +++-
src/i18n/locales/ru.json | 31 +++-
src/i18n/locales/zh-CN.json | 133 +++++++++++++-
src/i18n/locales/zh-TW.json | 131 +++++++++++++-
src/i18n/translateBuiltInTag.ts | 19 ++
22 files changed, 918 insertions(+), 52 deletions(-)
create mode 100644 src-tauri/Info.plist
create mode 100644 src/i18n/translateBuiltInTag.ts
diff --git a/src-tauri/Info.plist b/src-tauri/Info.plist
new file mode 100644
index 0000000000..a2ad5289d9
--- /dev/null
+++ b/src-tauri/Info.plist
@@ -0,0 +1,25 @@
+
+
+
+
+ CFBundleAllowMixedLocalizations
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleLocalizations
+
+ en
+ de
+ es
+ fr
+ it
+ ja
+ ko
+ pl
+ pt
+ ru
+ zh-Hans
+ zh-Hant
+
+
+
diff --git a/src/components/modals/ImportSettingsModal.tsx b/src/components/modals/ImportSettingsModal.tsx
index d777a9ec31..8707092d68 100644
--- a/src/components/modals/ImportSettingsModal.tsx
+++ b/src/components/modals/ImportSettingsModal.tsx
@@ -122,13 +122,14 @@ export default function ImportSettingsModal({ fileCount, isOpen, onClose, onSave
value={filenameTemplate}
/>
- {FILENAME_VARIABLES.map((variable: string) => (
+ {FILENAME_VARIABLES.map((variable) => (
))}
diff --git a/src/components/modals/RenameFileModal.tsx b/src/components/modals/RenameFileModal.tsx
index 341deb431d..69f37637fc 100644
--- a/src/components/modals/RenameFileModal.tsx
+++ b/src/components/modals/RenameFileModal.tsx
@@ -126,13 +126,14 @@ export default function RenameFileModal({ filesToRename, isOpen, onClose, onSave
/>
{!isSingleFile && (
- {FILENAME_VARIABLES.map((variable: string) => (
+ {FILENAME_VARIABLES.map((variable) => (
))}
diff --git a/src/components/panel/SettingsPanel.tsx b/src/components/panel/SettingsPanel.tsx
index 86a6e0ea45..21537bc11a 100644
--- a/src/components/panel/SettingsPanel.tsx
+++ b/src/components/panel/SettingsPanel.tsx
@@ -45,6 +45,7 @@ import Text from '../ui/Text';
import { TextColors, TextVariants, TextWeights } from '../../types/typography';
import { useOsPlatform } from '../../hooks/useOsPlatform';
import { open } from '@tauri-apps/plugin-shell';
+import { translateBuiltInTag } from '../../i18n/translateBuiltInTag';
interface ConfirmModalState {
confirmText: string;
@@ -1467,11 +1468,13 @@ export default function SettingsPanel({
animate="visible"
exit="exit"
onClick={() => handleRemoveShortcut(shortcut)}
- data-tooltip={t('settings.tagging.removeShortcutTooltip', { shortcut })}
+ data-tooltip={t('settings.tagging.removeShortcutTooltip', {
+ shortcut: translateBuiltInTag(shortcut),
+ })}
className="flex items-center gap-1 bg-surface px-2 py-1 rounded-sm group cursor-pointer"
>
- {shortcut}
+ {translateBuiltInTag(shortcut)}
@@ -2268,9 +2271,7 @@ export default function SettingsPanel({
buttonText={t('settings.data.clearSidecarsButton')}
description={
- {t('settings.data.clearSidecarsDesc')}{' '}
- .rrdata files
- (containing your edits) within your root folders:
+ {t('settings.data.clearSidecarsDesc')}
{effectiveRootPaths.length > 0
? effectiveRootPaths.join('\n')
diff --git a/src/components/panel/right/ExportPanel.tsx b/src/components/panel/right/ExportPanel.tsx
index 583a788a3e..5331aa44f9 100644
--- a/src/components/panel/right/ExportPanel.tsx
+++ b/src/components/panel/right/ExportPanel.tsx
@@ -618,14 +618,15 @@ export default function ExportPanel({
value={filenameTemplate}
/>
- {FILENAME_VARIABLES.map((variable: string) => (
+ {FILENAME_VARIABLES.map((variable) => (
))}
diff --git a/src/components/panel/right/MetadataPanel.tsx b/src/components/panel/right/MetadataPanel.tsx
index 0932e72ec1..56015f9b5e 100644
--- a/src/components/panel/right/MetadataPanel.tsx
+++ b/src/components/panel/right/MetadataPanel.tsx
@@ -2,6 +2,7 @@ import { useState, useMemo, useEffect } from 'react';
import { invoke } from '@tauri-apps/api/core';
import { Check, ChevronDown, ChevronRight, Plus, Star, Tag, X, User } from 'lucide-react';
import { motion, AnimatePresence } from 'framer-motion';
+import i18n from 'i18next';
import { useTranslation } from 'react-i18next';
import clsx from 'clsx';
import { Invokes } from '../../ui/AppProperties';
@@ -14,6 +15,7 @@ import { useLibraryStore } from '../../../store/useLibraryStore';
import { useSettingsStore } from '../../../store/useSettingsStore';
import { useProcessStore } from '../../../store/useProcessStore';
import { useLibraryActions } from '../../../hooks/useLibraryActions';
+import { translateBuiltInTag } from '../../../i18n/translateBuiltInTag';
interface CameraSetting {
format?(value: number): string | number;
@@ -47,6 +49,160 @@ function formatExifTag(str: string) {
return str.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2');
}
+const EXIF_FIELD_TRANSLATION_KEYS: Record = {
+ ApertureValue: 'editor.metadata.extendedExif.fields.apertureValue',
+ Artist: 'editor.metadata.extendedExif.fields.artist',
+ BitsPerSample: 'editor.metadata.extendedExif.fields.bitsPerSample',
+ BodySerialNumber: 'editor.metadata.extendedExif.fields.bodySerialNumber',
+ BrightnessValue: 'editor.metadata.extendedExif.fields.brightnessValue',
+ CameraSerialNumber: 'editor.metadata.extendedExif.fields.cameraSerialNumber',
+ ColorSpace: 'editor.metadata.extendedExif.fields.colorSpace',
+ ComponentsConfiguration: 'editor.metadata.extendedExif.fields.componentsConfiguration',
+ Compression: 'editor.metadata.extendedExif.fields.compression',
+ Contrast: 'editor.metadata.extendedExif.fields.contrast',
+ Copyright: 'editor.metadata.extendedExif.fields.copyright',
+ CreateDate: 'editor.metadata.extendedExif.fields.createDate',
+ CustomRendered: 'editor.metadata.extendedExif.fields.customRendered',
+ DateTimeOriginal: 'editor.metadata.extendedExif.fields.dateTimeOriginal',
+ DigitalZoomRatio: 'editor.metadata.extendedExif.fields.digitalZoomRatio',
+ ExifVersion: 'editor.metadata.extendedExif.fields.exifVersion',
+ ExposureBiasValue: 'editor.metadata.extendedExif.fields.exposureBiasValue',
+ ExposureIndex: 'editor.metadata.extendedExif.fields.exposureIndex',
+ ExposureMode: 'editor.metadata.extendedExif.fields.exposureMode',
+ ExposureProgram: 'editor.metadata.extendedExif.fields.exposureProgram',
+ FileSource: 'editor.metadata.extendedExif.fields.fileSource',
+ Flash: 'editor.metadata.extendedExif.fields.flash',
+ FlashpixVersion: 'editor.metadata.extendedExif.fields.flashpixVersion',
+ FocalLength: 'editor.metadata.extendedExif.fields.focalLength',
+ FocalLengthIn35mmFormat: 'editor.metadata.extendedExif.fields.focalLengthIn35mmFormat',
+ FocalPlaneResolutionUnit: 'editor.metadata.extendedExif.fields.focalPlaneResolutionUnit',
+ FocalPlaneXResolution: 'editor.metadata.extendedExif.fields.focalPlaneXResolution',
+ FocalPlaneYResolution: 'editor.metadata.extendedExif.fields.focalPlaneYResolution',
+ GainControl: 'editor.metadata.extendedExif.fields.gainControl',
+ ImageDescription: 'editor.metadata.extendedExif.fields.imageDescription',
+ ImageHeight: 'editor.metadata.extendedExif.fields.imageHeight',
+ ImageLength: 'editor.metadata.extendedExif.fields.imageLength',
+ ImageUniqueID: 'editor.metadata.extendedExif.fields.imageUniqueId',
+ ImageWidth: 'editor.metadata.extendedExif.fields.imageWidth',
+ ISOSpeed: 'editor.metadata.extendedExif.fields.isoSpeed',
+ LensMake: 'editor.metadata.extendedExif.fields.lensMake',
+ LensModel: 'editor.metadata.extendedExif.fields.lensModel',
+ LensSerialNumber: 'editor.metadata.extendedExif.fields.lensSerialNumber',
+ LensSpecification: 'editor.metadata.extendedExif.fields.lensSpecification',
+ LightSource: 'editor.metadata.extendedExif.fields.lightSource',
+ Make: 'editor.metadata.extendedExif.fields.make',
+ MaxApertureValue: 'editor.metadata.extendedExif.fields.maxApertureValue',
+ MeteringMode: 'editor.metadata.extendedExif.fields.meteringMode',
+ Model: 'editor.metadata.extendedExif.fields.model',
+ ModifyDate: 'editor.metadata.extendedExif.fields.modifyDate',
+ OffsetTime: 'editor.metadata.extendedExif.fields.offsetTime',
+ OffsetTimeDigitized: 'editor.metadata.extendedExif.fields.offsetTimeDigitized',
+ OffsetTimeOriginal: 'editor.metadata.extendedExif.fields.offsetTimeOriginal',
+ Orientation: 'editor.metadata.extendedExif.fields.orientation',
+ PhotometricInterpretation: 'editor.metadata.extendedExif.fields.photometricInterpretation',
+ PhotographicSensitivity: 'editor.metadata.extendedExif.fields.photographicSensitivity',
+ PixelXDimension: 'editor.metadata.extendedExif.fields.pixelXDimension',
+ PixelYDimension: 'editor.metadata.extendedExif.fields.pixelYDimension',
+ PlanarConfiguration: 'editor.metadata.extendedExif.fields.planarConfiguration',
+ RecommendedExposureIndex: 'editor.metadata.extendedExif.fields.recommendedExposureIndex',
+ ResolutionUnit: 'editor.metadata.extendedExif.fields.resolutionUnit',
+ RowsPerStrip: 'editor.metadata.extendedExif.fields.rowsPerStrip',
+ Saturation: 'editor.metadata.extendedExif.fields.saturation',
+ SamplesPerPixel: 'editor.metadata.extendedExif.fields.samplesPerPixel',
+ SceneCaptureType: 'editor.metadata.extendedExif.fields.sceneCaptureType',
+ SceneType: 'editor.metadata.extendedExif.fields.sceneType',
+ SensingMethod: 'editor.metadata.extendedExif.fields.sensingMethod',
+ SensitivityType: 'editor.metadata.extendedExif.fields.sensitivityType',
+ Sharpness: 'editor.metadata.extendedExif.fields.sharpness',
+ ShutterSpeedValue: 'editor.metadata.extendedExif.fields.shutterSpeedValue',
+ Software: 'editor.metadata.extendedExif.fields.software',
+ StripByteCounts: 'editor.metadata.extendedExif.fields.stripByteCounts',
+ StripOffsets: 'editor.metadata.extendedExif.fields.stripOffsets',
+ SubSecTimeDigitized: 'editor.metadata.extendedExif.fields.subSecTimeDigitized',
+ SubSecTimeOriginal: 'editor.metadata.extendedExif.fields.subSecTimeOriginal',
+ SubjectDistance: 'editor.metadata.extendedExif.fields.subjectDistance',
+ UserComment: 'editor.metadata.extendedExif.fields.userComment',
+ WhiteBalance: 'editor.metadata.extendedExif.fields.whiteBalance',
+ XResolution: 'editor.metadata.extendedExif.fields.xResolution',
+ YResolution: 'editor.metadata.extendedExif.fields.yResolution',
+};
+
+const EXIF_VALUE_TRANSLATION_KEYS: Record> = {
+ Compression: {
+ uncompressed: 'editor.metadata.extendedExif.values.uncompressed',
+ },
+ Contrast: {
+ normal: 'editor.metadata.extendedExif.values.normal',
+ },
+ CustomRendered: {
+ 'normal process': 'editor.metadata.extendedExif.values.normalProcess',
+ },
+ ExposureMode: {
+ 'auto exposure': 'editor.metadata.extendedExif.values.autoExposure',
+ 'manual exposure': 'editor.metadata.extendedExif.values.manualExposure',
+ },
+ ExposureProgram: {
+ manual: 'editor.metadata.extendedExif.values.manual',
+ },
+ FileSource: {
+ 'digital still camera': 'editor.metadata.extendedExif.values.digitalStillCamera',
+ },
+ Flash: {
+ 'fired, return light detected': 'editor.metadata.extendedExif.values.flashFiredReturnDetected',
+ 'fired, return light not detected': 'editor.metadata.extendedExif.values.flashFiredReturnNotDetected',
+ 'fired, return light not detected, forced': 'editor.metadata.extendedExif.values.flashFiredReturnNotDetectedForced',
+ 'flash did not fire': 'editor.metadata.extendedExif.values.flashDidNotFire',
+ 'no flash': 'editor.metadata.extendedExif.values.noFlash',
+ },
+ MeteringMode: {
+ pattern: 'editor.metadata.extendedExif.values.patternMetering',
+ },
+ Orientation: {
+ 'row 0 at top and column 0 at left': 'editor.metadata.extendedExif.values.topLeft',
+ },
+ PlanarConfiguration: {
+ chunky: 'editor.metadata.extendedExif.values.chunky',
+ },
+ Saturation: {
+ normal: 'editor.metadata.extendedExif.values.normal',
+ },
+ SceneCaptureType: {
+ landscape: 'editor.metadata.extendedExif.values.landscape',
+ portrait: 'editor.metadata.extendedExif.values.portrait',
+ standard: 'editor.metadata.extendedExif.values.standard',
+ },
+ SceneType: {
+ 'directly photographed': 'editor.metadata.extendedExif.values.directlyPhotographed',
+ 'directly photographed image': 'editor.metadata.extendedExif.values.directlyPhotographed',
+ },
+ Sharpness: {
+ normal: 'editor.metadata.extendedExif.values.normal',
+ },
+ WhiteBalance: {
+ auto: 'editor.metadata.extendedExif.values.auto',
+ manual: 'editor.metadata.extendedExif.values.manual',
+ },
+};
+
+function translateExtendedExifTag(tag: string): string {
+ const translationKey = EXIF_FIELD_TRANSLATION_KEYS[tag];
+ if (translationKey) return String(i18n.t(translationKey as never));
+
+ const tiffTagMatch = tag.match(/^Tag\(Tiff,\s*(\d+)\)$/i);
+ if (tiffTagMatch) {
+ return String(i18n.t('editor.metadata.extendedExif.unknownTiffTag', { id: tiffTagMatch[1] }));
+ }
+
+ return formatExifTag(tag);
+}
+
+function translateExtendedExifValue(tag: string, value: unknown) {
+ if (typeof value !== 'string') return value;
+ const normalizedValue = value.trim().toLowerCase().replace(/\s+/g, ' ');
+ const translationKey = EXIF_VALUE_TRANSLATION_KEYS[tag]?.[normalizedValue];
+ return translationKey ? String(i18n.t(translationKey as never)) : value;
+}
+
function parseDms(dmsString: string) {
if (!dmsString) return null;
const parts = dmsString.match(/(\d+\.?\d*)\s+deg\s+(\d+\.?\d*)\s+min\s+(\d+\.?\d*)\s+sec/);
@@ -681,7 +837,7 @@ export default function MetadataPanel() {
color={TextColors.primary}
weight={TextWeights.medium}
>
- {tagItem.tag}
+ {translateBuiltInTag(tagItem.tag)}
@@ -726,7 +882,7 @@ export default function MetadataPanel() {
onClick={() => handleAddTag(shortcut)}
className="text-xs font-medium bg-bg-secondary hover:bg-card-active text-text-secondary px-1.5 py-0.5 rounded-sm border border-transparent hover:border-border-color transition-all"
>
- {shortcut}
+ {translateBuiltInTag(shortcut)}
))}
@@ -787,7 +943,11 @@ export default function MetadataPanel() {
{otherExifEntries.map(([tag, value]) => (
-
+
))}
diff --git a/src/components/ui/ExportImportProperties.tsx b/src/components/ui/ExportImportProperties.tsx
index a51dff33a5..d1ddb0e0c0 100644
--- a/src/components/ui/ExportImportProperties.tsx
+++ b/src/components/ui/ExportImportProperties.tsx
@@ -23,15 +23,15 @@ export const FILE_FORMATS: Array = [
{ id: FileFormats.Cube, name: 'CUBE LUT', extensions: ['cube'] },
];
-export const FILENAME_VARIABLES: Array = [
- '{original_filename}',
- '{sequence}',
- '{YYYY}',
- '{MM}',
- '{DD}',
- '{hh}',
- '{mm}',
-];
+export const FILENAME_VARIABLES = [
+ { token: '{original_filename}', labelKey: 'ui.filenameVariables.originalFilename' },
+ { token: '{sequence}', labelKey: 'ui.filenameVariables.sequence' },
+ { token: '{YYYY}', labelKey: 'ui.filenameVariables.year' },
+ { token: '{MM}', labelKey: 'ui.filenameVariables.month' },
+ { token: '{DD}', labelKey: 'ui.filenameVariables.day' },
+ { token: '{hh}', labelKey: 'ui.filenameVariables.hour' },
+ { token: '{mm}', labelKey: 'ui.filenameVariables.minute' },
+] as const;
export interface ExportSettings {
filenameTemplate: string | null;
diff --git a/src/context/TaggingSubMenu.tsx b/src/context/TaggingSubMenu.tsx
index b6c00f9406..af711ba8b6 100644
--- a/src/context/TaggingSubMenu.tsx
+++ b/src/context/TaggingSubMenu.tsx
@@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next';
import { Invokes } from '../components/ui/AppProperties';
import Text from '../components/ui/Text';
import { TextVariants } from '../types/typography';
+import { translateBuiltInTag } from '../i18n/translateBuiltInTag';
interface TaggingSubMenuProps {
paths: string[];
@@ -101,10 +102,10 @@ export default function TaggingSubMenu({
animate="visible"
exit="exit"
onClick={() => handleRemoveTag(tagItem)}
- data-tooltip={t('menus.tagging.removeTooltip', { tag: tagItem.tag })}
+ data-tooltip={t('menus.tagging.removeTooltip', { tag: translateBuiltInTag(tagItem.tag) })}
className="flex items-center gap-1 bg-bg-primary text-text-primary text-xs font-medium px-2 py-1 rounded-sm group cursor-pointer"
>
- {tagItem.tag}
+ {translateBuiltInTag(tagItem.tag)}
@@ -157,7 +158,7 @@ export default function TaggingSubMenu({
onClick={() => handleAddTag(shortcut)}
className="bg-surface text-text-secondary hover:bg-card-active hover:text-text-primary text-xs font-medium px-2 py-1 rounded-sm"
>
- {shortcut}
+ {translateBuiltInTag(shortcut)}
))}
diff --git a/src/hooks/useFileOperations.ts b/src/hooks/useFileOperations.ts
index 76f7837abe..af3a3706cb 100644
--- a/src/hooks/useFileOperations.ts
+++ b/src/hooks/useFileOperations.ts
@@ -1,4 +1,5 @@
import { useCallback } from 'react';
+import { useTranslation } from 'react-i18next';
import { invoke } from '@tauri-apps/api/core';
import { open } from '@tauri-apps/plugin-dialog';
import { toast } from 'react-toastify';
@@ -17,6 +18,8 @@ export function useFileOperations(
handleBackToLibrary: () => void,
sortedImageList: any[],
) {
+ const { t } = useTranslation();
+
const getParentDir = (filePath: string): string => {
const separator = filePath.includes('/') ? '/' : '\\';
const lastSeparatorIndex = filePath.lastIndexOf(separator);
@@ -299,16 +302,22 @@ export function useFileOperations(
const typeFilters = isAndroid
? []
: [
- { name: 'All Supported Images', extensions: allImageExtensions },
- { name: 'RAW Images', extensions: processedRaw },
- { name: 'Standard Images (JPEG, PNG, etc.)', extensions: processedNonRaw },
- { name: 'All Files', extensions: ['*'] },
+ {
+ name: t('modals.importSettings.fileDialog.allSupportedImages'),
+ extensions: allImageExtensions,
+ },
+ { name: t('modals.importSettings.fileDialog.rawImages'), extensions: processedRaw },
+ {
+ name: t('modals.importSettings.fileDialog.standardImages'),
+ extensions: processedNonRaw,
+ },
+ { name: t('modals.importSettings.fileDialog.allFiles'), extensions: ['*'] },
];
const selected = await open({
filters: typeFilters,
multiple: true,
- title: 'Select files to import',
+ title: t('modals.importSettings.fileDialog.selectFilesTitle'),
});
if (Array.isArray(selected) && selected.length > 0) {
@@ -342,7 +351,7 @@ export function useFileOperations(
if (invalidExtensions.size > 0) {
const extList = Array.from(invalidExtensions).join(', ');
- toast.error(`Unsupported file format(s) detected: ${extList}`);
+ toast.error(t('modals.importSettings.fileDialog.unsupportedFormats', { formats: extList }));
return;
}
@@ -363,7 +372,7 @@ export function useFileOperations(
console.error('Failed to open file dialog for import:', err);
}
},
- [startImportFiles],
+ [startImportFiles, t],
);
const handlePasteFiles = useCallback(
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index a9961e9918..30c4cea01b 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -615,7 +615,8 @@
"copy": "Kopieren",
"emptyClickToAdd": "Leer (Klicken zum Hinzufügen)",
"extendedExif": {
- "title": "Erweiterte EXIF"
+ "title": "Erweiterte EXIF",
+ "unknownTiffTag": "TIFF-Tag ({{id}})"
},
"fields": {
"author": "Autor",
@@ -1233,6 +1234,14 @@
"dateFormatPlaceholder": "z. B., YYYY/MM-DD",
"deleteAfterImport": "Originale nach erfolgreichem Import löschen",
"deleteWarning": "Dateien werden in den Systempapierkorb verschoben.",
+ "fileDialog": {
+ "allFiles": "Alle Dateien",
+ "allSupportedImages": "Alle unterstützten Bilder",
+ "rawImages": "RAW-Bilder",
+ "selectFilesTitle": "Dateien zum Importieren auswählen",
+ "standardImages": "Standardbilder (JPEG, PNG usw.)",
+ "unsupportedFormats": "Nicht unterstützte Dateiformate erkannt: {{formats}}"
+ },
"fileNaming": "Dateibenennung",
"folderOrganization": "Ordnerorganisation",
"organizeByDate": "In Unterordner nach Datum organisieren",
@@ -1731,6 +1740,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Architektur",
+ "event": "Veranstaltung",
+ "family": "Familie",
+ "food": "Essen",
+ "landscape": "Landschaft",
+ "nature": "Natur",
+ "portrait": "Porträt",
+ "street": "Streetfotografie",
+ "travel": "Reisen"
+ },
"bottomBar": {
"imagesSelected": "{{current}} von {{total}} Bildern ausgewählt",
"tooltips": {
@@ -1771,6 +1791,15 @@
"saveAsNewTooltip": "Aktuelle Einstellungen als neue Vorgabe speichern",
"savedTooltip": "Gespeichert!"
},
+ "filenameVariables": {
+ "day": "Tag",
+ "hour": "Stunde",
+ "minute": "Minute",
+ "month": "Monat",
+ "originalFilename": "Ursprünglicher Dateiname",
+ "sequence": "Sequenz",
+ "year": "Jahr"
+ },
"filmstrip": {
"tooltips": {
"color": "Farbe: {{color}}",
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 4c8818a6e0..5d17ac4aad 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -615,7 +615,108 @@
"copy": "Copy",
"emptyClickToAdd": "Empty (Click to add)",
"extendedExif": {
- "title": "Extended EXIF"
+ "fields": {
+ "apertureValue": "Aperture Value",
+ "artist": "Artist",
+ "bitsPerSample": "Bits Per Sample",
+ "bodySerialNumber": "Body Serial Number",
+ "brightnessValue": "Brightness Value",
+ "cameraSerialNumber": "Camera Serial Number",
+ "colorSpace": "Color Space",
+ "componentsConfiguration": "Components Configuration",
+ "compression": "Compression",
+ "contrast": "Contrast",
+ "copyright": "Copyright",
+ "createDate": "Create Date",
+ "customRendered": "Custom Rendered",
+ "dateTimeOriginal": "Date/Time Original",
+ "digitalZoomRatio": "Digital Zoom Ratio",
+ "exifVersion": "EXIF Version",
+ "exposureBiasValue": "Exposure Bias Value",
+ "exposureIndex": "Exposure Index",
+ "exposureMode": "Exposure Mode",
+ "exposureProgram": "Exposure Program",
+ "fileSource": "File Source",
+ "flash": "Flash",
+ "flashpixVersion": "Flashpix Version",
+ "focalLength": "Focal Length",
+ "focalLengthIn35mmFormat": "Focal Length in 35mm Format",
+ "focalPlaneResolutionUnit": "Focal Plane Resolution Unit",
+ "focalPlaneXResolution": "Focal Plane X Resolution",
+ "focalPlaneYResolution": "Focal Plane Y Resolution",
+ "gainControl": "Gain Control",
+ "imageDescription": "Image Description",
+ "imageHeight": "Image Height",
+ "imageLength": "Image Length",
+ "imageUniqueId": "Image Unique ID",
+ "imageWidth": "Image Width",
+ "isoSpeed": "ISO Speed",
+ "lensMake": "Lens Make",
+ "lensModel": "Lens Model",
+ "lensSerialNumber": "Lens Serial Number",
+ "lensSpecification": "Lens Specification",
+ "lightSource": "Light Source",
+ "make": "Camera Make",
+ "maxApertureValue": "Max Aperture Value",
+ "meteringMode": "Metering Mode",
+ "model": "Camera Model",
+ "modifyDate": "Modify Date",
+ "offsetTime": "Offset Time",
+ "offsetTimeDigitized": "Offset Time Digitized",
+ "offsetTimeOriginal": "Offset Time Original",
+ "orientation": "Orientation",
+ "photometricInterpretation": "Photometric Interpretation",
+ "photographicSensitivity": "Photographic Sensitivity",
+ "pixelXDimension": "Pixel X Dimension",
+ "pixelYDimension": "Pixel Y Dimension",
+ "planarConfiguration": "Planar Configuration",
+ "recommendedExposureIndex": "Recommended Exposure Index",
+ "resolutionUnit": "Resolution Unit",
+ "rowsPerStrip": "Rows Per Strip",
+ "saturation": "Saturation",
+ "samplesPerPixel": "Samples Per Pixel",
+ "sceneCaptureType": "Scene Capture Type",
+ "sceneType": "Scene Type",
+ "sensingMethod": "Sensing Method",
+ "sensitivityType": "Sensitivity Type",
+ "sharpness": "Sharpness",
+ "shutterSpeedValue": "Shutter Speed Value",
+ "software": "Software",
+ "stripByteCounts": "Strip Byte Counts",
+ "stripOffsets": "Strip Offsets",
+ "subSecTimeDigitized": "Sub-second Time Digitized",
+ "subSecTimeOriginal": "Sub-second Time Original",
+ "subjectDistance": "Subject Distance",
+ "userComment": "User Comment",
+ "whiteBalance": "White Balance",
+ "xResolution": "X Resolution",
+ "yResolution": "Y Resolution"
+ },
+ "title": "Extended EXIF",
+ "unknownTiffTag": "TIFF Tag ({{id}})",
+ "values": {
+ "auto": "Auto",
+ "autoExposure": "Auto exposure",
+ "chunky": "Chunky",
+ "digitalStillCamera": "Digital still camera",
+ "directlyPhotographed": "Directly photographed",
+ "flashDidNotFire": "Flash did not fire",
+ "flashFiredReturnDetected": "Fired, return light detected",
+ "flashFiredReturnNotDetected": "Fired, return light not detected",
+ "flashFiredReturnNotDetectedForced": "Fired, return light not detected, forced",
+ "landscape": "Landscape",
+ "manual": "Manual",
+ "manualExposure": "Manual exposure",
+ "noFlash": "No flash",
+ "normal": "Normal",
+ "normalProcess": "Normal process",
+ "patternMetering": "Pattern",
+ "portrait": "Portrait",
+ "standard": "Standard",
+ "topLeft": "Top-left",
+ "uncompressed": "Uncompressed",
+ "unknown": "Unknown"
+ }
},
"fields": {
"author": "Author",
@@ -1233,6 +1334,14 @@
"dateFormatPlaceholder": "e.g., YYYY/MM-DD",
"deleteAfterImport": "Delete originals after successful import",
"deleteWarning": "Files will be moved to the system trash.",
+ "fileDialog": {
+ "allFiles": "All Files",
+ "allSupportedImages": "All Supported Images",
+ "rawImages": "RAW Images",
+ "selectFilesTitle": "Select files to import",
+ "standardImages": "Standard Images (JPEG, PNG, etc.)",
+ "unsupportedFormats": "Unsupported file format(s) detected: {{formats}}"
+ },
"fileNaming": "File Naming",
"folderOrganization": "Folder Organization",
"organizeByDate": "Organize into subfolders by date",
@@ -1731,6 +1840,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Architecture",
+ "event": "Event",
+ "family": "Family",
+ "food": "Food",
+ "landscape": "Landscape",
+ "nature": "Nature",
+ "portrait": "Portrait",
+ "street": "Street",
+ "travel": "Travel"
+ },
"bottomBar": {
"imagesSelected": "{{current}} of {{total}} images selected",
"tooltips": {
@@ -1771,6 +1891,15 @@
"saveAsNewTooltip": "Save current settings as new preset",
"savedTooltip": "Saved!"
},
+ "filenameVariables": {
+ "day": "Day",
+ "hour": "Hour",
+ "minute": "Minute",
+ "month": "Month",
+ "originalFilename": "Original filename",
+ "sequence": "Sequence",
+ "year": "Year"
+ },
"filmstrip": {
"tooltips": {
"color": "Color: {{color}}",
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index 68db75e4ea..e11433f49b 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -636,7 +636,8 @@
"copy": "Copiar",
"emptyClickToAdd": "Vacío (Haz clic para añadir)",
"extendedExif": {
- "title": "EXIF Extendido"
+ "title": "EXIF Extendido",
+ "unknownTiffTag": "Etiqueta TIFF ({{id}})"
},
"fields": {
"author": "Autor",
@@ -1260,6 +1261,14 @@
"dateFormatPlaceholder": "ej., AAAA/MM-DD",
"deleteAfterImport": "Eliminar originales tras una importación exitosa",
"deleteWarning": "Los archivos se moverán a la papelera del sistema.",
+ "fileDialog": {
+ "allFiles": "Todos los archivos",
+ "allSupportedImages": "Todas las imágenes compatibles",
+ "rawImages": "Imágenes RAW",
+ "selectFilesTitle": "Seleccionar archivos para importar",
+ "standardImages": "Imágenes estándar (JPEG, PNG, etc.)",
+ "unsupportedFormats": "Se detectaron formatos de archivo no compatibles: {{formats}}"
+ },
"fileNaming": "Nomenclatura de archivos",
"folderOrganization": "Organización de carpetas",
"organizeByDate": "Organizar en subcarpetas por fecha",
@@ -1764,6 +1773,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Arquitectura",
+ "event": "Evento",
+ "family": "Familia",
+ "food": "Comida",
+ "landscape": "Paisaje",
+ "nature": "Naturaleza",
+ "portrait": "Retrato",
+ "street": "Calle",
+ "travel": "Viaje"
+ },
"bottomBar": {
"imagesSelected": "{{current}} de {{total}} imágenes seleccionadas",
"tooltips": {
@@ -1805,6 +1825,15 @@
"saveAsNewTooltip": "Guardar los ajustes actuales como un nuevo ajuste preestablecido",
"savedTooltip": "¡Guardado!"
},
+ "filenameVariables": {
+ "day": "Día",
+ "hour": "Hora",
+ "minute": "Minuto",
+ "month": "Mes",
+ "originalFilename": "Nombre de archivo original",
+ "sequence": "Secuencia",
+ "year": "Año"
+ },
"filmstrip": {
"tooltips": {
"color": "Color: {{color}}",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index 33673c3818..089b323484 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -636,7 +636,8 @@
"copy": "Copier",
"emptyClickToAdd": "Vide (cliquer pour ajouter)",
"extendedExif": {
- "title": "EXIF étendu"
+ "title": "EXIF étendu",
+ "unknownTiffTag": "Balise TIFF ({{id}})"
},
"fields": {
"author": "Auteur",
@@ -1260,6 +1261,14 @@
"dateFormatPlaceholder": "ex. : AAAA/MM-JJ",
"deleteAfterImport": "Supprimer les originaux après importation réussie",
"deleteWarning": "Les fichiers seront déplacés vers la corbeille du système.",
+ "fileDialog": {
+ "allFiles": "Tous les fichiers",
+ "allSupportedImages": "Toutes les images prises en charge",
+ "rawImages": "Images RAW",
+ "selectFilesTitle": "Sélectionner les fichiers à importer",
+ "standardImages": "Images standard (JPEG, PNG, etc.)",
+ "unsupportedFormats": "Formats de fichier non pris en charge détectés : {{formats}}"
+ },
"fileNaming": "Nommage des fichiers",
"folderOrganization": "Organisation des dossiers",
"organizeByDate": "Organiser dans des sous-dossiers par date",
@@ -1764,6 +1773,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Architecture",
+ "event": "Événement",
+ "family": "Famille",
+ "food": "Cuisine",
+ "landscape": "Paysage",
+ "nature": "Nature",
+ "portrait": "Portrait",
+ "street": "Rue",
+ "travel": "Voyage"
+ },
"bottomBar": {
"imagesSelected": "{{current}} sur {{total}} images sélectionnées",
"tooltips": {
@@ -1805,6 +1825,15 @@
"saveAsNewTooltip": "Enregistrer les paramètres actuels comme nouveau",
"savedTooltip": "Enregistré !"
},
+ "filenameVariables": {
+ "day": "Jour",
+ "hour": "Heure",
+ "minute": "Minute",
+ "month": "Mois",
+ "originalFilename": "Nom de fichier d’origine",
+ "sequence": "Séquence",
+ "year": "Année"
+ },
"filmstrip": {
"tooltips": {
"color": "Couleur : {{color}}",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index eb65c62d6e..00b7c8b2c1 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -636,7 +636,8 @@
"copy": "Copia",
"emptyClickToAdd": "Vuoto (Clicca per aggiungere)",
"extendedExif": {
- "title": "EXIF Estesi"
+ "title": "EXIF Estesi",
+ "unknownTiffTag": "Tag TIFF ({{id}})"
},
"fields": {
"author": "Autore",
@@ -1260,6 +1261,14 @@
"dateFormatPlaceholder": "es. YYYY/MM-DD",
"deleteAfterImport": "Elimina originali dopo importazione completata",
"deleteWarning": "I file verranno spostati nel cestino di sistema.",
+ "fileDialog": {
+ "allFiles": "Tutti i file",
+ "allSupportedImages": "Tutte le immagini supportate",
+ "rawImages": "Immagini RAW",
+ "selectFilesTitle": "Seleziona i file da importare",
+ "standardImages": "Immagini standard (JPEG, PNG, ecc.)",
+ "unsupportedFormats": "Rilevati formati di file non supportati: {{formats}}"
+ },
"fileNaming": "Nomenclatura File",
"folderOrganization": "Organizzazione Cartelle",
"organizeByDate": "Organizza in sottocartelle per data",
@@ -1764,6 +1773,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Architettura",
+ "event": "Evento",
+ "family": "Famiglia",
+ "food": "Cibo",
+ "landscape": "Paesaggio",
+ "nature": "Natura",
+ "portrait": "Ritratto",
+ "street": "Strada",
+ "travel": "Viaggio"
+ },
"bottomBar": {
"imagesSelected": "{{current}} di {{total}} immagini selezionate",
"tooltips": {
@@ -1805,6 +1825,15 @@
"saveAsNewTooltip": "Salva le impostazioni attuali come nuovo predefinito",
"savedTooltip": "Salvato!"
},
+ "filenameVariables": {
+ "day": "Giorno",
+ "hour": "Ora",
+ "minute": "Minuto",
+ "month": "Mese",
+ "originalFilename": "Nome file originale",
+ "sequence": "Sequenza",
+ "year": "Anno"
+ },
"filmstrip": {
"tooltips": {
"color": "Colore: {{color}}",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index ecd9c6e46f..6a51d23065 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -613,7 +613,8 @@
"copy": "コピー",
"emptyClickToAdd": "未設定 (クリックして追加)",
"extendedExif": {
- "title": "拡張EXIF"
+ "title": "拡張EXIF",
+ "unknownTiffTag": "TIFF タグ({{id}})"
},
"fields": {
"author": "作成者",
@@ -1231,6 +1232,14 @@
"dateFormatPlaceholder": "例: YYYY/MM-DD",
"deleteAfterImport": "インポート完了後に元のファイルを削除",
"deleteWarning": "ファイルはシステムのゴミ箱に移動されます。",
+ "fileDialog": {
+ "allFiles": "すべてのファイル",
+ "allSupportedImages": "対応するすべての画像",
+ "rawImages": "RAW 画像",
+ "selectFilesTitle": "インポートするファイルを選択",
+ "standardImages": "標準画像(JPEG、PNG など)",
+ "unsupportedFormats": "対応していないファイル形式が検出されました: {{formats}}"
+ },
"fileNaming": "ファイル名の命名",
"folderOrganization": "フォルダ構成",
"organizeByDate": "日付ごとにサブフォルダに整理する",
@@ -1729,6 +1738,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "建築",
+ "event": "イベント",
+ "family": "家族",
+ "food": "食べ物",
+ "landscape": "風景",
+ "nature": "自然",
+ "portrait": "ポートレート",
+ "street": "ストリート",
+ "travel": "旅行"
+ },
"bottomBar": {
"imagesSelected": "{{total}}枚中 {{current}}枚の画像を選択中",
"tooltips": {
@@ -1769,6 +1789,15 @@
"saveAsNewTooltip": "現在の設定を新規プリセットとして保存",
"savedTooltip": "保存しました!"
},
+ "filenameVariables": {
+ "day": "日",
+ "hour": "時",
+ "minute": "分",
+ "month": "月",
+ "originalFilename": "元のファイル名",
+ "sequence": "連番",
+ "year": "年"
+ },
"filmstrip": {
"tooltips": {
"color": "カラー: {{color}}",
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json
index 8db0ec1a5a..197c1acc1a 100644
--- a/src/i18n/locales/ko.json
+++ b/src/i18n/locales/ko.json
@@ -613,7 +613,8 @@
"copy": "복사",
"emptyClickToAdd": "비어 있음 (클릭하여 추가)",
"extendedExif": {
- "title": "확장 EXIF"
+ "title": "확장 EXIF",
+ "unknownTiffTag": "TIFF 태그({{id}})"
},
"fields": {
"author": "작성자",
@@ -1231,6 +1232,14 @@
"dateFormatPlaceholder": "예: YYYY/MM-DD",
"deleteAfterImport": "가져오기 성공 후 원본 삭제",
"deleteWarning": "파일이 시스템 휴지통으로 이동됩니다.",
+ "fileDialog": {
+ "allFiles": "모든 파일",
+ "allSupportedImages": "지원되는 모든 이미지",
+ "rawImages": "RAW 이미지",
+ "selectFilesTitle": "가져올 파일 선택",
+ "standardImages": "표준 이미지(JPEG, PNG 등)",
+ "unsupportedFormats": "지원되지 않는 파일 형식이 감지되었습니다: {{formats}}"
+ },
"fileNaming": "파일 이름 지정",
"folderOrganization": "폴더 정리",
"organizeByDate": "날짜별 하위 폴더로 정리",
@@ -1729,6 +1738,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "건축",
+ "event": "행사",
+ "family": "가족",
+ "food": "음식",
+ "landscape": "풍경",
+ "nature": "자연",
+ "portrait": "인물",
+ "street": "거리",
+ "travel": "여행"
+ },
"bottomBar": {
"imagesSelected": "이미지 {{total}}개 중 {{current}}개 선택됨",
"tooltips": {
@@ -1769,6 +1789,15 @@
"saveAsNewTooltip": "현재 설정을 새 프리셋으로 저장",
"savedTooltip": "저장됨!"
},
+ "filenameVariables": {
+ "day": "일",
+ "hour": "시",
+ "minute": "분",
+ "month": "월",
+ "originalFilename": "원본 파일 이름",
+ "sequence": "순번",
+ "year": "연도"
+ },
"filmstrip": {
"tooltips": {
"color": "색상: {{color}}",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index c7733c2e4c..b2a57737c4 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -657,7 +657,8 @@
"copy": "Kopiuj",
"emptyClickToAdd": "Puste (Kliknij, aby dodać)",
"extendedExif": {
- "title": "Rozszerzony EXIF"
+ "title": "Rozszerzony EXIF",
+ "unknownTiffTag": "Znacznik TIFF ({{id}})"
},
"fields": {
"author": "Autor",
@@ -1287,6 +1288,14 @@
"dateFormatPlaceholder": "np. RRRR/MM-DD",
"deleteAfterImport": "Usuń oryginały po pomyślnym imporcie",
"deleteWarning": "Pliki zostaną przeniesione do systemowego kosza.",
+ "fileDialog": {
+ "allFiles": "Wszystkie pliki",
+ "allSupportedImages": "Wszystkie obsługiwane obrazy",
+ "rawImages": "Obrazy RAW",
+ "selectFilesTitle": "Wybierz pliki do zaimportowania",
+ "standardImages": "Standardowe obrazy (JPEG, PNG itp.)",
+ "unsupportedFormats": "Wykryto nieobsługiwane formaty plików: {{formats}}"
+ },
"fileNaming": "Nazewnictwo plików",
"folderOrganization": "Organizacja folderów",
"organizeByDate": "Organizuj w podfolderach według daty",
@@ -1797,6 +1806,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Architektura",
+ "event": "Wydarzenie",
+ "family": "Rodzina",
+ "food": "Jedzenie",
+ "landscape": "Krajobraz",
+ "nature": "Natura",
+ "portrait": "Portret",
+ "street": "Ulica",
+ "travel": "Podróże"
+ },
"bottomBar": {
"imagesSelected": "Zaznaczono {{current}} z {{total}} obrazów",
"tooltips": {
@@ -1839,6 +1859,15 @@
"saveAsNewTooltip": "Zapisz obecne ustawienia jako nowy preset",
"savedTooltip": "Zapisano!"
},
+ "filenameVariables": {
+ "day": "Dzień",
+ "hour": "Godzina",
+ "minute": "Minuta",
+ "month": "Miesiąc",
+ "originalFilename": "Oryginalna nazwa pliku",
+ "sequence": "Sekwencja",
+ "year": "Rok"
+ },
"filmstrip": {
"tooltips": {
"color": "Kolor: {{color}}",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 8617dc4937..053530f9b3 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -636,7 +636,8 @@
"copy": "Copiar",
"emptyClickToAdd": "Vazio (Clique para adicionar)",
"extendedExif": {
- "title": "EXIF Estendido"
+ "title": "EXIF Estendido",
+ "unknownTiffTag": "Etiqueta TIFF ({{id}})"
},
"fields": {
"author": "Autor",
@@ -1260,6 +1261,14 @@
"dateFormatPlaceholder": "ex.: AAAA/MM-DD",
"deleteAfterImport": "Excluir originais após importação bem-sucedida",
"deleteWarning": "Os arquivos serão movidos para a lixeira do sistema.",
+ "fileDialog": {
+ "allFiles": "Todos os arquivos",
+ "allSupportedImages": "Todas as imagens compatíveis",
+ "rawImages": "Imagens RAW",
+ "selectFilesTitle": "Selecionar arquivos para importar",
+ "standardImages": "Imagens padrão (JPEG, PNG etc.)",
+ "unsupportedFormats": "Formatos de arquivo não compatíveis detectados: {{formats}}"
+ },
"fileNaming": "Nomeação de Arquivos",
"folderOrganization": "Organização de Pastas",
"organizeByDate": "Organizar em subpastas por data",
@@ -1764,6 +1773,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Arquitetura",
+ "event": "Evento",
+ "family": "Família",
+ "food": "Comida",
+ "landscape": "Paisagem",
+ "nature": "Natureza",
+ "portrait": "Retrato",
+ "street": "Rua",
+ "travel": "Viagem"
+ },
"bottomBar": {
"imagesSelected": "{{current}} de {{total}} imagens selecionadas",
"tooltips": {
@@ -1805,6 +1825,15 @@
"saveAsNewTooltip": "Salvar configurações atuais como nova predefinição",
"savedTooltip": "Salvo!"
},
+ "filenameVariables": {
+ "day": "Dia",
+ "hour": "Hora",
+ "minute": "Minuto",
+ "month": "Mês",
+ "originalFilename": "Nome do arquivo original",
+ "sequence": "Sequência",
+ "year": "Ano"
+ },
"filmstrip": {
"tooltips": {
"color": "Cor: {{color}}",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index c925c305a1..a3c34fb68c 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -657,7 +657,8 @@
"copy": "Копировать",
"emptyClickToAdd": "Пусто (нажмите, чтобы добавить)",
"extendedExif": {
- "title": "Расширенный EXIF"
+ "title": "Расширенный EXIF",
+ "unknownTiffTag": "Тег TIFF ({{id}})"
},
"fields": {
"author": "Автор",
@@ -1287,6 +1288,14 @@
"dateFormatPlaceholder": "например, YYYY/MM-DD",
"deleteAfterImport": "Удалять исходные файлы после успешного импорта",
"deleteWarning": "Файлы будут перемещены в системную корзину.",
+ "fileDialog": {
+ "allFiles": "Все файлы",
+ "allSupportedImages": "Все поддерживаемые изображения",
+ "rawImages": "Изображения RAW",
+ "selectFilesTitle": "Выберите файлы для импорта",
+ "standardImages": "Стандартные изображения (JPEG, PNG и т. д.)",
+ "unsupportedFormats": "Обнаружены неподдерживаемые форматы файлов: {{formats}}"
+ },
"fileNaming": "Именование файлов",
"folderOrganization": "Структура папок",
"organizeByDate": "Распределять по подпапкам на основе даты",
@@ -1797,6 +1806,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "Архитектура",
+ "event": "Событие",
+ "family": "Семья",
+ "food": "Еда",
+ "landscape": "Пейзаж",
+ "nature": "Природа",
+ "portrait": "Портрет",
+ "street": "Улица",
+ "travel": "Путешествия"
+ },
"bottomBar": {
"imagesSelected": "Выбрано снимков: {{current}} из {{total}}",
"tooltips": {
@@ -1839,6 +1859,15 @@
"saveAsNewTooltip": "Сохранить текущие параметры как новый пресет экспорта",
"savedTooltip": "Сохранено!"
},
+ "filenameVariables": {
+ "day": "День",
+ "hour": "Час",
+ "minute": "Минута",
+ "month": "Месяц",
+ "originalFilename": "Исходное имя файла",
+ "sequence": "Последовательность",
+ "year": "Год"
+ },
"filmstrip": {
"tooltips": {
"color": "Цвет: {{color}}",
diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json
index 31d2b1aeab..35b5f0cfc8 100644
--- a/src/i18n/locales/zh-CN.json
+++ b/src/i18n/locales/zh-CN.json
@@ -613,7 +613,108 @@
"copy": "复制",
"emptyClickToAdd": "空(点击添加)",
"extendedExif": {
- "title": "扩展 EXIF"
+ "fields": {
+ "apertureValue": "光圈值",
+ "artist": "作者",
+ "bitsPerSample": "每样本位数",
+ "bodySerialNumber": "机身序列号",
+ "brightnessValue": "亮度值",
+ "cameraSerialNumber": "相机序列号",
+ "colorSpace": "色彩空间",
+ "componentsConfiguration": "分量配置",
+ "compression": "压缩方式",
+ "contrast": "对比度",
+ "copyright": "版权",
+ "createDate": "创建日期",
+ "customRendered": "自定义图像处理",
+ "dateTimeOriginal": "拍摄日期",
+ "digitalZoomRatio": "数码变焦倍率",
+ "exifVersion": "EXIF 版本",
+ "exposureBiasValue": "曝光补偿",
+ "exposureIndex": "曝光指数",
+ "exposureMode": "曝光模式",
+ "exposureProgram": "曝光程序",
+ "fileSource": "文件来源",
+ "flash": "闪光灯",
+ "flashpixVersion": "Flashpix 版本",
+ "focalLength": "焦距",
+ "focalLengthIn35mmFormat": "等效 35 mm 焦距",
+ "focalPlaneResolutionUnit": "焦平面分辨率单位",
+ "focalPlaneXResolution": "焦平面水平分辨率",
+ "focalPlaneYResolution": "焦平面垂直分辨率",
+ "gainControl": "增益控制",
+ "imageDescription": "图像描述",
+ "imageHeight": "图像高度",
+ "imageLength": "图像高度",
+ "imageUniqueId": "图像唯一 ID",
+ "imageWidth": "图像宽度",
+ "isoSpeed": "ISO 感光度",
+ "lensMake": "镜头厂商",
+ "lensModel": "镜头型号",
+ "lensSerialNumber": "镜头序列号",
+ "lensSpecification": "镜头规格",
+ "lightSource": "光源",
+ "make": "相机厂商",
+ "maxApertureValue": "最大光圈值",
+ "meteringMode": "测光模式",
+ "model": "相机型号",
+ "modifyDate": "修改日期",
+ "offsetTime": "时区偏移",
+ "offsetTimeDigitized": "数字化时区偏移",
+ "offsetTimeOriginal": "拍摄时区偏移",
+ "orientation": "方向",
+ "photometricInterpretation": "光度解释",
+ "photographicSensitivity": "感光度",
+ "pixelXDimension": "像素宽度",
+ "pixelYDimension": "像素高度",
+ "planarConfiguration": "平面配置",
+ "recommendedExposureIndex": "推荐曝光指数",
+ "resolutionUnit": "分辨率单位",
+ "rowsPerStrip": "每条带行数",
+ "saturation": "饱和度",
+ "samplesPerPixel": "每像素样本数",
+ "sceneCaptureType": "场景拍摄类型",
+ "sceneType": "场景类型",
+ "sensingMethod": "感应方式",
+ "sensitivityType": "感光度类型",
+ "sharpness": "锐度",
+ "shutterSpeedValue": "快门速度值",
+ "software": "软件",
+ "stripByteCounts": "条带字节数",
+ "stripOffsets": "条带偏移量",
+ "subSecTimeDigitized": "数字化时间亚秒",
+ "subSecTimeOriginal": "拍摄时间亚秒",
+ "subjectDistance": "主体距离",
+ "userComment": "用户备注",
+ "whiteBalance": "白平衡",
+ "xResolution": "水平分辨率",
+ "yResolution": "垂直分辨率"
+ },
+ "title": "扩展 EXIF",
+ "unknownTiffTag": "TIFF 标签({{id}})",
+ "values": {
+ "auto": "自动",
+ "autoExposure": "自动曝光",
+ "chunky": "交错排列",
+ "digitalStillCamera": "数码相机",
+ "directlyPhotographed": "直接拍摄",
+ "flashDidNotFire": "闪光灯未闪光",
+ "flashFiredReturnDetected": "闪光灯已闪光,检测到回光",
+ "flashFiredReturnNotDetected": "闪光灯已闪光,未检测到回光",
+ "flashFiredReturnNotDetectedForced": "闪光灯已闪光,未检测到回光,强制闪光",
+ "landscape": "风光",
+ "manual": "手动",
+ "manualExposure": "手动曝光",
+ "noFlash": "未闪光",
+ "normal": "标准",
+ "normalProcess": "标准处理",
+ "patternMetering": "多区测光",
+ "portrait": "人像",
+ "standard": "标准",
+ "topLeft": "正常(左上)",
+ "uncompressed": "未压缩",
+ "unknown": "未知"
+ }
},
"fields": {
"author": "作者",
@@ -1037,7 +1138,7 @@
"types": {
"all": "整个图像",
"brush": "画笔",
- "clone": "克隆",
+ "clone": "仿制",
"color": "颜色",
"depth": "深度",
"flow": "流线",
@@ -1231,6 +1332,14 @@
"dateFormatPlaceholder": "例如,YYYY/MM-DD",
"deleteAfterImport": "成功导入后删除原始文件",
"deleteWarning": "文件将被移至系统回收站。",
+ "fileDialog": {
+ "allFiles": "所有文件",
+ "allSupportedImages": "所有支持的图像",
+ "rawImages": "RAW 图像",
+ "selectFilesTitle": "选择要导入的文件",
+ "standardImages": "标准图像(JPEG、PNG 等)",
+ "unsupportedFormats": "检测到不支持的文件格式:{{formats}}"
+ },
"fileNaming": "文件命名",
"folderOrganization": "文件夹组织",
"organizeByDate": "按日期组织到子文件夹",
@@ -1729,6 +1838,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "建筑",
+ "event": "活动",
+ "family": "家庭",
+ "food": "美食",
+ "landscape": "风光",
+ "nature": "自然",
+ "portrait": "人像",
+ "street": "街头",
+ "travel": "旅行"
+ },
"bottomBar": {
"imagesSelected": "已选择 {{current}} / {{total}} 张图像",
"tooltips": {
@@ -1769,6 +1889,15 @@
"saveAsNewTooltip": "将当前设置保存为新预设",
"savedTooltip": "已保存!"
},
+ "filenameVariables": {
+ "day": "日",
+ "hour": "时",
+ "minute": "分",
+ "month": "月",
+ "originalFilename": "原始文件名",
+ "sequence": "序号",
+ "year": "年"
+ },
"filmstrip": {
"tooltips": {
"color": "颜色:{{color}}",
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json
index a2a09ca1cb..cfdffc9c82 100644
--- a/src/i18n/locales/zh-TW.json
+++ b/src/i18n/locales/zh-TW.json
@@ -613,7 +613,108 @@
"copy": "複製",
"emptyClickToAdd": "空(點選新增)",
"extendedExif": {
- "title": "擴充 EXIF"
+ "fields": {
+ "apertureValue": "光圈值",
+ "artist": "作者",
+ "bitsPerSample": "每樣本位元數",
+ "bodySerialNumber": "機身序號",
+ "brightnessValue": "亮度值",
+ "cameraSerialNumber": "相機序號",
+ "colorSpace": "色彩空間",
+ "componentsConfiguration": "分量設定",
+ "compression": "壓縮方式",
+ "contrast": "對比度",
+ "copyright": "版權",
+ "createDate": "建立日期",
+ "customRendered": "自訂影像處理",
+ "dateTimeOriginal": "拍攝日期",
+ "digitalZoomRatio": "數位變焦倍率",
+ "exifVersion": "EXIF 版本",
+ "exposureBiasValue": "曝光補償",
+ "exposureIndex": "曝光指數",
+ "exposureMode": "曝光模式",
+ "exposureProgram": "曝光程式",
+ "fileSource": "檔案來源",
+ "flash": "閃光燈",
+ "flashpixVersion": "Flashpix 版本",
+ "focalLength": "焦距",
+ "focalLengthIn35mmFormat": "等效 35 mm 焦距",
+ "focalPlaneResolutionUnit": "焦平面解析度單位",
+ "focalPlaneXResolution": "焦平面水平解析度",
+ "focalPlaneYResolution": "焦平面垂直解析度",
+ "gainControl": "增益控制",
+ "imageDescription": "影像描述",
+ "imageHeight": "影像高度",
+ "imageLength": "影像高度",
+ "imageUniqueId": "影像唯一 ID",
+ "imageWidth": "影像寬度",
+ "isoSpeed": "ISO 感光度",
+ "lensMake": "鏡頭製造商",
+ "lensModel": "鏡頭型號",
+ "lensSerialNumber": "鏡頭序號",
+ "lensSpecification": "鏡頭規格",
+ "lightSource": "光源",
+ "make": "相機製造商",
+ "maxApertureValue": "最大光圈值",
+ "meteringMode": "測光模式",
+ "model": "相機型號",
+ "modifyDate": "修改日期",
+ "offsetTime": "時區偏移",
+ "offsetTimeDigitized": "數位化時區偏移",
+ "offsetTimeOriginal": "拍攝時區偏移",
+ "orientation": "方向",
+ "photometricInterpretation": "光度解釋",
+ "photographicSensitivity": "感光度",
+ "pixelXDimension": "像素寬度",
+ "pixelYDimension": "像素高度",
+ "planarConfiguration": "平面設定",
+ "recommendedExposureIndex": "建議曝光指數",
+ "resolutionUnit": "解析度單位",
+ "rowsPerStrip": "每條帶列數",
+ "saturation": "飽和度",
+ "samplesPerPixel": "每像素樣本數",
+ "sceneCaptureType": "場景拍攝類型",
+ "sceneType": "場景類型",
+ "sensingMethod": "感測方式",
+ "sensitivityType": "感光度類型",
+ "sharpness": "銳利度",
+ "shutterSpeedValue": "快門速度值",
+ "software": "軟體",
+ "stripByteCounts": "條帶位元組數",
+ "stripOffsets": "條帶偏移量",
+ "subSecTimeDigitized": "數位化時間亞秒",
+ "subSecTimeOriginal": "拍攝時間亞秒",
+ "subjectDistance": "主體距離",
+ "userComment": "使用者備註",
+ "whiteBalance": "白平衡",
+ "xResolution": "水平解析度",
+ "yResolution": "垂直解析度"
+ },
+ "title": "擴充 EXIF",
+ "unknownTiffTag": "TIFF 標籤({{id}})",
+ "values": {
+ "auto": "自動",
+ "autoExposure": "自動曝光",
+ "chunky": "交錯排列",
+ "digitalStillCamera": "數位相機",
+ "directlyPhotographed": "直接拍攝",
+ "flashDidNotFire": "閃光燈未閃光",
+ "flashFiredReturnDetected": "閃光燈已閃光,偵測到回光",
+ "flashFiredReturnNotDetected": "閃光燈已閃光,未偵測到回光",
+ "flashFiredReturnNotDetectedForced": "閃光燈已閃光,未偵測到回光,強制閃光",
+ "landscape": "風景",
+ "manual": "手動",
+ "manualExposure": "手動曝光",
+ "noFlash": "未閃光",
+ "normal": "標準",
+ "normalProcess": "標準處理",
+ "patternMetering": "多區測光",
+ "portrait": "人像",
+ "standard": "標準",
+ "topLeft": "正常(左上)",
+ "uncompressed": "未壓縮",
+ "unknown": "未知"
+ }
},
"fields": {
"author": "作者",
@@ -1231,6 +1332,14 @@
"dateFormatPlaceholder": "例如,YYYY/MM-DD",
"deleteAfterImport": "成功匯入後刪除原始檔案",
"deleteWarning": "檔案將被移至垃圾桶。",
+ "fileDialog": {
+ "allFiles": "所有檔案",
+ "allSupportedImages": "所有支援的影像",
+ "rawImages": "RAW 影像",
+ "selectFilesTitle": "選擇要匯入的檔案",
+ "standardImages": "標準影像(JPEG、PNG 等)",
+ "unsupportedFormats": "偵測到不支援的檔案格式:{{formats}}"
+ },
"fileNaming": "檔案命名",
"folderOrganization": "資料夾組織",
"organizeByDate": "按日期組織到子資料夾",
@@ -1729,6 +1838,17 @@
}
},
"ui": {
+ "builtInTags": {
+ "architecture": "建築",
+ "event": "活動",
+ "family": "家庭",
+ "food": "美食",
+ "landscape": "風景",
+ "nature": "自然",
+ "portrait": "人像",
+ "street": "街頭",
+ "travel": "旅行"
+ },
"bottomBar": {
"imagesSelected": "已選擇 {{current}} / {{total}} 張影像",
"tooltips": {
@@ -1769,6 +1889,15 @@
"saveAsNewTooltip": "將當前設定儲存為新預設",
"savedTooltip": "已儲存!"
},
+ "filenameVariables": {
+ "day": "日",
+ "hour": "時",
+ "minute": "分",
+ "month": "月",
+ "originalFilename": "原始檔名",
+ "sequence": "序號",
+ "year": "年"
+ },
"filmstrip": {
"tooltips": {
"color": "顏色:{{color}}",
diff --git a/src/i18n/translateBuiltInTag.ts b/src/i18n/translateBuiltInTag.ts
new file mode 100644
index 0000000000..0e3e73bb0c
--- /dev/null
+++ b/src/i18n/translateBuiltInTag.ts
@@ -0,0 +1,19 @@
+import i18n from 'i18next';
+
+const BUILT_IN_TAG_KEYS = {
+ architecture: 'ui.builtInTags.architecture',
+ event: 'ui.builtInTags.event',
+ family: 'ui.builtInTags.family',
+ food: 'ui.builtInTags.food',
+ landscape: 'ui.builtInTags.landscape',
+ nature: 'ui.builtInTags.nature',
+ portrait: 'ui.builtInTags.portrait',
+ street: 'ui.builtInTags.street',
+ travel: 'ui.builtInTags.travel',
+} as const;
+
+export function translateBuiltInTag(tag: string): string {
+ const normalizedTag = tag.trim().toLowerCase() as keyof typeof BUILT_IN_TAG_KEYS;
+ const translationKey = BUILT_IN_TAG_KEYS[normalizedTag];
+ return translationKey ? String(i18n.t(translationKey)) : tag;
+}
From 0ddfffd741b069290c80c3d34aee0328ea85d079 Mon Sep 17 00:00:00 2001
From: VailElla <63608800+VailElla@users.noreply.github.com>
Date: Mon, 13 Jul 2026 15:13:11 +0800
Subject: [PATCH 2/4] docs: add privacy-safe PR screenshots
---
.../pr-1360/export-filename-zh-cn.jpg | Bin 0 -> 92285 bytes
.../pr-1360/import-settings-zh-cn.jpg | Bin 0 -> 49662 bytes
.../pr-1360/metadata-panel-zh-cn.jpg | Bin 0 -> 153708 bytes
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 docs/screenshots/pr-1360/export-filename-zh-cn.jpg
create mode 100644 docs/screenshots/pr-1360/import-settings-zh-cn.jpg
create mode 100644 docs/screenshots/pr-1360/metadata-panel-zh-cn.jpg
diff --git a/docs/screenshots/pr-1360/export-filename-zh-cn.jpg b/docs/screenshots/pr-1360/export-filename-zh-cn.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..afefd8562d2d6f99e338fe84d3992e49a034dd70
GIT binary patch
literal 92285
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