v3 : relecture de decbc0b — lien annulé retiré de la page, liens annulés avant les sessions, pluriel espagnol
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -308,6 +308,8 @@ export const en: Messages = {
|
||||
'access.sessions.closeMine': 'Close my other sessions ({n})',
|
||||
'access.sessions.closed.one': '{n} session closed.',
|
||||
'access.sessions.closed.other': '{n} sessions closed.',
|
||||
'access.sessions.links.one': 'The sign-in link still waiting is cancelled.',
|
||||
'access.sessions.links.other': 'The {n} sign-in links still waiting are cancelled.',
|
||||
'access.kind.g1': 'Ğ1',
|
||||
'access.kind.invite': 'invitation',
|
||||
'access.kind.dev': 'dev',
|
||||
|
||||
@@ -308,6 +308,8 @@ export const es: Messages = {
|
||||
'access.sessions.closeMine': 'Cerrar mis otras sesiones ({n})',
|
||||
'access.sessions.closed.one': '{n} sesión cerrada.',
|
||||
'access.sessions.closed.other': '{n} sesiones cerradas.',
|
||||
'access.sessions.links.one': 'El enlace de conexión pendiente queda anulado.',
|
||||
'access.sessions.links.other': 'Los {n} enlaces de conexión pendientes quedan anulados.',
|
||||
'access.kind.g1': 'Ğ1',
|
||||
'access.kind.invite': 'invitación',
|
||||
'access.kind.dev': 'dev',
|
||||
|
||||
@@ -311,6 +311,8 @@ export const fr = {
|
||||
'access.sessions.closeMine': 'Fermer mes autres sessions ({n})',
|
||||
'access.sessions.closed.one': '{n} session fermée.',
|
||||
'access.sessions.closed.other': '{n} sessions fermées.',
|
||||
'access.sessions.links.one': 'Le lien de connexion encore en attente est annulé.',
|
||||
'access.sessions.links.other': 'Les {n} liens de connexion encore en attente sont annulés.',
|
||||
'access.kind.g1': 'Ğ1',
|
||||
'access.kind.invite': 'invitation',
|
||||
'access.kind.dev': 'dev',
|
||||
|
||||
@@ -41,9 +41,9 @@ class I18n {
|
||||
return raw.replace(/\{(\w+)\}/g, (_, k: string) => (k in params ? String(params[k]) : `{${k}}`));
|
||||
};
|
||||
|
||||
/** `<key>.one` / `<key>.other` — French and Spanish use « one » for 0 and 1. */
|
||||
/** `<key>.one` / `<key>.other` — French says « 0 session », English and Spanish « 0 sessions ». */
|
||||
plural = (key: string, n: number, params: Record<string, string | number> = {}): string => {
|
||||
const one = this.lang === 'en' ? n === 1 : n <= 1;
|
||||
const one = this.lang === 'fr' ? n <= 1 : n === 1;
|
||||
return this.t(`${key}.${one ? 'one' : 'other'}` as Key, { n, ...params });
|
||||
};
|
||||
|
||||
|
||||
@@ -77,11 +77,14 @@
|
||||
});
|
||||
}
|
||||
|
||||
// A lost device, a person who left: their sessions close (never the one in use here).
|
||||
// A lost device, a person who left: their sessions close (never the one in use here),
|
||||
// and so does a sign-in link still waiting for them, even one shown just now.
|
||||
async function closeSessions(id: string) {
|
||||
await act(async () => {
|
||||
const r = await api.del<{ closed: number }>(`/access/identities/${encodeURIComponent(id)}/sessions`);
|
||||
toasts.show(i18n.plural('access.sessions.closed', r.closed));
|
||||
const r = await api.del<{ closed: number; links: number }>(`/access/identities/${encodeURIComponent(id)}/sessions`);
|
||||
if (relinked?.id === id) relinked = null;
|
||||
const links = r.links > 0 ? ` ${i18n.plural('access.sessions.links', r.links)}` : '';
|
||||
toasts.show(i18n.plural('access.sessions.closed', r.closed) + links);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user