i18n: translate the whois/profile panel + leak-guard security message

Whois panel labels now use stable keys (decoupled from the wide-layout
detection) and render via t(); status/badges/actions/moderation translated.
The services-leak guard warning + its 'Sécurité' tag now go through i18n.
Adds whois + security namespaces to all 10 locales. SW cache v19 -> v20.
This commit is contained in:
Jean Chevronnet 2026-06-20 01:09:02 +00:00
parent 36b4cdb692
commit 6030d909db
14 changed files with 1904 additions and 128 deletions

View file

@ -1,7 +1,7 @@
// Tchatou service worker — installable PWA + offline app shell.
// Scope: /app/. Only handles same-origin /app/ GETs; the IRC websocket and all
// API calls (cloudflare, change_password, upload) pass straight through.
const CACHE = 'tchatou-v19';
const CACHE = 'tchatou-v20';
const SHELL = ['/app/', '/app/index.html', '/app/favicon.svg', '/app/manifest.webmanifest'];
self.addEventListener('install', (e) => {

View file

@ -1,4 +1,5 @@
import { useEffect, useRef, useState, type ReactNode } from 'react';
import { useTranslation } from 'react-i18next';
import { useChat, SERVER } from '../../store';
import type { ChatMessage } from '../../irc/types';
import { fmtTime, nickColor, IRCOP_COLOR, formatIrc } from '../../lib/format';
@ -145,6 +146,7 @@ function SearchResults({ messages, query }: { messages: ChatMessage[]; query: st
}
export function MessageList() {
const { t } = useTranslation();
const active = useChat((s) => s.active);
const buffer = useChat((s) => s.buffers[s.active]);
const search = useChat((s) => s.search);
@ -272,7 +274,7 @@ export function MessageList() {
<div key={m.id} className="warnline">
<span className="warnline__ic" aria-hidden>🛡</span>
<div className="warnline__body">
<span className="warnline__tag">Sécurité</span>
<span className="warnline__tag">{t('security.tag')}</span>
<span className="warnline__txt">{m.text}</span>
</div>
</div>,

View file

@ -1,12 +1,15 @@
import { useState, useEffect, type CSSProperties, type ReactNode } from 'react';
import { useTranslation } from 'react-i18next';
import { useChat } from '../../store';
import { IRCOP_COLOR, hashHue, fmtDuration, formatUserModes } from '../../lib/format';
import { Avatar } from '../Avatar';
const PM_WIDE_KEYS = new Set(['Identifiant', 'Serveur', 'Salons en commun', 'Empreinte du certificat', 'Info', 'Modes utilisateur']);
// Which info rows take the full width — keyed by stable id (not the translated label).
const PM_WIDE_KEYS = new Set(['identifier', 'server', 'channels', 'certfp', 'info', 'umodes']);
/* Wide horizontal profile card — pops over a blurred "nebula" of the app */
export function ProfileModal() {
const { t } = useTranslation();
const nick = useChat((s) => s.profileUser);
const info = useChat((s) => s.whois[s.profileUser]);
const me = useChat((s) => s.nick);
@ -51,43 +54,44 @@ export function ProfileModal() {
const targetIsOp = /[~&@]/.test(targetMember?.prefixes || targetMember?.prefix || '');
const canModerate = !isMe && amOp && !!targetMember && (active.startsWith('#') || active.startsWith('&'));
// [icon, stable key id, value] — the label is translated from the key at render.
const rows: Array<[string, string, ReactNode]> = [];
if (info?.realname) rows.push(['📝', 'Nom affiché', info.realname]);
if (info?.user || info?.host) rows.push(['🪪', 'Identifiant', `${info?.user ?? '?'}@${info?.host ?? '?'}`]);
if (info?.server) rows.push(['🛰️', 'Serveur', info.server + (info.serverInfo ? ` · ${info.serverInfo}` : '')]);
if (info?.channels) rows.push(['#️⃣', 'Salons en commun', info.channels]);
if (info?.signon) rows.push(['🕓', 'Connecté depuis', new Date(info.signon * 1000).toLocaleString('fr-FR')]);
if (info?.idle != null) rows.push(['💤', 'Inactif depuis', fmtDuration(info.idle)]);
if (info?.secure) rows.push(['🔒', 'Connexion', 'Sécurisée (TLS)']);
if (info?.realname) rows.push(['📝', 'realname', info.realname]);
if (info?.user || info?.host) rows.push(['🪪', 'identifier', `${info?.user ?? '?'}@${info?.host ?? '?'}`]);
if (info?.server) rows.push(['🛰️', 'server', info.server + (info.serverInfo ? ` · ${info.serverInfo}` : '')]);
if (info?.channels) rows.push(['#️⃣', 'channels', info.channels]);
if (info?.signon) rows.push(['🕓', 'signon', new Date(info.signon * 1000).toLocaleString()]);
if (info?.idle != null) rows.push(['💤', 'idle', fmtDuration(info.idle)]);
if (info?.secure) rows.push(['🔒', 'connection', t('whois.secureTls')]);
const shownModes = info?.modes || (isMe ? myUmodes : '');
if (shownModes) rows.push(['⚙️', 'Modes utilisateur', formatUserModes(shownModes)]);
if (info?.certfp) rows.push(['🔑', 'Empreinte du certificat', <code className="pm-fp">{info.certfp}</code>]);
if (shownModes) rows.push(['⚙️', 'umodes', formatUserModes(shownModes)]);
if (info?.certfp) rows.push(['🔑', 'certfp', <code className="pm-fp">{info.certfp}</code>]);
for (const line of info?.special ?? []) {
const verif = line.match(/verified\s+(\S+)\s+account\s*\(([^)]+)\)/i);
const groups = line.match(/security groups?:?\s*(.+)/i);
const score = line.match(/score:?\s*([\d.]+)/i);
if (verif) {
rows.push(['✅', 'Compte vérifié',
rows.push(['✅', 'verified',
<span className="pm-verif"><span className="pm-check pm-check--inline"></span>{verif[2]}<span className="pm-verif__net"> · {verif[1]}</span></span>]);
} else if (groups) {
rows.push(['🛡️', 'Groupes',
rows.push(['🛡️', 'groups',
<span className="pm-groups">{groups[1].split(/[\s,]+/).filter(Boolean).map((g) => <span className="pm-grouptag" key={g}>{g}</span>)}</span>]);
} else if (score) {
rows.push(['📊', 'Score', score[1]]);
rows.push(['📊', 'score', score[1]]);
} else {
rows.push(['', 'Info', line]);
rows.push(['', 'info', line]);
}
}
const status = info?.offline ? 'hors ligne' : info?.away ? 'absent' : 'en ligne';
const statusKey = status === 'en ligne' ? 'on' : 'away';
const statusText = info?.offline ? t('whois.offline') : info?.away ? t('whois.away') : t('whois.online');
const statusKey = !info?.offline && !info?.away ? 'on' : 'away';
const chCount = info?.channels?.trim() ? info.channels.trim().split(/\s+/).length : null;
return (
<div className="pm-backdrop" onClick={close}>
<div className="pm-neb pm-neb--1" /><div className="pm-neb pm-neb--2" />
<div className="pm-card" style={{ ['--hue' as string]: String(hue) } as CSSProperties} onClick={(e) => e.stopPropagation()}>
<button className="pm-x" onClick={close} aria-label="Fermer"></button>
<button className="pm-x" onClick={close} aria-label={t('profile.close')}></button>
<div className="pm-cover"><span className="pm-cover__glow" /></div>
<div className="pm-hero">
<div className="pm-avwrap">
@ -98,20 +102,20 @@ export function ProfileModal() {
<div className="pm-id">
<div className="pm-name" style={info?.oper ? { color: IRCOP_COLOR } : undefined}>
{nick}
{info?.account && <span className="pm-check" title={`Enregistré : ${info.account}`}></span>}
{info?.account && <span className="pm-check" title={t('whois.registeredTitle', { account: info.account })}></span>}
</div>
<div className="pm-handle">{info?.loading && !info?.user ? 'chargement du profil…' : (info?.account ? `@${info.account}` : 'visiteur')}</div>
<div className="pm-handle">{info?.loading && !info?.user ? t('whois.loading') : (info?.account ? `@${info.account}` : t('whois.visitor'))}</div>
</div>
</div>
<div className="pm-meta">
<div className="pm-badges">
<span className={`pm-status pm-status--${status === 'en ligne' ? 'on' : 'away'}`}> {status}</span>
<span className={`pm-status pm-status--${statusKey}`}> {statusText}</span>
{info?.bot && <span className="pm-badge pm-badge--bot">🤖 BOT</span>}
{info?.oper && <span className="pm-badge pm-badge--op">🛡 Opérateur</span>}
{info?.oper && <span className="pm-badge pm-badge--op">🛡 {t('whois.badgeOp')}</span>}
{info?.account
? <span className="pm-badge pm-badge--ok"> Enregistré</span>
: <span className="pm-badge">Invité</span>}
? <span className="pm-badge pm-badge--ok"> {t('whois.badgeRegistered')}</span>
: <span className="pm-badge">{t('whois.badgeGuest')}</span>}
{info?.secure && <span className="pm-badge">🔒 TLS</span>}
</div>
{info?.away && <div className="pm-away">💤 {info.away}</div>}
@ -119,68 +123,67 @@ export function ProfileModal() {
<div className="pm-stats">
<div className="pm-stat">
<span className="pm-stat__val"><i className={`pm-dot pm-dot--${statusKey}`} />{status}</span>
<span className="pm-stat__key">Statut</span>
<span className="pm-stat__val"><i className={`pm-dot pm-dot--${statusKey}`} />{statusText}</span>
<span className="pm-stat__key">{t('whois.statStatus')}</span>
</div>
<div className="pm-stat">
<span className="pm-stat__val">{chCount ?? '—'}</span>
<span className="pm-stat__key">Salons communs</span>
<span className="pm-stat__key">{t('whois.statCommon')}</span>
</div>
<div className="pm-stat">
<span className="pm-stat__val">{info?.secure ? '🔒' : info?.loading ? '…' : '—'}</span>
<span className="pm-stat__key">{info?.secure ? 'Sécurisé' : 'Connexion'}</span>
<span className="pm-stat__key">{info?.secure ? t('whois.statSecure') : t('whois.connection')}</span>
</div>
</div>
{!isMe && (
<div className="pm-actions">
<button className="pm-btn pm-btn--primary" onClick={() => { openQuery(nick, activeChan.startsWith('#') ? activeChan : undefined); close(); }}>💬 Message privé</button>
<button className={`pm-btn pm-btn--icon ${spinning ? 'is-spinning' : ''}`} onClick={doRefresh} disabled={spinning} title="Actualiser" aria-label="Actualiser"><span className="pm-spin"></span></button>
<button className="pm-btn pm-btn--primary" onClick={() => { openQuery(nick, activeChan.startsWith('#') ? activeChan : undefined); close(); }}>💬 {t('whois.dm')}</button>
<button className={`pm-btn pm-btn--icon ${spinning ? 'is-spinning' : ''}`} onClick={doRefresh} disabled={spinning} title={t('profile.refresh')} aria-label={t('profile.refresh')}><span className="pm-spin"></span></button>
</div>
)}
{!isMe && (
<div className="pm-modrow">
<button className={`pm-chip ${isFriend ? 'is-on' : ''}`} onClick={() => isFriend ? removeFriend(nick) : addFriend(nick)}>
{isFriend ? '⭐ Ami' : '☆ Ajouter en ami'}
{isFriend ? `${t('whois.friend')}` : `${t('whois.friendAdd')}`}
</button>
<button className={`pm-chip ${isIgnored ? 'is-on' : ''}`} onClick={() => toggleIgnore(nick)}>
{isIgnored ? '🔔 Ne plus ignorer' : '🔕 Ignorer'}
{isIgnored ? `🔔 ${t('whois.unignore')}` : `🔕 ${t('whois.ignore')}`}
</button>
<button className="pm-chip pm-chip--warn" onClick={() => { reportUser(nick); close(); }}>🚩 Signaler</button>
<button className="pm-chip pm-chip--warn" onClick={() => { reportUser(nick); close(); }}>🚩 {t('whois.report')}</button>
</div>
)}
{canModerate && (
<div className="pm-modrow pm-modrow--ops">
<span className="pm-modrow__lbl">🛡 Modération</span>
<span className="pm-modrow__lbl">🛡 {t('whois.moderation')}</span>
<div className="pm-modbtns">
<button className="pm-chip" onClick={() => modKick(nick)}>👢 Expulser</button>
<button className="pm-chip pm-chip--warn" onClick={() => modBan(nick)}>🚫 Bannir</button>
<button className="pm-chip" onClick={() => modSetMode(nick, 'o', !targetIsOp)}>{targetIsOp ? ' Retirer op' : ' Op'}</button>
<button className="pm-chip" onClick={() => modSetMode(nick, 'v', true)}>🔊 Voix</button>
<button className="pm-chip" onClick={() => modKick(nick)}>👢 {t('whois.kick')}</button>
<button className="pm-chip pm-chip--warn" onClick={() => modBan(nick)}>🚫 {t('whois.ban')}</button>
<button className="pm-chip" onClick={() => modSetMode(nick, 'o', !targetIsOp)}>{targetIsOp ? ` ${t('whois.opRemove')}` : ` ${t('whois.opAdd')}`}</button>
<button className="pm-chip" onClick={() => modSetMode(nick, 'v', true)}>🔊 {t('whois.voice')}</button>
</div>
</div>
)}
<div className="pm-info">
{rows.length > 0 && <div className="pm-section">Informations</div>}
{rows.length > 0 && <div className="pm-section">{t('whois.section')}</div>}
{info?.loading && rows.length === 0 && (
<div className="pm-skeleton"><i /><i /><i /></div>
)}
{rows.map(([icon, k, v]) => (
<div className={`pm-row ${PM_WIDE_KEYS.has(k) ? 'pm-row--wide' : ''}`} key={k}>
{rows.map(([icon, k, v], i) => (
<div className={`pm-row ${PM_WIDE_KEYS.has(k) ? 'pm-row--wide' : ''}`} key={`${k}-${i}`}>
<span className="pm-row__ic">{icon}</span>
<div className="pm-row__txt">
<div className="pm-row__k">{k}</div>
<div className="pm-row__k">{t('whois.' + k)}</div>
<div className="pm-row__v">{v}</div>
</div>
</div>
))}
{!info?.loading && rows.length === 0 && <div className="pm-empty">Aucune information publique disponible.</div>}
{!info?.loading && rows.length === 0 && <div className="pm-empty">{t('profile.noInfo')}</div>}
</div>
</div>
</div>
);
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Startseite", "settings": "Einstellungen", "profile": "Mein Profil", "friends": "Freunde", "explore": "Kanäle erkunden", "newDM": "Neue Unterhaltung", "away": "Abwesend", "quit": "Chat verlassen" },
"sidebar": { "all": "Alle", "channels": "Kanäle", "dms": "Direkt", "search": "Suchen", "noChannel": "Wähle einen Kanal, um zu chatten." },
"topbar": { "search": "Suchen", "members": "Mitglieder anzeigen", "manage": "Kanal verwalten", "modes": "Kanalmodi", "notifications": "Benachrichtigungen", "closeSearch": "Suche schließen", "membersCount": "Mitglieder · {{n}}", "publicChannel": "Öffentlicher Kanal · {{n}} Mitglieder", "commonChannels": "Gemeinsame Kanäle" },
"connect": { "onlineBadge": "{{n}} Personen online", "pseudoPlaceholder": "Wähle deinen Spitznamen…", "enter": "Eintreten", "joinHint": "Du betrittst", "registered": "Konto bereits vorhanden?", "hidePassword": "Passwort verbergen", "passwordPlaceholder": "Passwort (falls dein Nick registriert ist)", "passwordLabel": "Passwort", "noData": "Keine Registrierung erforderlich", "encrypted": "Ende-zu-Ende-verschlüsselt", "ircv3": "IRCv3", "helpButton": "Hilfe & FAQ", "forgotButton": "Passwort vergessen?", "createButton": "Konto erstellen", "faqTitle": "Hilfe & FAQ", "error_error": "Verbindung fehlgeschlagen. Bitte erneut versuchen.", "error_closed": "Die Verbindung wurde getrennt.", "error_sasl": "Unbekannter Spitzname oder falsches Passwort." },
"messages": { "reply": "Als Antwort auf", "react": "Reagieren", "respond": "Antworten", "delete": "Löschen", "hideJoins": "Beitritte/Abschiede ausblenden", "unread": "Neue Nachrichten", "jumpUnread": "Neue Nachrichten", "loadHistory": "Verlauf laden", "copyLink": "Link kopieren", "copyText": "Text kopieren", "info": "Info", "notice": "HINWEIS", "guest": "Gast", "poweredBy": "Betrieben von Orbit" },
"modals": { "closeButton": "Schließen", "join": { "title": "Kanäle erkunden", "search": "Kanal suchen oder erstellen…", "loading": "Kanäle werden geladen…", "noResults": "Keine Ergebnisse" }, "dm": { "title": "Neue Unterhaltung", "search": "Spitznamen hinzufügen…", "noResults": "Keine Ergebnisse" }, "friends": { "title": "Freunde", "noFriends": "Noch keine Freunde." }, "chanadmin": { "title": "Kanal verwalten", "topic": "Kanalthema…", "bans": "Sperren ({{n}})", "noBans": "Keine Sperren.", "ban": "Sperren", "unban": "Sperre aufheben", "kick": "Rauswerfen", "maskPlaceholder": "*!*@Maske oder Spitzname…", "channelSearch": "#Kanal oder Spitzname", "setTopic": "Festlegen", "info": "Info", "modes": "Kanalmodi", "subject": "Thema" } },
"settings": { "title": "Einstellungen", "sections": { "account": "Konto", "appearance": "Darstellung", "notifications": "Benachrichtigungen", "privacy": "Datenschutz", "advanced": "Erweitert" }, "account": { "login": "Anmelden", "register": "Konto erstellen", "logout": "Abmelden", "accountName": "Kontoname", "password": "Passwort", "currentPassword": "Aktuelles Passwort", "newPassword": "Neues Passwort", "minPassword": "Min. 6 Zeichen", "changeNick": "Spitznamen ändern", "nickHint": "Ändert den in Kanälen angezeigten Spitznamen.", "emailPlaceholder": "du@beispiel.de", "totpCode": "z.B. 123456", "verificationCode": "Bestätigungscode", "resend": "Code erneut senden", "restart": "Neu starten", "connecting": "Verbinde…", "validating": "Überprüfe…", "security": "Sicherheit", "status": "Status", "loggedIn": "Verbunden", "loggedInAs": "Verbunden · {{nick}}", "identifiedAs": "Du bist angemeldet als {{nick}}", "unknownError": "Unbekanntes Konto oder falsches Passwort.", "saslFailed": "Falscher Spitzname oder Passwort.", "antiBot": "Anti-Bot-Verifizierung", "wrongPassword": "Falsches Passwort.", "join": "Beitreten", "channelHint": "Kanal beitreten (beginnt mit #)", "channelPlaceholder": "z.B. orbit, hilfe", "fromChannel": "Vom Kanal" }, "appearance": { "theme": "Design", "language": "Sprache", "timeFormat": "Zeitformat", "compact": "Kompakte Nachrichten", "textSize": "Textgröße" }, "notifications": { "browser": "Browser-Benachrichtigungen", "push": "Push-Benachrichtigungen" } },
"profile": { "refresh": "Aktualisieren", "close": "Schließen", "away": "Abwesend", "noInfo": "Keine öffentlichen Informationen verfügbar.", "noMembers": "Keine Mitglieder", "filterMembers": "Mitglieder filtern", "openDM": "Direktnachricht", "openProfile": "Profil", "cancel": "Abbrechen" },
"language": { "label": "Sprache", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Startseite",
"settings": "Einstellungen",
"profile": "Mein Profil",
"friends": "Freunde",
"explore": "Kanäle erkunden",
"newDM": "Neue Unterhaltung",
"away": "Abwesend",
"quit": "Chat verlassen"
},
"sidebar": {
"all": "Alle",
"channels": "Kanäle",
"dms": "Direkt",
"search": "Suchen",
"noChannel": "Wähle einen Kanal, um zu chatten."
},
"topbar": {
"search": "Suchen",
"members": "Mitglieder anzeigen",
"manage": "Kanal verwalten",
"modes": "Kanalmodi",
"notifications": "Benachrichtigungen",
"closeSearch": "Suche schließen",
"membersCount": "Mitglieder · {{n}}",
"publicChannel": "Öffentlicher Kanal · {{n}} Mitglieder",
"commonChannels": "Gemeinsame Kanäle"
},
"connect": {
"onlineBadge": "{{n}} Personen online",
"pseudoPlaceholder": "Wähle deinen Spitznamen…",
"enter": "Eintreten",
"joinHint": "Du betrittst",
"registered": "Konto bereits vorhanden?",
"hidePassword": "Passwort verbergen",
"passwordPlaceholder": "Passwort (falls dein Nick registriert ist)",
"passwordLabel": "Passwort",
"noData": "Keine Registrierung erforderlich",
"encrypted": "Ende-zu-Ende-verschlüsselt",
"ircv3": "IRCv3",
"helpButton": "Hilfe & FAQ",
"forgotButton": "Passwort vergessen?",
"createButton": "Konto erstellen",
"faqTitle": "Hilfe & FAQ",
"error_error": "Verbindung fehlgeschlagen. Bitte erneut versuchen.",
"error_closed": "Die Verbindung wurde getrennt.",
"error_sasl": "Unbekannter Spitzname oder falsches Passwort."
},
"messages": {
"reply": "Als Antwort auf",
"react": "Reagieren",
"respond": "Antworten",
"delete": "Löschen",
"hideJoins": "Beitritte/Abschiede ausblenden",
"unread": "Neue Nachrichten",
"jumpUnread": "Neue Nachrichten",
"loadHistory": "Verlauf laden",
"copyLink": "Link kopieren",
"copyText": "Text kopieren",
"info": "Info",
"notice": "HINWEIS",
"guest": "Gast",
"poweredBy": "Betrieben von Orbit"
},
"modals": {
"closeButton": "Schließen",
"join": {
"title": "Kanäle erkunden",
"search": "Kanal suchen oder erstellen…",
"loading": "Kanäle werden geladen…",
"noResults": "Keine Ergebnisse"
},
"dm": {
"title": "Neue Unterhaltung",
"search": "Spitznamen hinzufügen…",
"noResults": "Keine Ergebnisse"
},
"friends": {
"title": "Freunde",
"noFriends": "Noch keine Freunde."
},
"chanadmin": {
"title": "Kanal verwalten",
"topic": "Kanalthema…",
"bans": "Sperren ({{n}})",
"noBans": "Keine Sperren.",
"ban": "Sperren",
"unban": "Sperre aufheben",
"kick": "Rauswerfen",
"maskPlaceholder": "*!*@Maske oder Spitzname…",
"channelSearch": "#Kanal oder Spitzname",
"setTopic": "Festlegen",
"info": "Info",
"modes": "Kanalmodi",
"subject": "Thema"
}
},
"settings": {
"title": "Einstellungen",
"sections": {
"account": "Konto",
"appearance": "Darstellung",
"notifications": "Benachrichtigungen",
"privacy": "Datenschutz",
"advanced": "Erweitert"
},
"account": {
"login": "Anmelden",
"register": "Konto erstellen",
"logout": "Abmelden",
"accountName": "Kontoname",
"password": "Passwort",
"currentPassword": "Aktuelles Passwort",
"newPassword": "Neues Passwort",
"minPassword": "Min. 6 Zeichen",
"changeNick": "Spitznamen ändern",
"nickHint": "Ändert den in Kanälen angezeigten Spitznamen.",
"emailPlaceholder": "du@beispiel.de",
"totpCode": "z.B. 123456",
"verificationCode": "Bestätigungscode",
"resend": "Code erneut senden",
"restart": "Neu starten",
"connecting": "Verbinde…",
"validating": "Überprüfe…",
"security": "Sicherheit",
"status": "Status",
"loggedIn": "Verbunden",
"loggedInAs": "Verbunden · {{nick}}",
"identifiedAs": "Du bist angemeldet als {{nick}}",
"unknownError": "Unbekanntes Konto oder falsches Passwort.",
"saslFailed": "Falscher Spitzname oder Passwort.",
"antiBot": "Anti-Bot-Verifizierung",
"wrongPassword": "Falsches Passwort.",
"join": "Beitreten",
"channelHint": "Kanal beitreten (beginnt mit #)",
"channelPlaceholder": "z.B. orbit, hilfe",
"fromChannel": "Vom Kanal"
},
"appearance": {
"theme": "Design",
"language": "Sprache",
"timeFormat": "Zeitformat",
"compact": "Kompakte Nachrichten",
"textSize": "Textgröße"
},
"notifications": {
"browser": "Browser-Benachrichtigungen",
"push": "Push-Benachrichtigungen"
}
},
"profile": {
"refresh": "Aktualisieren",
"close": "Schließen",
"away": "Abwesend",
"noInfo": "Keine öffentlichen Informationen verfügbar.",
"noMembers": "Keine Mitglieder",
"filterMembers": "Mitglieder filtern",
"openDM": "Direktnachricht",
"openProfile": "Profil",
"cancel": "Abbrechen"
},
"language": {
"label": "Sprache",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Informationen",
"realname": "Anzeigename",
"identifier": "Kennung",
"server": "Server",
"channels": "Gemeinsame Kanäle",
"signon": "Online seit",
"idle": "Inaktiv seit",
"connection": "Verbindung",
"secureTls": "Sicher (TLS)",
"umodes": "Benutzermodi",
"certfp": "Zertifikat-Fingerabdruck",
"verified": "Verifiziertes Konto",
"groups": "Gruppen",
"score": "Punktzahl",
"info": "Info",
"statStatus": "Status",
"statCommon": "Gemeinsame Kanäle",
"statSecure": "Sicher",
"loading": "Profil wird geladen…",
"visitor": "Besucher",
"registeredTitle": "Registriert: {{account}}",
"badgeOp": "Operator",
"badgeRegistered": "Registriert",
"badgeGuest": "Gast",
"friend": "Freund",
"friendAdd": "Freund hinzufügen",
"ignore": "Ignorieren",
"unignore": "Nicht mehr ignorieren",
"report": "Melden",
"moderation": "Moderation",
"kick": "Rauswerfen",
"ban": "Sperren",
"opAdd": "Op",
"opRemove": "Op entfernen",
"voice": "Voice",
"dm": "Direktnachricht",
"online": "online",
"away": "abwesend",
"offline": "offline"
},
"security": {
"tag": "Sicherheit",
"leakGuard": "Wir haben deinen Identify-Befehl abgefangen: So gesendet wäre dein Passwort für alle in {{channel}} sichtbar gewesen. Keine Sorge — wir haben ihn privat an {{service}} weitergeleitet, nichts wurde preisgegeben. Melde dich nächstes Mal über Einstellungen Konto an."
}
}

View file

@ -172,5 +172,50 @@
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Information",
"realname": "Display name",
"identifier": "Identifier",
"server": "Server",
"channels": "Common channels",
"signon": "Online since",
"idle": "Idle for",
"connection": "Connection",
"secureTls": "Secure (TLS)",
"umodes": "User modes",
"certfp": "Certificate fingerprint",
"verified": "Verified account",
"groups": "Groups",
"score": "Score",
"info": "Info",
"statStatus": "Status",
"statCommon": "Common channels",
"statSecure": "Secure",
"loading": "loading profile…",
"visitor": "visitor",
"registeredTitle": "Registered: {{account}}",
"badgeOp": "Operator",
"badgeRegistered": "Registered",
"badgeGuest": "Guest",
"friend": "Friend",
"friendAdd": "Add friend",
"ignore": "Ignore",
"unignore": "Unignore",
"report": "Report",
"moderation": "Moderation",
"kick": "Kick",
"ban": "Ban",
"opAdd": "Op",
"opRemove": "Remove op",
"voice": "Voice",
"dm": "Direct message",
"online": "online",
"away": "away",
"offline": "offline"
},
"security": {
"tag": "Security",
"leakGuard": "We intercepted your identify command: sent as-is here, your password would have been visible to everyone in {{channel}}. Don't worry — we forwarded it to {{service}} privately, nothing was leaked. Next time, log in from Settings Account."
}
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Inicio", "settings": "Ajustes", "profile": "Mi perfil", "friends": "Amigos", "explore": "Explorar canales", "newDM": "Nueva conversación", "away": "Ausente", "quit": "Salir del chat" },
"sidebar": { "all": "Todo", "channels": "Canales", "dms": "Directos", "search": "Buscar", "noChannel": "Elige un canal para empezar a chatear." },
"topbar": { "search": "Buscar", "members": "Ver miembros", "manage": "Administrar canal", "modes": "Modos del canal", "notifications": "Notificaciones", "closeSearch": "Cerrar búsqueda", "membersCount": "Miembros · {{n}}", "publicChannel": "Canal público · {{n}} miembros", "commonChannels": "Canales en común" },
"connect": { "onlineBadge": "{{n}} personas en línea", "pseudoPlaceholder": "Elige tu apodo…", "enter": "Entrar", "joinHint": "Te vas a unir a", "registered": "¿Ya tienes cuenta?", "hidePassword": "Ocultar contraseña", "passwordPlaceholder": "Contraseña (si tu nick está registrado)", "passwordLabel": "Contraseña", "noData": "Sin registro necesario", "encrypted": "Cifrado de extremo a extremo", "ircv3": "IRCv3", "helpButton": "Ayuda & FAQ", "forgotButton": "¿Olvidaste tu contraseña?", "createButton": "Crear una cuenta", "faqTitle": "Ayuda & FAQ", "error_error": "No se puede conectar. Inténtalo de nuevo.", "error_closed": "La conexión se ha cerrado.", "error_sasl": "Apodo desconocido o contraseña incorrecta." },
"messages": { "reply": "En respuesta a", "react": "Reaccionar", "respond": "Responder", "delete": "Eliminar", "hideJoins": "Ocultar entradas/salidas", "unread": "Nuevos mensajes", "jumpUnread": "Nuevos mensajes", "loadHistory": "Cargar historial", "copyLink": "Copiar enlace", "copyText": "Copiar texto", "info": "Info", "notice": "AVISO", "guest": "Invitado", "poweredBy": "Impulsado por Orbit" },
"modals": { "closeButton": "Cerrar", "join": { "title": "Explorar canales", "search": "Buscar o crear #canal…", "loading": "Cargando canales…", "noResults": "Sin resultados" }, "dm": { "title": "Nueva conversación", "search": "Añadir apodo…", "noResults": "Sin resultados" }, "friends": { "title": "Amigos", "noFriends": "Aún no tienes amigos." }, "chanadmin": { "title": "Administrar canal", "topic": "Tema del canal…", "bans": "Expulsiones ({{n}})", "noBans": "Sin expulsiones.", "ban": "Expulsar", "unban": "Levantar expulsión", "kick": "Echar", "maskPlaceholder": "*!*@máscara o apodo…", "channelSearch": "#canal o apodo", "setTopic": "Establecer", "info": "Info", "modes": "Modos del canal", "subject": "Tema" } },
"settings": { "title": "Ajustes", "sections": { "account": "Cuenta", "appearance": "Apariencia", "notifications": "Notificaciones", "privacy": "Privacidad", "advanced": "Avanzado" }, "account": { "login": "Iniciar sesión", "register": "Crear cuenta", "logout": "Cerrar sesión", "accountName": "Nombre de cuenta", "password": "Contraseña", "currentPassword": "Contraseña actual", "newPassword": "Nueva contraseña", "minPassword": "Mín. 6 caracteres", "changeNick": "Cambiar apodo", "nickHint": "Cambia el apodo que se muestra en los canales.", "emailPlaceholder": "tu@ejemplo.com", "totpCode": "p. ej. 123456", "verificationCode": "Código de verificación", "resend": "Reenviar código", "restart": "Empezar de nuevo", "connecting": "Conectando…", "validating": "Validando…", "security": "Seguridad", "status": "Estado", "loggedIn": "Conectado", "loggedInAs": "Conectado · {{nick}}", "identifiedAs": "Has iniciado sesión como {{nick}}", "unknownError": "Cuenta desconocida o contraseña incorrecta.", "saslFailed": "Apodo o contraseña incorrectos.", "antiBot": "Verificación antibot", "wrongPassword": "Contraseña incorrecta.", "join": "Unirse", "channelHint": "Únete a un canal (empieza por #)", "channelPlaceholder": "p. ej. orbit, ayuda", "fromChannel": "Desde el canal" }, "appearance": { "theme": "Tema", "language": "Idioma", "timeFormat": "Formato de hora", "compact": "Mensajes compactos", "textSize": "Tamaño de texto" }, "notifications": { "browser": "Notificaciones del navegador", "push": "Notificaciones push" } },
"profile": { "refresh": "Actualizar", "close": "Cerrar", "away": "Ausente", "noInfo": "No hay información pública disponible.", "noMembers": "Sin miembros", "filterMembers": "Filtrar miembros", "openDM": "Mensaje directo", "openProfile": "Perfil", "cancel": "Cancelar" },
"language": { "label": "Idioma", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Inicio",
"settings": "Ajustes",
"profile": "Mi perfil",
"friends": "Amigos",
"explore": "Explorar canales",
"newDM": "Nueva conversación",
"away": "Ausente",
"quit": "Salir del chat"
},
"sidebar": {
"all": "Todo",
"channels": "Canales",
"dms": "Directos",
"search": "Buscar",
"noChannel": "Elige un canal para empezar a chatear."
},
"topbar": {
"search": "Buscar",
"members": "Ver miembros",
"manage": "Administrar canal",
"modes": "Modos del canal",
"notifications": "Notificaciones",
"closeSearch": "Cerrar búsqueda",
"membersCount": "Miembros · {{n}}",
"publicChannel": "Canal público · {{n}} miembros",
"commonChannels": "Canales en común"
},
"connect": {
"onlineBadge": "{{n}} personas en línea",
"pseudoPlaceholder": "Elige tu apodo…",
"enter": "Entrar",
"joinHint": "Te vas a unir a",
"registered": "¿Ya tienes cuenta?",
"hidePassword": "Ocultar contraseña",
"passwordPlaceholder": "Contraseña (si tu nick está registrado)",
"passwordLabel": "Contraseña",
"noData": "Sin registro necesario",
"encrypted": "Cifrado de extremo a extremo",
"ircv3": "IRCv3",
"helpButton": "Ayuda & FAQ",
"forgotButton": "¿Olvidaste tu contraseña?",
"createButton": "Crear una cuenta",
"faqTitle": "Ayuda & FAQ",
"error_error": "No se puede conectar. Inténtalo de nuevo.",
"error_closed": "La conexión se ha cerrado.",
"error_sasl": "Apodo desconocido o contraseña incorrecta."
},
"messages": {
"reply": "En respuesta a",
"react": "Reaccionar",
"respond": "Responder",
"delete": "Eliminar",
"hideJoins": "Ocultar entradas/salidas",
"unread": "Nuevos mensajes",
"jumpUnread": "Nuevos mensajes",
"loadHistory": "Cargar historial",
"copyLink": "Copiar enlace",
"copyText": "Copiar texto",
"info": "Info",
"notice": "AVISO",
"guest": "Invitado",
"poweredBy": "Impulsado por Orbit"
},
"modals": {
"closeButton": "Cerrar",
"join": {
"title": "Explorar canales",
"search": "Buscar o crear #canal…",
"loading": "Cargando canales…",
"noResults": "Sin resultados"
},
"dm": {
"title": "Nueva conversación",
"search": "Añadir apodo…",
"noResults": "Sin resultados"
},
"friends": {
"title": "Amigos",
"noFriends": "Aún no tienes amigos."
},
"chanadmin": {
"title": "Administrar canal",
"topic": "Tema del canal…",
"bans": "Expulsiones ({{n}})",
"noBans": "Sin expulsiones.",
"ban": "Expulsar",
"unban": "Levantar expulsión",
"kick": "Echar",
"maskPlaceholder": "*!*@máscara o apodo…",
"channelSearch": "#canal o apodo",
"setTopic": "Establecer",
"info": "Info",
"modes": "Modos del canal",
"subject": "Tema"
}
},
"settings": {
"title": "Ajustes",
"sections": {
"account": "Cuenta",
"appearance": "Apariencia",
"notifications": "Notificaciones",
"privacy": "Privacidad",
"advanced": "Avanzado"
},
"account": {
"login": "Iniciar sesión",
"register": "Crear cuenta",
"logout": "Cerrar sesión",
"accountName": "Nombre de cuenta",
"password": "Contraseña",
"currentPassword": "Contraseña actual",
"newPassword": "Nueva contraseña",
"minPassword": "Mín. 6 caracteres",
"changeNick": "Cambiar apodo",
"nickHint": "Cambia el apodo que se muestra en los canales.",
"emailPlaceholder": "tu@ejemplo.com",
"totpCode": "p. ej. 123456",
"verificationCode": "Código de verificación",
"resend": "Reenviar código",
"restart": "Empezar de nuevo",
"connecting": "Conectando…",
"validating": "Validando…",
"security": "Seguridad",
"status": "Estado",
"loggedIn": "Conectado",
"loggedInAs": "Conectado · {{nick}}",
"identifiedAs": "Has iniciado sesión como {{nick}}",
"unknownError": "Cuenta desconocida o contraseña incorrecta.",
"saslFailed": "Apodo o contraseña incorrectos.",
"antiBot": "Verificación antibot",
"wrongPassword": "Contraseña incorrecta.",
"join": "Unirse",
"channelHint": "Únete a un canal (empieza por #)",
"channelPlaceholder": "p. ej. orbit, ayuda",
"fromChannel": "Desde el canal"
},
"appearance": {
"theme": "Tema",
"language": "Idioma",
"timeFormat": "Formato de hora",
"compact": "Mensajes compactos",
"textSize": "Tamaño de texto"
},
"notifications": {
"browser": "Notificaciones del navegador",
"push": "Notificaciones push"
}
},
"profile": {
"refresh": "Actualizar",
"close": "Cerrar",
"away": "Ausente",
"noInfo": "No hay información pública disponible.",
"noMembers": "Sin miembros",
"filterMembers": "Filtrar miembros",
"openDM": "Mensaje directo",
"openProfile": "Perfil",
"cancel": "Cancelar"
},
"language": {
"label": "Idioma",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Información",
"realname": "Nombre visible",
"identifier": "Identificador",
"server": "Servidor",
"channels": "Canales en común",
"signon": "En línea desde",
"idle": "Inactivo desde",
"connection": "Conexión",
"secureTls": "Segura (TLS)",
"umodes": "Modos de usuario",
"certfp": "Huella del certificado",
"verified": "Cuenta verificada",
"groups": "Grupos",
"score": "Puntuación",
"info": "Info",
"statStatus": "Estado",
"statCommon": "Canales en común",
"statSecure": "Seguro",
"loading": "cargando perfil…",
"visitor": "visitante",
"registeredTitle": "Registrado: {{account}}",
"badgeOp": "Operador",
"badgeRegistered": "Registrado",
"badgeGuest": "Invitado",
"friend": "Amigo",
"friendAdd": "Añadir amigo",
"ignore": "Ignorar",
"unignore": "Dejar de ignorar",
"report": "Reportar",
"moderation": "Moderación",
"kick": "Expulsar",
"ban": "Banear",
"opAdd": "Op",
"opRemove": "Quitar op",
"voice": "Voz",
"dm": "Mensaje directo",
"online": "en línea",
"away": "ausente",
"offline": "desconectado"
},
"security": {
"tag": "Seguridad",
"leakGuard": "Interceptamos tu comando de identificación: enviado tal cual aquí, tu contraseña habría sido visible para todos en {{channel}}. Tranquilo — lo enviamos a {{service}} en privado, no se filtró nada. La próxima vez, inicia sesión desde Ajustes Cuenta."
}
}

View file

@ -172,5 +172,50 @@
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Informations",
"realname": "Nom affiché",
"identifier": "Identifiant",
"server": "Serveur",
"channels": "Salons en commun",
"signon": "Connecté depuis",
"idle": "Inactif depuis",
"connection": "Connexion",
"secureTls": "Sécurisée (TLS)",
"umodes": "Modes utilisateur",
"certfp": "Empreinte du certificat",
"verified": "Compte vérifié",
"groups": "Groupes",
"score": "Score",
"info": "Info",
"statStatus": "Statut",
"statCommon": "Salons communs",
"statSecure": "Sécurisé",
"loading": "chargement du profil…",
"visitor": "visiteur",
"registeredTitle": "Enregistré : {{account}}",
"badgeOp": "Opérateur",
"badgeRegistered": "Enregistré",
"badgeGuest": "Invité",
"friend": "Ami",
"friendAdd": "Ajouter en ami",
"ignore": "Ignorer",
"unignore": "Ne plus ignorer",
"report": "Signaler",
"moderation": "Modération",
"kick": "Expulser",
"ban": "Bannir",
"opAdd": "Op",
"opRemove": "Retirer op",
"voice": "Voix",
"dm": "Message privé",
"online": "en ligne",
"away": "absent",
"offline": "hors ligne"
},
"security": {
"tag": "Sécurité",
"leakGuard": "On a intercepté ta commande didentification : envoyée telle quelle ici, ton mot de passe aurait été visible par tout le monde dans {{channel}}. Pas dinquiétude — on la transmise à {{service}} en privé, rien na été divulgué. La prochaine fois, connecte-toi depuis Réglages Compte."
}
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Home", "settings": "Impostazioni", "profile": "Il mio profilo", "friends": "Amici", "explore": "Esplora canali", "newDM": "Nuova conversazione", "away": "Assente", "quit": "Esci dalla chat" },
"sidebar": { "all": "Tutti", "channels": "Canali", "dms": "Diretti", "search": "Cerca", "noChannel": "Scegli un canale per iniziare a chattare." },
"topbar": { "search": "Cerca", "members": "Vedi membri", "manage": "Gestisci canale", "modes": "Modalità del canale", "notifications": "Notifiche", "closeSearch": "Chiudi ricerca", "membersCount": "Membri · {{n}}", "publicChannel": "Canale pubblico · {{n}} membri", "commonChannels": "Canali in comune" },
"connect": { "onlineBadge": "{{n}} persone online", "pseudoPlaceholder": "Scegli il tuo soprannome…", "enter": "Entra", "joinHint": "Stai entrando in", "registered": "Hai già un account?", "hidePassword": "Nascondi password", "passwordPlaceholder": "Password (se il tuo nick è registrato)", "passwordLabel": "Password", "noData": "Nessuna registrazione richiesta", "encrypted": "Crittografia end-to-end", "ircv3": "IRCv3", "helpButton": "Aiuto & FAQ", "forgotButton": "Password dimenticata?", "createButton": "Crea un account", "faqTitle": "Aiuto & FAQ", "error_error": "Impossibile connettersi. Riprova tra poco.", "error_closed": "La connessione è stata chiusa.", "error_sasl": "Soprannome sconosciuto o password errata." },
"messages": { "reply": "In risposta a", "react": "Reagisci", "respond": "Rispondi", "delete": "Elimina", "hideJoins": "Nascondi entrate/uscite", "unread": "Nuovi messaggi", "jumpUnread": "Nuovi messaggi", "loadHistory": "Carica cronologia", "copyLink": "Copia link", "copyText": "Copia testo", "info": "Info", "notice": "AVVISO", "guest": "Ospite", "poweredBy": "Realizzato con Orbit" },
"modals": { "closeButton": "Chiudi", "join": { "title": "Esplora canali", "search": "Cerca o crea #canale…", "loading": "Caricamento canali…", "noResults": "Nessun risultato" }, "dm": { "title": "Nuova conversazione", "search": "Aggiungi un soprannome…", "noResults": "Nessun risultato" }, "friends": { "title": "Amici", "noFriends": "Ancora nessun amico." }, "chanadmin": { "title": "Gestisci canale", "topic": "Argomento del canale…", "bans": "Ban ({{n}})", "noBans": "Nessun ban.", "ban": "Banna", "unban": "Rimuovi ban", "kick": "Espelli", "maskPlaceholder": "*!*@maschera o soprannome…", "channelSearch": "#canale o soprannome", "setTopic": "Imposta", "info": "Info", "modes": "Modalità del canale", "subject": "Argomento" } },
"settings": { "title": "Impostazioni", "sections": { "account": "Account", "appearance": "Aspetto", "notifications": "Notifiche", "privacy": "Privacy", "advanced": "Avanzate" }, "account": { "login": "Accedi", "register": "Crea account", "logout": "Disconnetti", "accountName": "Nome account", "password": "Password", "currentPassword": "Password attuale", "newPassword": "Nuova password", "minPassword": "Min. 6 caratteri", "changeNick": "Cambia soprannome", "nickHint": "Cambia il soprannome mostrato nei canali.", "emailPlaceholder": "tu@esempio.com", "totpCode": "es. 123456", "verificationCode": "Codice di verifica", "resend": "Reinvia codice", "restart": "Ricomincia", "connecting": "Connessione…", "validating": "Convalida…", "security": "Sicurezza", "status": "Stato", "loggedIn": "Connesso", "loggedInAs": "Connesso · {{nick}}", "identifiedAs": "Hai effettuato l'accesso come {{nick}}", "unknownError": "Account sconosciuto o password errata.", "saslFailed": "Soprannome o password errati.", "antiBot": "Verifica anti-bot", "wrongPassword": "Password errata.", "join": "Entra", "channelHint": "Entra in un canale (inizia con #)", "channelPlaceholder": "es. orbit, aiuto", "fromChannel": "Dal canale" }, "appearance": { "theme": "Tema", "language": "Lingua", "timeFormat": "Formato ora", "compact": "Messaggi compatti", "textSize": "Dimensione testo" }, "notifications": { "browser": "Notifiche del browser", "push": "Notifiche push" } },
"profile": { "refresh": "Aggiorna", "close": "Chiudi", "away": "Assente", "noInfo": "Nessuna informazione pubblica disponibile.", "noMembers": "Nessun membro", "filterMembers": "Filtra membri", "openDM": "Messaggio diretto", "openProfile": "Profilo", "cancel": "Annulla" },
"language": { "label": "Lingua", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Home",
"settings": "Impostazioni",
"profile": "Il mio profilo",
"friends": "Amici",
"explore": "Esplora canali",
"newDM": "Nuova conversazione",
"away": "Assente",
"quit": "Esci dalla chat"
},
"sidebar": {
"all": "Tutti",
"channels": "Canali",
"dms": "Diretti",
"search": "Cerca",
"noChannel": "Scegli un canale per iniziare a chattare."
},
"topbar": {
"search": "Cerca",
"members": "Vedi membri",
"manage": "Gestisci canale",
"modes": "Modalità del canale",
"notifications": "Notifiche",
"closeSearch": "Chiudi ricerca",
"membersCount": "Membri · {{n}}",
"publicChannel": "Canale pubblico · {{n}} membri",
"commonChannels": "Canali in comune"
},
"connect": {
"onlineBadge": "{{n}} persone online",
"pseudoPlaceholder": "Scegli il tuo soprannome…",
"enter": "Entra",
"joinHint": "Stai entrando in",
"registered": "Hai già un account?",
"hidePassword": "Nascondi password",
"passwordPlaceholder": "Password (se il tuo nick è registrato)",
"passwordLabel": "Password",
"noData": "Nessuna registrazione richiesta",
"encrypted": "Crittografia end-to-end",
"ircv3": "IRCv3",
"helpButton": "Aiuto & FAQ",
"forgotButton": "Password dimenticata?",
"createButton": "Crea un account",
"faqTitle": "Aiuto & FAQ",
"error_error": "Impossibile connettersi. Riprova tra poco.",
"error_closed": "La connessione è stata chiusa.",
"error_sasl": "Soprannome sconosciuto o password errata."
},
"messages": {
"reply": "In risposta a",
"react": "Reagisci",
"respond": "Rispondi",
"delete": "Elimina",
"hideJoins": "Nascondi entrate/uscite",
"unread": "Nuovi messaggi",
"jumpUnread": "Nuovi messaggi",
"loadHistory": "Carica cronologia",
"copyLink": "Copia link",
"copyText": "Copia testo",
"info": "Info",
"notice": "AVVISO",
"guest": "Ospite",
"poweredBy": "Realizzato con Orbit"
},
"modals": {
"closeButton": "Chiudi",
"join": {
"title": "Esplora canali",
"search": "Cerca o crea #canale…",
"loading": "Caricamento canali…",
"noResults": "Nessun risultato"
},
"dm": {
"title": "Nuova conversazione",
"search": "Aggiungi un soprannome…",
"noResults": "Nessun risultato"
},
"friends": {
"title": "Amici",
"noFriends": "Ancora nessun amico."
},
"chanadmin": {
"title": "Gestisci canale",
"topic": "Argomento del canale…",
"bans": "Ban ({{n}})",
"noBans": "Nessun ban.",
"ban": "Banna",
"unban": "Rimuovi ban",
"kick": "Espelli",
"maskPlaceholder": "*!*@maschera o soprannome…",
"channelSearch": "#canale o soprannome",
"setTopic": "Imposta",
"info": "Info",
"modes": "Modalità del canale",
"subject": "Argomento"
}
},
"settings": {
"title": "Impostazioni",
"sections": {
"account": "Account",
"appearance": "Aspetto",
"notifications": "Notifiche",
"privacy": "Privacy",
"advanced": "Avanzate"
},
"account": {
"login": "Accedi",
"register": "Crea account",
"logout": "Disconnetti",
"accountName": "Nome account",
"password": "Password",
"currentPassword": "Password attuale",
"newPassword": "Nuova password",
"minPassword": "Min. 6 caratteri",
"changeNick": "Cambia soprannome",
"nickHint": "Cambia il soprannome mostrato nei canali.",
"emailPlaceholder": "tu@esempio.com",
"totpCode": "es. 123456",
"verificationCode": "Codice di verifica",
"resend": "Reinvia codice",
"restart": "Ricomincia",
"connecting": "Connessione…",
"validating": "Convalida…",
"security": "Sicurezza",
"status": "Stato",
"loggedIn": "Connesso",
"loggedInAs": "Connesso · {{nick}}",
"identifiedAs": "Hai effettuato l'accesso come {{nick}}",
"unknownError": "Account sconosciuto o password errata.",
"saslFailed": "Soprannome o password errati.",
"antiBot": "Verifica anti-bot",
"wrongPassword": "Password errata.",
"join": "Entra",
"channelHint": "Entra in un canale (inizia con #)",
"channelPlaceholder": "es. orbit, aiuto",
"fromChannel": "Dal canale"
},
"appearance": {
"theme": "Tema",
"language": "Lingua",
"timeFormat": "Formato ora",
"compact": "Messaggi compatti",
"textSize": "Dimensione testo"
},
"notifications": {
"browser": "Notifiche del browser",
"push": "Notifiche push"
}
},
"profile": {
"refresh": "Aggiorna",
"close": "Chiudi",
"away": "Assente",
"noInfo": "Nessuna informazione pubblica disponibile.",
"noMembers": "Nessun membro",
"filterMembers": "Filtra membri",
"openDM": "Messaggio diretto",
"openProfile": "Profilo",
"cancel": "Annulla"
},
"language": {
"label": "Lingua",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Informazioni",
"realname": "Nome visualizzato",
"identifier": "Identificatore",
"server": "Server",
"channels": "Canali in comune",
"signon": "Online da",
"idle": "Inattivo da",
"connection": "Connessione",
"secureTls": "Sicura (TLS)",
"umodes": "Modalità utente",
"certfp": "Impronta del certificato",
"verified": "Account verificato",
"groups": "Gruppi",
"score": "Punteggio",
"info": "Info",
"statStatus": "Stato",
"statCommon": "Canali in comune",
"statSecure": "Sicuro",
"loading": "caricamento profilo…",
"visitor": "visitatore",
"registeredTitle": "Registrato: {{account}}",
"badgeOp": "Operatore",
"badgeRegistered": "Registrato",
"badgeGuest": "Ospite",
"friend": "Amico",
"friendAdd": "Aggiungi amico",
"ignore": "Ignora",
"unignore": "Non ignorare più",
"report": "Segnala",
"moderation": "Moderazione",
"kick": "Espelli",
"ban": "Banna",
"opAdd": "Op",
"opRemove": "Rimuovi op",
"voice": "Voce",
"dm": "Messaggio diretto",
"online": "online",
"away": "assente",
"offline": "offline"
},
"security": {
"tag": "Sicurezza",
"leakGuard": "Abbiamo intercettato il tuo comando di identificazione: inviato così com'è qui, la tua password sarebbe stata visibile a tutti in {{channel}}. Tranquillo — l'abbiamo inoltrato a {{service}} in privato, nulla è trapelato. La prossima volta, accedi da Impostazioni Account."
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "गृहपृष्ठ", "settings": "सेटिङ", "profile": "मेरो प्रोफाइल", "friends": "साथीहरू", "explore": "च्यानलहरू अन्वेषण गर्नुहोस्", "newDM": "नयाँ कुराकानी", "away": "अनुपस्थित", "quit": "च्याट छोड्नुहोस्" },
"sidebar": { "all": "सबै", "channels": "च्यानलहरू", "dms": "प्रत्यक्ष", "search": "खोज्नुहोस्", "noChannel": "कुराकानी सुरु गर्न च्यानल छान्नुहोस्।" },
"topbar": { "search": "खोज्नुहोस्", "members": "सदस्यहरू हेर्नुहोस्", "manage": "च्यानल व्यवस्थापन", "modes": "च्यानल मोडहरू", "notifications": "सूचनाहरू", "closeSearch": "खोज बन्द गर्नुहोस्", "membersCount": "सदस्यहरू · {{n}}", "publicChannel": "सार्वजनिक च्यानल · {{n}} सदस्यहरू", "commonChannels": "साझा च्यानलहरू" },
"connect": { "onlineBadge": "{{n}} जना अनलाइन", "pseudoPlaceholder": "आफ्नो उपनाम छान्नुहोस्…", "enter": "प्रवेश गर्नुहोस्", "joinHint": "तपाईं सामेल हुँदै हुनुहुन्छ", "registered": "पहिले नै खाता छ?", "hidePassword": "पासवर्ड लुकाउनुहोस्", "passwordPlaceholder": "पासवर्ड (यदि तपाईंको उपनाम दर्ता छ)", "passwordLabel": "पासवर्ड", "noData": "दर्ता आवश्यक छैन", "encrypted": "एन्ड-टु-एन्ड एन्क्रिप्टेड", "ircv3": "IRCv3", "helpButton": "मद्दत र FAQ", "forgotButton": "पासवर्ड बिर्सनुभयो?", "createButton": "खाता बनाउनुहोस्", "faqTitle": "मद्दत र FAQ", "error_error": "जडान गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।", "error_closed": "जडान बन्द भयो।", "error_sasl": "अज्ञात उपनाम वा गलत पासवर्ड।" },
"messages": { "reply": "जवाफमा", "react": "प्रतिक्रिया", "respond": "जवाफ दिनुहोस्", "delete": "मेट्नुहोस्", "hideJoins": "सामेल/प्रस्थान लुकाउनुहोस्", "unread": "नयाँ सन्देशहरू", "jumpUnread": "नयाँ सन्देशहरू", "loadHistory": "इतिहास लोड गर्नुहोस्", "copyLink": "लिंक प्रतिलिपि गर्नुहोस्", "copyText": "पाठ प्रतिलिपि गर्नुहोस्", "info": "जानकारी", "notice": "सूचना", "guest": "अतिथि", "poweredBy": "Orbit द्वारा संचालित" },
"modals": { "closeButton": "बन्द गर्नुहोस्", "join": { "title": "च्यानलहरू अन्वेषण", "search": "च्यानल खोज्नुहोस् वा बनाउनुहोस्…", "loading": "च्यानलहरू लोड हुँदैछ…", "noResults": "कुनै नतिजा छैन" }, "dm": { "title": "नयाँ कुराकानी", "search": "उपनाम थप्नुहोस्…", "noResults": "कुनै नतिजा छैन" }, "friends": { "title": "साथीहरू", "noFriends": "अहिलेसम्म कुनै साथी छैन।" }, "chanadmin": { "title": "च्यानल व्यवस्थापन", "topic": "च्यानल विषय…", "bans": "प्रतिबन्धहरू ({{n}})", "noBans": "कुनै प्रतिबन्ध छैन।", "ban": "प्रतिबन्ध गर्नुहोस्", "unban": "प्रतिबन्ध हटाउनुहोस्", "kick": "निकाल्नुहोस्", "maskPlaceholder": "*!*@मास्क वा उपनाम…", "channelSearch": "#च्यानल वा उपनाम", "setTopic": "सेट गर्नुहोस्", "info": "जानकारी", "modes": "च्यानल मोडहरू", "subject": "विषय" } },
"settings": { "title": "सेटिङ", "sections": { "account": "खाता", "appearance": "स्वरूप", "notifications": "सूचनाहरू", "privacy": "गोपनीयता", "advanced": "उन्नत" }, "account": { "login": "लगइन गर्नुहोस्", "register": "खाता बनाउनुहोस्", "logout": "लगआउट गर्नुहोस्", "accountName": "खाताको नाम", "password": "पासवर्ड", "currentPassword": "हालको पासवर्ड", "newPassword": "नयाँ पासवर्ड", "minPassword": "कम्तीमा ६ अक्षर", "changeNick": "उपनाम परिवर्तन गर्नुहोस्", "nickHint": "च्यानलहरूमा देखाइने उपनाम परिवर्तन गर्छ।", "emailPlaceholder": "vasna@udaharan.com", "totpCode": "जस्तै: 123456", "verificationCode": "प्रमाणीकरण कोड", "resend": "कोड पुनः पठाउनुहोस्", "restart": "पुनः सुरु गर्नुहोस्", "connecting": "जडान हुँदैछ…", "validating": "प्रमाणित हुँदैछ…", "security": "सुरक्षा", "status": "स्थिति", "loggedIn": "जडित", "loggedInAs": "जडित · {{nick}}", "identifiedAs": "तपाईं {{nick}} को रूपमा लगइन हुनुहुन्छ", "unknownError": "अज्ञात खाता वा गलत पासवर्ड।", "saslFailed": "गलत उपनाम वा पासवर्ड।", "antiBot": "एन्टि-बट प्रमाणीकरण", "wrongPassword": "गलत पासवर्ड।", "join": "सामेल हुनुहोस्", "channelHint": "च्यानलमा सामेल हुनुहोस् (# बाट सुरु)", "channelPlaceholder": "जस्तै: orbit, सहायता", "fromChannel": "च्यानलबाट" }, "appearance": { "theme": "थिम", "language": "भाषा", "timeFormat": "समय ढाँचा", "compact": "कम्प्याक्ट सन्देशहरू", "textSize": "पाठ आकार" }, "notifications": { "browser": "ब्राउजर सूचनाहरू", "push": "पुश सूचनाहरू" } },
"profile": { "refresh": "ताजा गर्नुहोस्", "close": "बन्द गर्नुहोस्", "away": "अनुपस्थित", "noInfo": "कुनै सार्वजनिक जानकारी उपलब्ध छैन।", "noMembers": "कुनै सदस्य छैन", "filterMembers": "सदस्यहरू फिल्टर गर्नुहोस्", "openDM": "प्रत्यक्ष सन्देश", "openProfile": "प्रोफाइल", "cancel": "रद्द गर्नुहोस्" },
"language": { "label": "भाषा", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "गृहपृष्ठ",
"settings": "सेटिङ",
"profile": "मेरो प्रोफाइल",
"friends": "साथीहरू",
"explore": "च्यानलहरू अन्वेषण गर्नुहोस्",
"newDM": "नयाँ कुराकानी",
"away": "अनुपस्थित",
"quit": "च्याट छोड्नुहोस्"
},
"sidebar": {
"all": "सबै",
"channels": "च्यानलहरू",
"dms": "प्रत्यक्ष",
"search": "खोज्नुहोस्",
"noChannel": "कुराकानी सुरु गर्न च्यानल छान्नुहोस्।"
},
"topbar": {
"search": "खोज्नुहोस्",
"members": "सदस्यहरू हेर्नुहोस्",
"manage": "च्यानल व्यवस्थापन",
"modes": "च्यानल मोडहरू",
"notifications": "सूचनाहरू",
"closeSearch": "खोज बन्द गर्नुहोस्",
"membersCount": "सदस्यहरू · {{n}}",
"publicChannel": "सार्वजनिक च्यानल · {{n}} सदस्यहरू",
"commonChannels": "साझा च्यानलहरू"
},
"connect": {
"onlineBadge": "{{n}} जना अनलाइन",
"pseudoPlaceholder": "आफ्नो उपनाम छान्नुहोस्…",
"enter": "प्रवेश गर्नुहोस्",
"joinHint": "तपाईं सामेल हुँदै हुनुहुन्छ",
"registered": "पहिले नै खाता छ?",
"hidePassword": "पासवर्ड लुकाउनुहोस्",
"passwordPlaceholder": "पासवर्ड (यदि तपाईंको उपनाम दर्ता छ)",
"passwordLabel": "पासवर्ड",
"noData": "दर्ता आवश्यक छैन",
"encrypted": "एन्ड-टु-एन्ड एन्क्रिप्टेड",
"ircv3": "IRCv3",
"helpButton": "मद्दत र FAQ",
"forgotButton": "पासवर्ड बिर्सनुभयो?",
"createButton": "खाता बनाउनुहोस्",
"faqTitle": "मद्दत र FAQ",
"error_error": "जडान गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।",
"error_closed": "जडान बन्द भयो।",
"error_sasl": "अज्ञात उपनाम वा गलत पासवर्ड।"
},
"messages": {
"reply": "जवाफमा",
"react": "प्रतिक्रिया",
"respond": "जवाफ दिनुहोस्",
"delete": "मेट्नुहोस्",
"hideJoins": "सामेल/प्रस्थान लुकाउनुहोस्",
"unread": "नयाँ सन्देशहरू",
"jumpUnread": "नयाँ सन्देशहरू",
"loadHistory": "इतिहास लोड गर्नुहोस्",
"copyLink": "लिंक प्रतिलिपि गर्नुहोस्",
"copyText": "पाठ प्रतिलिपि गर्नुहोस्",
"info": "जानकारी",
"notice": "सूचना",
"guest": "अतिथि",
"poweredBy": "Orbit द्वारा संचालित"
},
"modals": {
"closeButton": "बन्द गर्नुहोस्",
"join": {
"title": "च्यानलहरू अन्वेषण",
"search": "च्यानल खोज्नुहोस् वा बनाउनुहोस्…",
"loading": "च्यानलहरू लोड हुँदैछ…",
"noResults": "कुनै नतिजा छैन"
},
"dm": {
"title": "नयाँ कुराकानी",
"search": "उपनाम थप्नुहोस्…",
"noResults": "कुनै नतिजा छैन"
},
"friends": {
"title": "साथीहरू",
"noFriends": "अहिलेसम्म कुनै साथी छैन।"
},
"chanadmin": {
"title": "च्यानल व्यवस्थापन",
"topic": "च्यानल विषय…",
"bans": "प्रतिबन्धहरू ({{n}})",
"noBans": "कुनै प्रतिबन्ध छैन।",
"ban": "प्रतिबन्ध गर्नुहोस्",
"unban": "प्रतिबन्ध हटाउनुहोस्",
"kick": "निकाल्नुहोस्",
"maskPlaceholder": "*!*@मास्क वा उपनाम…",
"channelSearch": "#च्यानल वा उपनाम",
"setTopic": "सेट गर्नुहोस्",
"info": "जानकारी",
"modes": "च्यानल मोडहरू",
"subject": "विषय"
}
},
"settings": {
"title": "सेटिङ",
"sections": {
"account": "खाता",
"appearance": "स्वरूप",
"notifications": "सूचनाहरू",
"privacy": "गोपनीयता",
"advanced": "उन्नत"
},
"account": {
"login": "लगइन गर्नुहोस्",
"register": "खाता बनाउनुहोस्",
"logout": "लगआउट गर्नुहोस्",
"accountName": "खाताको नाम",
"password": "पासवर्ड",
"currentPassword": "हालको पासवर्ड",
"newPassword": "नयाँ पासवर्ड",
"minPassword": "कम्तीमा ६ अक्षर",
"changeNick": "उपनाम परिवर्तन गर्नुहोस्",
"nickHint": "च्यानलहरूमा देखाइने उपनाम परिवर्तन गर्छ।",
"emailPlaceholder": "vasna@udaharan.com",
"totpCode": "जस्तै: 123456",
"verificationCode": "प्रमाणीकरण कोड",
"resend": "कोड पुनः पठाउनुहोस्",
"restart": "पुनः सुरु गर्नुहोस्",
"connecting": "जडान हुँदैछ…",
"validating": "प्रमाणित हुँदैछ…",
"security": "सुरक्षा",
"status": "स्थिति",
"loggedIn": "जडित",
"loggedInAs": "जडित · {{nick}}",
"identifiedAs": "तपाईं {{nick}} को रूपमा लगइन हुनुहुन्छ",
"unknownError": "अज्ञात खाता वा गलत पासवर्ड।",
"saslFailed": "गलत उपनाम वा पासवर्ड।",
"antiBot": "एन्टि-बट प्रमाणीकरण",
"wrongPassword": "गलत पासवर्ड।",
"join": "सामेल हुनुहोस्",
"channelHint": "च्यानलमा सामेल हुनुहोस् (# बाट सुरु)",
"channelPlaceholder": "जस्तै: orbit, सहायता",
"fromChannel": "च्यानलबाट"
},
"appearance": {
"theme": "थिम",
"language": "भाषा",
"timeFormat": "समय ढाँचा",
"compact": "कम्प्याक्ट सन्देशहरू",
"textSize": "पाठ आकार"
},
"notifications": {
"browser": "ब्राउजर सूचनाहरू",
"push": "पुश सूचनाहरू"
}
},
"profile": {
"refresh": "ताजा गर्नुहोस्",
"close": "बन्द गर्नुहोस्",
"away": "अनुपस्थित",
"noInfo": "कुनै सार्वजनिक जानकारी उपलब्ध छैन।",
"noMembers": "कुनै सदस्य छैन",
"filterMembers": "सदस्यहरू फिल्टर गर्नुहोस्",
"openDM": "प्रत्यक्ष सन्देश",
"openProfile": "प्रोफाइल",
"cancel": "रद्द गर्नुहोस्"
},
"language": {
"label": "भाषा",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "जानकारी",
"realname": "प्रदर्शन नाम",
"identifier": "पहिचानकर्ता",
"server": "सर्भर",
"channels": "साझा च्यानलहरू",
"signon": "अनलाइन भएदेखि",
"idle": "निष्क्रिय",
"connection": "जडान",
"secureTls": "सुरक्षित (TLS)",
"umodes": "प्रयोगकर्ता मोडहरू",
"certfp": "प्रमाणपत्र फिंगरप्रिन्ट",
"verified": "प्रमाणित खाता",
"groups": "समूहहरू",
"score": "स्कोर",
"info": "जानकारी",
"statStatus": "स्थिति",
"statCommon": "साझा च्यानलहरू",
"statSecure": "सुरक्षित",
"loading": "प्रोफाइल लोड हुँदै…",
"visitor": "आगन्तुक",
"registeredTitle": "दर्ता: {{account}}",
"badgeOp": "अपरेटर",
"badgeRegistered": "दर्ता",
"badgeGuest": "अतिथि",
"friend": "साथी",
"friendAdd": "साथी थप्नुहोस्",
"ignore": "बेवास्ता",
"unignore": "बेवास्ता हटाउनुहोस्",
"report": "रिपोर्ट",
"moderation": "मध्यस्थता",
"kick": "निकाल्नुहोस्",
"ban": "प्रतिबन्ध",
"opAdd": "अप",
"opRemove": "अप हटाउनुहोस्",
"voice": "आवाज",
"dm": "प्रत्यक्ष सन्देश",
"online": "अनलाइन",
"away": "अनुपस्थित",
"offline": "अफलाइन"
},
"security": {
"tag": "सुरक्षा",
"leakGuard": "हामीले तपाईंको पहिचान आदेश रोक्यौं: यहाँ जस्ताको तस्तै पठाएको भए, तपाईंको पासवर्ड {{channel}} मा सबैलाई देखिने थियो। चिन्ता नगर्नुहोस् — हामीले यसलाई {{service}} लाई निजी रूपमा पठायौं, केही चुहिएन। अर्को पटक, सेटिङ खाता बाट लगइन गर्नुहोस्।"
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Início", "settings": "Configurações", "profile": "Meu perfil", "friends": "Amigos", "explore": "Explorar canais", "newDM": "Nova conversa", "away": "Ausente", "quit": "Sair do chat" },
"sidebar": { "all": "Todos", "channels": "Canais", "dms": "Diretas", "search": "Pesquisar", "noChannel": "Escolha um canal para começar a conversar." },
"topbar": { "search": "Pesquisar", "members": "Ver membros", "manage": "Gerenciar canal", "modes": "Modos do canal", "notifications": "Notificações", "closeSearch": "Fechar pesquisa", "membersCount": "Membros · {{n}}", "publicChannel": "Canal público · {{n}} membros", "commonChannels": "Canais em comum" },
"connect": { "onlineBadge": "{{n}} pessoas online", "pseudoPlaceholder": "Escolha seu apelido…", "enter": "Entrar", "joinHint": "Você está entrando em", "registered": "Já tem uma conta?", "hidePassword": "Ocultar senha", "passwordPlaceholder": "Senha (se seu apelido estiver registrado)", "passwordLabel": "Senha", "noData": "Sem cadastro necessário", "encrypted": "Criptografado de ponta a ponta", "ircv3": "IRCv3", "helpButton": "Ajuda & FAQ", "forgotButton": "Esqueceu a senha?", "createButton": "Criar uma conta", "faqTitle": "Ajuda & FAQ", "error_error": "Não foi possível conectar. Tente novamente.", "error_closed": "A conexão foi encerrada.", "error_sasl": "Apelido desconhecido ou senha incorreta." },
"messages": { "reply": "Em resposta a", "react": "Reagir", "respond": "Responder", "delete": "Excluir", "hideJoins": "Ocultar entradas/saídas", "unread": "Novas mensagens", "jumpUnread": "Novas mensagens", "loadHistory": "Carregar histórico", "copyLink": "Copiar link", "copyText": "Copiar texto", "info": "Info", "notice": "AVISO", "guest": "Convidado", "poweredBy": "Desenvolvido com Orbit" },
"modals": { "closeButton": "Fechar", "join": { "title": "Explorar canais", "search": "Pesquisar ou criar #canal…", "loading": "Carregando canais…", "noResults": "Nenhum resultado" }, "dm": { "title": "Nova conversa", "search": "Adicionar um apelido…", "noResults": "Nenhum resultado" }, "friends": { "title": "Amigos", "noFriends": "Ainda sem amigos." }, "chanadmin": { "title": "Gerenciar canal", "topic": "Tópico do canal…", "bans": "Banimentos ({{n}})", "noBans": "Sem banimentos.", "ban": "Banir", "unban": "Remover banimento", "kick": "Expulsar", "maskPlaceholder": "*!*@máscara ou apelido…", "channelSearch": "#canal ou apelido", "setTopic": "Definir", "info": "Info", "modes": "Modos do canal", "subject": "Tópico" } },
"settings": { "title": "Configurações", "sections": { "account": "Conta", "appearance": "Aparência", "notifications": "Notificações", "privacy": "Privacidade", "advanced": "Avançado" }, "account": { "login": "Entrar", "register": "Criar conta", "logout": "Sair da conta", "accountName": "Nome da conta", "password": "Senha", "currentPassword": "Senha atual", "newPassword": "Nova senha", "minPassword": "Mín. 6 caracteres", "changeNick": "Mudar apelido", "nickHint": "Muda o apelido mostrado nos canais.", "emailPlaceholder": "voce@exemplo.com", "totpCode": "ex. 123456", "verificationCode": "Código de verificação", "resend": "Reenviar código", "restart": "Recomeçar", "connecting": "Conectando…", "validating": "Validando…", "security": "Segurança", "status": "Status", "loggedIn": "Conectado", "loggedInAs": "Conectado · {{nick}}", "identifiedAs": "Você está logado como {{nick}}", "unknownError": "Conta desconhecida ou senha incorreta.", "saslFailed": "Apelido ou senha incorretos.", "antiBot": "Verificação anti-robô", "wrongPassword": "Senha incorreta.", "join": "Entrar", "channelHint": "Entre em um canal (começa com #)", "channelPlaceholder": "ex. orbit, ajuda", "fromChannel": "Do canal" }, "appearance": { "theme": "Tema", "language": "Idioma", "timeFormat": "Formato de hora", "compact": "Mensagens compactas", "textSize": "Tamanho do texto" }, "notifications": { "browser": "Notificações do navegador", "push": "Notificações push" } },
"profile": { "refresh": "Atualizar", "close": "Fechar", "away": "Ausente", "noInfo": "Nenhuma informação pública disponível.", "noMembers": "Sem membros", "filterMembers": "Filtrar membros", "openDM": "Mensagem direta", "openProfile": "Perfil", "cancel": "Cancelar" },
"language": { "label": "Idioma", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Início",
"settings": "Configurações",
"profile": "Meu perfil",
"friends": "Amigos",
"explore": "Explorar canais",
"newDM": "Nova conversa",
"away": "Ausente",
"quit": "Sair do chat"
},
"sidebar": {
"all": "Todos",
"channels": "Canais",
"dms": "Diretas",
"search": "Pesquisar",
"noChannel": "Escolha um canal para começar a conversar."
},
"topbar": {
"search": "Pesquisar",
"members": "Ver membros",
"manage": "Gerenciar canal",
"modes": "Modos do canal",
"notifications": "Notificações",
"closeSearch": "Fechar pesquisa",
"membersCount": "Membros · {{n}}",
"publicChannel": "Canal público · {{n}} membros",
"commonChannels": "Canais em comum"
},
"connect": {
"onlineBadge": "{{n}} pessoas online",
"pseudoPlaceholder": "Escolha seu apelido…",
"enter": "Entrar",
"joinHint": "Você está entrando em",
"registered": "Já tem uma conta?",
"hidePassword": "Ocultar senha",
"passwordPlaceholder": "Senha (se seu apelido estiver registrado)",
"passwordLabel": "Senha",
"noData": "Sem cadastro necessário",
"encrypted": "Criptografado de ponta a ponta",
"ircv3": "IRCv3",
"helpButton": "Ajuda & FAQ",
"forgotButton": "Esqueceu a senha?",
"createButton": "Criar uma conta",
"faqTitle": "Ajuda & FAQ",
"error_error": "Não foi possível conectar. Tente novamente.",
"error_closed": "A conexão foi encerrada.",
"error_sasl": "Apelido desconhecido ou senha incorreta."
},
"messages": {
"reply": "Em resposta a",
"react": "Reagir",
"respond": "Responder",
"delete": "Excluir",
"hideJoins": "Ocultar entradas/saídas",
"unread": "Novas mensagens",
"jumpUnread": "Novas mensagens",
"loadHistory": "Carregar histórico",
"copyLink": "Copiar link",
"copyText": "Copiar texto",
"info": "Info",
"notice": "AVISO",
"guest": "Convidado",
"poweredBy": "Desenvolvido com Orbit"
},
"modals": {
"closeButton": "Fechar",
"join": {
"title": "Explorar canais",
"search": "Pesquisar ou criar #canal…",
"loading": "Carregando canais…",
"noResults": "Nenhum resultado"
},
"dm": {
"title": "Nova conversa",
"search": "Adicionar um apelido…",
"noResults": "Nenhum resultado"
},
"friends": {
"title": "Amigos",
"noFriends": "Ainda sem amigos."
},
"chanadmin": {
"title": "Gerenciar canal",
"topic": "Tópico do canal…",
"bans": "Banimentos ({{n}})",
"noBans": "Sem banimentos.",
"ban": "Banir",
"unban": "Remover banimento",
"kick": "Expulsar",
"maskPlaceholder": "*!*@máscara ou apelido…",
"channelSearch": "#canal ou apelido",
"setTopic": "Definir",
"info": "Info",
"modes": "Modos do canal",
"subject": "Tópico"
}
},
"settings": {
"title": "Configurações",
"sections": {
"account": "Conta",
"appearance": "Aparência",
"notifications": "Notificações",
"privacy": "Privacidade",
"advanced": "Avançado"
},
"account": {
"login": "Entrar",
"register": "Criar conta",
"logout": "Sair da conta",
"accountName": "Nome da conta",
"password": "Senha",
"currentPassword": "Senha atual",
"newPassword": "Nova senha",
"minPassword": "Mín. 6 caracteres",
"changeNick": "Mudar apelido",
"nickHint": "Muda o apelido mostrado nos canais.",
"emailPlaceholder": "voce@exemplo.com",
"totpCode": "ex. 123456",
"verificationCode": "Código de verificação",
"resend": "Reenviar código",
"restart": "Recomeçar",
"connecting": "Conectando…",
"validating": "Validando…",
"security": "Segurança",
"status": "Status",
"loggedIn": "Conectado",
"loggedInAs": "Conectado · {{nick}}",
"identifiedAs": "Você está logado como {{nick}}",
"unknownError": "Conta desconhecida ou senha incorreta.",
"saslFailed": "Apelido ou senha incorretos.",
"antiBot": "Verificação anti-robô",
"wrongPassword": "Senha incorreta.",
"join": "Entrar",
"channelHint": "Entre em um canal (começa com #)",
"channelPlaceholder": "ex. orbit, ajuda",
"fromChannel": "Do canal"
},
"appearance": {
"theme": "Tema",
"language": "Idioma",
"timeFormat": "Formato de hora",
"compact": "Mensagens compactas",
"textSize": "Tamanho do texto"
},
"notifications": {
"browser": "Notificações do navegador",
"push": "Notificações push"
}
},
"profile": {
"refresh": "Atualizar",
"close": "Fechar",
"away": "Ausente",
"noInfo": "Nenhuma informação pública disponível.",
"noMembers": "Sem membros",
"filterMembers": "Filtrar membros",
"openDM": "Mensagem direta",
"openProfile": "Perfil",
"cancel": "Cancelar"
},
"language": {
"label": "Idioma",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Informações",
"realname": "Nome de exibição",
"identifier": "Identificador",
"server": "Servidor",
"channels": "Canais em comum",
"signon": "Online desde",
"idle": "Inativo há",
"connection": "Conexão",
"secureTls": "Segura (TLS)",
"umodes": "Modos de usuário",
"certfp": "Impressão do certificado",
"verified": "Conta verificada",
"groups": "Grupos",
"score": "Pontuação",
"info": "Info",
"statStatus": "Status",
"statCommon": "Canais em comum",
"statSecure": "Seguro",
"loading": "carregando perfil…",
"visitor": "visitante",
"registeredTitle": "Registrado: {{account}}",
"badgeOp": "Operador",
"badgeRegistered": "Registrado",
"badgeGuest": "Convidado",
"friend": "Amigo",
"friendAdd": "Adicionar amigo",
"ignore": "Ignorar",
"unignore": "Não ignorar mais",
"report": "Denunciar",
"moderation": "Moderação",
"kick": "Expulsar",
"ban": "Banir",
"opAdd": "Op",
"opRemove": "Remover op",
"voice": "Voz",
"dm": "Mensagem direta",
"online": "online",
"away": "ausente",
"offline": "offline"
},
"security": {
"tag": "Segurança",
"leakGuard": "Interceptamos seu comando de identificação: enviado assim aqui, sua senha teria ficado visível para todos em {{channel}}. Não se preocupe — encaminhamos para {{service}} em privado, nada vazou. Da próxima vez, faça login em Configurações Conta."
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Início", "settings": "Definições", "profile": "O meu perfil", "friends": "Amigos", "explore": "Explorar canais", "newDM": "Nova conversa", "away": "Ausente", "quit": "Sair do chat" },
"sidebar": { "all": "Todos", "channels": "Canais", "dms": "Diretas", "search": "Pesquisar", "noChannel": "Escolhe um canal para começar a conversar." },
"topbar": { "search": "Pesquisar", "members": "Ver membros", "manage": "Gerir canal", "modes": "Modos do canal", "notifications": "Notificações", "closeSearch": "Fechar pesquisa", "membersCount": "Membros · {{n}}", "publicChannel": "Canal público · {{n}} membros", "commonChannels": "Canais em comum" },
"connect": { "onlineBadge": "{{n}} pessoas online", "pseudoPlaceholder": "Escolhe a tua alcunha…", "enter": "Entrar", "joinHint": "Vais entrar em", "registered": "Já tens conta?", "hidePassword": "Ocultar palavra-passe", "passwordPlaceholder": "Palavra-passe (se a tua alcunha estiver registada)", "passwordLabel": "Palavra-passe", "noData": "Sem registo necessário", "encrypted": "Encriptado de ponta a ponta", "ircv3": "IRCv3", "helpButton": "Ajuda & FAQ", "forgotButton": "Esqueceste-te da palavra-passe?", "createButton": "Criar uma conta", "faqTitle": "Ajuda & FAQ", "error_error": "Não foi possível ligar. Tenta novamente.", "error_closed": "A ligação foi fechada.", "error_sasl": "Alcunha desconhecida ou palavra-passe incorreta." },
"messages": { "reply": "Em resposta a", "react": "Reagir", "respond": "Responder", "delete": "Eliminar", "hideJoins": "Ocultar entradas/saídas", "unread": "Novas mensagens", "jumpUnread": "Novas mensagens", "loadHistory": "Carregar histórico", "copyLink": "Copiar ligação", "copyText": "Copiar texto", "info": "Info", "notice": "AVISO", "guest": "Convidado", "poweredBy": "Desenvolvido com Orbit" },
"modals": { "closeButton": "Fechar", "join": { "title": "Explorar canais", "search": "Pesquisar ou criar #canal…", "loading": "A carregar canais…", "noResults": "Sem resultados" }, "dm": { "title": "Nova conversa", "search": "Adicionar uma alcunha…", "noResults": "Sem resultados" }, "friends": { "title": "Amigos", "noFriends": "Ainda sem amigos." }, "chanadmin": { "title": "Gerir canal", "topic": "Tópico do canal…", "bans": "Banimentos ({{n}})", "noBans": "Sem banimentos.", "ban": "Banir", "unban": "Remover banimento", "kick": "Expulsar", "maskPlaceholder": "*!*@máscara ou alcunha…", "channelSearch": "#canal ou alcunha", "setTopic": "Definir", "info": "Info", "modes": "Modos do canal", "subject": "Tópico" } },
"settings": { "title": "Definições", "sections": { "account": "Conta", "appearance": "Aparência", "notifications": "Notificações", "privacy": "Privacidade", "advanced": "Avançado" }, "account": { "login": "Iniciar sessão", "register": "Criar conta", "logout": "Terminar sessão", "accountName": "Nome da conta", "password": "Palavra-passe", "currentPassword": "Palavra-passe atual", "newPassword": "Nova palavra-passe", "minPassword": "Mín. 6 caracteres", "changeNick": "Mudar alcunha", "nickHint": "Muda a alcunha mostrada nos canais.", "emailPlaceholder": "tu@exemplo.com", "totpCode": "ex. 123456", "verificationCode": "Código de verificação", "resend": "Reenviar código", "restart": "Recomeçar", "connecting": "A ligar…", "validating": "A validar…", "security": "Segurança", "status": "Estado", "loggedIn": "Ligado", "loggedInAs": "Ligado · {{nick}}", "identifiedAs": "Tens a sessão iniciada como {{nick}}", "unknownError": "Conta desconhecida ou palavra-passe incorreta.", "saslFailed": "Alcunha ou palavra-passe incorretas.", "antiBot": "Verificação anti-robô", "wrongPassword": "Palavra-passe incorreta.", "join": "Entrar", "channelHint": "Entra num canal (começa por #)", "channelPlaceholder": "ex. orbit, ajuda", "fromChannel": "Do canal" }, "appearance": { "theme": "Tema", "language": "Idioma", "timeFormat": "Formato da hora", "compact": "Mensagens compactas", "textSize": "Tamanho do texto" }, "notifications": { "browser": "Notificações do navegador", "push": "Notificações push" } },
"profile": { "refresh": "Atualizar", "close": "Fechar", "away": "Ausente", "noInfo": "Sem informação pública disponível.", "noMembers": "Sem membros", "filterMembers": "Filtrar membros", "openDM": "Mensagem direta", "openProfile": "Perfil", "cancel": "Cancelar" },
"language": { "label": "Idioma", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Início",
"settings": "Definições",
"profile": "O meu perfil",
"friends": "Amigos",
"explore": "Explorar canais",
"newDM": "Nova conversa",
"away": "Ausente",
"quit": "Sair do chat"
},
"sidebar": {
"all": "Todos",
"channels": "Canais",
"dms": "Diretas",
"search": "Pesquisar",
"noChannel": "Escolhe um canal para começar a conversar."
},
"topbar": {
"search": "Pesquisar",
"members": "Ver membros",
"manage": "Gerir canal",
"modes": "Modos do canal",
"notifications": "Notificações",
"closeSearch": "Fechar pesquisa",
"membersCount": "Membros · {{n}}",
"publicChannel": "Canal público · {{n}} membros",
"commonChannels": "Canais em comum"
},
"connect": {
"onlineBadge": "{{n}} pessoas online",
"pseudoPlaceholder": "Escolhe a tua alcunha…",
"enter": "Entrar",
"joinHint": "Vais entrar em",
"registered": "Já tens conta?",
"hidePassword": "Ocultar palavra-passe",
"passwordPlaceholder": "Palavra-passe (se a tua alcunha estiver registada)",
"passwordLabel": "Palavra-passe",
"noData": "Sem registo necessário",
"encrypted": "Encriptado de ponta a ponta",
"ircv3": "IRCv3",
"helpButton": "Ajuda & FAQ",
"forgotButton": "Esqueceste-te da palavra-passe?",
"createButton": "Criar uma conta",
"faqTitle": "Ajuda & FAQ",
"error_error": "Não foi possível ligar. Tenta novamente.",
"error_closed": "A ligação foi fechada.",
"error_sasl": "Alcunha desconhecida ou palavra-passe incorreta."
},
"messages": {
"reply": "Em resposta a",
"react": "Reagir",
"respond": "Responder",
"delete": "Eliminar",
"hideJoins": "Ocultar entradas/saídas",
"unread": "Novas mensagens",
"jumpUnread": "Novas mensagens",
"loadHistory": "Carregar histórico",
"copyLink": "Copiar ligação",
"copyText": "Copiar texto",
"info": "Info",
"notice": "AVISO",
"guest": "Convidado",
"poweredBy": "Desenvolvido com Orbit"
},
"modals": {
"closeButton": "Fechar",
"join": {
"title": "Explorar canais",
"search": "Pesquisar ou criar #canal…",
"loading": "A carregar canais…",
"noResults": "Sem resultados"
},
"dm": {
"title": "Nova conversa",
"search": "Adicionar uma alcunha…",
"noResults": "Sem resultados"
},
"friends": {
"title": "Amigos",
"noFriends": "Ainda sem amigos."
},
"chanadmin": {
"title": "Gerir canal",
"topic": "Tópico do canal…",
"bans": "Banimentos ({{n}})",
"noBans": "Sem banimentos.",
"ban": "Banir",
"unban": "Remover banimento",
"kick": "Expulsar",
"maskPlaceholder": "*!*@máscara ou alcunha…",
"channelSearch": "#canal ou alcunha",
"setTopic": "Definir",
"info": "Info",
"modes": "Modos do canal",
"subject": "Tópico"
}
},
"settings": {
"title": "Definições",
"sections": {
"account": "Conta",
"appearance": "Aparência",
"notifications": "Notificações",
"privacy": "Privacidade",
"advanced": "Avançado"
},
"account": {
"login": "Iniciar sessão",
"register": "Criar conta",
"logout": "Terminar sessão",
"accountName": "Nome da conta",
"password": "Palavra-passe",
"currentPassword": "Palavra-passe atual",
"newPassword": "Nova palavra-passe",
"minPassword": "Mín. 6 caracteres",
"changeNick": "Mudar alcunha",
"nickHint": "Muda a alcunha mostrada nos canais.",
"emailPlaceholder": "tu@exemplo.com",
"totpCode": "ex. 123456",
"verificationCode": "Código de verificação",
"resend": "Reenviar código",
"restart": "Recomeçar",
"connecting": "A ligar…",
"validating": "A validar…",
"security": "Segurança",
"status": "Estado",
"loggedIn": "Ligado",
"loggedInAs": "Ligado · {{nick}}",
"identifiedAs": "Tens a sessão iniciada como {{nick}}",
"unknownError": "Conta desconhecida ou palavra-passe incorreta.",
"saslFailed": "Alcunha ou palavra-passe incorretas.",
"antiBot": "Verificação anti-robô",
"wrongPassword": "Palavra-passe incorreta.",
"join": "Entrar",
"channelHint": "Entra num canal (começa por #)",
"channelPlaceholder": "ex. orbit, ajuda",
"fromChannel": "Do canal"
},
"appearance": {
"theme": "Tema",
"language": "Idioma",
"timeFormat": "Formato da hora",
"compact": "Mensagens compactas",
"textSize": "Tamanho do texto"
},
"notifications": {
"browser": "Notificações do navegador",
"push": "Notificações push"
}
},
"profile": {
"refresh": "Atualizar",
"close": "Fechar",
"away": "Ausente",
"noInfo": "Sem informação pública disponível.",
"noMembers": "Sem membros",
"filterMembers": "Filtrar membros",
"openDM": "Mensagem direta",
"openProfile": "Perfil",
"cancel": "Cancelar"
},
"language": {
"label": "Idioma",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Informações",
"realname": "Nome a mostrar",
"identifier": "Identificador",
"server": "Servidor",
"channels": "Canais em comum",
"signon": "Online desde",
"idle": "Inativo há",
"connection": "Ligação",
"secureTls": "Segura (TLS)",
"umodes": "Modos de utilizador",
"certfp": "Impressão do certificado",
"verified": "Conta verificada",
"groups": "Grupos",
"score": "Pontuação",
"info": "Info",
"statStatus": "Estado",
"statCommon": "Canais em comum",
"statSecure": "Seguro",
"loading": "a carregar perfil…",
"visitor": "visitante",
"registeredTitle": "Registado: {{account}}",
"badgeOp": "Operador",
"badgeRegistered": "Registado",
"badgeGuest": "Convidado",
"friend": "Amigo",
"friendAdd": "Adicionar amigo",
"ignore": "Ignorar",
"unignore": "Deixar de ignorar",
"report": "Denunciar",
"moderation": "Moderação",
"kick": "Expulsar",
"ban": "Banir",
"opAdd": "Op",
"opRemove": "Remover op",
"voice": "Voz",
"dm": "Mensagem direta",
"online": "online",
"away": "ausente",
"offline": "offline"
},
"security": {
"tag": "Segurança",
"leakGuard": "Intercetámos o teu comando de identificação: enviado tal como está, a tua palavra-passe teria ficado visível para todos em {{channel}}. Não te preocupes — encaminhámo-lo para {{service}} em privado, nada foi divulgado. Da próxima vez, inicia sessão em Definições Conta."
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Главная", "settings": "Настройки", "profile": "Мой профиль", "friends": "Друзья", "explore": "Обзор каналов", "newDM": "Новый разговор", "away": "Отошёл", "quit": "Выйти из чата" },
"sidebar": { "all": "Все", "channels": "Каналы", "dms": "Личные", "search": "Поиск", "noChannel": "Выберите канал, чтобы начать общение." },
"topbar": { "search": "Поиск", "members": "Показать участников", "manage": "Управление каналом", "modes": "Режимы канала", "notifications": "Уведомления", "closeSearch": "Закрыть поиск", "membersCount": "Участники · {{n}}", "publicChannel": "Открытый канал · {{n}} участников", "commonChannels": "Общие каналы" },
"connect": { "onlineBadge": "{{n}} человек онлайн", "pseudoPlaceholder": "Выберите псевдоним…", "enter": "Войти", "joinHint": "Вы заходите в", "registered": "Уже есть аккаунт?", "hidePassword": "Скрыть пароль", "passwordPlaceholder": "Пароль (если псевдоним зарегистрирован)", "passwordLabel": "Пароль", "noData": "Регистрация не нужна", "encrypted": "Сквозное шифрование", "ircv3": "IRCv3", "helpButton": "Помощь и FAQ", "forgotButton": "Забыли пароль?", "createButton": "Создать аккаунт", "faqTitle": "Помощь и FAQ", "error_error": "Не удаётся подключиться. Попробуйте ещё раз.", "error_closed": "Соединение закрыто.", "error_sasl": "Неизвестный псевдоним или неверный пароль." },
"messages": { "reply": "В ответ на", "react": "Реакция", "respond": "Ответить", "delete": "Удалить", "hideJoins": "Скрыть входы/выходы", "unread": "Новые сообщения", "jumpUnread": "Новые сообщения", "loadHistory": "Загрузить историю", "copyLink": "Копировать ссылку", "copyText": "Копировать текст", "info": "Инфо", "notice": "УВЕДОМЛЕНИЕ", "guest": "Гость", "poweredBy": "Работает на Orbit" },
"modals": { "closeButton": "Закрыть", "join": { "title": "Обзор каналов", "search": "Найти или создать #канал…", "loading": "Загрузка каналов…", "noResults": "Нет результатов" }, "dm": { "title": "Новый разговор", "search": "Добавить псевдоним…", "noResults": "Нет результатов" }, "friends": { "title": "Друзья", "noFriends": "Пока нет друзей." }, "chanadmin": { "title": "Управление каналом", "topic": "Тема канала…", "bans": "Баны ({{n}})", "noBans": "Нет банов.", "ban": "Забанить", "unban": "Снять бан", "kick": "Кикнуть", "maskPlaceholder": "*!*@маска или псевдоним…", "channelSearch": "#канал или псевдоним", "setTopic": "Задать", "info": "Инфо", "modes": "Режимы канала", "subject": "Тема" } },
"settings": { "title": "Настройки", "sections": { "account": "Аккаунт", "appearance": "Оформление", "notifications": "Уведомления", "privacy": "Конфиденциальность", "advanced": "Дополнительно" }, "account": { "login": "Войти", "register": "Создать аккаунт", "logout": "Выйти из аккаунта", "accountName": "Имя аккаунта", "password": "Пароль", "currentPassword": "Текущий пароль", "newPassword": "Новый пароль", "minPassword": "Минимум 6 символов", "changeNick": "Сменить псевдоним", "nickHint": "Меняет псевдоним, показываемый в каналах.", "emailPlaceholder": "vy@primer.com", "totpCode": "напр. 123456", "verificationCode": "Код подтверждения", "resend": "Отправить код снова", "restart": "Начать заново", "connecting": "Подключение…", "validating": "Проверка…", "security": "Безопасность", "status": "Статус", "loggedIn": "Подключено", "loggedInAs": "Подключено · {{nick}}", "identifiedAs": "Вы вошли как {{nick}}", "unknownError": "Неизвестный аккаунт или неверный пароль.", "saslFailed": "Неверный псевдоним или пароль.", "antiBot": "Проверка на бота", "wrongPassword": "Неверный пароль.", "join": "Присоединиться", "channelHint": "Зайти в канал (начинается с #)", "channelPlaceholder": "напр. orbit, помощь", "fromChannel": "Из канала" }, "appearance": { "theme": "Тема", "language": "Язык", "timeFormat": "Формат времени", "compact": "Компактные сообщения", "textSize": "Размер текста" }, "notifications": { "browser": "Уведомления браузера", "push": "Push-уведомления" } },
"profile": { "refresh": "Обновить", "close": "Закрыть", "away": "Отошёл", "noInfo": "Публичная информация недоступна.", "noMembers": "Нет участников", "filterMembers": "Фильтр участников", "openDM": "Личное сообщение", "openProfile": "Профиль", "cancel": "Отмена" },
"language": { "label": "Язык", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Главная",
"settings": "Настройки",
"profile": "Мой профиль",
"friends": "Друзья",
"explore": "Обзор каналов",
"newDM": "Новый разговор",
"away": "Отошёл",
"quit": "Выйти из чата"
},
"sidebar": {
"all": "Все",
"channels": "Каналы",
"dms": "Личные",
"search": "Поиск",
"noChannel": "Выберите канал, чтобы начать общение."
},
"topbar": {
"search": "Поиск",
"members": "Показать участников",
"manage": "Управление каналом",
"modes": "Режимы канала",
"notifications": "Уведомления",
"closeSearch": "Закрыть поиск",
"membersCount": "Участники · {{n}}",
"publicChannel": "Открытый канал · {{n}} участников",
"commonChannels": "Общие каналы"
},
"connect": {
"onlineBadge": "{{n}} человек онлайн",
"pseudoPlaceholder": "Выберите псевдоним…",
"enter": "Войти",
"joinHint": "Вы заходите в",
"registered": "Уже есть аккаунт?",
"hidePassword": "Скрыть пароль",
"passwordPlaceholder": "Пароль (если псевдоним зарегистрирован)",
"passwordLabel": "Пароль",
"noData": "Регистрация не нужна",
"encrypted": "Сквозное шифрование",
"ircv3": "IRCv3",
"helpButton": "Помощь и FAQ",
"forgotButton": "Забыли пароль?",
"createButton": "Создать аккаунт",
"faqTitle": "Помощь и FAQ",
"error_error": "Не удаётся подключиться. Попробуйте ещё раз.",
"error_closed": "Соединение закрыто.",
"error_sasl": "Неизвестный псевдоним или неверный пароль."
},
"messages": {
"reply": "В ответ на",
"react": "Реакция",
"respond": "Ответить",
"delete": "Удалить",
"hideJoins": "Скрыть входы/выходы",
"unread": "Новые сообщения",
"jumpUnread": "Новые сообщения",
"loadHistory": "Загрузить историю",
"copyLink": "Копировать ссылку",
"copyText": "Копировать текст",
"info": "Инфо",
"notice": "УВЕДОМЛЕНИЕ",
"guest": "Гость",
"poweredBy": "Работает на Orbit"
},
"modals": {
"closeButton": "Закрыть",
"join": {
"title": "Обзор каналов",
"search": "Найти или создать #канал…",
"loading": "Загрузка каналов…",
"noResults": "Нет результатов"
},
"dm": {
"title": "Новый разговор",
"search": "Добавить псевдоним…",
"noResults": "Нет результатов"
},
"friends": {
"title": "Друзья",
"noFriends": "Пока нет друзей."
},
"chanadmin": {
"title": "Управление каналом",
"topic": "Тема канала…",
"bans": "Баны ({{n}})",
"noBans": "Нет банов.",
"ban": "Забанить",
"unban": "Снять бан",
"kick": "Кикнуть",
"maskPlaceholder": "*!*@маска или псевдоним…",
"channelSearch": "#канал или псевдоним",
"setTopic": "Задать",
"info": "Инфо",
"modes": "Режимы канала",
"subject": "Тема"
}
},
"settings": {
"title": "Настройки",
"sections": {
"account": "Аккаунт",
"appearance": "Оформление",
"notifications": "Уведомления",
"privacy": "Конфиденциальность",
"advanced": "Дополнительно"
},
"account": {
"login": "Войти",
"register": "Создать аккаунт",
"logout": "Выйти из аккаунта",
"accountName": "Имя аккаунта",
"password": "Пароль",
"currentPassword": "Текущий пароль",
"newPassword": "Новый пароль",
"minPassword": "Минимум 6 символов",
"changeNick": "Сменить псевдоним",
"nickHint": "Меняет псевдоним, показываемый в каналах.",
"emailPlaceholder": "vy@primer.com",
"totpCode": "напр. 123456",
"verificationCode": "Код подтверждения",
"resend": "Отправить код снова",
"restart": "Начать заново",
"connecting": "Подключение…",
"validating": "Проверка…",
"security": "Безопасность",
"status": "Статус",
"loggedIn": "Подключено",
"loggedInAs": "Подключено · {{nick}}",
"identifiedAs": "Вы вошли как {{nick}}",
"unknownError": "Неизвестный аккаунт или неверный пароль.",
"saslFailed": "Неверный псевдоним или пароль.",
"antiBot": "Проверка на бота",
"wrongPassword": "Неверный пароль.",
"join": "Присоединиться",
"channelHint": "Зайти в канал (начинается с #)",
"channelPlaceholder": "напр. orbit, помощь",
"fromChannel": "Из канала"
},
"appearance": {
"theme": "Тема",
"language": "Язык",
"timeFormat": "Формат времени",
"compact": "Компактные сообщения",
"textSize": "Размер текста"
},
"notifications": {
"browser": "Уведомления браузера",
"push": "Push-уведомления"
}
},
"profile": {
"refresh": "Обновить",
"close": "Закрыть",
"away": "Отошёл",
"noInfo": "Публичная информация недоступна.",
"noMembers": "Нет участников",
"filterMembers": "Фильтр участников",
"openDM": "Личное сообщение",
"openProfile": "Профиль",
"cancel": "Отмена"
},
"language": {
"label": "Язык",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Информация",
"realname": "Отображаемое имя",
"identifier": "Идентификатор",
"server": "Сервер",
"channels": "Общие каналы",
"signon": "В сети с",
"idle": "Неактивен",
"connection": "Соединение",
"secureTls": "Защищённое (TLS)",
"umodes": "Режимы пользователя",
"certfp": "Отпечаток сертификата",
"verified": "Подтверждённый аккаунт",
"groups": "Группы",
"score": "Рейтинг",
"info": "Инфо",
"statStatus": "Статус",
"statCommon": "Общие каналы",
"statSecure": "Защищено",
"loading": "загрузка профиля…",
"visitor": "гость",
"registeredTitle": "Зарегистрирован: {{account}}",
"badgeOp": "Оператор",
"badgeRegistered": "Зарегистрирован",
"badgeGuest": "Гость",
"friend": "Друг",
"friendAdd": "Добавить в друзья",
"ignore": "Игнорировать",
"unignore": "Не игнорировать",
"report": "Пожаловаться",
"moderation": "Модерация",
"kick": "Кикнуть",
"ban": "Забанить",
"opAdd": "Оп",
"opRemove": "Снять оп",
"voice": "Голос",
"dm": "Личное сообщение",
"online": "в сети",
"away": "отошёл",
"offline": "не в сети"
},
"security": {
"tag": "Безопасность",
"leakGuard": "Мы перехватили вашу команду идентификации: отправленный как есть, ваш пароль был бы виден всем в {{channel}}. Не волнуйтесь — мы передали её {{service}} приватно, ничего не утекло. В следующий раз входите через Настройки Аккаунт."
}
}

View file

@ -1,11 +1,221 @@
{
"nav": { "home": "Ana sayfa", "settings": "Ayarlar", "profile": "Profilim", "friends": "Arkadaşlar", "explore": "Kanalları keşfet", "newDM": "Yeni sohbet", "away": "Uzakta", "quit": "Sohbetten çık" },
"sidebar": { "all": "Tümü", "channels": "Kanallar", "dms": "Direkt", "search": "Ara", "noChannel": "Sohbet başlatmak için bir kanal seçin." },
"topbar": { "search": "Ara", "members": "Üyeleri görüntüle", "manage": "Kanalı yönet", "modes": "Kanal modları", "notifications": "Bildirimler", "closeSearch": "Aramayı kapat", "membersCount": "Üyeler · {{n}}", "publicChannel": "Herkese açık kanal · {{n}} üye", "commonChannels": "Ortak kanallar" },
"connect": { "onlineBadge": "{{n}} kişi çevrimiçi", "pseudoPlaceholder": "Takma adını seç…", "enter": "Gir", "joinHint": "Katılıyorsunuz:", "registered": "Zaten hesabınız var mı?", "hidePassword": "Şifreyi gizle", "passwordPlaceholder": "Şifre (takma adınız kayıtlıysa)", "passwordLabel": "Şifre", "noData": "Kayıt gerekmez", "encrypted": "Uçtan uca şifreli", "ircv3": "IRCv3", "helpButton": "Yardım & SSS", "forgotButton": "Şifremi unuttum?", "createButton": "Hesap oluştur", "faqTitle": "Yardım & SSS", "error_error": "Bağlanılamıyor. Lütfen tekrar deneyin.", "error_closed": "Bağlantı kesildi.", "error_sasl": "Bilinmeyen takma ad veya yanlış şifre." },
"messages": { "reply": "Yanıt:", "react": "Tepki ver", "respond": "Yanıtla", "delete": "Sil", "hideJoins": "Katılımları/ayrılmaları gizle", "unread": "Yeni mesajlar", "jumpUnread": "Yeni mesajlar", "loadHistory": "Geçmişi yükle", "copyLink": "Bağlantıyı kopyala", "copyText": "Metni kopyala", "info": "Bilgi", "notice": "DUYURU", "guest": "Misafir", "poweredBy": "Orbit ile desteklenmektedir" },
"modals": { "closeButton": "Kapat", "join": { "title": "Kanalları keşfet", "search": "Kanal ara veya oluştur…", "loading": "Kanallar yükleniyor…", "noResults": "Sonuç yok" }, "dm": { "title": "Yeni sohbet", "search": "Takma ad ekle…", "noResults": "Sonuç yok" }, "friends": { "title": "Arkadaşlar", "noFriends": "Henüz arkadaş yok." }, "chanadmin": { "title": "Kanalı yönet", "topic": "Kanal konusu…", "bans": "Yasaklar ({{n}})", "noBans": "Yasak yok.", "ban": "Yasakla", "unban": "Yasağı kaldır", "kick": "At", "maskPlaceholder": "*!*@maske veya takma ad…", "channelSearch": "#kanal veya takma ad", "setTopic": "Ayarla", "info": "Bilgi", "modes": "Kanal modları", "subject": "Konu" } },
"settings": { "title": "Ayarlar", "sections": { "account": "Hesap", "appearance": "Görünüm", "notifications": "Bildirimler", "privacy": "Gizlilik", "advanced": "Gelişmiş" }, "account": { "login": "Giriş yap", "register": "Hesap oluştur", "logout": ıkış yap", "accountName": "Hesap adı", "password": "Şifre", "currentPassword": "Mevcut şifre", "newPassword": "Yeni şifre", "minPassword": "En az 6 karakter", "changeNick": "Takma adı değiştir", "nickHint": "Kanallarda görünen takma adı değiştirir.", "emailPlaceholder": "sen@ornek.com", "totpCode": "örn. 123456", "verificationCode": "Doğrulama kodu", "resend": "Kodu yeniden gönder", "restart": "Yeniden başla", "connecting": "Bağlanıyor…", "validating": "Doğrulanıyor…", "security": "Güvenlik", "status": "Durum", "loggedIn": "Bağlı", "loggedInAs": "Bağlı · {{nick}}", "identifiedAs": "{{nick}} olarak giriş yaptınız", "unknownError": "Bilinmeyen hesap veya yanlış şifre.", "saslFailed": "Yanlış takma ad veya şifre.", "antiBot": "Bot karşıtı doğrulama", "wrongPassword": "Yanlış şifre.", "join": "Katıl", "channelHint": "Bir kanala katıl (# ile başlar)", "channelPlaceholder": "örn. orbit, yardım", "fromChannel": "Kanaldan" }, "appearance": { "theme": "Tema", "language": "Dil", "timeFormat": "Saat biçimi", "compact": "Kompakt mesajlar", "textSize": "Metin boyutu" }, "notifications": { "browser": "Tarayıcı bildirimleri", "push": "Anlık bildirimler" } },
"profile": { "refresh": "Yenile", "close": "Kapat", "away": "Uzakta", "noInfo": "Kamuya açık bilgi yok.", "noMembers": "Üye yok", "filterMembers": "Üyeleri filtrele", "openDM": "Doğrudan mesaj", "openProfile": "Profil", "cancel": "İptal" },
"language": { "label": "Dil", "en": "English", "fr": "Français", "de": "Deutsch", "tr": "Türkçe", "ne": "नेपाली", "es": "Español", "ru": "Русский", "it": "Italiano", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasil)" }
}
"nav": {
"home": "Ana sayfa",
"settings": "Ayarlar",
"profile": "Profilim",
"friends": "Arkadaşlar",
"explore": "Kanalları keşfet",
"newDM": "Yeni sohbet",
"away": "Uzakta",
"quit": "Sohbetten çık"
},
"sidebar": {
"all": "Tümü",
"channels": "Kanallar",
"dms": "Direkt",
"search": "Ara",
"noChannel": "Sohbet başlatmak için bir kanal seçin."
},
"topbar": {
"search": "Ara",
"members": "Üyeleri görüntüle",
"manage": "Kanalı yönet",
"modes": "Kanal modları",
"notifications": "Bildirimler",
"closeSearch": "Aramayı kapat",
"membersCount": "Üyeler · {{n}}",
"publicChannel": "Herkese açık kanal · {{n}} üye",
"commonChannels": "Ortak kanallar"
},
"connect": {
"onlineBadge": "{{n}} kişi çevrimiçi",
"pseudoPlaceholder": "Takma adını seç…",
"enter": "Gir",
"joinHint": "Katılıyorsunuz:",
"registered": "Zaten hesabınız var mı?",
"hidePassword": "Şifreyi gizle",
"passwordPlaceholder": "Şifre (takma adınız kayıtlıysa)",
"passwordLabel": "Şifre",
"noData": "Kayıt gerekmez",
"encrypted": "Uçtan uca şifreli",
"ircv3": "IRCv3",
"helpButton": "Yardım & SSS",
"forgotButton": "Şifremi unuttum?",
"createButton": "Hesap oluştur",
"faqTitle": "Yardım & SSS",
"error_error": "Bağlanılamıyor. Lütfen tekrar deneyin.",
"error_closed": "Bağlantı kesildi.",
"error_sasl": "Bilinmeyen takma ad veya yanlış şifre."
},
"messages": {
"reply": "Yanıt:",
"react": "Tepki ver",
"respond": "Yanıtla",
"delete": "Sil",
"hideJoins": "Katılımları/ayrılmaları gizle",
"unread": "Yeni mesajlar",
"jumpUnread": "Yeni mesajlar",
"loadHistory": "Geçmişi yükle",
"copyLink": "Bağlantıyı kopyala",
"copyText": "Metni kopyala",
"info": "Bilgi",
"notice": "DUYURU",
"guest": "Misafir",
"poweredBy": "Orbit ile desteklenmektedir"
},
"modals": {
"closeButton": "Kapat",
"join": {
"title": "Kanalları keşfet",
"search": "Kanal ara veya oluştur…",
"loading": "Kanallar yükleniyor…",
"noResults": "Sonuç yok"
},
"dm": {
"title": "Yeni sohbet",
"search": "Takma ad ekle…",
"noResults": "Sonuç yok"
},
"friends": {
"title": "Arkadaşlar",
"noFriends": "Henüz arkadaş yok."
},
"chanadmin": {
"title": "Kanalı yönet",
"topic": "Kanal konusu…",
"bans": "Yasaklar ({{n}})",
"noBans": "Yasak yok.",
"ban": "Yasakla",
"unban": "Yasağı kaldır",
"kick": "At",
"maskPlaceholder": "*!*@maske veya takma ad…",
"channelSearch": "#kanal veya takma ad",
"setTopic": "Ayarla",
"info": "Bilgi",
"modes": "Kanal modları",
"subject": "Konu"
}
},
"settings": {
"title": "Ayarlar",
"sections": {
"account": "Hesap",
"appearance": "Görünüm",
"notifications": "Bildirimler",
"privacy": "Gizlilik",
"advanced": "Gelişmiş"
},
"account": {
"login": "Giriş yap",
"register": "Hesap oluştur",
"logout": ıkış yap",
"accountName": "Hesap adı",
"password": "Şifre",
"currentPassword": "Mevcut şifre",
"newPassword": "Yeni şifre",
"minPassword": "En az 6 karakter",
"changeNick": "Takma adı değiştir",
"nickHint": "Kanallarda görünen takma adı değiştirir.",
"emailPlaceholder": "sen@ornek.com",
"totpCode": "örn. 123456",
"verificationCode": "Doğrulama kodu",
"resend": "Kodu yeniden gönder",
"restart": "Yeniden başla",
"connecting": "Bağlanıyor…",
"validating": "Doğrulanıyor…",
"security": "Güvenlik",
"status": "Durum",
"loggedIn": "Bağlı",
"loggedInAs": "Bağlı · {{nick}}",
"identifiedAs": "{{nick}} olarak giriş yaptınız",
"unknownError": "Bilinmeyen hesap veya yanlış şifre.",
"saslFailed": "Yanlış takma ad veya şifre.",
"antiBot": "Bot karşıtı doğrulama",
"wrongPassword": "Yanlış şifre.",
"join": "Katıl",
"channelHint": "Bir kanala katıl (# ile başlar)",
"channelPlaceholder": "örn. orbit, yardım",
"fromChannel": "Kanaldan"
},
"appearance": {
"theme": "Tema",
"language": "Dil",
"timeFormat": "Saat biçimi",
"compact": "Kompakt mesajlar",
"textSize": "Metin boyutu"
},
"notifications": {
"browser": "Tarayıcı bildirimleri",
"push": "Anlık bildirimler"
}
},
"profile": {
"refresh": "Yenile",
"close": "Kapat",
"away": "Uzakta",
"noInfo": "Kamuya açık bilgi yok.",
"noMembers": "Üye yok",
"filterMembers": "Üyeleri filtrele",
"openDM": "Doğrudan mesaj",
"openProfile": "Profil",
"cancel": "İptal"
},
"language": {
"label": "Dil",
"en": "English",
"fr": "Français",
"de": "Deutsch",
"tr": "Türkçe",
"ne": "नेपाली",
"es": "Español",
"ru": "Русский",
"it": "Italiano",
"pt-PT": "Português (Portugal)",
"pt-BR": "Português (Brasil)"
},
"whois": {
"section": "Bilgi",
"realname": "Görünen ad",
"identifier": "Tanımlayıcı",
"server": "Sunucu",
"channels": "Ortak kanallar",
"signon": "Çevrimiçi olma",
"idle": "Hareketsiz",
"connection": "Bağlantı",
"secureTls": "Güvenli (TLS)",
"umodes": "Kullanıcı modları",
"certfp": "Sertifika parmak izi",
"verified": "Doğrulanmış hesap",
"groups": "Gruplar",
"score": "Puan",
"info": "Bilgi",
"statStatus": "Durum",
"statCommon": "Ortak kanallar",
"statSecure": "Güvenli",
"loading": "profil yükleniyor…",
"visitor": "ziyaretçi",
"registeredTitle": "Kayıtlı: {{account}}",
"badgeOp": "Operatör",
"badgeRegistered": "Kayıtlı",
"badgeGuest": "Misafir",
"friend": "Arkadaş",
"friendAdd": "Arkadaş ekle",
"ignore": "Yoksay",
"unignore": "Yoksaymayı bırak",
"report": "Bildir",
"moderation": "Moderasyon",
"kick": "At",
"ban": "Yasakla",
"opAdd": "Op",
"opRemove": "Op'u kaldır",
"voice": "Ses",
"dm": "Doğrudan mesaj",
"online": "çevrimiçi",
"away": "uzakta",
"offline": "çevrimdışı"
},
"security": {
"tag": "Güvenlik",
"leakGuard": "Kimlik doğrulama komutunu yakaladık: buraya olduğu gibi gönderilseydi, şifren {{channel}} kanalındaki herkese görünür olurdu. Endişelenme — bunu {{service}} hizmetine gizlice ilettik, hiçbir şey sızmadı. Bir dahaki sefere Ayarlar Hesap'tan giriş yap."
}
}

View file

@ -1,4 +1,5 @@
import { create } from 'zustand';
import i18n from './i18n';
import { IrcClient } from './irc/client';
import { initNotify, desktopNotify, blip } from './services/notify';
import { getPrefs, savePrefs, applyPrefs, type Prefs } from './ui/prefs';
@ -1435,7 +1436,7 @@ export const useChat = create<ChatState>((set, get) => {
if (leak && !isService(active)) {
client.privmsg(leak.service, leak.command);
sysLine(active,
`On a intercepté ta commande didentification : envoyée telle quelle ici, ton mot de passe aurait été visible par tout le monde dans ${active}. Pas dinquiétude — on la transmise à ${leak.service} en privé, rien na été divulgué. La prochaine fois, connecte-toi depuis Réglages Compte.`,
i18n.t('security.leakGuard', { channel: active, service: leak.service }),
'warning');
ensureBuffer(leak.service);
if (!client.hasCap('echo-message')) {