Fixed missing translation in Sources
This commit is contained in:
parent
9da4403bdf
commit
56a744d896
@ -17,6 +17,14 @@ Version numbers follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html
|
||||
|
||||
- **SFTP entry in export SOURCE_MAP** — Excel and Article 30 exports render SFTP sources as "🔒 SFTP" with a purple tint (`EDE9F7`), consistent with the existing per-source tab and summary table logic.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **File source form placeholders untranslated** — all nine placeholder texts in the Add source and Edit source forms (source name, path, SMB host/user, SFTP host/user/path, passphrase) were hardcoded English strings. Nine new `data-i18n-placeholder` keys added to `en.json`, `da.json`, and `de.json`; all 12 affected `<input>` elements now carry `data-i18n-placeholder` attributes.
|
||||
|
||||
- **"Name" and "Auth" labels untranslated in SFTP form** — the source-name label and the Auth toggle label in the add-source panel had no `data-i18n` attributes. Added keys `m365_fsrc_name` (DA: "Navn") and `m365_fsrc_sftp_auth` (same across languages). The name label used an inner `<span data-i18n>` to preserve the required-field `*` indicator, which would have been clobbered by a `data-i18n` on the outer `<label>` element. The same clobber bug was fixed for the `m365_fsrc_label` usage in the edit form.
|
||||
|
||||
- **Password field placeholder showed "Stored in OS keychain" in English** — added translation key `m365_fsrc_pw_keychain_placeholder` (DA: "Gemt i OS-nøglering") and applied `data-i18n-placeholder` to the three password inputs across both forms (SMB add, SFTP add, SMB edit).
|
||||
|
||||
---
|
||||
|
||||
## [1.6.24] — 2026-04-25
|
||||
|
||||
12
lang/da.json
12
lang/da.json
@ -598,12 +598,15 @@
|
||||
"m365_file_sources_empty": "Ingen filkilder konfigureret. Tilføj en lokal mappe eller netværksdeling nedenfor.",
|
||||
"m365_file_sources_add": "Tilføj kilde",
|
||||
"m365_fsrc_label": "Betegnelse",
|
||||
"m365_fsrc_name": "Navn",
|
||||
"m365_fsrc_sftp_auth": "Auth",
|
||||
"m365_fsrc_path": "Sti",
|
||||
"m365_fsrc_smb_detected": "SMB/CIFS-netværksdeling registreret",
|
||||
"m365_fsrc_smb_host": "SMB-vært",
|
||||
"m365_fsrc_smb_user": "Brugernavn",
|
||||
"m365_fsrc_smb_pw": "Adgangskode",
|
||||
"m365_fsrc_smb_pw_hint": "Adgangskoden gemmes i nøglekæden — aldrig i en fil.",
|
||||
"m365_fsrc_pw_keychain_placeholder": "Gemt i OS-nøglering",
|
||||
"m365_fsrc_add_btn": "Tilføj",
|
||||
"m365_fsrc_saved": "Kilde gemt",
|
||||
"m365_fsrc_saving": "Gemmer...",
|
||||
@ -625,6 +628,15 @@
|
||||
"m365_fsrc_sftp_passphrase": "Adgangssætning (hvis nøglen er krypteret)",
|
||||
"m365_fsrc_sftp_passphrase_hint": "Adgangssætningen gemmes i OS-nøgleringe — aldrig i en fil.",
|
||||
"m365_fsrc_sftp_not_installed": "paramiko er ikke installeret — kør: pip install paramiko",
|
||||
"m365_fsrc_name_placeholder": "f.eks. Lærerfiler, NAS-arkiv",
|
||||
"m365_fsrc_path_placeholder": "~/Dokumenter eller //nas/shares",
|
||||
"m365_fsrc_smb_host_placeholder": "nas.skole.dk",
|
||||
"m365_fsrc_smb_user_placeholder": "DOMÆNE\\brugernavn",
|
||||
"m365_fsrc_smb_user_edit_placeholder": "DOMÆNE\\brugernavn eller brugernavn",
|
||||
"m365_fsrc_sftp_host_placeholder": "sftp.skole.dk",
|
||||
"m365_fsrc_sftp_user_placeholder": "backup_user",
|
||||
"m365_fsrc_sftp_path_placeholder": "/var/data",
|
||||
"m365_fsrc_sftp_passphrase_placeholder": "Lad stå tomt hvis nøglen ikke er krypteret",
|
||||
"m365_fsrc_sftp_host_required": "SFTP-host er påkrævet.",
|
||||
"m365_fsrc_sftp_user_required": "SFTP-brugernavn er påkrævet.",
|
||||
"m365_fsrc_scan_btn": "Scan",
|
||||
|
||||
12
lang/de.json
12
lang/de.json
@ -598,12 +598,15 @@
|
||||
"m365_file_sources_empty": "Keine Dateiquellen konfiguriert. Fügen Sie unten einen lokalen Ordner oder eine Netzwerkfreigabe hinzu.",
|
||||
"m365_file_sources_add": "Quelle hinzufügen",
|
||||
"m365_fsrc_label": "Bezeichnung",
|
||||
"m365_fsrc_name": "Name",
|
||||
"m365_fsrc_sftp_auth": "Auth",
|
||||
"m365_fsrc_path": "Pfad",
|
||||
"m365_fsrc_smb_detected": "SMB/CIFS-Netzwerkfreigabe erkannt",
|
||||
"m365_fsrc_smb_host": "SMB-Host",
|
||||
"m365_fsrc_smb_user": "Benutzername",
|
||||
"m365_fsrc_smb_pw": "Passwort",
|
||||
"m365_fsrc_smb_pw_hint": "Das Passwort wird im OS-Schlüsselbund gespeichert — nie in einer Datei.",
|
||||
"m365_fsrc_pw_keychain_placeholder": "Im OS-Schlüsselbund gespeichert",
|
||||
"m365_fsrc_add_btn": "Hinzufügen",
|
||||
"m365_fsrc_saved": "Quelle gespeichert",
|
||||
"m365_fsrc_saving": "Speichern...",
|
||||
@ -625,6 +628,15 @@
|
||||
"m365_fsrc_sftp_passphrase": "Passphrase (wenn Schlüssel verschlüsselt ist)",
|
||||
"m365_fsrc_sftp_passphrase_hint": "Passphrase wird im OS-Schlüsselbund gespeichert — nie in einer Datei.",
|
||||
"m365_fsrc_sftp_not_installed": "paramiko nicht installiert — ausführen: pip install paramiko",
|
||||
"m365_fsrc_name_placeholder": "z.B. Lehrerdateien, NAS-Archiv",
|
||||
"m365_fsrc_path_placeholder": "~/Dokumente oder //nas/freigaben",
|
||||
"m365_fsrc_smb_host_placeholder": "nas.schule.de",
|
||||
"m365_fsrc_smb_user_placeholder": "DOMÄNE\\Benutzername",
|
||||
"m365_fsrc_smb_user_edit_placeholder": "DOMÄNE\\Benutzername oder Benutzername",
|
||||
"m365_fsrc_sftp_host_placeholder": "sftp.schule.de",
|
||||
"m365_fsrc_sftp_user_placeholder": "backup_user",
|
||||
"m365_fsrc_sftp_path_placeholder": "/var/data",
|
||||
"m365_fsrc_sftp_passphrase_placeholder": "Leer lassen, wenn der Schlüssel nicht verschlüsselt ist",
|
||||
"m365_fsrc_sftp_host_required": "SFTP-Host ist erforderlich.",
|
||||
"m365_fsrc_sftp_user_required": "SFTP-Benutzername ist erforderlich.",
|
||||
"m365_fsrc_scan_btn": "Scannen",
|
||||
|
||||
12
lang/en.json
12
lang/en.json
@ -598,12 +598,15 @@
|
||||
"m365_file_sources_empty": "No file sources configured. Add a local folder or network share below.",
|
||||
"m365_file_sources_add": "Add source",
|
||||
"m365_fsrc_label": "Label",
|
||||
"m365_fsrc_name": "Name",
|
||||
"m365_fsrc_sftp_auth": "Auth",
|
||||
"m365_fsrc_path": "Path",
|
||||
"m365_fsrc_smb_detected": "SMB/CIFS network share detected",
|
||||
"m365_fsrc_smb_host": "SMB host",
|
||||
"m365_fsrc_smb_user": "Username",
|
||||
"m365_fsrc_smb_pw": "Password",
|
||||
"m365_fsrc_smb_pw_hint": "Password is saved to the OS keychain — never stored in a file.",
|
||||
"m365_fsrc_pw_keychain_placeholder": "Stored in OS keychain",
|
||||
"m365_fsrc_add_btn": "Add",
|
||||
"m365_fsrc_saved": "Source saved",
|
||||
"m365_fsrc_saving": "Saving...",
|
||||
@ -625,6 +628,15 @@
|
||||
"m365_fsrc_sftp_passphrase": "Passphrase (if key is encrypted)",
|
||||
"m365_fsrc_sftp_passphrase_hint": "Passphrase is saved to the OS keychain — never stored in a file.",
|
||||
"m365_fsrc_sftp_not_installed": "paramiko not installed — run: pip install paramiko",
|
||||
"m365_fsrc_name_placeholder": "e.g. Teacher files, NAS archive",
|
||||
"m365_fsrc_path_placeholder": "~/Documents or //nas/shares",
|
||||
"m365_fsrc_smb_host_placeholder": "nas.school.dk",
|
||||
"m365_fsrc_smb_user_placeholder": "DOMAIN\\username",
|
||||
"m365_fsrc_smb_user_edit_placeholder": "DOMAIN\\username or username",
|
||||
"m365_fsrc_sftp_host_placeholder": "sftp.school.dk",
|
||||
"m365_fsrc_sftp_user_placeholder": "backup_user",
|
||||
"m365_fsrc_sftp_path_placeholder": "/var/data",
|
||||
"m365_fsrc_sftp_passphrase_placeholder": "Leave blank if key has no passphrase",
|
||||
"m365_fsrc_sftp_host_required": "SFTP host is required.",
|
||||
"m365_fsrc_sftp_user_required": "SFTP username is required.",
|
||||
"m365_fsrc_scan_btn": "Scan",
|
||||
|
||||
@ -1230,27 +1230,27 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
</div>
|
||||
<input type="hidden" id="srcFileSourceType" value="local">
|
||||
<div class="fsrc-form-row">
|
||||
<label>Name <span style="color:var(--accent)">*</span></label>
|
||||
<input id="srcFileLabel" type="text" placeholder="e.g. Teacher files, NAS archive" maxlength="80" autocomplete="off">
|
||||
<label><span data-i18n="m365_fsrc_name">Name</span> <span style="color:var(--accent)">*</span></label>
|
||||
<input id="srcFileLabel" type="text" data-i18n-placeholder="m365_fsrc_name_placeholder" placeholder="e.g. Teacher files, NAS archive" maxlength="80" autocomplete="off">
|
||||
</div>
|
||||
<!-- Local / SMB path field -->
|
||||
<div id="srcFilePathRow" class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_path">Path</label>
|
||||
<input id="srcFilePath" type="text" placeholder="~/Documents or //nas/shares" oninput="srcFileDetectSmb(); srcFileAutoName()">
|
||||
<input id="srcFilePath" type="text" data-i18n-placeholder="m365_fsrc_path_placeholder" placeholder="~/Documents or //nas/shares" oninput="srcFileDetectSmb(); srcFileAutoName()">
|
||||
</div>
|
||||
<div id="srcFileSmbFields" style="display:none;flex-direction:column;gap:6px">
|
||||
<div style="font-size:10px;color:var(--accent)" data-i18n="m365_fsrc_smb_detected">SMB/CIFS network share detected</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_host">SMB host</label>
|
||||
<input id="srcFileSmbHost" type="text" placeholder="nas.school.dk">
|
||||
<input id="srcFileSmbHost" type="text" data-i18n-placeholder="m365_fsrc_smb_host_placeholder" placeholder="nas.school.dk">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_user">Username</label>
|
||||
<input id="srcFileSmbUser" type="text" placeholder="DOMAIN\\username">
|
||||
<input id="srcFileSmbUser" type="text" data-i18n-placeholder="m365_fsrc_smb_user_placeholder" placeholder="DOMAIN\\username">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_pw">Password</label>
|
||||
<input id="srcFileSmbPw" type="password" placeholder="Stored in OS keychain">
|
||||
<input id="srcFileSmbPw" type="password" data-i18n-placeholder="m365_fsrc_pw_keychain_placeholder" placeholder="Stored in OS keychain">
|
||||
</div>
|
||||
<div style="font-size:10px;color:var(--muted)" data-i18n="m365_fsrc_smb_pw_hint">Saved to OS keychain — never stored in a file.</div>
|
||||
</div>
|
||||
@ -1258,7 +1258,7 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
<div id="srcFileSftpFields" style="display:none;flex-direction:column;gap:6px">
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_host">SFTP host</label>
|
||||
<input id="srcFileSftpHost" type="text" placeholder="sftp.school.dk" oninput="srcFileAutoNameSftp()">
|
||||
<input id="srcFileSftpHost" type="text" data-i18n-placeholder="m365_fsrc_sftp_host_placeholder" placeholder="sftp.school.dk" oninput="srcFileAutoNameSftp()">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_port">Port</label>
|
||||
@ -1266,15 +1266,15 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_user">Username</label>
|
||||
<input id="srcFileSftpUser" type="text" placeholder="backup_user">
|
||||
<input id="srcFileSftpUser" type="text" data-i18n-placeholder="m365_fsrc_sftp_user_placeholder" placeholder="backup_user">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_remote_path">Remote path</label>
|
||||
<input id="srcFileSftpPath" type="text" placeholder="/var/data" value="/">
|
||||
<input id="srcFileSftpPath" type="text" data-i18n-placeholder="m365_fsrc_sftp_path_placeholder" placeholder="/var/data" value="/">
|
||||
</div>
|
||||
<!-- Auth type toggle -->
|
||||
<div class="fsrc-form-row">
|
||||
<label>Auth</label>
|
||||
<label data-i18n="m365_fsrc_sftp_auth">Auth</label>
|
||||
<div style="display:flex;background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden">
|
||||
<button type="button" id="srcSftpAuthPw" onclick="srcFileSftpAuthSelect('password')" style="flex:1;border:none;padding:3px 8px;font-size:11px;cursor:pointer;background:var(--accent);color:#fff" data-i18n="m365_fsrc_sftp_auth_password">Password</button>
|
||||
<button type="button" id="srcSftpAuthKey" onclick="srcFileSftpAuthSelect('key')" style="flex:1;border:none;border-left:1px solid var(--border);padding:3px 8px;font-size:11px;cursor:pointer;background:none;color:var(--muted)" data-i18n="m365_fsrc_sftp_auth_key">SSH key</button>
|
||||
@ -1285,7 +1285,7 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
<div id="srcSftpPwFields">
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_pw">Password</label>
|
||||
<input id="srcFileSftpPw" type="password" placeholder="Stored in OS keychain">
|
||||
<input id="srcFileSftpPw" type="password" data-i18n-placeholder="m365_fsrc_pw_keychain_placeholder" placeholder="Stored in OS keychain">
|
||||
</div>
|
||||
<div style="font-size:10px;color:var(--muted)" data-i18n="m365_fsrc_sftp_pw_hint">Password is saved to the OS keychain — never stored in a file.</div>
|
||||
</div>
|
||||
@ -1301,7 +1301,7 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
<input type="hidden" id="srcFileSftpKeyPath" value="">
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_sftp_passphrase">Passphrase</label>
|
||||
<input id="srcFileSftpPassphrase" type="password" placeholder="Leave blank if key has no passphrase">
|
||||
<input id="srcFileSftpPassphrase" type="password" data-i18n-placeholder="m365_fsrc_sftp_passphrase_placeholder" placeholder="Leave blank if key has no passphrase">
|
||||
</div>
|
||||
<div style="font-size:10px;color:var(--muted)" data-i18n="m365_fsrc_sftp_passphrase_hint">Passphrase is saved to the OS keychain — never stored in a file.</div>
|
||||
</div>
|
||||
@ -1336,26 +1336,26 @@ document.addEventListener('DOMContentLoaded', applyI18n);
|
||||
<div class="fsrc-form" id="fsrcForm">
|
||||
<div style="font-size:11px;font-weight:600;color:var(--text)" data-i18n="m365_file_sources_add">Add source</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_label">Name <span style="color:var(--accent)">*</span></label>
|
||||
<input id="fsrcLabel" type="text" placeholder="e.g. Teacher files, NAS archive" maxlength="80" autocomplete="off">
|
||||
<label><span data-i18n="m365_fsrc_name">Name</span> <span style="color:var(--accent)">*</span></label>
|
||||
<input id="fsrcLabel" type="text" data-i18n-placeholder="m365_fsrc_name_placeholder" placeholder="e.g. Teacher files, NAS archive" maxlength="80" autocomplete="off">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_path">Path</label>
|
||||
<input id="fsrcPath" type="text" placeholder="~/Documents or //nas/shares" oninput="fsrcDetectSmb(); fsrcAutoName()">
|
||||
<input id="fsrcPath" type="text" data-i18n-placeholder="m365_fsrc_path_placeholder" placeholder="~/Documents or //nas/shares" oninput="fsrcDetectSmb(); fsrcAutoName()">
|
||||
</div>
|
||||
<div id="fsrcSmbFields" class="fsrc-smb-fields" style="display:none;flex-direction:column;gap:6px">
|
||||
<div style="font-size:10px;color:var(--accent);margin:-2px 0 2px" data-i18n="m365_fsrc_smb_detected">SMB/CIFS network share detected</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_host">SMB host</label>
|
||||
<input id="fsrcSmbHost" type="text" placeholder="nas.school.dk">
|
||||
<input id="fsrcSmbHost" type="text" data-i18n-placeholder="m365_fsrc_smb_host_placeholder" placeholder="nas.school.dk">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_user">Username</label>
|
||||
<input id="fsrcSmbUser" type="text" placeholder="DOMAIN\\username or username">
|
||||
<input id="fsrcSmbUser" type="text" data-i18n-placeholder="m365_fsrc_smb_user_edit_placeholder" placeholder="DOMAIN\\username or username">
|
||||
</div>
|
||||
<div class="fsrc-form-row">
|
||||
<label data-i18n="m365_fsrc_smb_pw">Password</label>
|
||||
<input id="fsrcSmbPw" type="password" placeholder="Stored in OS keychain">
|
||||
<input id="fsrcSmbPw" type="password" data-i18n-placeholder="m365_fsrc_pw_keychain_placeholder" placeholder="Stored in OS keychain">
|
||||
</div>
|
||||
<div style="font-size:10px;color:var(--muted)" data-i18n="m365_fsrc_smb_pw_hint">Password is saved to the OS keychain — never stored in a file.</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user