v0.248.0: i18n slice 1 release A — apps and settings in English, Hungarian byte-identical (R-556)
gates / gates (push) Successful in 20s
gates / gates (push) Successful in 20s
Ten pages converted against fixtures captured from unconverted templates (6be55a0); marker
coverage test; English page mask narrowed; English retrieval-promise stems; common keys;
title keys and infraMeta from the bundle; old wording tests read the Hungarian expansion.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -3,15 +3,15 @@
|
||||
|
||||
<div class="page-header">
|
||||
<div style="display:flex;align-items:center;gap:1rem">
|
||||
<a href="/stacks" class="btn btn-sm btn-outline">← Alkalmazások</a>
|
||||
<h2>{{.Stack.Meta.DisplayName}} — Exportálás</h2>
|
||||
<a href="/stacks" class="btn btn-sm btn-outline">{{T "app_export.alkalmazasok"}}</a>
|
||||
<h2>{{T "app_export.exportalas"}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" style="max-width:700px">
|
||||
<h3>Mentés helye</h3>
|
||||
<h3>{{T "app_export.mentes_helye"}}</h3>
|
||||
<select id="destDrive" onchange="loadEstimate()" style="width:100%;padding:.5rem;margin-bottom:1rem">
|
||||
<option value="">Válassz tárolót...</option>
|
||||
<option value="">{{T "app_export.valassz_tarolot"}}</option>
|
||||
{{range .Drives}}
|
||||
<option value="{{.Path}}">{{if .Label}}{{.Label}} ({{.Path}}){{else}}{{.Path}}{{end}}</option>
|
||||
{{end}}
|
||||
@@ -19,19 +19,19 @@
|
||||
|
||||
<div id="estimateBox" style="display:none;background:var(--bg-2);border-radius:8px;padding:1rem;margin-bottom:1.5rem">
|
||||
<div style="display:flex;justify-content:space-between;margin-bottom:.25rem">
|
||||
<span>Konfiguráció:</span>
|
||||
<span>{{T "app_export.konfiguracio"}}</span>
|
||||
<span id="estConfig">-</span>
|
||||
</div>
|
||||
<div style="display:flex;justify-content:space-between;margin-bottom:.25rem">
|
||||
<span>Felhasználói adatok:</span>
|
||||
<span>{{T "app_export.felhasznaloi_adatok"}}</span>
|
||||
<span id="estData">-</span>
|
||||
</div>
|
||||
<div style="display:flex;justify-content:space-between;font-weight:600;margin-bottom:.25rem;border-top:1px solid var(--line);padding-top:.5rem">
|
||||
<span>Összesen:</span>
|
||||
<span><span id="estTotal">-</span> <span id="estFree" style="color:var(--text-3)">(szabad: -)</span></span>
|
||||
<span>{{T "app_export.osszesen"}}</span>
|
||||
<span><span id="estTotal">-</span> <span id="estFree" style="color:var(--text-3)">{{T "app_export.szabad"}}</span></span>
|
||||
</div>
|
||||
<div style="display:flex;justify-content:space-between">
|
||||
<span>Becsült idő:</span>
|
||||
<span>{{T "app_export.becsult_ido"}}</span>
|
||||
<span id="estTime">-</span>
|
||||
</div>
|
||||
<div id="estWarning" style="display:none;color:var(--crit);margin-top:.5rem;font-weight:600"></div>
|
||||
@@ -39,53 +39,53 @@
|
||||
|
||||
<div id="classSelect" style="display:none;margin-bottom:1.5rem">
|
||||
<div id="mandBox" style="display:none;margin-bottom:1rem">
|
||||
<div style="font-weight:600;margin-bottom:.25rem">Mindig része a mentésnek:</div>
|
||||
<div style="font-weight:600;margin-bottom:.25rem">{{T "app_export.mindig_resze_a_mentesnek"}}</div>
|
||||
<div id="mandList" style="color:var(--text-3);font-size:.9rem"></div>
|
||||
</div>
|
||||
<div id="optBox" style="display:none;margin-bottom:1rem">
|
||||
<div style="font-weight:600;margin-bottom:.25rem">Választható tartalom:</div>
|
||||
<div style="font-weight:600;margin-bottom:.25rem">{{T "app_export.valaszthato_tartalom"}}</div>
|
||||
<div id="optList"></div>
|
||||
</div>
|
||||
<div id="exclBox" style="display:none">
|
||||
<div id="exclSummary" style="margin-bottom:.25rem"></div>
|
||||
<div style="color:var(--text-3);font-size:.85rem;margin-bottom:.5rem">A kihagyott mappák tartalma a Fájlkezelőben bármikor elérhető, és külön is lementhető.</div>
|
||||
<button type="button" class="btn btn-xs btn-outline" onclick="toggleExcl()" id="exclToggle">Kihagyott tartalom megjelenítése</button>
|
||||
<div style="color:var(--text-3);font-size:.85rem;margin-bottom:.5rem">{{T "app_export.a_kihagyott_mappak_tartalma_a"}}</div>
|
||||
<button type="button" class="btn btn-xs btn-outline" onclick="toggleExcl()" id="exclToggle">{{T "app_export.kihagyott_tartalom_megjelenitese"}}</button>
|
||||
<div id="exclList" style="display:none;margin-top:.5rem"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Jelszó (opcionális)</h3>
|
||||
<h3>{{T "app_export.jelszo_opcionalis"}}</h3>
|
||||
<div style="display:flex;gap:.5rem;margin-bottom:1rem">
|
||||
<input type="password" id="exportPassword" placeholder="Titkosítási jelszó" style="flex:1;padding:.5rem">
|
||||
<button class="btn btn-sm btn-outline" onclick="togglePw()" type="button" title="Jelszó mutatása">👁</button>
|
||||
<input type="password" id="exportPassword" placeholder="{{T "app_export.titkositasi_jelszo"}}" style="flex:1;padding:.5rem">
|
||||
<button class="btn btn-sm btn-outline" onclick="togglePw()" type="button" title="{{T "app_export.jelszo_mutatasa"}}">👁</button>
|
||||
</div>
|
||||
|
||||
<label style="display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem;cursor:pointer">
|
||||
<input type="checkbox" id="stopApp" checked style="margin-top:3px">
|
||||
<div>
|
||||
<strong>Alkalmazás leállítása mentés előtt (ajánlott)</strong>
|
||||
<div style="color:var(--text-3);font-size:.85rem">Az adatok konzisztenciája érdekében javasolt leállítani az alkalmazást mentés közben.</div>
|
||||
<strong>{{T "app_export.alkalmazas_leallitasa_mentes_elott_ajanl"}}</strong>
|
||||
<div style="color:var(--text-3);font-size:.85rem">{{T "app_export.az_adatok_konzisztenciaja_erdekeben_java"}}</div>
|
||||
</div>
|
||||
</label>
|
||||
|
||||
<button id="startBtn" class="btn btn-primary" onclick="startExport()" style="margin-top:1rem;width:100%" disabled>
|
||||
Exportálás indítása
|
||||
{{T "app_export.exportalas_inditasa"}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="progressCard" class="card" style="max-width:700px;display:none">
|
||||
<h3>Folyamat</h3>
|
||||
<h3>{{T "app_export.folyamat"}}</h3>
|
||||
<div id="progressSteps"></div>
|
||||
<div id="progressError" style="display:none;color:var(--crit);margin-top:1rem;font-weight:600"></div>
|
||||
</div>
|
||||
|
||||
<div id="doneCard" class="card" style="max-width:700px;display:none">
|
||||
<h3 style="color:var(--blue)">Kész!</h3>
|
||||
<h3 style="color:var(--blue)">{{T "app_export.kesz"}}</h3>
|
||||
<div style="margin-bottom:1rem">
|
||||
<span id="doneFile" style="font-weight:600"></span>
|
||||
<span id="doneSize" style="color:var(--text-3)"></span>
|
||||
</div>
|
||||
<a id="doneFBLink" href="#" target="_blank" class="btn btn-outline">Megnyitás FileBrowser-ben ↗</a>
|
||||
<a id="doneFBLink" href="#" target="_blank" class="btn btn-outline">{{T "app_export.megnyitas_filebrowser_ben"}}</a>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
@@ -126,12 +126,12 @@ async function loadEstimate() {
|
||||
document.getElementById('estConfig').textContent = est.config_size_human;
|
||||
document.getElementById('estData').textContent = est.data_size_human;
|
||||
document.getElementById('estTotal').textContent = '~' + est.total_size_human;
|
||||
document.getElementById('estFree').textContent = '(szabad: ' + est.dest_free_human + ')';
|
||||
document.getElementById('estTime').textContent = '~' + est.estimated_minutes + ' perc';
|
||||
document.getElementById('estFree').textContent = '{{T "app_export.szabad_2"}} ' + est.dest_free_human + ')';
|
||||
document.getElementById('estTime').textContent = '~' + est.estimated_minutes + ' {{T "app_export.perc"}}';
|
||||
|
||||
var warn = document.getElementById('estWarning');
|
||||
if (!est.fits_on_dest) {
|
||||
warn.textContent = 'Nincs elég szabad hely a kiválasztott tárolón!';
|
||||
warn.textContent = '{{T "app_export.nincs_eleg_szabad_hely_a"}}';
|
||||
warn.style.display = 'block';
|
||||
btn.disabled = true;
|
||||
} else {
|
||||
@@ -200,14 +200,14 @@ function recomputeTotal() {
|
||||
var full = alap + exclAll;
|
||||
var s = document.getElementById('exclSummary');
|
||||
if ((lastEst.excluded_items||[]).length) {
|
||||
s.innerHTML = 'Alap mentés: ~' + humanBytes(alap) + '. A kihagyott, nagy méretű tartalommal együtt: ~' + humanBytes(full) + '.';
|
||||
s.innerHTML = '{{T "app_export.alap_mentes"}}' + humanBytes(alap) + '{{T "app_export.a_kihagyott_nagy_meretu_tartalommal"}}' + humanBytes(full) + '.';
|
||||
}
|
||||
}
|
||||
function toggleExcl() {
|
||||
var l = document.getElementById('exclList');
|
||||
var shown = l.style.display !== 'none';
|
||||
l.style.display = shown ? 'none' : 'block';
|
||||
document.getElementById('exclToggle').textContent = shown ? 'Kihagyott tartalom megjelenítése' : 'Kihagyott tartalom elrejtése';
|
||||
document.getElementById('exclToggle').textContent = shown ? '{{T "app_export.kihagyott_tartalom_megjelenitese"}}' : '{{T "app_export.kihagyott_tartalom_elrejtese"}}';
|
||||
}
|
||||
function gatherSelections() {
|
||||
var deselect = [], optIn = [];
|
||||
@@ -242,7 +242,7 @@ async function startExport() {
|
||||
});
|
||||
var data = await resp.json();
|
||||
if (!data.ok) {
|
||||
showError(data.error || 'Hiba történt');
|
||||
showError(data.error || '{{T "common.hiba_tortent"}}');
|
||||
return;
|
||||
}
|
||||
pollStatus();
|
||||
|
||||
Reference in New Issue
Block a user