i18n slice 1 release C: storage, sharing, sign-in, guest, catch-all and debug pages in English
- 11 templates converted (storage, storage_network, storage_init, storage_attach, sharing, login,
claim, launcher_shared, launcher_share_password, catchall, debug); every key translated.
Six ASCII-only Hungarian JS fragments the extractor missed were found by eye and converted by hand
(", majd a(z)", "FIGYELEM:", "jelenlegi:", "mp", "p", " db").
- login, claim, both guest share pages and the catch-all render through executeTemplateLang (the
household language; no session CSRF, no escrow reminder). renderLogin now takes the request.
- Page titles: TitleKey for storage, network storage, the two drive wizards and sharing.
TestHandlerTitleKeysMatchHungarianTitle pins handler literal == hu.json value for every TitleKey.
- Tests: TestDirectRenderHandlersFollowLanguage (real routes, en + hu),
TestI18nDirectRenderPagesHaveNoAdminChrome (escrow reminder due; none on the guest page).
- Fixture correction: the release C cases had invented page titles; the cases now carry the handlers'
real titles (and the wizard pages their real page name), and those 12 fixtures were RE-CAPTURED from
the unconverted templates at 0555091. The diff to the old fixtures is the <title> line (and the nav
highlight on the two wizard pages) only.
- i18n gate: HU_FORMAL_CEILING 12 -> 16 — four more „ön" forms in the converted copy, unchanged by rule (R-516).
Hungarian: byte-identical (TestI18nParity against fixtures from unconverted templates).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
{{template "layout_start" .}}
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Hálózati megosztás</h2>
|
||||
<h2>{{T "sharing.halozati_megosztas"}}</h2>
|
||||
</div>
|
||||
|
||||
{{if .Flash}}
|
||||
@@ -11,9 +11,7 @@
|
||||
|
||||
<div class="settings-card">
|
||||
<p class="settings-card-desc">
|
||||
A megosztott mappák a Windows Intézőben és a Mac Finderben jelennek meg, mintha egy hálózati
|
||||
meghajtó lennének. A megosztás <strong>csak az otthoni hálózaton</strong> érhető el — az
|
||||
internetről nem.
|
||||
{{T "sharing.a_megosztott_mappak_a_windows"}}
|
||||
</p>
|
||||
|
||||
<form method="POST" action="/sharing/enable">
|
||||
@@ -21,20 +19,19 @@
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" name="enabled" {{if .SMBEnabled}}checked{{end}}>
|
||||
Megosztás engedélyezése
|
||||
{{T "sharing.megosztas_engedelyezese"}}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="server_name">Kiszolgáló neve</label>
|
||||
<label for="server_name">{{T "sharing.kiszolgalo_neve"}}</label>
|
||||
<input type="text" id="server_name" name="server_name" class="form-control mono"
|
||||
value="{{.SMBServerName}}" maxlength="15" autocomplete="off">
|
||||
<div class="form-hint">
|
||||
Ezen a néven jelenik meg a gép a hálózaton (<span class="mono">\\{{.SMBServerName}}</span>).
|
||||
Legfeljebb 15 karakter: betű, szám, kötőjel, aláhúzás.
|
||||
{{T "sharing.ezen_a_neven_jelenik_meg"}}<span class="mono">\\{{.SMBServerName}}</span>{{T "sharing.legfeljebb_15_karakter_betu_szam"}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">Mentés</button>
|
||||
<button type="submit" class="btn btn-primary">{{T "sharing.mentes"}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -46,19 +43,19 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<span>Állapot:</span>
|
||||
<span>{{T "sharing.allapot"}}</span>
|
||||
{{if .SMBRunning}}
|
||||
<span class="badge badge-ok">fut</span>
|
||||
<span class="badge badge-ok">{{T "sharing.fut"}}</span>
|
||||
{{else}}
|
||||
<span class="badge badge-neutral">áll</span>
|
||||
<span class="badge badge-neutral">{{T "sharing.all"}}</span>
|
||||
{{end}}
|
||||
{{if and .SMBEnabled (not .SMBUserSet)}}
|
||||
<span class="badge badge-warn">először adj meg jelszót</span>
|
||||
<span class="badge badge-warn">{{T "sharing.eloszor_adj_meg_jelszot"}}</span>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="form-hint">
|
||||
Egyes hálózatokon a gép késve jelenik meg az eszközlistában. A
|
||||
<span class="mono">\\{{.SMBServerName}}</span> cím beírása a címsorba ilyenkor is működik.
|
||||
{{T "sharing.egyes_halozatokon_a_gep_kesve"}}
|
||||
<span class="mono">\\{{.SMBServerName}}</span> {{T "sharing.cim_beirasa_a_cimsorba_ilyenkor"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -69,62 +66,62 @@
|
||||
(DIAG-sharing-2026-07-20.md). The direct address is derived per render from the samba
|
||||
container's own netns and is absent whenever it cannot be read: no address beats a wrong one. -->
|
||||
<div class="settings-card">
|
||||
<h3>Csatlakozás a megosztáshoz</h3>
|
||||
<h3>{{T "sharing.csatlakozas_a_megosztashoz"}}</h3>
|
||||
<div class="form-hint">
|
||||
Windows: a Fájlkezelő címsorába: <span class="mono">\\{{.SMBServerName}}</span>
|
||||
{{T "sharing.windows_a_fajlkezelo_cimsoraba"}} <span class="mono">\\{{.SMBServerName}}</span>
|
||||
</div>
|
||||
<div class="form-hint">
|
||||
Mac: Finder → Ugrás → Csatlakozás a szerverhez:
|
||||
{{T "sharing.mac_finder_ugras_csatlakozas_a"}}
|
||||
<span class="mono">smb://{{.SMBServerName}}.local</span>
|
||||
</div>
|
||||
{{if .SMBDirectAddress}}
|
||||
<div class="form-hint">
|
||||
Ha a név nem működik, használd a közvetlen címet:
|
||||
{{T "sharing.ha_a_nev_nem_mukodik"}}
|
||||
<span class="mono">smb://{{.SMBDirectAddress}}</span>
|
||||
</div>
|
||||
<div class="form-hint">
|
||||
A közvetlen cím a hálózattól függően változhat — elsőként mindig a nevet próbáld.
|
||||
{{T "sharing.a_kozvetlen_cim_a_halozattol"}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<div class="settings-card">
|
||||
<h3>Megosztási jelszó beállítása</h3>
|
||||
<h3>{{T "sharing.megosztasi_jelszo_beallitasa"}}</h3>
|
||||
<p class="settings-card-desc">
|
||||
Egy közös jelszó tartozik a háztartáshoz. A csatlakozáskor felhasználónévnek add meg:
|
||||
{{T "sharing.egy_kozos_jelszo_tartozik_a"}}
|
||||
<span class="mono">felhom</span>.
|
||||
</p>
|
||||
<form method="POST" action="/sharing/password">
|
||||
{{.CSRFField}}
|
||||
<div class="form-group">
|
||||
<label for="smb_password">Új jelszó</label>
|
||||
<label for="smb_password">{{T "sharing.uj_jelszo"}}</label>
|
||||
<input type="password" id="smb_password" name="smb_password" class="form-control"
|
||||
autocomplete="new-password" minlength="8" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="smb_password_confirm">Jelszó megerősítése</label>
|
||||
<label for="smb_password_confirm">{{T "sharing.jelszo_megerositese"}}</label>
|
||||
<input type="password" id="smb_password_confirm" name="smb_password_confirm" class="form-control"
|
||||
autocomplete="new-password" minlength="8" required>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">Jelszó mentése</button>
|
||||
<button type="submit" class="btn btn-primary">{{T "sharing.jelszo_mentese"}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="settings-card">
|
||||
<h3>Megosztott mappák</h3>
|
||||
<h3>{{T "sharing.megosztott_mappak"}}</h3>
|
||||
{{if .SMBShares}}
|
||||
<div class="backup-table-wrap">
|
||||
<table class="db-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Név</th>
|
||||
<th>Mappa</th>
|
||||
<th>Írásvédett</th>
|
||||
<th>Felhőmentés</th>
|
||||
<th>Törlés</th>
|
||||
<th>{{T "sharing.nev"}}</th>
|
||||
<th>{{T "sharing.mappa"}}</th>
|
||||
<th>{{T "sharing.irasvedett"}}</th>
|
||||
<th>{{T "sharing.felhomentes"}}</th>
|
||||
<th>{{T "sharing.torles"}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -132,27 +129,27 @@
|
||||
<tr>
|
||||
<td class="mono">{{.Name}}</td>
|
||||
<td class="mono">{{.Path}}
|
||||
{{if not .Available}}<span class="badge badge-warn">A meghajtó nem elérhető.</span>{{end}}
|
||||
{{if not .Available}}<span class="badge badge-warn">{{T "sharing.a_meghajto_nem_elerheto"}}</span>{{end}}
|
||||
</td>
|
||||
<td>{{if .ReadOnly}}<span class="badge badge-neutral">igen</span>{{else}}nem{{end}}</td>
|
||||
<td>{{if .ReadOnly}}<span class="badge badge-neutral">{{T "sharing.igen"}}</span>{{else}}{{T "sharing.nem"}}{{end}}</td>
|
||||
<td>
|
||||
<form method="POST" action="/sharing/shares/offsite">
|
||||
{{$.CSRFField}}
|
||||
<input type="hidden" name="name" value="{{.Name}}">
|
||||
<input type="hidden" name="offsite" value="{{if .Offsite}}off{{else}}on{{end}}">
|
||||
<button type="submit" class="btn btn-xs btn-outline">
|
||||
{{if .Offsite}}bekapcsolva{{else}}kikapcsolva{{end}}
|
||||
{{if .Offsite}}{{T "sharing.bekapcsolva"}}{{else}}{{T "sharing.kikapcsolva"}}{{end}}
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
{{if .System}}
|
||||
<span class="form-hint">rendszer</span>
|
||||
<span class="form-hint">{{T "sharing.rendszer"}}</span>
|
||||
{{else}}
|
||||
<form method="POST" action="/sharing/shares/delete">
|
||||
{{$.CSRFField}}
|
||||
<input type="hidden" name="name" value="{{.Name}}">
|
||||
<button type="submit" class="btn btn-xs btn-danger-outline">Törlés</button>
|
||||
<button type="submit" class="btn btn-xs btn-danger-outline">{{T "sharing.torles"}}</button>
|
||||
</form>
|
||||
{{end}}
|
||||
</td>
|
||||
@@ -162,119 +159,116 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-hint">
|
||||
A megosztás törlésekor <strong>a mappa és a fájlok megmaradnak</strong> — csak a hálózati
|
||||
elérés szűnik meg.
|
||||
{{T "sharing.a_megosztas_torlesekor_a_mappa"}}
|
||||
</div>
|
||||
|
||||
<div class="backup-section-card" style="margin-top:1rem">
|
||||
<h3>A megosztások mentése</h3>
|
||||
<h3>{{T "sharing.a_megosztasok_mentese"}}</h3>
|
||||
<p class="form-hint" style="margin:-0.25rem 0 0.75rem">
|
||||
A megosztott mappák a többi adattal együtt mentésre kerülnek. A „Felhőmentés” bekapcsolva
|
||||
azt jelenti, hogy a mappa a távoli tárhelyre is felkerül; kikapcsolva csak a második
|
||||
meghajtóra készül másolat.
|
||||
{{T "sharing.a_megosztott_mappak_a_tobbi"}}
|
||||
</p>
|
||||
<ul class="plain-list">
|
||||
<li>
|
||||
<strong>2. mentés (másik meghajtó):</strong>
|
||||
<strong>{{T "sharing.2_mentes_masik_meghajto"}}</strong>
|
||||
{{if .SharesTier2Status}}
|
||||
{{if eq .SharesTier2Status "ok"}}
|
||||
rendben{{if .SharesTier2LastRun}} — {{.SharesTier2LastRun}}{{end}}
|
||||
{{T "sharing.rendben"}}{{if .SharesTier2LastRun}} — {{.SharesTier2LastRun}}{{end}}
|
||||
{{if .SharesTier2Warning}}<span class="badge badge-warn">{{.SharesTier2Warning}}</span>{{end}}
|
||||
{{else if eq .SharesTier2Status "no_target"}}
|
||||
<span class="badge badge-warn">nincs cél — {{.SharesTier2Error}}</span>
|
||||
<span class="badge badge-warn">{{T "sharing.nincs_cel"}}</span>
|
||||
{{else}}
|
||||
<span class="badge badge-warn">hiba — {{.SharesTier2Error}}</span>
|
||||
<span class="badge badge-warn">{{T "sharing.hiba"}}</span>
|
||||
{{end}}
|
||||
{{else}}
|
||||
még nem futott
|
||||
{{T "sharing.meg_nem_futott"}}
|
||||
{{end}}
|
||||
</li>
|
||||
<li>
|
||||
<strong>Távoli mentés (felhő):</strong>
|
||||
<strong>{{T "sharing.tavoli_mentes_felho"}}</strong>
|
||||
{{if .SharesOffsiteStatus}}
|
||||
{{if eq .SharesOffsiteStatus "ok"}}
|
||||
rendben — {{.SharesOffsiteCount}} megosztás{{if .SharesOffsiteLastRun}}, {{.SharesOffsiteLastRun}}{{end}}
|
||||
{{T "sharing.rendben_megosztas"}}{{if .SharesOffsiteLastRun}}, {{.SharesOffsiteLastRun}}{{end}}
|
||||
{{else if eq .SharesOffsiteStatus "blocked"}}
|
||||
<span class="badge badge-warn">a tárhelykeret miatt csak a beállítások kerültek fel</span>
|
||||
<span class="badge badge-warn">{{T "sharing.a_tarhelykeret_miatt_csak_a"}}</span>
|
||||
{{else if eq .SharesOffsiteStatus "skipped"}}
|
||||
<span class="badge badge-warn">kimaradt</span>
|
||||
<span class="badge badge-warn">{{T "sharing.kimaradt"}}</span>
|
||||
{{else}}
|
||||
<span class="badge badge-warn">hiba</span>
|
||||
<span class="badge badge-warn">{{T "sharing.hiba_2"}}</span>
|
||||
{{end}}
|
||||
{{else}}
|
||||
még nem futott
|
||||
{{T "sharing.meg_nem_futott"}}
|
||||
{{end}}
|
||||
</li>
|
||||
</ul>
|
||||
<div class="form-hint">
|
||||
Visszaállítani a <a href="/backups/restore">Visszaállítás</a> oldalon lehet.
|
||||
{{T "sharing.visszaallitani_a_visszaallitas_oldalon_l"}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="backup-table-empty">Még nincs megosztott mappa.</div>
|
||||
<div class="backup-table-empty">{{T "sharing.meg_nincs_megosztott_mappa"}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<div class="settings-card">
|
||||
<h3>Új megosztás</h3>
|
||||
<h3>{{T "sharing.uj_megosztas"}}</h3>
|
||||
<form method="POST" action="/sharing/shares" id="share-create-form">
|
||||
{{.CSRFField}}
|
||||
<div class="form-group">
|
||||
<label for="share_name">Megosztás neve <span class="required">*</span></label>
|
||||
<label for="share_name">{{T "sharing.megosztas_neve"}} <span class="required">*</span></label>
|
||||
<input type="text" id="share_name" name="name" class="form-control mono"
|
||||
maxlength="15" required autocomplete="off">
|
||||
<div class="form-hint">Legfeljebb 15 karakter: betű, szám, kötőjel, aláhúzás.</div>
|
||||
<div class="form-hint">{{T "sharing.legfeljebb_15_karakter_betu_szam_2"}}</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="radio" name="mode" value="new" checked onclick="shareModeSwitch()">
|
||||
Új mappa a tárhelyen
|
||||
{{T "sharing.uj_mappa_a_tarhelyen"}}
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" name="mode" value="existing" onclick="shareModeSwitch()">
|
||||
Meglévő mappa kiválasztása
|
||||
{{T "sharing.meglevo_mappa_kivalasztasa"}}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="share-mode-new">
|
||||
<label for="storage_root">Tárhely</label>
|
||||
<label for="storage_root">{{T "sharing.tarhely"}}</label>
|
||||
<select id="storage_root" name="storage_root" class="form-control">
|
||||
{{range .StorageRoots}}
|
||||
<option value="{{.Path}}">{{.Label}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
<div class="form-hint">A mappa a kiválasztott tárhely <span class="mono">shares/</span> könyvtárában jön létre.</div>
|
||||
<div class="form-hint">{{T "sharing.a_mappa_a_kivalasztott_tarhely"}} <span class="mono">shares/</span> {{T "sharing.konyvtaraban_jon_letre"}}</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" id="share-mode-existing" style="display:none">
|
||||
<label>Kiválasztott mappa</label>
|
||||
<label>{{T "sharing.kivalasztott_mappa"}}</label>
|
||||
<input type="text" id="share_path" name="path" class="form-control mono" readonly>
|
||||
<div class="form-actions">
|
||||
<button type="button" class="btn btn-sm btn-outline" onclick="shareBrowseOpen()">Tallózás</button>
|
||||
<button type="button" class="btn btn-sm btn-outline" onclick="shareBrowseOpen()">{{T "sharing.tallozas"}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" name="read_only">
|
||||
Írásvédett (csak olvasható)
|
||||
{{T "sharing.irasvedett_csak_olvashato"}}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">Megosztás létrehozása</button>
|
||||
<button type="submit" class="btn btn-primary">{{T "sharing.megosztas_letrehozasa"}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="confirm-overlay" id="share-browse-overlay" style="display:none">
|
||||
<div class="confirm-box">
|
||||
<h3>Mappa kiválasztása</h3>
|
||||
<h3>{{T "sharing.mappa_kivalasztasa"}}</h3>
|
||||
<div class="mono" id="share-browse-path"></div>
|
||||
<div id="share-browse-list"></div>
|
||||
<div class="form-actions">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="shareBrowsePick()">Ezt választom</button>
|
||||
<button type="button" class="btn btn-sm btn-outline" onclick="shareBrowseClose()">Mégse</button>
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="shareBrowsePick()">{{T "sharing.ezt_valasztom"}}</button>
|
||||
<button type="button" class="btn btn-sm btn-outline" onclick="shareBrowseClose()">{{T "sharing.megse"}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -302,12 +296,12 @@ function shareBrowseLoad(p){
|
||||
.then(function(r){ return r.json(); })
|
||||
.then(function(d){
|
||||
shareBrowseCurrent = d.path || "";
|
||||
document.getElementById('share-browse-path').textContent = d.error ? d.error : (d.path || 'Tárhelyek');
|
||||
document.getElementById('share-browse-path').textContent = d.error ? d.error : (d.path || '{{T "sharing.tarhelyek"}}');
|
||||
var list = document.getElementById('share-browse-list');
|
||||
list.innerHTML = '';
|
||||
if(d.parent){
|
||||
var up = document.createElement('div');
|
||||
up.innerHTML = '<button type="button" class="btn btn-xs btn-outline">.. vissza</button>';
|
||||
up.innerHTML = '<button type="button" class="btn btn-xs btn-outline">{{T "sharing.vissza"}}</button>';
|
||||
up.firstChild.onclick = function(){ shareBrowseLoad(d.parent); };
|
||||
list.appendChild(up);
|
||||
}
|
||||
@@ -329,9 +323,9 @@ function shareBrowseLoad(p){
|
||||
var txt = document.getElementById('samba-progress-text');
|
||||
if (!box || !txt) return;
|
||||
var PHASES = {
|
||||
pulling: 'A megosztási szolgáltatás előkészítése… (képfájl letöltése — ez több percig tarthat)',
|
||||
starting: 'A megosztási szolgáltatás indítása…',
|
||||
needs_password: 'A megosztás be van kapcsolva, de még nincs megosztási jelszó — add meg alább.'
|
||||
pulling: '{{T "sharing.a_megosztasi_szolgaltatas_elokeszitese_k"}}',
|
||||
starting: '{{T "sharing.a_megosztasi_szolgaltatas_inditasa"}}',
|
||||
needs_password: '{{T "sharing.a_megosztas_be_van_kapcsolva"}}'
|
||||
};
|
||||
var timer = null;
|
||||
function stop(){ if (timer) { clearInterval(timer); timer = null; } }
|
||||
@@ -349,14 +343,14 @@ function shareBrowseLoad(p){
|
||||
if (PHASES[ph]) { show('alert-info', PHASES[ph]); return; }
|
||||
if (ph === 'running') {
|
||||
stop();
|
||||
show('alert-success', 'A megosztási szolgáltatás fut.');
|
||||
show('alert-success', '{{T "sharing.a_megosztasi_szolgaltatas_fut"}}');
|
||||
/* Repaint the „Állapot" badge, which was rendered server-side as „áll". */
|
||||
setTimeout(function(){ location.reload(); }, 1200);
|
||||
return;
|
||||
}
|
||||
if (ph === 'failed') {
|
||||
stop();
|
||||
show('alert-error', 'A megosztási szolgáltatás nem indult el' + (j.data.error ? ': ' + j.data.error : '.'));
|
||||
show('alert-error', '{{T "sharing.a_megosztasi_szolgaltatas_nem_indult"}}' + (j.data.error ? ': ' + j.data.error : '.'));
|
||||
return;
|
||||
}
|
||||
/* idle and nothing running: nothing to report. */
|
||||
|
||||
Reference in New Issue
Block a user