From f59d1c9453c0a2c377c5b4f67ca213a249c35cda Mon Sep 17 00:00:00 2001 From: Yukon <126093594+baseGame@users.noreply.github.com> Date: Wed, 7 Oct 2026 04:41:27 +0800 Subject: [PATCH] Clarify Options, Formats, Profiles, and Reports chrome Make the settings cluster friendlier for first-time users: plain Options page subtitle, Formats vs Profiles vs Reports vs Session Settings hint, auto-save/Tweaks tip, clearer Formats/Profiles card copy, Formats and Profiles page hints, empty Profiles state, and only-on-one-side report wording instead of orphans jargon. --- src/i18n/locales/de-DE.ts | 28 +++++++++++++++++----- src/i18n/locales/en-US.ts | 27 ++++++++++++++++----- src/i18n/locales/es-ES.ts | 27 ++++++++++++++++----- src/i18n/locales/fr-FR.ts | 28 +++++++++++++++++----- src/i18n/locales/ja-JP.ts | 28 +++++++++++++++++----- src/i18n/locales/ko-KR.ts | 24 ++++++++++++++----- src/i18n/locales/zh-CN.ts | 22 ++++++++++++----- src/i18n/locales/zh-TW.ts | 22 ++++++++++++----- src/views/FileFormatView.test.ts | 8 +++++++ src/views/FileFormatView.vue | 15 +++++++++++- src/views/RemoteProfileView.test.ts | 13 ++++++++++ src/views/RemoteProfileView.vue | 21 +++++++++++++--- src/views/SettingsView.test.ts | 37 +++++++++++++++++++++++++++++ src/views/SettingsView.vue | 22 +++++++++++++---- 14 files changed, 265 insertions(+), 57 deletions(-) diff --git a/src/i18n/locales/de-DE.ts b/src/i18n/locales/de-DE.ts index c7df066e..96a775bc 100644 --- a/src/i18n/locales/de-DE.ts +++ b/src/i18n/locales/de-DE.ts @@ -158,7 +158,7 @@ export const deDE: LanguagePack = { 'ui.extensions': 'Erweiterungen', 'ui.field': 'Feld', 'ui.file': 'Datei', - 'ui.fileFormats': 'Dateiformate...', + 'ui.fileFormats': 'Dateiformate', 'ui.fileNames': 'Dateinamen', 'ui.fileVersion': 'Dateiversion', 'ui.find': 'Finden', @@ -207,7 +207,7 @@ export const deDE: LanguagePack = { 'ui.saveWorkspaceAs': 'Arbeitsbereich speichern unter...', 'ui.closeTab': 'Tab schließen', 'ui.exit': 'Beenden', - 'ui.options': 'Optionen...', + 'ui.options': 'Optionen', 'ui.exportSettings': 'Einstellungen exportieren...', 'ui.importSettings': 'Einstellungen importieren...', 'ui.restoreFactoryDefaults': 'Werkseinstellungen wiederherstellen...', @@ -247,9 +247,25 @@ export const deDE: LanguagePack = { 'ui.m': 'M', 'ui.manage': 'Verwalten', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - 'Verwalten Sie übereinstimmende Regeln, Standardansichten und Regelverweise.', + 'Festlegen, wie Dateitypen geöffnet werden und welche Vergleichsansicht sie nutzen.', 'ui.manageRemoteEndpointsAndCredentialReferences': - 'Verwalten Sie Remote-Endpunkte und Anmeldeinformationsreferenzen.', + 'Gespeicherte Remote-Server und Cloud-Konten hinzufügen oder bearbeiten.', + 'ui.optionsPageSubtitle': + 'App-weite Vorgaben. Sitzungseinstellungen ändern Regeln nur für die geöffnete Sitzung.', + 'ui.optionsClusterHint': + 'Formate steuern, wie Dateien öffnen. Profile sind Remote-Verbindungen. Berichte setzen Exportvorgaben. Vergleichsregeln pro Sitzung stehen in den Sitzungseinstellungen.', + 'ui.optionsAutoSaveHint': + 'Änderungen werden beim Bearbeiten gespeichert. Werkseinstellungen wiederherstellen liegt unter Tweaks.', + 'ui.formatDefinitionsHint': + 'Benannte Regeln, die Erweiterungen Text-, Hex-, Tabellen- und anderen Ansichten zuordnen.', + 'ui.connectionProfilesHint': + 'Gespeicherte SFTP-, Cloud- und andere Remote-Endpunkte für Ordnervergleichspfad.', + 'ui.fileFormatsPageHint': + 'Formate entscheiden, welche Vergleichsansicht für jeden Dateityp öffnet. Nach dem Bearbeiten speichern.', + 'ui.remoteProfilesPageHint': + 'Remote-Server und Cloud-Konten speichern und dann beim Durchsuchen von Ordnervergleichspfaden wählen.', + 'ui.remoteProfilesEmpty': + 'Noch keine Profile. Neu klicken, um SFTP, FTP oder Cloud hinzuzufügen.', 'ui.manualMappingsOverrideAutomaticNameMatches': 'Manuelle Zuordnungen haben Vorrang vor automatischen Namensübereinstimmungen.', 'ui.mediaCompare': 'Medienvergleich', @@ -307,7 +323,7 @@ export const deDE: LanguagePack = { 'ui.productVersion': 'Produktversion', 'ui.profileCountLabel': 'Profile', 'ui.profileDetails': 'Profildetails', - 'ui.profiles': 'Profile...', + 'ui.profiles': 'Profile', 'ui.profileStore': 'Profilspeicher', 'ui.protocol': 'Protokoll', 'ui.quickCompare': 'Schnellvergleich', @@ -1449,7 +1465,7 @@ export const deDE: LanguagePack = { 'ui.reportIncludeIdentical': 'Identische Einträge in Ordnerberichten', 'ui.reportIncludeIdenticalHint': 'Wenn aus, lässt der Ordnervergleichsbericht Zeilen mit Status Gleich weg.', - 'ui.reportIncludeOrphans': 'Verwaiste Einträge in Ordnerberichten', + 'ui.reportIncludeOrphans': 'Nur-auf-einer-Seite-Einträge in Ordnerberichten einschließen', 'ui.reportIncludeOrphansHint': 'Wenn aus, lässt der Ordnervergleichsbericht nur-links- und nur-rechts-Zeilen weg.', 'ui.showMillisecondsInTimestamps': 'Millisekunden in Zeitstempeln anzeigen', diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index cad68881..743fc43a 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -174,7 +174,7 @@ export const enUS: LanguagePack = { 'ui.extensions': 'Extensions', 'ui.field': 'Field', 'ui.file': 'File', - 'ui.fileFormats': 'File Formats...', + 'ui.fileFormats': 'File Formats', 'ui.fileNames': 'File Names', 'ui.fileVersion': 'File Version', 'ui.files': 'Files', @@ -230,7 +230,7 @@ export const enUS: LanguagePack = { 'ui.saveWorkspaceAs': 'Save Workspace As...', 'ui.closeTab': 'Close Tab', 'ui.exit': 'Exit', - 'ui.options': 'Options...', + 'ui.options': 'Options', 'ui.exportSettings': 'Export Settings...', 'ui.importSettings': 'Import Settings...', 'ui.restoreFactoryDefaults': 'Restore Factory Defaults...', @@ -283,9 +283,24 @@ export const enUS: LanguagePack = { 'ui.manage': 'Manage', 'ui.manual': 'Manual', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - 'Manage matching rules, default views, and rule references.', + 'Choose how file types open and which compare view they use.', 'ui.manageRemoteEndpointsAndCredentialReferences': - 'Manage remote endpoints and credential references.', + 'Add or edit saved remote servers and cloud accounts.', + 'ui.optionsPageSubtitle': + 'App-wide defaults. Session Settings change rules for the open session only.', + 'ui.optionsClusterHint': + 'Formats control how files open. Profiles are remote connections. Reports set export defaults. Per-session compare rules are in Session Settings.', + 'ui.optionsAutoSaveHint': 'Changes save as you edit. Restore factory defaults is under Tweaks.', + 'ui.formatDefinitionsHint': + 'Named rules that match extensions to Text, Hex, Table, and other views.', + 'ui.connectionProfilesHint': + 'Saved SFTP, cloud, and other remote endpoints used by Folder Compare paths.', + 'ui.fileFormatsPageHint': + 'Formats decide which compare view opens for each file type. Save after editing a definition.', + 'ui.remoteProfilesPageHint': + 'Save remote servers and cloud accounts, then pick them when browsing Folder Compare paths.', + 'ui.remoteProfilesEmpty': + 'No profiles yet. Click New to add an SFTP, FTP, or cloud connection.', 'ui.manualMappingsOverrideAutomaticNameMatches': 'Manual mappings override automatic name matches.', 'ui.media': 'Media', @@ -365,7 +380,7 @@ export const enUS: LanguagePack = { 'ui.productVersion': 'Product Version', 'ui.profileCountLabel': 'profiles', 'ui.profileDetails': 'Profile Details', - 'ui.profiles': 'Profiles...', + 'ui.profiles': 'Profiles', 'ui.profileStore': 'Profile store', 'ui.protocol': 'Protocol', 'ui.quickCompare': 'Quick Compare', @@ -1407,7 +1422,7 @@ export const enUS: LanguagePack = { 'ui.reportIncludeIdentical': 'Include identical items in folder reports', 'ui.reportIncludeIdenticalHint': 'When off, Folder Compare report exports omit rows that compare as Same.', - 'ui.reportIncludeOrphans': 'Include orphans in folder reports', + 'ui.reportIncludeOrphans': 'Include only-on-one-side items in folder reports', 'ui.reportIncludeOrphansHint': 'When off, Folder Compare report exports omit left-only and right-only rows.', 'ui.showMillisecondsInTimestamps': 'Show milliseconds in timestamps', diff --git a/src/i18n/locales/es-ES.ts b/src/i18n/locales/es-ES.ts index 509190b9..e340dd2a 100644 --- a/src/i18n/locales/es-ES.ts +++ b/src/i18n/locales/es-ES.ts @@ -154,7 +154,7 @@ export const esES: LanguagePack = { 'ui.extensions': 'Extensiones', 'ui.field': 'Campo', 'ui.file': 'Archivo', - 'ui.fileFormats': 'Formatos de archivo...', + 'ui.fileFormats': 'Formatos de archivo', 'ui.fileNames': 'Nombres de archivos', 'ui.fileVersion': 'Versión del archivo', 'ui.find': 'Encontrar', @@ -204,7 +204,7 @@ export const esES: LanguagePack = { 'ui.saveWorkspaceAs': 'Guardar espacio de trabajo como...', 'ui.closeTab': 'Cerrar pestaña', 'ui.exit': 'Salir', - 'ui.options': 'Opciones...', + 'ui.options': 'Opciones', 'ui.exportSettings': 'Exportar configuración...', 'ui.importSettings': 'Importar configuración...', 'ui.restoreFactoryDefaults': 'Restaurar valores de fábrica...', @@ -244,9 +244,24 @@ export const esES: LanguagePack = { 'ui.m': 'M', 'ui.manage': 'Administrar', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - 'Administre reglas coincidentes, vistas predeterminadas y referencias de reglas.', + 'Elija cómo se abren los tipos de archivo y qué vista de comparación usan.', 'ui.manageRemoteEndpointsAndCredentialReferences': - 'Administre puntos finales remotos y referencias de credenciales.', + 'Agregue o edite servidores remotos y cuentas en la nube guardados.', + 'ui.optionsPageSubtitle': + 'Valores predeterminados de la aplicación. La configuración de sesión cambia reglas solo de la sesión abierta.', + 'ui.optionsClusterHint': + 'Los formatos controlan cómo se abren los archivos. Los perfiles son conexiones remotas. Los informes definen la exportación. Las reglas por sesión están en Configuración de sesión.', + 'ui.optionsAutoSaveHint': + 'Los cambios se guardan al editar. Restaurar valores de fábrica está en Ajustes.', + 'ui.formatDefinitionsHint': + 'Reglas con nombre que asocian extensiones a vistas Texto, Hex, Tabla y otras.', + 'ui.connectionProfilesHint': + 'Extremos SFTP, nube y otros remotos usados por las rutas de comparación de carpetas.', + 'ui.fileFormatsPageHint': + 'Los formatos deciden qué vista de comparación abre cada tipo de archivo. Guarde tras editar.', + 'ui.remoteProfilesPageHint': + 'Guarde servidores remotos y cuentas en la nube y elíjalos al examinar rutas de carpetas.', + 'ui.remoteProfilesEmpty': 'Aún no hay perfiles. Pulse Nuevo para agregar SFTP, FTP o nube.', 'ui.manualMappingsOverrideAutomaticNameMatches': 'Las asignaciones manuales anulan las coincidencias automáticas de nombres.', 'ui.mediaCompare': 'Comparación de medios', @@ -303,7 +318,7 @@ export const esES: LanguagePack = { 'ui.productVersion': 'Versión del producto', 'ui.profileCountLabel': 'perfiles', 'ui.profileDetails': 'Detalles del perfil', - 'ui.profiles': 'Perfiles...', + 'ui.profiles': 'Perfiles', 'ui.profileStore': 'Tienda de perfiles', 'ui.protocol': 'Protocolo', 'ui.quickCompare': 'Comparación rápida', @@ -1437,7 +1452,7 @@ export const esES: LanguagePack = { 'ui.reportIncludeIdentical': 'Incluir elementos idénticos en informes de carpeta', 'ui.reportIncludeIdenticalHint': 'Si está desactivado, el informe omite filas con estado Igual.', - 'ui.reportIncludeOrphans': 'Incluir huérfanos en informes de carpeta', + 'ui.reportIncludeOrphans': 'Incluir elementos solo en un lado en informes de carpetas', 'ui.reportIncludeOrphansHint': 'Si está desactivado, el informe omite filas solo izquierda y solo derecha.', 'ui.showMillisecondsInTimestamps': 'Mostrar milisegundos en marcas de tiempo', diff --git a/src/i18n/locales/fr-FR.ts b/src/i18n/locales/fr-FR.ts index ff0658b9..4959bb5f 100644 --- a/src/i18n/locales/fr-FR.ts +++ b/src/i18n/locales/fr-FR.ts @@ -155,7 +155,7 @@ export const frFR: LanguagePack = { 'ui.extensions': 'Rallonges', 'ui.field': 'Champ', 'ui.file': 'Fichier', - 'ui.fileFormats': 'Formats de fichier...', + 'ui.fileFormats': 'Formats de fichier', 'ui.fileNames': 'Noms de fichiers', 'ui.fileVersion': 'Version du fichier', 'ui.find': 'Trouver', @@ -204,7 +204,7 @@ export const frFR: LanguagePack = { 'ui.saveWorkspaceAs': 'Enregistrer l’espace de travail sous...', 'ui.closeTab': 'Fermer l’onglet', 'ui.exit': 'Quitter', - 'ui.options': 'Options...', + 'ui.options': 'Options', 'ui.exportSettings': 'Exporter les paramètres...', 'ui.importSettings': 'Importer les paramètres...', 'ui.restoreFactoryDefaults': 'Restaurer les paramètres d’usine...', @@ -244,9 +244,24 @@ export const frFR: LanguagePack = { 'ui.m': 'M', 'ui.manage': 'Gérer', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - 'Gérez les règles de correspondance, les vues par défaut et les références aux règles.', + 'Choisir comment les types de fichiers s’ouvrent et quelle vue de comparaison utiliser.', 'ui.manageRemoteEndpointsAndCredentialReferences': - 'Gérez les points de terminaison distants et les références d’informations d’identification.', + 'Ajouter ou modifier des serveurs distants et comptes cloud enregistrés.', + 'ui.optionsPageSubtitle': + 'Valeurs par défaut de l’application. Les paramètres de session changent les règles de la session ouverte uniquement.', + 'ui.optionsClusterHint': + 'Les formats contrôlent l’ouverture des fichiers. Les profils sont des connexions distantes. Les rapports définissent l’export. Les règles de comparaison de session sont dans Paramètres de session.', + 'ui.optionsAutoSaveHint': + 'Les modifications sont enregistrées à l’édition. Restaurer les défauts d’usine se trouve sous Ajustements.', + 'ui.formatDefinitionsHint': + 'Règles nommées qui associent les extensions aux vues Texte, Hex, Tableau, etc.', + 'ui.connectionProfilesHint': + 'Points de terminaison SFTP, cloud et autres utilisés par les chemins de comparaison de dossiers.', + 'ui.fileFormatsPageHint': + 'Les formats décident quelle vue de comparaison ouvre chaque type de fichier. Enregistrez après modification.', + 'ui.remoteProfilesPageHint': + 'Enregistrez serveurs distants et comptes cloud, puis choisissez-les en parcourant les chemins de dossiers.', + 'ui.remoteProfilesEmpty': 'Aucun profil. Cliquez sur Nouveau pour ajouter SFTP, FTP ou cloud.', 'ui.manualMappingsOverrideAutomaticNameMatches': 'Les mappages manuels remplacent les correspondances de noms automatiques.', 'ui.mediaCompare': 'Comparaison des médias', @@ -303,7 +318,7 @@ export const frFR: LanguagePack = { 'ui.productVersion': 'Version du produit', 'ui.profileCountLabel': 'profils', 'ui.profileDetails': 'Détails du profil', - 'ui.profiles': 'Profils...', + 'ui.profiles': 'Profils', 'ui.profileStore': 'Magasin de profils', 'ui.protocol': 'Protocole', 'ui.quickCompare': 'Comparaison rapide', @@ -1452,7 +1467,8 @@ export const frFR: LanguagePack = { 'ui.reportIncludeIdentical': 'Inclure les éléments identiques dans les rapports de dossier', 'ui.reportIncludeIdenticalHint': 'Si désactivé, les exports de rapport omettent les lignes Identique.', - 'ui.reportIncludeOrphans': 'Inclure les orphelins dans les rapports de dossier', + 'ui.reportIncludeOrphans': + 'Inclure les éléments présents d’un seul côté dans les rapports de dossiers', 'ui.reportIncludeOrphansHint': 'Si désactivé, les exports omettent les lignes gauche seulement et droite seulement.', 'ui.showMillisecondsInTimestamps': 'Afficher les millisecondes dans les horodatages', diff --git a/src/i18n/locales/ja-JP.ts b/src/i18n/locales/ja-JP.ts index d6bae891..d5f0c782 100644 --- a/src/i18n/locales/ja-JP.ts +++ b/src/i18n/locales/ja-JP.ts @@ -172,7 +172,7 @@ export const jaJP: LanguagePack = { 'ui.extensions': 'Extensions', 'ui.field': 'Field', 'ui.file': 'File', - 'ui.fileFormats': 'File Formats...', + 'ui.fileFormats': 'ファイル形式', 'ui.fileNames': 'File Names', 'ui.fileVersion': 'File Version', 'ui.files': 'Files', @@ -228,7 +228,7 @@ export const jaJP: LanguagePack = { 'ui.saveWorkspaceAs': 'ワークスペースに名前を付けて保存...', 'ui.closeTab': 'タブを閉じる', 'ui.exit': '終了', - 'ui.options': 'オプション...', + 'ui.options': 'オプション', 'ui.exportSettings': '設定をエクスポート...', 'ui.importSettings': '設定をインポート...', 'ui.restoreFactoryDefaults': '工場出荷時の設定に戻す...', @@ -281,9 +281,25 @@ export const jaJP: LanguagePack = { 'ui.manage': 'Manage', 'ui.manual': 'Manual', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - 'Manage matching rules, default views, and rule references.', + 'ファイル種類の開き方と使う比較ビューを選びます。', 'ui.manageRemoteEndpointsAndCredentialReferences': - 'Manage remote endpoints and credential references.', + '保存済みのリモートサーバーやクラウドアカウントを追加・編集します。', + 'ui.optionsPageSubtitle': + 'アプリ全体の既定値です。セッション設定は開いているセッションのルールだけを変更します。', + 'ui.optionsClusterHint': + '形式はファイルの開き方、プロファイルはリモート接続、レポートは書き出し既定です。セッションごとの比較ルールはセッション設定にあります。', + 'ui.optionsAutoSaveHint': + '編集するとすぐ保存されます。工場出荷時の既定に戻すはTweaksにあります。', + 'ui.formatDefinitionsHint': + '拡張子をテキスト・Hex・表などのビューに対応付ける名前付きルールです。', + 'ui.connectionProfilesHint': + 'フォルダー比較パスで使う保存済み SFTP・クラウドなどのリモート端点です。', + 'ui.fileFormatsPageHint': + '形式はファイル種類ごとにどの比較ビューを開くかを決めます。定義を編集したら保存してください。', + 'ui.remoteProfilesPageHint': + 'リモートサーバーやクラウドアカウントを保存し、フォルダー比較パスの参照時に選びます。', + 'ui.remoteProfilesEmpty': + 'プロファイルがありません。新規で SFTP / FTP / クラウドを追加してください。', 'ui.manualMappingsOverrideAutomaticNameMatches': 'Manual mappings override automatic name matches.', 'ui.media': 'Media', @@ -362,7 +378,7 @@ export const jaJP: LanguagePack = { 'ui.productVersion': 'Product Version', 'ui.profileCountLabel': 'profiles', 'ui.profileDetails': 'Profile Details', - 'ui.profiles': 'Profiles...', + 'ui.profiles': 'プロファイル', 'ui.profileStore': 'Profile store', 'ui.protocol': 'Protocol', 'ui.quickCompare': 'Quick Compare', @@ -1399,7 +1415,7 @@ export const jaJP: LanguagePack = { 'ui.reportIncludeIdentical': 'フォルダーレポートに同一項目を含める', 'ui.reportIncludeIdenticalHint': 'オフにすると、同一の行をフォルダー比較レポートから省略します。', - 'ui.reportIncludeOrphans': 'フォルダーレポートに孤立項目を含める', + 'ui.reportIncludeOrphans': 'フォルダーレポートに片側のみの項目を含める', 'ui.reportIncludeOrphansHint': 'オフにすると、左のみ/右のみの行をフォルダー比較レポートから省略します。', 'ui.showMillisecondsInTimestamps': 'タイムスタンプにミリ秒を表示', diff --git a/src/i18n/locales/ko-KR.ts b/src/i18n/locales/ko-KR.ts index 0c54092e..56786cc9 100644 --- a/src/i18n/locales/ko-KR.ts +++ b/src/i18n/locales/ko-KR.ts @@ -150,7 +150,7 @@ export const koKR: LanguagePack = { 'ui.extensions': '확장', 'ui.field': '필드', 'ui.file': '파일', - 'ui.fileFormats': '파일 형식...', + 'ui.fileFormats': '파일 형식', 'ui.fileNames': '파일 이름', 'ui.fileVersion': '파일 버전', 'ui.find': '찾다', @@ -198,7 +198,7 @@ export const koKR: LanguagePack = { 'ui.saveWorkspaceAs': '작업 공간을 다른 이름으로 저장...', 'ui.closeTab': '탭 닫기', 'ui.exit': '종료', - 'ui.options': '옵션...', + 'ui.options': '옵션', 'ui.exportSettings': '설정 내보내기...', 'ui.importSettings': '설정 가져오기...', 'ui.restoreFactoryDefaults': '공장 기본값 복원...', @@ -237,8 +237,20 @@ export const koKR: LanguagePack = { 'ui.m': 'M', 'ui.manage': '관리하다', 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': - '일치 규칙, 기본 보기 및 규칙 참조를 관리합니다.', - 'ui.manageRemoteEndpointsAndCredentialReferences': '원격 끝점 및 자격 증명 참조를 관리합니다.', + '파일 형식을 어떻게 열고 어떤 비교 보기를 쓸지 정합니다.', + 'ui.manageRemoteEndpointsAndCredentialReferences': + '저장된 원격 서버와 클라우드 계정을 추가하거나 편집합니다.', + 'ui.optionsPageSubtitle': '앱 전역 기본값입니다. 세션 설정은 열린 세션의 규칙만 바꿉니다.', + 'ui.optionsClusterHint': + '형식은 파일 열기 방식을, 프로필은 원격 연결을, 보고서는 내보내기 기본값을 다룹니다. 세션별 비교 규칙은 세션 설정에 있습니다.', + 'ui.optionsAutoSaveHint': '편집하면 바로 저장됩니다. 공장 기본값 복원은 미세 조정에 있습니다.', + 'ui.formatDefinitionsHint': '확장자를 텍스트·헥스·표 등 보기에 연결하는 이름 있는 규칙입니다.', + 'ui.connectionProfilesHint': '폴더 비교 경로에 쓰는 저장된 SFTP·클라우드 등 원격 끝점입니다.', + 'ui.fileFormatsPageHint': + '형식은 파일 종류마다 어떤 비교 보기를 열지 정합니다. 정의를 바꾼 뒤 저장하세요.', + 'ui.remoteProfilesPageHint': + '원격 서버와 클라우드 계정을 저장한 뒤 폴더 비교 경로를 찾을 때 고르세요.', + 'ui.remoteProfilesEmpty': '프로필이 없습니다. 새로 만들기로 SFTP·FTP·클라우드를 추가하세요.', 'ui.manualMappingsOverrideAutomaticNameMatches': '수동 매핑은 자동 이름 일치를 재정의합니다.', 'ui.mediaCompare': '미디어 비교', 'ui.mergeConflicts': '병합 충돌', @@ -294,7 +306,7 @@ export const koKR: LanguagePack = { 'ui.productVersion': '제품 버전', 'ui.profileCountLabel': '프로필', 'ui.profileDetails': '프로필 세부정보', - 'ui.profiles': '프로필...', + 'ui.profiles': '프로필', 'ui.profileStore': '프로필 스토어', 'ui.protocol': '규약', 'ui.quickCompare': '빠른 비교', @@ -1383,7 +1395,7 @@ export const koKR: LanguagePack = { 'ui.profilePassiveFtpHint': '여기에 저장하는 새 FTP / FTPS 프로필에 적용됩니다.', 'ui.reportIncludeIdentical': '폴더 보고서에 동일 항목 포함', 'ui.reportIncludeIdenticalHint': '끄면 폴더 비교 보고서에서 동일 행을 생략합니다.', - 'ui.reportIncludeOrphans': '폴더 보고서에 고아 항목 포함', + 'ui.reportIncludeOrphans': '폴더 보고서에 한쪽에만 있는 항목 포함', 'ui.reportIncludeOrphansHint': '끄면 폴더 비교 보고서에서 왼쪽 전용/오른쪽 전용 행을 생략합니다.', 'ui.showMillisecondsInTimestamps': '타임스탬프에 밀리초 표시', diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index be16d0bc..d3d2909f 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -142,7 +142,7 @@ export const zhCN: LanguagePack = { 'ui.extensions': '扩展名', 'ui.field': '字段', 'ui.file': '文件', - 'ui.fileFormats': '文件格式...', + 'ui.fileFormats': '文件格式', 'ui.fileNames': '文件名', 'ui.fileVersion': '文件版本', 'ui.find': '查找', @@ -190,7 +190,7 @@ export const zhCN: LanguagePack = { 'ui.saveWorkspaceAs': '工作区另存为...', 'ui.closeTab': '关闭标签页', 'ui.exit': '退出', - 'ui.options': '选项...', + 'ui.options': '选项', 'ui.exportSettings': '导出设置...', 'ui.importSettings': '导入设置...', 'ui.restoreFactoryDefaults': '恢复出厂默认值...', @@ -228,8 +228,18 @@ export const zhCN: LanguagePack = { 'ui.loadTeamSessionsAsReadOnlyEntries': '将团队会话加载为只读条目。', 'ui.m': '移', 'ui.manage': '管理', - 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': '管理匹配规则、默认视图和规则引用。', - 'ui.manageRemoteEndpointsAndCredentialReferences': '管理远程端点和凭据引用。', + 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': + '选择文件类型如何打开,以及使用哪种比较视图。', + 'ui.manageRemoteEndpointsAndCredentialReferences': '添加或编辑已保存的远程服务器和云账户。', + 'ui.optionsPageSubtitle': '应用范围的默认值。会话设置仅更改当前打开会话的规则。', + 'ui.optionsClusterHint': + '格式控制文件如何打开。配置文件是远程连接。报告设置导出默认值。按会话的比较规则在会话设置中。', + 'ui.optionsAutoSaveHint': '编辑时自动保存。恢复出厂默认值在“调整”中。', + 'ui.formatDefinitionsHint': '按扩展名匹配到文本、十六进制、表格等视图的命名规则。', + 'ui.connectionProfilesHint': '文件夹比较路径使用的已保存 SFTP、云和其他远程端点。', + 'ui.fileFormatsPageHint': '格式决定每种文件类型打开哪种比较视图。编辑定义后请保存。', + 'ui.remoteProfilesPageHint': '保存远程服务器和云账户,然后在浏览文件夹比较路径时选择它们。', + 'ui.remoteProfilesEmpty': '还没有配置文件。点“新建”添加 SFTP、FTP 或云连接。', 'ui.manualMappingsOverrideAutomaticNameMatches': '手动映射会覆盖自动名称匹配。', 'ui.mediaCompare': '媒体比较', 'ui.mergeConflicts': '合并冲突', @@ -285,7 +295,7 @@ export const zhCN: LanguagePack = { 'ui.productVersion': '产品版本', 'ui.profileCountLabel': '个配置', 'ui.profileDetails': '配置详情', - 'ui.profiles': '配置...', + 'ui.profiles': '配置文件', 'ui.profileStore': '配置存储', 'ui.protocol': '协议', 'ui.quickCompare': '快速比较', @@ -1316,7 +1326,7 @@ export const zhCN: LanguagePack = { 'ui.profilePassiveFtpHint': '应用于本机新保存的 FTP / FTPS 配置。', 'ui.reportIncludeIdentical': '文件夹报告包含相同项', 'ui.reportIncludeIdenticalHint': '关闭后,文件夹比较报告导出将省略状态为相同的行。', - 'ui.reportIncludeOrphans': '文件夹报告包含孤立项', + 'ui.reportIncludeOrphans': '在文件夹报告中包含仅一侧存在的项', 'ui.reportIncludeOrphansHint': '关闭后,文件夹比较报告导出将省略仅左侧和仅右侧的行。', 'ui.showMillisecondsInTimestamps': '时间戳显示毫秒', 'ui.showMillisecondsInTimestampsHint': '在路径栏和文件夹修改时间中显示秒与毫秒。', diff --git a/src/i18n/locales/zh-TW.ts b/src/i18n/locales/zh-TW.ts index 15783386..e0736e8b 100644 --- a/src/i18n/locales/zh-TW.ts +++ b/src/i18n/locales/zh-TW.ts @@ -143,7 +143,7 @@ export const zhTW: LanguagePack = { 'ui.extensions': '副檔名', 'ui.field': '欄位', 'ui.file': '檔案', - 'ui.fileFormats': '檔案格式...', + 'ui.fileFormats': '檔案格式', 'ui.fileNames': '檔案名稱', 'ui.fileVersion': '檔案版本', 'ui.find': '尋找', @@ -191,7 +191,7 @@ export const zhTW: LanguagePack = { 'ui.saveWorkspaceAs': '工作區另存新檔...', 'ui.closeTab': '關閉分頁', 'ui.exit': '結束', - 'ui.options': '選項...', + 'ui.options': '選項', 'ui.exportSettings': '匯出設定...', 'ui.importSettings': '匯入設定...', 'ui.restoreFactoryDefaults': '還原原廠預設值...', @@ -229,8 +229,18 @@ export const zhTW: LanguagePack = { 'ui.loadTeamSessionsAsReadOnlyEntries': '將團隊工作階段載入為唯讀項目。', 'ui.m': '移', 'ui.manage': '管理', - 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': '管理比對規則、預設檢視和規則參照。', - 'ui.manageRemoteEndpointsAndCredentialReferences': '管理遠端端點和憑證參照。', + 'ui.manageMatchingRulesDefaultViewsAndRuleReferences': + '選擇檔案類型如何開啟,以及使用哪種比較檢視。', + 'ui.manageRemoteEndpointsAndCredentialReferences': '新增或編輯已儲存的遠端伺服器與雲端帳戶。', + 'ui.optionsPageSubtitle': '應用程式範圍的預設值。工作階段設定只會變更目前開啟工作階段的規則。', + 'ui.optionsClusterHint': + '格式控制檔案如何開啟。設定檔是遠端連線。報告設定匯出預設值。依工作階段的比較規則在工作階段設定中。', + 'ui.optionsAutoSaveHint': '編輯時自動儲存。還原原廠預設值在「微調」中。', + 'ui.formatDefinitionsHint': '依副檔名對應到文字、十六進位、表格等檢視的命名規則。', + 'ui.connectionProfilesHint': '資料夾比較路徑使用的已儲存 SFTP、雲端與其他遠端端點。', + 'ui.fileFormatsPageHint': '格式決定每種檔案類型開啟哪種比較檢視。編輯定義後請儲存。', + 'ui.remoteProfilesPageHint': '儲存遠端伺服器與雲端帳戶,然後在瀏覽資料夾比較路徑時選擇它們。', + 'ui.remoteProfilesEmpty': '尚無設定檔。按「新增」以加入 SFTP、FTP 或雲端連線。', 'ui.manualMappingsOverrideAutomaticNameMatches': '手動對應會覆寫自動名稱比對。', 'ui.mediaCompare': '媒體比較', 'ui.mergeConflicts': '合併衝突', @@ -286,7 +296,7 @@ export const zhTW: LanguagePack = { 'ui.productVersion': '產品版本', 'ui.profileCountLabel': '個設定檔', 'ui.profileDetails': '設定檔詳細資訊', - 'ui.profiles': '設定檔...', + 'ui.profiles': '設定檔', 'ui.profileStore': '設定檔儲存區', 'ui.protocol': '通訊協定', 'ui.quickCompare': '快速比較', @@ -1318,7 +1328,7 @@ export const zhTW: LanguagePack = { 'ui.profilePassiveFtpHint': '套用到本機新儲存的 FTP / FTPS 設定檔。', 'ui.reportIncludeIdentical': '資料夾報告包含相同項目', 'ui.reportIncludeIdenticalHint': '關閉後,資料夾比較報告匯出會省略狀態為相同的列。', - 'ui.reportIncludeOrphans': '資料夾報告包含孤立項目', + 'ui.reportIncludeOrphans': '在資料夾報告中包含僅一側存在的項目', 'ui.reportIncludeOrphansHint': '關閉後,資料夾比較報告匯出會省略僅左側與僅右側的列。', 'ui.showMillisecondsInTimestamps': '時間戳顯示毫秒', 'ui.showMillisecondsInTimestampsHint': '在路徑列與資料夾修改時間中顯示秒與毫秒。', diff --git a/src/views/FileFormatView.test.ts b/src/views/FileFormatView.test.ts index 71243b07..09c9a21a 100644 --- a/src/views/FileFormatView.test.ts +++ b/src/views/FileFormatView.test.ts @@ -12,6 +12,14 @@ describe('FileFormatView', () => { localStorage.removeItem(fileFormatsStorageKey) }) + it('shows a plain Formats page hint for first-time users', () => { + const wrapper = mount(FileFormatView) + + expect(wrapper.find('[data-testid="file-formats-page-hint"]').text()).toContain( + 'compare view opens', + ) + }) + it('renders built-in file formats and selected format details', () => { const wrapper = mount(FileFormatView) diff --git a/src/views/FileFormatView.vue b/src/views/FileFormatView.vue index 2d168dcc..58eb4197 100644 --- a/src/views/FileFormatView.vue +++ b/src/views/FileFormatView.vue @@ -315,8 +315,14 @@ function setImportStatus(key: string, params: Record =
-

{{ $t('ui.settings') }}

+

{{ $t('ui.options') }}

{{ $t('ui.fileFormats') }}

+

+ {{ $t('ui.fileFormatsPageHint') }} +

{{ formats.length }} @@ -531,6 +537,13 @@ function setImportStatus(key: string, params: Record = gap: 4px; } +.page-hint { + margin: 4px 0 0; + color: var(--app-text-muted); + font-size: 12px; + line-height: 1.4; +} + .eyebrow { margin: 0; color: var(--app-text-muted); diff --git a/src/views/RemoteProfileView.test.ts b/src/views/RemoteProfileView.test.ts index 21bc8682..2d7be7b2 100644 --- a/src/views/RemoteProfileView.test.ts +++ b/src/views/RemoteProfileView.test.ts @@ -50,6 +50,19 @@ describe('RemoteProfileView', () => { vi.mocked(deleteRemoteProfile).mockRejectedValue(new Error('no backend')) }) + it('shows a plain Profiles page hint and empty state', async () => { + const wrapper = mount(RemoteProfileView, { + global: { plugins: [createPinia()] }, + }) + + await flushPromises() + + expect(wrapper.text()).toContain('Save remote servers') + expect(wrapper.find('[data-testid="remote-profiles-empty"]').text()).toContain( + 'No profiles yet', + ) + }) + it('loads persisted local profiles and does not invent demo hosts', async () => { saveLocalRemoteProfiles([ { diff --git a/src/views/RemoteProfileView.vue b/src/views/RemoteProfileView.vue index e56a6eab..4a756d1b 100644 --- a/src/views/RemoteProfileView.vue +++ b/src/views/RemoteProfileView.vue @@ -618,8 +618,8 @@ function credentialKindLabel(kind: CredentialReferenceKind): string {