feat: localize settings workspace and wizard

This commit is contained in:
a.tolmachev
2026-04-03 00:03:40 +03:00
parent 581d50c33c
commit 140548bb20
16 changed files with 763 additions and 247 deletions
+25 -15
View File
@@ -1,4 +1,10 @@
var settingsSession = null;
function tKey(key) {
return typeof t === 'function' ? t(key) : key;
}
function tfKey(key, vars) {
return typeof tf === 'function' ? tf(key, vars) : key;
}
function settingsWorkspaceId() {
var workspace = window.getCurrentWorkspace ? window.getCurrentWorkspace() : null;
@@ -37,7 +43,7 @@ function populateCurrentSession(session) {
}
if (!(session && session.user)) {
summary.textContent = 'Session details are unavailable. Use Log out to revoke the current browser session.';
summary.textContent = tKey('settings.session.unavailable');
return;
}
@@ -51,8 +57,12 @@ function populateCurrentSession(session) {
var workspaceLabel = membership && membership.workspace
? (membership.workspace.display_name || membership.workspace.slug || membership.workspace.id)
: 'current workspace';
var roleLabel = membership ? titleCaseRole(membership.role) : 'Viewer';
summary.textContent = session.user.email + ' · ' + roleLabel + ' in ' + workspaceLabel + '. Use Log out to revoke the current browser session.';
var roleLabel = membership ? titleCaseRole(membership.role) : tKey('workspace_setup.role.viewer');
summary.textContent = tfKey('settings.session.summary', {
email: session.user.email,
role: roleLabel,
workspace: workspaceLabel,
});
}
function populateProfile(session) {
@@ -96,7 +106,7 @@ function bindProfileSave() {
button.addEventListener('click', async function() {
var original = button.textContent;
button.disabled = true;
button.textContent = 'Saving';
button.textContent = tKey('settings.profile.saving');
setStatus('settings-profile-status', '', false);
try {
@@ -109,10 +119,10 @@ function bindProfileSave() {
window.CrankAuth.replaceSession(session);
}
populateProfile(session);
setStatus('settings-profile-status', 'Profile saved.', false);
button.textContent = 'Saved ✓';
setStatus('settings-profile-status', tKey('settings.profile.saved_status'), false);
button.textContent = tKey('settings.profile.saved');
} catch (error) {
setStatus('settings-profile-status', error.message || 'Failed to save profile', true);
setStatus('settings-profile-status', error.message || tKey('settings.profile.save_error'), true);
button.textContent = original;
} finally {
setTimeout(function() {
@@ -136,13 +146,13 @@ function bindPasswordSave() {
var confirmPassword = document.getElementById('security-confirm-password').value;
if (newPassword !== confirmPassword) {
setStatus('settings-password-status', 'New password and confirmation do not match.', true);
setStatus('settings-password-status', tKey('settings.security.mismatch'), true);
return;
}
var original = button.textContent;
button.disabled = true;
button.textContent = 'Saving';
button.textContent = tKey('settings.profile.saving');
setStatus('settings-password-status', '', false);
try {
@@ -153,10 +163,10 @@ function bindPasswordSave() {
document.getElementById('security-current-password').value = '';
document.getElementById('security-new-password').value = '';
document.getElementById('security-confirm-password').value = '';
setStatus('settings-password-status', 'Password updated.', false);
button.textContent = 'Saved ✓';
setStatus('settings-password-status', tKey('settings.security.saved'), false);
button.textContent = tKey('settings.profile.saved');
} catch (error) {
setStatus('settings-password-status', error.message || 'Failed to change password', true);
setStatus('settings-password-status', error.message || tKey('settings.security.save_error'), true);
button.textContent = original;
} finally {
setTimeout(function() {
@@ -268,7 +278,7 @@ async function loadWorkspaceSettings() {
var saveButton = this;
var original = saveButton.textContent;
saveButton.disabled = true;
saveButton.textContent = 'Saving';
saveButton.textContent = tKey('settings.workspace.saving');
try {
await window.CrankApi.updateWorkspace(item.id, {
@@ -291,10 +301,10 @@ async function loadWorkspaceSettings() {
}
}
saveButton.textContent = 'Saved ✓';
saveButton.textContent = tKey('settings.workspace.saved');
} catch (error) {
if (window.CrankUi) {
window.CrankUi.error(error.message || 'Failed to save workspace settings', 'Workspace save failed');
window.CrankUi.error(error.message || tKey('settings.workspace.save_error'), tKey('settings.workspace.save_error_title'));
}
saveButton.textContent = original;
} finally {