Хуйня не на tauri
This commit is contained in:
parent
e895fe3237
commit
403d7086d4
104 changed files with 8941 additions and 4772 deletions
159
src/i18n/mod.rs
Normal file
159
src/i18n/mod.rs
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
//! Локализация интерфейса. Иммедиэйт-мод UI перерисовывается целиком каждый
|
||||
//! кадр на главном потоке, поэтому вместо протаскивания языка через сигнатуры
|
||||
//! всех функций рендера — один глобальный атомик с текущим языком плюс
|
||||
//! функция [`t`] для поиска перевода по ключу. Переводы лежат в `strings/*`,
|
||||
//! по одному файлу на область интерфейса, и собираются в одну таблицу лениво.
|
||||
mod strings;
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::sync::OnceLock;
|
||||
use std::sync::atomic::{AtomicU8, Ordering};
|
||||
|
||||
/// Порядок вариантов — он же порядок колонок в каждом `[&str; N]` из `strings/*`.
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub enum Lang {
|
||||
En,
|
||||
Ru,
|
||||
Es,
|
||||
Fr,
|
||||
De,
|
||||
It,
|
||||
Pt,
|
||||
Pl,
|
||||
Zh,
|
||||
Ja,
|
||||
Ko,
|
||||
Tr,
|
||||
}
|
||||
|
||||
pub const COUNT: usize = 12;
|
||||
|
||||
impl Lang {
|
||||
pub const ALL: [Lang; COUNT] = [
|
||||
Lang::En,
|
||||
Lang::Ru,
|
||||
Lang::Es,
|
||||
Lang::Fr,
|
||||
Lang::De,
|
||||
Lang::It,
|
||||
Lang::Pt,
|
||||
Lang::Pl,
|
||||
Lang::Zh,
|
||||
Lang::Ja,
|
||||
Lang::Ko,
|
||||
Lang::Tr,
|
||||
];
|
||||
|
||||
pub fn index(self) -> usize {
|
||||
self as usize
|
||||
}
|
||||
|
||||
fn from_index(i: u8) -> Lang {
|
||||
Self::ALL.get(i as usize).copied().unwrap_or(Lang::En)
|
||||
}
|
||||
|
||||
/// Код языка — используется для хранения выбора в БД (Settings) и для
|
||||
/// определения стартового языка по локали ОС.
|
||||
pub fn code(self) -> &'static str {
|
||||
match self {
|
||||
Lang::En => "en",
|
||||
Lang::Ru => "ru",
|
||||
Lang::Es => "es",
|
||||
Lang::Fr => "fr",
|
||||
Lang::De => "de",
|
||||
Lang::It => "it",
|
||||
Lang::Pt => "pt",
|
||||
Lang::Pl => "pl",
|
||||
Lang::Zh => "zh",
|
||||
Lang::Ja => "ja",
|
||||
Lang::Ko => "ko",
|
||||
Lang::Tr => "tr",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_code(code: &str) -> Option<Lang> {
|
||||
Self::ALL.into_iter().find(|l| l.code() == code)
|
||||
}
|
||||
|
||||
/// Название языка на нём самом — так его узнают в списке выбора, даже не
|
||||
/// зная текущего языка интерфейса.
|
||||
pub fn native_name(self) -> &'static str {
|
||||
match self {
|
||||
Lang::En => "English",
|
||||
Lang::Ru => "Русский",
|
||||
Lang::Es => "Español",
|
||||
Lang::Fr => "Français",
|
||||
Lang::De => "Deutsch",
|
||||
Lang::It => "Italiano",
|
||||
Lang::Pt => "Português",
|
||||
Lang::Pl => "Polski",
|
||||
Lang::Zh => "简体中文",
|
||||
Lang::Ja => "日本語",
|
||||
Lang::Ko => "한국어",
|
||||
Lang::Tr => "Türkçe",
|
||||
}
|
||||
}
|
||||
|
||||
/// Есть ли у языка глифы вне Latin/Cyrillic, для которых системный SF Pro
|
||||
/// не подходит — тогда `visuals::system_fonts` подмешивает CJK-шрифт.
|
||||
pub fn needs_cjk_font(self) -> bool {
|
||||
matches!(self, Lang::Zh | Lang::Ja | Lang::Ko)
|
||||
}
|
||||
}
|
||||
|
||||
static CURRENT: AtomicU8 = AtomicU8::new(0); // Lang::En
|
||||
|
||||
pub fn current() -> Lang {
|
||||
Lang::from_index(CURRENT.load(Ordering::Relaxed))
|
||||
}
|
||||
|
||||
pub fn set_lang(lang: Lang) {
|
||||
CURRENT.store(lang.index() as u8, Ordering::Relaxed);
|
||||
}
|
||||
|
||||
/// Язык ОС на старте (до первой загрузки из БД) — грубое сопоставление по
|
||||
/// первым двум буквам `LANG`/локали; неизвестное всегда откатывается на English.
|
||||
pub fn detect_system_lang() -> Lang {
|
||||
let raw = std::env::var("LANG").unwrap_or_default();
|
||||
let code = raw.split(['_', '.', '-']).next().unwrap_or("");
|
||||
Lang::from_code(code).unwrap_or(Lang::En)
|
||||
}
|
||||
|
||||
type Table = HashMap<&'static str, [&'static str; COUNT]>;
|
||||
static TABLE: OnceLock<Table> = OnceLock::new();
|
||||
|
||||
fn table() -> &'static Table {
|
||||
TABLE.get_or_init(|| {
|
||||
let mut m = HashMap::with_capacity(1024);
|
||||
for &(key, values) in strings::all_entries() {
|
||||
if m.insert(key, values).is_some() {
|
||||
debug_assert!(false, "duplicate i18n key: {key}");
|
||||
}
|
||||
}
|
||||
m
|
||||
})
|
||||
}
|
||||
|
||||
/// Перевод по ключу на текущий язык. Отсутствующий ключ возвращает сам ключ —
|
||||
/// это специально заметно в UI (и в debug-сборке паникует), чтобы пропущенный
|
||||
/// перевод не потерялся молча.
|
||||
pub fn t(key: &'static str) -> &'static str {
|
||||
match table().get(key) {
|
||||
Some(values) => values[current().index()],
|
||||
None => {
|
||||
debug_assert!(false, "missing i18n key: {key}");
|
||||
key
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// [`t`] с подстановкой значений вместо плейсхолдеров вида `{name}` — для
|
||||
/// строк с динамическим содержимым (имя файла, хост и т.п.), которое не может
|
||||
/// быть частью статической таблицы переводов.
|
||||
pub fn tf(key: &'static str, pairs: &[(&str, &str)]) -> String {
|
||||
let mut s = t(key).to_string();
|
||||
for (placeholder, value) in pairs {
|
||||
s = s.replace(placeholder, value);
|
||||
}
|
||||
s
|
||||
}
|
||||
240
src/i18n/strings/common.rs
Normal file
240
src/i18n/strings/common.rs
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
//! Общие термины, повторяющиеся в разных экранах (кнопки, поля форм) —
|
||||
//! вынесены отдельно от контекста, чтобы не переводить одно и то же слово
|
||||
//! по три раза с риском разойтись в формулировках.
|
||||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[
|
||||
(
|
||||
"common.cancel",
|
||||
[
|
||||
"Cancel", "Отмена", "Cancelar", "Annuler", "Abbrechen", "Annulla", "Cancelar",
|
||||
"Anuluj", "取消", "キャンセル", "취소", "İptal",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.ok",
|
||||
[
|
||||
"OK", "ОК", "Aceptar", "OK", "OK", "OK", "OK", "OK", "确定", "OK", "확인", "Tamam",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.delete",
|
||||
[
|
||||
"Delete", "Удалить", "Eliminar", "Supprimer", "Löschen", "Elimina", "Excluir",
|
||||
"Usuń", "删除", "削除", "삭제", "Sil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.rename",
|
||||
[
|
||||
"Rename",
|
||||
"Переименовать",
|
||||
"Renombrar",
|
||||
"Renommer",
|
||||
"Umbenennen",
|
||||
"Rinomina",
|
||||
"Renomear",
|
||||
"Zmień nazwę",
|
||||
"重命名",
|
||||
"名前を変更",
|
||||
"이름 바꾸기",
|
||||
"Yeniden Adlandır",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.edit",
|
||||
[
|
||||
"Edit", "Изменить", "Editar", "Modifier", "Bearbeiten", "Modifica", "Editar",
|
||||
"Edytuj", "编辑", "編集", "편집", "Düzenle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.save",
|
||||
[
|
||||
"Save", "Сохранить", "Guardar", "Enregistrer", "Speichern", "Salva", "Salvar",
|
||||
"Zapisz", "保存", "保存", "저장", "Kaydet",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.open",
|
||||
[
|
||||
"Open", "Открыть", "Abrir", "Ouvrir", "Öffnen", "Apri", "Abrir", "Otwórz", "打开",
|
||||
"開く", "열기", "Aç",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.close",
|
||||
[
|
||||
"Close", "Закрыть", "Cerrar", "Fermer", "Schließen", "Chiudi", "Fechar", "Zamknij",
|
||||
"关闭", "閉じる", "닫기", "Kapat",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.copy_path",
|
||||
[
|
||||
"Copy Path",
|
||||
"Скопировать путь",
|
||||
"Copiar ruta",
|
||||
"Copier le chemin",
|
||||
"Pfad kopieren",
|
||||
"Copia percorso",
|
||||
"Copiar caminho",
|
||||
"Kopiuj ścieżkę",
|
||||
"复制路径",
|
||||
"パスをコピー",
|
||||
"경로 복사",
|
||||
"Yolu Kopyala",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.new_folder",
|
||||
[
|
||||
"New Folder",
|
||||
"Новая папка",
|
||||
"Nueva carpeta",
|
||||
"Nouveau dossier",
|
||||
"Neuer Ordner",
|
||||
"Nuova cartella",
|
||||
"Nova pasta",
|
||||
"Nowy folder",
|
||||
"新建文件夹",
|
||||
"新規フォルダ",
|
||||
"새 폴더",
|
||||
"Yeni Klasör",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.connect",
|
||||
[
|
||||
"Connect", "Подключить", "Conectar", "Connecter", "Verbinden", "Connetti",
|
||||
"Conectar", "Połącz", "连接", "接続", "연결", "Bağlan",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.connecting",
|
||||
[
|
||||
"Connecting…",
|
||||
"Подключение…",
|
||||
"Conectando…",
|
||||
"Connexion…",
|
||||
"Verbinde…",
|
||||
"Connessione…",
|
||||
"Conectando…",
|
||||
"Łączenie…",
|
||||
"正在连接…",
|
||||
"接続中…",
|
||||
"연결 중…",
|
||||
"Bağlanıyor…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.host",
|
||||
[
|
||||
"Host", "Хост", "Host", "Hôte", "Host", "Host", "Host", "Host", "主机", "ホスト",
|
||||
"호스트", "Sunucu",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.username",
|
||||
[
|
||||
"Username",
|
||||
"Имя пользователя",
|
||||
"Usuario",
|
||||
"Nom d'utilisateur",
|
||||
"Benutzername",
|
||||
"Nome utente",
|
||||
"Usuário",
|
||||
"Nazwa użytkownika",
|
||||
"用户名",
|
||||
"ユーザー名",
|
||||
"사용자 이름",
|
||||
"Kullanıcı Adı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.password",
|
||||
[
|
||||
"Password", "Пароль", "Contraseña", "Mot de passe", "Passwort", "Password", "Senha",
|
||||
"Hasło", "密码", "パスワード", "비밀번호", "Parola",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.port",
|
||||
[
|
||||
"Port", "Порт", "Puerto", "Port", "Port", "Porta", "Porta", "Port", "端口", "ポート",
|
||||
"포트", "Port",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.label",
|
||||
[
|
||||
"Label", "Метка", "Etiqueta", "Étiquette", "Bezeichnung", "Etichetta", "Rótulo",
|
||||
"Etykieta", "标签", "ラベル", "라벨", "Etiket",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.refresh",
|
||||
[
|
||||
"Refresh", "Обновить", "Actualizar", "Actualiser", "Aktualisieren", "Aggiorna",
|
||||
"Atualizar", "Odśwież", "刷新", "更新", "새로고침", "Yenile",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.upload",
|
||||
[
|
||||
"Upload", "Загрузить", "Subir", "Envoyer", "Hochladen", "Carica", "Enviar",
|
||||
"Prześlij", "上传", "アップロード", "업로드", "Yükle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.download",
|
||||
[
|
||||
"Download", "Скачать", "Descargar", "Télécharger", "Herunterladen", "Scarica",
|
||||
"Baixar", "Pobierz", "下载", "ダウンロード", "다운로드", "İndir",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.settings",
|
||||
[
|
||||
"Settings",
|
||||
"Настройки",
|
||||
"Configuración",
|
||||
"Paramètres",
|
||||
"Einstellungen",
|
||||
"Impostazioni",
|
||||
"Configurações",
|
||||
"Ustawienia",
|
||||
"设置",
|
||||
"設定",
|
||||
"설정",
|
||||
"Ayarlar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.history",
|
||||
[
|
||||
"History", "История", "Historial", "Historique", "Verlauf", "Cronologia",
|
||||
"Histórico", "Historia", "历史记录", "履歴", "기록", "Geçmiş",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.search",
|
||||
[
|
||||
"Search", "Поиск", "Buscar", "Rechercher", "Suchen", "Cerca", "Pesquisar", "Szukaj",
|
||||
"搜索", "検索", "검색", "Ara",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.yes",
|
||||
[
|
||||
"Yes", "Да", "Sí", "Oui", "Ja", "Sì", "Sim", "Tak", "是", "はい", "예", "Evet",
|
||||
],
|
||||
),
|
||||
(
|
||||
"common.no",
|
||||
[
|
||||
"No", "Нет", "No", "Non", "Nein", "No", "Não", "Nie", "否", "いいえ", "아니요",
|
||||
"Hayır",
|
||||
],
|
||||
),
|
||||
];
|
||||
233
src/i18n/strings/dialogs.rs
Normal file
233
src/i18n/strings/dialogs.rs
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
//! Диалог New Connection, модалки New Folder/Delete/Rename, ошибки формы.
|
||||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[
|
||||
(
|
||||
"dialogs.ssh_key_hint",
|
||||
[
|
||||
"Leave empty to sign in with an SSH key (agent or ~/.ssh).",
|
||||
"Оставьте пустым для входа по SSH-ключу (агент или ~/.ssh).",
|
||||
"Déjalo vacío para iniciar sesión con una clave SSH (agente o ~/.ssh).",
|
||||
"Laissez vide pour vous connecter avec une clé SSH (agent ou ~/.ssh).",
|
||||
"Leer lassen, um sich mit einem SSH-Schlüssel anzumelden (Agent oder ~/.ssh).",
|
||||
"Lascia vuoto per accedere con una chiave SSH (agente o ~/.ssh).",
|
||||
"Deixe em branco para entrar com uma chave SSH (agente ou ~/.ssh).",
|
||||
"Pozostaw puste, aby zalogować się kluczem SSH (agent lub ~/.ssh).",
|
||||
"留空以使用 SSH 密钥登录(代理或 ~/.ssh)。",
|
||||
"SSH 鍵でサインインする場合は空欄のままにしてください(エージェントまたは ~/.ssh)。",
|
||||
"SSH 키로 로그인하려면 비워 두세요(에이전트 또는 ~/.ssh).",
|
||||
"SSH anahtarıyla oturum açmak için boş bırakın (aracı veya ~/.ssh).",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.key_file_label",
|
||||
[
|
||||
"Key file (optional)",
|
||||
"Файл ключа (необязательно)",
|
||||
"Archivo de clave (opcional)",
|
||||
"Fichier de clé (facultatif)",
|
||||
"Schlüsseldatei (optional)",
|
||||
"File chiave (opzionale)",
|
||||
"Arquivo de chave (opcional)",
|
||||
"Plik klucza (opcjonalnie)",
|
||||
"密钥文件(可选)",
|
||||
"鍵ファイル(任意)",
|
||||
"키 파일(선택 사항)",
|
||||
"Anahtar dosyası (isteğe bağlı)",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.browse",
|
||||
[
|
||||
"Browse…", "Обзор…", "Examinar…", "Parcourir…", "Durchsuchen…", "Sfoglia…",
|
||||
"Procurar…", "Przeglądaj…", "浏览…", "参照…", "찾아보기…", "Gözat…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.choose_ssh_key_title",
|
||||
[
|
||||
"Choose SSH key",
|
||||
"Выбор SSH-ключа",
|
||||
"Elegir clave SSH",
|
||||
"Choisir la clé SSH",
|
||||
"SSH-Schlüssel auswählen",
|
||||
"Scegli chiave SSH",
|
||||
"Escolher chave SSH",
|
||||
"Wybierz klucz SSH",
|
||||
"选择 SSH 密钥",
|
||||
"SSH 鍵を選択",
|
||||
"SSH 키 선택",
|
||||
"SSH Anahtarı Seç",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.label_optional",
|
||||
[
|
||||
"Label (optional)",
|
||||
"Метка (необязательно)",
|
||||
"Etiqueta (opcional)",
|
||||
"Étiquette (facultatif)",
|
||||
"Bezeichnung (optional)",
|
||||
"Etichetta (opzionale)",
|
||||
"Rótulo (opcional)",
|
||||
"Etykieta (opcjonalnie)",
|
||||
"标签(可选)",
|
||||
"ラベル(任意)",
|
||||
"라벨(선택 사항)",
|
||||
"Etiket (isteğe bağlı)",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.confirm_delete_title",
|
||||
[
|
||||
"Delete \"{name}\"?",
|
||||
"Удалить «{name}»?",
|
||||
"¿Eliminar \"{name}\"?",
|
||||
"Supprimer « {name} » ?",
|
||||
"„{name}\" löschen?",
|
||||
"Eliminare \"{name}\"?",
|
||||
"Excluir \"{name}\"?",
|
||||
"Usunąć „{name}\"?",
|
||||
"删除\u{201c}{name}\u{201d}?",
|
||||
"「{name}」を削除しますか?",
|
||||
"\"{name}\"을(를) 삭제하시겠습니까?",
|
||||
"\"{name}\" silinsin mi?",
|
||||
],
|
||||
),
|
||||
(
|
||||
"dialogs.cannot_undo",
|
||||
[
|
||||
"This action cannot be undone.",
|
||||
"Это действие необратимо.",
|
||||
"Esta acción no se puede deshacer.",
|
||||
"Cette action est irréversible.",
|
||||
"Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"Questa azione non può essere annullata.",
|
||||
"Esta ação não pode ser desfeita.",
|
||||
"Tej operacji nie można cofnąć.",
|
||||
"此操作无法撤销。",
|
||||
"この操作は元に戻せません。",
|
||||
"이 작업은 되돌릴 수 없습니다.",
|
||||
"Bu işlem geri alınamaz.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"errors.host_required",
|
||||
[
|
||||
"Host is required.",
|
||||
"Укажите хост.",
|
||||
"El host es obligatorio.",
|
||||
"L'hôte est requis.",
|
||||
"Host ist erforderlich.",
|
||||
"L'host è obbligatorio.",
|
||||
"O host é obrigatório.",
|
||||
"Host jest wymagany.",
|
||||
"请输入主机地址。",
|
||||
"ホストを入力してください。",
|
||||
"호스트를 입력해야 합니다.",
|
||||
"Sunucu adresi gerekli.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"errors.username_required",
|
||||
[
|
||||
"Username is required.",
|
||||
"Укажите имя пользователя.",
|
||||
"El usuario es obligatorio.",
|
||||
"Le nom d'utilisateur est requis.",
|
||||
"Benutzername ist erforderlich.",
|
||||
"Il nome utente è obbligatorio.",
|
||||
"O nome de usuário é obrigatório.",
|
||||
"Nazwa użytkownika jest wymagana.",
|
||||
"请输入用户名。",
|
||||
"ユーザー名を入力してください。",
|
||||
"사용자 이름을 입력해야 합니다.",
|
||||
"Kullanıcı adı gerekli.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"errors.port_invalid",
|
||||
[
|
||||
"Port must be a number between 1 and 65535.",
|
||||
"Порт должен быть числом от 1 до 65535.",
|
||||
"El puerto debe ser un número entre 1 y 65535.",
|
||||
"Le port doit être un nombre compris entre 1 et 65535.",
|
||||
"Der Port muss eine Zahl zwischen 1 und 65535 sein.",
|
||||
"La porta deve essere un numero compreso tra 1 e 65535.",
|
||||
"A porta deve ser um número entre 1 e 65535.",
|
||||
"Port musi być liczbą od 1 do 65535.",
|
||||
"端口必须是 1 到 65535 之间的数字。",
|
||||
"ポートは 1〜65535 の数値で指定してください。",
|
||||
"포트는 1에서 65535 사이의 숫자여야 합니다.",
|
||||
"Port 1 ile 65535 arasında bir sayı olmalıdır.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"errors.ftps_not_implemented",
|
||||
[
|
||||
"FTPS not yet implemented",
|
||||
"FTPS пока не реализован",
|
||||
"FTPS aún no está implementado",
|
||||
"FTPS pas encore pris en charge",
|
||||
"FTPS ist noch nicht implementiert",
|
||||
"FTPS non ancora implementato",
|
||||
"FTPS ainda não implementado",
|
||||
"FTPS nie jest jeszcze obsługiwany",
|
||||
"尚未实现 FTPS",
|
||||
"FTPS はまだ実装されていません",
|
||||
"FTPS는 아직 구현되지 않았습니다",
|
||||
"FTPS henüz uygulanmadı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"errors.ftp_password_required",
|
||||
[
|
||||
"Password is required for FTP connections.",
|
||||
"Для подключения по FTP требуется пароль.",
|
||||
"Se requiere una contraseña para las conexiones FTP.",
|
||||
"Un mot de passe est requis pour les connexions FTP.",
|
||||
"Für FTP-Verbindungen ist ein Passwort erforderlich.",
|
||||
"È richiesta una password per le connessioni FTP.",
|
||||
"É necessária uma senha para conexões FTP.",
|
||||
"Połączenia FTP wymagają hasła.",
|
||||
"FTP 连接需要密码。",
|
||||
"FTP 接続にはパスワードが必要です。",
|
||||
"FTP 연결에는 비밀번호가 필요합니다.",
|
||||
"FTP bağlantıları için parola gereklidir.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"welcome.tagline",
|
||||
[
|
||||
"FTP/SFTP client",
|
||||
"FTP/SFTP-клиент",
|
||||
"Cliente FTP/SFTP",
|
||||
"Client FTP/SFTP",
|
||||
"FTP/SFTP-Client",
|
||||
"Client FTP/SFTP",
|
||||
"Cliente FTP/SFTP",
|
||||
"Klient FTP/SFTP",
|
||||
"FTP/SFTP 客户端",
|
||||
"FTP/SFTP クライアント",
|
||||
"FTP/SFTP 클라이언트",
|
||||
"FTP/SFTP İstemcisi",
|
||||
],
|
||||
),
|
||||
(
|
||||
"welcome.recent_connections",
|
||||
[
|
||||
"RECENT CONNECTIONS",
|
||||
"НЕДАВНИЕ ПОДКЛЮЧЕНИЯ",
|
||||
"CONEXIONES RECIENTES",
|
||||
"CONNEXIONS RÉCENTES",
|
||||
"LETZTE VERBINDUNGEN",
|
||||
"CONNESSIONI RECENTI",
|
||||
"CONEXÕES RECENTES",
|
||||
"OSTATNIE POŁĄCZENIA",
|
||||
"最近的连接",
|
||||
"最近の接続",
|
||||
"최근 연결",
|
||||
"SON BAĞLANTILAR",
|
||||
],
|
||||
),
|
||||
];
|
||||
3
src/i18n/strings/menu.rs
Normal file
3
src/i18n/strings/menu.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[];
|
||||
23
src/i18n/strings/mod.rs
Normal file
23
src/i18n/strings/mod.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
//! Таблицы переводов, разбитые по областям интерфейса — так проще найти и
|
||||
//! проверить перевод конкретного экрана, чем в одном файле на тысячу строк.
|
||||
//! Порядок колонок в каждом `[&str; 12]`: en, ru, es, fr, de, it, pt, pl, zh, ja, ko, tr.
|
||||
mod common;
|
||||
mod dialogs;
|
||||
mod menu;
|
||||
mod panels;
|
||||
mod settings;
|
||||
mod toolbar;
|
||||
mod welcome;
|
||||
|
||||
type Entry = (&'static str, [&'static str; super::COUNT]);
|
||||
|
||||
pub fn all_entries() -> impl Iterator<Item = &'static Entry> {
|
||||
common::ENTRIES
|
||||
.iter()
|
||||
.chain(toolbar::ENTRIES.iter())
|
||||
.chain(panels::ENTRIES.iter())
|
||||
.chain(settings::ENTRIES.iter())
|
||||
.chain(dialogs::ENTRIES.iter())
|
||||
.chain(welcome::ENTRIES.iter())
|
||||
.chain(menu::ENTRIES.iter())
|
||||
}
|
||||
538
src/i18n/strings/panels.rs
Normal file
538
src/i18n/strings/panels.rs
Normal file
|
|
@ -0,0 +1,538 @@
|
|||
//! Сайдбар, локальная/удалённая панели, таблица файлов.
|
||||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[
|
||||
(
|
||||
"panels.local_label",
|
||||
[
|
||||
"LOCAL", "ЛОКАЛЬНО", "LOCAL", "LOCAL", "LOKAL", "LOCALE", "LOCAL", "LOKALNE", "本地",
|
||||
"ローカル", "로컬", "YEREL",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.remote_label",
|
||||
[
|
||||
"REMOTE · {host}",
|
||||
"УДАЛЁННО · {host}",
|
||||
"REMOTO · {host}",
|
||||
"DISTANT · {host}",
|
||||
"REMOTE · {host}",
|
||||
"REMOTO · {host}",
|
||||
"REMOTO · {host}",
|
||||
"ZDALNE · {host}",
|
||||
"远程 · {host}",
|
||||
"リモート · {host}",
|
||||
"원격 · {host}",
|
||||
"UZAK · {host}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.loading",
|
||||
[
|
||||
"Loading…",
|
||||
"Загрузка…",
|
||||
"Cargando…",
|
||||
"Chargement…",
|
||||
"Wird geladen…",
|
||||
"Caricamento…",
|
||||
"Carregando…",
|
||||
"Ładowanie…",
|
||||
"加载中…",
|
||||
"読み込み中…",
|
||||
"로딩 중…",
|
||||
"Yükleniyor…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.count_items",
|
||||
[
|
||||
"{n} items",
|
||||
"{n} объектов",
|
||||
"{n} elementos",
|
||||
"{n} éléments",
|
||||
"{n} Elemente",
|
||||
"{n} elementi",
|
||||
"{n} itens",
|
||||
"{n} elementów",
|
||||
"{n} 项",
|
||||
"{n} 件",
|
||||
"{n}개 항목",
|
||||
"{n} öğe",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.col_name",
|
||||
[
|
||||
"Name", "Имя", "Nombre", "Nom", "Name", "Nome", "Nome", "Nazwa", "名称", "名前",
|
||||
"이름", "Ad",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.col_modified",
|
||||
[
|
||||
"Modified",
|
||||
"Изменён",
|
||||
"Modificado",
|
||||
"Modifié",
|
||||
"Geändert",
|
||||
"Modificato",
|
||||
"Modificado",
|
||||
"Zmodyfikowano",
|
||||
"修改时间",
|
||||
"更新日時",
|
||||
"수정됨",
|
||||
"Değiştirilme",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.col_type",
|
||||
[
|
||||
"Type", "Тип", "Tipo", "Type", "Typ", "Tipo", "Tipo", "Typ", "类型", "種類", "유형",
|
||||
"Tür",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.col_size",
|
||||
[
|
||||
"Size", "Размер", "Tamaño", "Taille", "Größe", "Dimensione", "Tamanho", "Rozmiar",
|
||||
"大小", "サイズ", "크기", "Boyut",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.type_dir",
|
||||
[
|
||||
"Dir", "Папка", "Carpeta", "Dossier", "Ordner", "Cartella", "Pasta", "Folder",
|
||||
"文件夹", "フォルダ", "폴더", "Klasör",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.type_file",
|
||||
[
|
||||
"File", "Файл", "Archivo", "Fichier", "Datei", "File", "Arquivo", "Plik", "文件",
|
||||
"ファイル", "파일", "Dosya",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.type_link",
|
||||
[
|
||||
"Link", "Ссылка", "Enlace", "Lien", "Link", "Collegamento", "Link", "Link", "链接",
|
||||
"リンク", "링크", "Bağlantı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.path_copied",
|
||||
[
|
||||
"Path copied",
|
||||
"Путь скопирован",
|
||||
"Ruta copiada",
|
||||
"Chemin copié",
|
||||
"Pfad kopiert",
|
||||
"Percorso copiato",
|
||||
"Caminho copiado",
|
||||
"Skopiowano ścieżkę",
|
||||
"路径已复制",
|
||||
"パスをコピーしました",
|
||||
"경로가 복사되었습니다",
|
||||
"Yol kopyalandı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.drives",
|
||||
[
|
||||
"DRIVES", "ДИСКИ", "UNIDADES", "DISQUES", "LAUFWERKE", "UNITÀ", "UNIDADES", "DYSKI",
|
||||
"磁盘", "ドライブ", "드라이브", "SÜRÜCÜLER",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.root_label",
|
||||
[
|
||||
"/ (root)",
|
||||
"/ (корень)",
|
||||
"/ (raíz)",
|
||||
"/ (racine)",
|
||||
"/ (Wurzel)",
|
||||
"/ (radice)",
|
||||
"/ (raiz)",
|
||||
"/ (główny)",
|
||||
"/ (根目录)",
|
||||
"/ (ルート)",
|
||||
"/ (루트)",
|
||||
"/ (kök)",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.bookmarks",
|
||||
[
|
||||
"BOOKMARKS",
|
||||
"ЗАКЛАДКИ",
|
||||
"MARCADORES",
|
||||
"FAVORIS",
|
||||
"LESEZEICHEN",
|
||||
"PREFERITI",
|
||||
"FAVORITOS",
|
||||
"ZAKŁADKI",
|
||||
"书签",
|
||||
"ブックマーク",
|
||||
"북마크",
|
||||
"YER İMLERİ",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.remove_bookmark",
|
||||
[
|
||||
"Remove bookmark",
|
||||
"Удалить закладку",
|
||||
"Quitar marcador",
|
||||
"Supprimer le favori",
|
||||
"Lesezeichen entfernen",
|
||||
"Rimuovi preferito",
|
||||
"Remover favorito",
|
||||
"Usuń zakładkę",
|
||||
"移除书签",
|
||||
"ブックマークを削除",
|
||||
"북마크 제거",
|
||||
"Yer imini kaldır",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_home",
|
||||
[
|
||||
"Home", "Домой", "Inicio", "Accueil", "Start", "Home", "Início", "Dom", "主目录",
|
||||
"ホーム", "홈", "Ana Sayfa",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_desktop",
|
||||
[
|
||||
"Desktop",
|
||||
"Рабочий стол",
|
||||
"Escritorio",
|
||||
"Bureau",
|
||||
"Schreibtisch",
|
||||
"Scrivania",
|
||||
"Área de Trabalho",
|
||||
"Pulpit",
|
||||
"桌面",
|
||||
"デスクトップ",
|
||||
"바탕화면",
|
||||
"Masaüstü",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_documents",
|
||||
[
|
||||
"Documents", "Документы", "Documentos", "Documents", "Dokumente", "Documenti",
|
||||
"Documentos", "Dokumenty", "文稿", "書類", "문서", "Belgeler",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_downloads",
|
||||
[
|
||||
"Downloads",
|
||||
"Загрузки",
|
||||
"Descargas",
|
||||
"Téléchargements",
|
||||
"Downloads",
|
||||
"Download",
|
||||
"Downloads",
|
||||
"Pobrane",
|
||||
"下载",
|
||||
"ダウンロード",
|
||||
"다운로드",
|
||||
"İndirilenler",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_pictures",
|
||||
[
|
||||
"Pictures", "Изображения", "Imágenes", "Images", "Bilder", "Immagini", "Imagens",
|
||||
"Obrazy", "图片", "ピクチャ", "사진", "Resimler",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_music",
|
||||
[
|
||||
"Music", "Музыка", "Música", "Musique", "Musik", "Musica", "Música", "Muzyka",
|
||||
"音乐", "ミュージック", "음악", "Müzik",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.qa_videos",
|
||||
[
|
||||
"Videos", "Видео", "Vídeos", "Vidéos", "Videos", "Video", "Vídeos", "Filmy", "影片",
|
||||
"ムービー", "동영상", "Videolar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.sidebar.bookmark_this_folder",
|
||||
[
|
||||
"Bookmark this folder",
|
||||
"Добавить папку в закладки",
|
||||
"Marcar esta carpeta",
|
||||
"Ajouter ce dossier aux favoris",
|
||||
"Diesen Ordner als Lesezeichen speichern",
|
||||
"Aggiungi cartella ai preferiti",
|
||||
"Adicionar pasta aos favoritos",
|
||||
"Dodaj folder do zakładek",
|
||||
"将此文件夹加入书签",
|
||||
"このフォルダをブックマーク",
|
||||
"이 폴더 북마크",
|
||||
"Bu klasörü yer imlerine ekle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.error",
|
||||
[
|
||||
"Local error: {err}",
|
||||
"Локальная ошибка: {err}",
|
||||
"Error local: {err}",
|
||||
"Erreur locale : {err}",
|
||||
"Lokaler Fehler: {err}",
|
||||
"Errore locale: {err}",
|
||||
"Erro local: {err}",
|
||||
"Błąd lokalny: {err}",
|
||||
"本地错误:{err}",
|
||||
"ローカルエラー: {err}",
|
||||
"로컬 오류: {err}",
|
||||
"Yerel hata: {err}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.add_to_bookmarks",
|
||||
[
|
||||
"Add to Bookmarks",
|
||||
"Добавить в закладки",
|
||||
"Añadir a marcadores",
|
||||
"Ajouter aux favoris",
|
||||
"Zu Lesezeichen hinzufügen",
|
||||
"Aggiungi ai preferiti",
|
||||
"Adicionar aos favoritos",
|
||||
"Dodaj do zakładek",
|
||||
"添加到书签",
|
||||
"ブックマークに追加",
|
||||
"북마크에 추가",
|
||||
"Yer İmlerine Ekle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.upload_to_server",
|
||||
[
|
||||
"Upload to Server",
|
||||
"Загрузить на сервер",
|
||||
"Subir al servidor",
|
||||
"Envoyer vers le serveur",
|
||||
"Auf Server hochladen",
|
||||
"Carica sul server",
|
||||
"Enviar para o servidor",
|
||||
"Wyślij na serwer",
|
||||
"上传到服务器",
|
||||
"サーバーへアップロード",
|
||||
"서버에 업로드",
|
||||
"Sunucuya Yükle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.conn_inactive",
|
||||
[
|
||||
"Connection no longer active",
|
||||
"Подключение больше не активно",
|
||||
"La conexión ya no está activa",
|
||||
"La connexion n'est plus active",
|
||||
"Verbindung ist nicht mehr aktiv",
|
||||
"La connessione non è più attiva",
|
||||
"A conexão não está mais ativa",
|
||||
"Połączenie już nieaktywne",
|
||||
"连接已失效",
|
||||
"接続は無効になりました",
|
||||
"연결이 더 이상 활성 상태가 아닙니다",
|
||||
"Bağlantı artık etkin değil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.moved",
|
||||
[
|
||||
"Moved {name}",
|
||||
"Перемещено: {name}",
|
||||
"Movido: {name}",
|
||||
"Déplacé : {name}",
|
||||
"Verschoben: {name}",
|
||||
"Spostato: {name}",
|
||||
"Movido: {name}",
|
||||
"Przeniesiono: {name}",
|
||||
"已移动:{name}",
|
||||
"移動しました: {name}",
|
||||
"이동됨: {name}",
|
||||
"Taşındı: {name}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.move_failed",
|
||||
[
|
||||
"Move failed: {err}",
|
||||
"Не удалось переместить: {err}",
|
||||
"Error al mover: {err}",
|
||||
"Échec du déplacement : {err}",
|
||||
"Verschieben fehlgeschlagen: {err}",
|
||||
"Spostamento non riuscito: {err}",
|
||||
"Falha ao mover: {err}",
|
||||
"Nie udało się przenieść: {err}",
|
||||
"移动失败:{err}",
|
||||
"移動に失敗しました: {err}",
|
||||
"이동 실패: {err}",
|
||||
"Taşıma başarısız: {err}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.opening",
|
||||
[
|
||||
"Opening {name}",
|
||||
"Открывается {name}",
|
||||
"Abriendo {name}",
|
||||
"Ouverture de {name}",
|
||||
"{name} wird geöffnet",
|
||||
"Apertura di {name}",
|
||||
"Abrindo {name}",
|
||||
"Otwieranie {name}",
|
||||
"正在打开 {name}",
|
||||
"{name} を開いています",
|
||||
"{name} 여는 중",
|
||||
"{name} açılıyor",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.open_failed",
|
||||
[
|
||||
"Open failed: {err}",
|
||||
"Не удалось открыть: {err}",
|
||||
"Error al abrir: {err}",
|
||||
"Échec de l'ouverture : {err}",
|
||||
"Öffnen fehlgeschlagen: {err}",
|
||||
"Apertura non riuscita: {err}",
|
||||
"Falha ao abrir: {err}",
|
||||
"Nie udało się otworzyć: {err}",
|
||||
"打开失败:{err}",
|
||||
"開くのに失敗しました: {err}",
|
||||
"열기 실패: {err}",
|
||||
"Açma başarısız: {err}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.already_bookmarked",
|
||||
[
|
||||
"Already bookmarked",
|
||||
"Уже в закладках",
|
||||
"Ya está en marcadores",
|
||||
"Déjà dans les favoris",
|
||||
"Bereits als Lesezeichen gespeichert",
|
||||
"Già nei preferiti",
|
||||
"Já está nos favoritos",
|
||||
"Już w zakładkach",
|
||||
"已在书签中",
|
||||
"既にブックマーク済みです",
|
||||
"이미 북마크됨",
|
||||
"Zaten yer imlerinde",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.bookmark_added",
|
||||
[
|
||||
"Bookmark added",
|
||||
"Закладка добавлена",
|
||||
"Marcador añadido",
|
||||
"Favori ajouté",
|
||||
"Lesezeichen hinzugefügt",
|
||||
"Preferito aggiunto",
|
||||
"Favorito adicionado",
|
||||
"Dodano zakładkę",
|
||||
"已添加书签",
|
||||
"ブックマークを追加しました",
|
||||
"북마크 추가됨",
|
||||
"Yer imi eklendi",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.local.bookmark_failed",
|
||||
[
|
||||
"Bookmark failed: {err}",
|
||||
"Не удалось добавить закладку: {err}",
|
||||
"Error al añadir marcador: {err}",
|
||||
"Échec de l'ajout du favori : {err}",
|
||||
"Lesezeichen fehlgeschlagen: {err}",
|
||||
"Aggiunta ai preferiti non riuscita: {err}",
|
||||
"Falha ao adicionar favorito: {err}",
|
||||
"Nie udało się dodać zakładki: {err}",
|
||||
"添加书签失败:{err}",
|
||||
"ブックマークの追加に失敗しました: {err}",
|
||||
"북마크 추가 실패: {err}",
|
||||
"Yer imi eklenemedi: {err}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.remote.no_active_connection",
|
||||
[
|
||||
"No active connection",
|
||||
"Нет активного подключения",
|
||||
"Sin conexión activa",
|
||||
"Aucune connexion active",
|
||||
"Keine aktive Verbindung",
|
||||
"Nessuna connessione attiva",
|
||||
"Nenhuma conexão ativa",
|
||||
"Brak aktywnego połączenia",
|
||||
"没有活动连接",
|
||||
"アクティブな接続がありません",
|
||||
"활성 연결이 없습니다",
|
||||
"Etkin bağlantı yok",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.remote.cannot_move_cross_connection",
|
||||
[
|
||||
"Cannot move between different connections",
|
||||
"Нельзя перемещать между разными подключениями",
|
||||
"No se puede mover entre conexiones diferentes",
|
||||
"Impossible de déplacer entre différentes connexions",
|
||||
"Verschieben zwischen unterschiedlichen Verbindungen nicht möglich",
|
||||
"Impossibile spostare tra connessioni diverse",
|
||||
"Não é possível mover entre conexões diferentes",
|
||||
"Nie można przenosić między różnymi połączeniami",
|
||||
"无法在不同连接之间移动",
|
||||
"異なる接続間では移動できません",
|
||||
"서로 다른 연결 간에는 이동할 수 없습니다",
|
||||
"Farklı bağlantılar arasında taşınamaz",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.remote.moving",
|
||||
[
|
||||
"Moving {name}…",
|
||||
"Перемещение {name}…",
|
||||
"Moviendo {name}…",
|
||||
"Déplacement de {name}…",
|
||||
"{name} wird verschoben…",
|
||||
"Spostamento di {name}…",
|
||||
"Movendo {name}…",
|
||||
"Przenoszenie {name}…",
|
||||
"正在移动 {name}…",
|
||||
"{name} を移動中…",
|
||||
"{name} 이동 중…",
|
||||
"{name} taşınıyor…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"panels.remote.download_to_local",
|
||||
[
|
||||
"Download to Local",
|
||||
"Скачать локально",
|
||||
"Descargar a local",
|
||||
"Télécharger en local",
|
||||
"Lokal herunterladen",
|
||||
"Scarica in locale",
|
||||
"Baixar para local",
|
||||
"Pobierz lokalnie",
|
||||
"下载到本地",
|
||||
"ローカルへダウンロード",
|
||||
"로컬로 다운로드",
|
||||
"Yerele İndir",
|
||||
],
|
||||
),
|
||||
];
|
||||
831
src/i18n/strings/settings.rs
Normal file
831
src/i18n/strings/settings.rs
Normal file
|
|
@ -0,0 +1,831 @@
|
|||
//! Диалог Settings: навигация и разделы (General/Appearance/Connections/
|
||||
//! History/Security/Transfers/About).
|
||||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[
|
||||
// ── Заголовок диалога и навигация ───────────────────────────────────
|
||||
(
|
||||
"settings.title",
|
||||
[
|
||||
"Settings",
|
||||
"Настройки",
|
||||
"Configuración",
|
||||
"Paramètres",
|
||||
"Einstellungen",
|
||||
"Impostazioni",
|
||||
"Configurações",
|
||||
"Ustawienia",
|
||||
"设置",
|
||||
"設定",
|
||||
"설정",
|
||||
"Ayarlar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.group_general",
|
||||
[
|
||||
"GENERAL", "ОБЩЕЕ", "GENERAL", "GÉNÉRAL", "ALLGEMEIN", "GENERALE", "GERAL", "OGÓLNE",
|
||||
"通用", "一般", "일반", "GENEL",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.group_connections",
|
||||
[
|
||||
"CONNECTIONS",
|
||||
"ПОДКЛЮЧЕНИЯ",
|
||||
"CONEXIONES",
|
||||
"CONNEXIONS",
|
||||
"VERBINDUNGEN",
|
||||
"CONNESSIONI",
|
||||
"CONEXÕES",
|
||||
"POŁĄCZENIA",
|
||||
"连接",
|
||||
"接続",
|
||||
"연결",
|
||||
"BAĞLANTILAR",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.group_transfers",
|
||||
[
|
||||
"TRANSFERS",
|
||||
"ПЕРЕДАЧИ",
|
||||
"TRANSFERENCIAS",
|
||||
"TRANSFERTS",
|
||||
"ÜBERTRAGUNGEN",
|
||||
"TRASFERIMENTI",
|
||||
"TRANSFERÊNCIAS",
|
||||
"TRANSFERY",
|
||||
"传输",
|
||||
"転送",
|
||||
"전송",
|
||||
"AKTARIMLAR",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.group_about",
|
||||
[
|
||||
"ABOUT", "О ПРОГРАММЕ", "ACERCA DE", "À PROPOS", "ÜBER", "INFORMAZIONI", "SOBRE",
|
||||
"O PROGRAMIE", "关于", "情報", "정보", "HAKKINDA",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.general",
|
||||
[
|
||||
"General", "Общие", "General", "Général", "Allgemein", "Generale", "Geral", "Ogólne",
|
||||
"通用", "一般", "일반", "Genel",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.appearance",
|
||||
[
|
||||
"Appearance",
|
||||
"Внешний вид",
|
||||
"Apariencia",
|
||||
"Apparence",
|
||||
"Erscheinungsbild",
|
||||
"Aspetto",
|
||||
"Aparência",
|
||||
"Wygląd",
|
||||
"外观",
|
||||
"外観",
|
||||
"외관",
|
||||
"Görünüm",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.connections",
|
||||
[
|
||||
"Sites & Bookmarks",
|
||||
"Сайты и закладки",
|
||||
"Sitios y marcadores",
|
||||
"Sites et favoris",
|
||||
"Seiten & Lesezeichen",
|
||||
"Siti e preferiti",
|
||||
"Sites e favoritos",
|
||||
"Serwery i zakładki",
|
||||
"站点与书签",
|
||||
"サイトとブックマーク",
|
||||
"사이트 및 북마크",
|
||||
"Siteler ve Yer İmleri",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.history",
|
||||
[
|
||||
"History", "История", "Historial", "Historique", "Verlauf", "Cronologia",
|
||||
"Histórico", "Historia", "历史记录", "履歴", "기록", "Geçmiş",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.security",
|
||||
[
|
||||
"Security",
|
||||
"Безопасность",
|
||||
"Seguridad",
|
||||
"Sécurité",
|
||||
"Sicherheit",
|
||||
"Sicurezza",
|
||||
"Segurança",
|
||||
"Bezpieczeństwo",
|
||||
"安全",
|
||||
"セキュリティ",
|
||||
"보안",
|
||||
"Güvenlik",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.transfers",
|
||||
[
|
||||
"Transfers",
|
||||
"Передачи",
|
||||
"Transferencias",
|
||||
"Transferts",
|
||||
"Übertragungen",
|
||||
"Trasferimenti",
|
||||
"Transferências",
|
||||
"Transfery",
|
||||
"传输",
|
||||
"転送",
|
||||
"전송",
|
||||
"Aktarımlar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.nav.about",
|
||||
[
|
||||
"About", "О программе", "Acerca de", "À propos", "Über", "Informazioni", "Sobre",
|
||||
"O programie", "关于", "情報", "정보", "Hakkında",
|
||||
],
|
||||
),
|
||||
// ── General ──────────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.general.confirm_delete",
|
||||
[
|
||||
"Confirm before deleting files",
|
||||
"Подтверждать перед удалением файлов",
|
||||
"Confirmar antes de eliminar archivos",
|
||||
"Confirmer avant de supprimer des fichiers",
|
||||
"Vor dem Löschen von Dateien bestätigen",
|
||||
"Conferma prima di eliminare i file",
|
||||
"Confirmar antes de excluir arquivos",
|
||||
"Potwierdzaj przed usunięciem plików",
|
||||
"删除文件前进行确认",
|
||||
"ファイル削除前に確認する",
|
||||
"파일 삭제 전 확인",
|
||||
"Dosyaları silmeden önce onayla",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.confirm_delete_hint",
|
||||
[
|
||||
"Show a confirmation dialog before deleting local or remote files.",
|
||||
"Показывать диалог подтверждения перед удалением локальных или удалённых файлов.",
|
||||
"Muestra un cuadro de confirmación antes de eliminar archivos locales o remotos.",
|
||||
"Afficher une boîte de dialogue de confirmation avant de supprimer des fichiers locaux ou distants.",
|
||||
"Zeigt vor dem Löschen lokaler oder entfernter Dateien einen Bestätigungsdialog an.",
|
||||
"Mostra una finestra di conferma prima di eliminare file locali o remoti.",
|
||||
"Mostra uma caixa de confirmação antes de excluir arquivos locais ou remotos.",
|
||||
"Wyświetla okno potwierdzenia przed usunięciem plików lokalnych lub zdalnych.",
|
||||
"删除本地或远程文件前显示确认对话框。",
|
||||
"ローカルまたはリモートのファイルを削除する前に確認ダイアログを表示します。",
|
||||
"로컬 또는 원격 파일을 삭제하기 전에 확인 대화 상자를 표시합니다.",
|
||||
"Yerel veya uzak dosyaları silmeden önce bir onay penceresi gösterir.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.startup_folder",
|
||||
[
|
||||
"Startup folder",
|
||||
"Стартовая папка",
|
||||
"Carpeta de inicio",
|
||||
"Dossier de démarrage",
|
||||
"Startordner",
|
||||
"Cartella di avvio",
|
||||
"Pasta inicial",
|
||||
"Folder startowy",
|
||||
"启动文件夹",
|
||||
"起動時のフォルダ",
|
||||
"시작 폴더",
|
||||
"Başlangıç klasörü",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.startup_folder_hint",
|
||||
[
|
||||
"Local pane opens here when LoFlum starts.",
|
||||
"Локальная панель будет открываться здесь при запуске LoFlum.",
|
||||
"El panel local se abrirá aquí al iniciar LoFlum.",
|
||||
"Le panneau local s'ouvrira ici au démarrage de LoFlum.",
|
||||
"Der lokale Bereich wird hier geöffnet, wenn LoFlum startet.",
|
||||
"Il pannello locale si aprirà qui all'avvio di LoFlum.",
|
||||
"O painel local abrirá aqui quando o LoFlum iniciar.",
|
||||
"Panel lokalny otworzy się tutaj po uruchomieniu LoFlum.",
|
||||
"LoFlum 启动时,本地面板将在此处打开。",
|
||||
"LoFlum 起動時にローカルパネルがここで開きます。",
|
||||
"LoFlum을 시작하면 로컬 패널이 여기에서 열립니다.",
|
||||
"LoFlum başlatıldığında yerel panel burada açılır.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.home_directory",
|
||||
[
|
||||
"Home directory",
|
||||
"Домашняя папка",
|
||||
"Directorio personal",
|
||||
"Dossier personnel",
|
||||
"Home-Verzeichnis",
|
||||
"Cartella Home",
|
||||
"Diretório inicial",
|
||||
"Katalog domowy",
|
||||
"主目录",
|
||||
"ホームディレクトリ",
|
||||
"홈 디렉터리",
|
||||
"Ana dizin",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.use_current_folder",
|
||||
[
|
||||
"Use Current Folder",
|
||||
"Использовать текущую папку",
|
||||
"Usar carpeta actual",
|
||||
"Utiliser le dossier actuel",
|
||||
"Aktuellen Ordner verwenden",
|
||||
"Usa cartella corrente",
|
||||
"Usar pasta atual",
|
||||
"Użyj bieżącego folderu",
|
||||
"使用当前文件夹",
|
||||
"現在のフォルダを使用",
|
||||
"현재 폴더 사용",
|
||||
"Geçerli Klasörü Kullan",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.reset_to_home",
|
||||
[
|
||||
"Reset to Home",
|
||||
"Сбросить на домашнюю",
|
||||
"Restablecer a inicio",
|
||||
"Réinitialiser au dossier personnel",
|
||||
"Auf Home zurücksetzen",
|
||||
"Ripristina su Home",
|
||||
"Redefinir para inicial",
|
||||
"Przywróć domyślny",
|
||||
"重置为主目录",
|
||||
"ホームにリセット",
|
||||
"홈으로 재설정",
|
||||
"Ana Dizine Sıfırla",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.language",
|
||||
[
|
||||
"Language", "Язык", "Idioma", "Langue", "Sprache", "Lingua", "Idioma", "Język", "语言",
|
||||
"言語", "언어", "Dil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.general.language_hint",
|
||||
[
|
||||
"Interface language.",
|
||||
"Язык интерфейса.",
|
||||
"Idioma de la interfaz.",
|
||||
"Langue de l'interface.",
|
||||
"Sprache der Benutzeroberfläche.",
|
||||
"Lingua dell'interfaccia.",
|
||||
"Idioma da interface.",
|
||||
"Język interfejsu.",
|
||||
"界面语言。",
|
||||
"インターフェースの言語。",
|
||||
"인터페이스 언어.",
|
||||
"Arayüz dili.",
|
||||
],
|
||||
),
|
||||
// ── Appearance ───────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.appearance.hint",
|
||||
[
|
||||
"Choose which panels are visible in the main window.",
|
||||
"Выберите, какие панели отображать в главном окне.",
|
||||
"Elige qué paneles son visibles en la ventana principal.",
|
||||
"Choisissez les panneaux visibles dans la fenêtre principale.",
|
||||
"Wählen Sie, welche Bereiche im Hauptfenster sichtbar sind.",
|
||||
"Scegli quali pannelli sono visibili nella finestra principale.",
|
||||
"Escolha quais painéis ficam visíveis na janela principal.",
|
||||
"Wybierz, które panele są widoczne w oknie głównym.",
|
||||
"选择主窗口中显示哪些面板。",
|
||||
"メインウィンドウに表示するパネルを選択します。",
|
||||
"메인 창에 표시할 패널을 선택하세요.",
|
||||
"Ana penceredeki hangi panellerin görüneceğini seçin.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.appearance.toolbar",
|
||||
[
|
||||
"Toolbar",
|
||||
"Панель инструментов",
|
||||
"Barra de herramientas",
|
||||
"Barre d'outils",
|
||||
"Symbolleiste",
|
||||
"Barra degli strumenti",
|
||||
"Barra de ferramentas",
|
||||
"Pasek narzędzi",
|
||||
"工具栏",
|
||||
"ツールバー",
|
||||
"도구 모음",
|
||||
"Araç Çubuğu",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.appearance.sidebar",
|
||||
[
|
||||
"Sidebar", "Боковая панель", "Barra lateral", "Barre latérale", "Seitenleiste",
|
||||
"Barra laterale", "Barra lateral", "Pasek boczny", "侧边栏", "サイドバー", "사이드바",
|
||||
"Kenar Çubuğu",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.appearance.status_bar",
|
||||
[
|
||||
"Status bar",
|
||||
"Строка состояния",
|
||||
"Barra de estado",
|
||||
"Barre d'état",
|
||||
"Statusleiste",
|
||||
"Barra di stato",
|
||||
"Barra de status",
|
||||
"Pasek stanu",
|
||||
"状态栏",
|
||||
"ステータスバー",
|
||||
"상태 표시줄",
|
||||
"Durum Çubuğu",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.appearance.transfer_queue",
|
||||
[
|
||||
"Transfer queue",
|
||||
"Очередь передач",
|
||||
"Cola de transferencias",
|
||||
"File d'attente des transferts",
|
||||
"Übertragungswarteschlange",
|
||||
"Coda dei trasferimenti",
|
||||
"Fila de transferências",
|
||||
"Kolejka transferów",
|
||||
"传输队列",
|
||||
"転送キュー",
|
||||
"전송 대기열",
|
||||
"Aktarım Kuyruğu",
|
||||
],
|
||||
),
|
||||
// ── Connections (Sites & Bookmarks) ─────────────────────────────────
|
||||
(
|
||||
"settings.connections.sites",
|
||||
[
|
||||
"Sites", "Сайты", "Sitios", "Sites", "Seiten", "Siti", "Sites", "Serwery", "站点",
|
||||
"サイト", "사이트", "Siteler",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.no_sites",
|
||||
[
|
||||
"No saved sites yet. Save one from the connection history.",
|
||||
"Пока нет сохранённых сайтов. Сохраните один из истории подключений.",
|
||||
"Aún no hay sitios guardados. Guarda uno desde el historial de conexiones.",
|
||||
"Aucun site enregistré pour l'instant. Enregistrez-en un depuis l'historique des connexions.",
|
||||
"Noch keine gespeicherten Seiten. Speichern Sie eine aus dem Verbindungsverlauf.",
|
||||
"Nessun sito salvato. Salvane uno dalla cronologia delle connessioni.",
|
||||
"Ainda não há sites salvos. Salve um a partir do histórico de conexões.",
|
||||
"Brak zapisanych serwerów. Zapisz jeden z historii połączeń.",
|
||||
"尚无已保存的站点。可从连接历史记录中保存一个。",
|
||||
"保存済みのサイトはまだありません。接続履歴から保存してください。",
|
||||
"저장된 사이트가 아직 없습니다. 연결 기록에서 저장해 보세요.",
|
||||
"Henüz kayıtlı site yok. Bağlantı geçmişinden bir tane kaydedin.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.delete_site_hover",
|
||||
[
|
||||
"Delete site",
|
||||
"Удалить сайт",
|
||||
"Eliminar sitio",
|
||||
"Supprimer le site",
|
||||
"Seite löschen",
|
||||
"Elimina sito",
|
||||
"Excluir site",
|
||||
"Usuń serwer",
|
||||
"删除站点",
|
||||
"サイトを削除",
|
||||
"사이트 삭제",
|
||||
"Siteyi sil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.removed_site",
|
||||
[
|
||||
"Removed site \"{name}\"",
|
||||
"Сайт «{name}» удалён",
|
||||
"Sitio \"{name}\" eliminado",
|
||||
"Site « {name} » supprimé",
|
||||
"Seite „{name}\" entfernt",
|
||||
"Sito \"{name}\" rimosso",
|
||||
"Site \"{name}\" removido",
|
||||
"Usunięto serwer „{name}\"",
|
||||
"已删除站点\u{201c}{name}\u{201d}",
|
||||
"サイト「{name}」を削除しました",
|
||||
"사이트 \"{name}\" 삭제됨",
|
||||
"\"{name}\" sitesi kaldırıldı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.bookmarks_title",
|
||||
[
|
||||
"Bookmarks", "Закладки", "Marcadores", "Favoris", "Lesezeichen", "Preferiti",
|
||||
"Favoritos", "Zakładki", "书签", "ブックマーク", "북마크", "Yer İmleri",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.no_bookmarks",
|
||||
[
|
||||
"No bookmarks yet. Star a folder in the local pane.",
|
||||
"Пока нет закладок. Отметьте папку звёздочкой в локальной панели.",
|
||||
"Aún no hay marcadores. Marca una carpeta con una estrella en el panel local.",
|
||||
"Aucun favori pour l'instant. Ajoutez une étoile à un dossier dans le panneau local.",
|
||||
"Noch keine Lesezeichen. Markieren Sie einen Ordner im lokalen Bereich mit einem Stern.",
|
||||
"Nessun preferito. Contrassegna una cartella con una stella nel pannello locale.",
|
||||
"Ainda não há favoritos. Marque uma pasta com estrela no painel local.",
|
||||
"Brak zakładek. Oznacz folder gwiazdką w panelu lokalnym.",
|
||||
"尚无书签。在本地面板中为文件夹加星标即可。",
|
||||
"ブックマークはまだありません。ローカルパネルでフォルダにスターを付けてください。",
|
||||
"북마크가 아직 없습니다. 로컬 패널에서 폴더에 별표를 지정하세요.",
|
||||
"Henüz yer imi yok. Yerel paneldeki bir klasörü yıldızlayın.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.connections.bookmark_removed",
|
||||
[
|
||||
"Bookmark removed",
|
||||
"Закладка удалена",
|
||||
"Marcador eliminado",
|
||||
"Favori supprimé",
|
||||
"Lesezeichen entfernt",
|
||||
"Preferito rimosso",
|
||||
"Favorito removido",
|
||||
"Usunięto zakładkę",
|
||||
"已移除书签",
|
||||
"ブックマークを削除しました",
|
||||
"북마크 제거됨",
|
||||
"Yer imi kaldırıldı",
|
||||
],
|
||||
),
|
||||
// ── History ──────────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.history.title",
|
||||
[
|
||||
"Connection History",
|
||||
"История подключений",
|
||||
"Historial de conexiones",
|
||||
"Historique des connexions",
|
||||
"Verbindungsverlauf",
|
||||
"Cronologia connessioni",
|
||||
"Histórico de conexões",
|
||||
"Historia połączeń",
|
||||
"连接历史记录",
|
||||
"接続履歴",
|
||||
"연결 기록",
|
||||
"Bağlantı Geçmişi",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.history.empty",
|
||||
[
|
||||
"No history yet.",
|
||||
"Пока нет истории.",
|
||||
"Aún no hay historial.",
|
||||
"Aucun historique pour l'instant.",
|
||||
"Noch kein Verlauf.",
|
||||
"Nessuna cronologia.",
|
||||
"Ainda não há histórico.",
|
||||
"Brak historii.",
|
||||
"暂无历史记录。",
|
||||
"履歴はまだありません。",
|
||||
"아직 기록이 없습니다.",
|
||||
"Henüz geçmiş yok.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.history.confirm_clear",
|
||||
[
|
||||
"Delete all connection history? This cannot be undone.",
|
||||
"Удалить всю историю подключений? Это действие необратимо.",
|
||||
"¿Eliminar todo el historial de conexiones? Esta acción no se puede deshacer.",
|
||||
"Supprimer tout l'historique des connexions ? Cette action est irréversible.",
|
||||
"Gesamten Verbindungsverlauf löschen? Dies kann nicht rückgängig gemacht werden.",
|
||||
"Eliminare tutta la cronologia delle connessioni? Questa azione non può essere annullata.",
|
||||
"Excluir todo o histórico de conexões? Esta ação não pode ser desfeita.",
|
||||
"Usunąć całą historię połączeń? Tej operacji nie można cofnąć.",
|
||||
"删除全部连接历史记录?此操作无法撤销。",
|
||||
"接続履歴をすべて削除しますか?この操作は元に戻せません。",
|
||||
"모든 연결 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
|
||||
"Tüm bağlantı geçmişi silinsin mi? Bu işlem geri alınamaz.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.history.delete_all",
|
||||
[
|
||||
"Delete All", "Удалить всё", "Eliminar todo", "Tout supprimer", "Alles löschen",
|
||||
"Elimina tutto", "Excluir tudo", "Usuń wszystko", "全部删除", "すべて削除",
|
||||
"모두 삭제", "Tümünü Sil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.history.clear_all",
|
||||
[
|
||||
"Clear All History",
|
||||
"Очистить всю историю",
|
||||
"Borrar todo el historial",
|
||||
"Effacer tout l'historique",
|
||||
"Gesamten Verlauf löschen",
|
||||
"Cancella tutta la cronologia",
|
||||
"Limpar todo o histórico",
|
||||
"Wyczyść całą historię",
|
||||
"清除全部历史记录",
|
||||
"すべての履歴を消去",
|
||||
"전체 기록 지우기",
|
||||
"Tüm Geçmişi Temizle",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.history.cleared",
|
||||
[
|
||||
"History cleared",
|
||||
"История очищена",
|
||||
"Historial borrado",
|
||||
"Historique effacé",
|
||||
"Verlauf gelöscht",
|
||||
"Cronologia cancellata",
|
||||
"Histórico apagado",
|
||||
"Wyczyszczono historię",
|
||||
"历史记录已清除",
|
||||
"履歴を消去しました",
|
||||
"기록이 지워졌습니다",
|
||||
"Geçmiş temizlendi",
|
||||
],
|
||||
),
|
||||
// ── Security ─────────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.security.hint",
|
||||
[
|
||||
"Passwords for saved connections are stored in your system keychain.",
|
||||
"Пароли для сохранённых подключений хранятся в системной связке ключей.",
|
||||
"Las contraseñas de las conexiones guardadas se almacenan en el llavero del sistema.",
|
||||
"Les mots de passe des connexions enregistrées sont stockés dans le trousseau système.",
|
||||
"Passwörter für gespeicherte Verbindungen werden im System-Schlüsselbund gespeichert.",
|
||||
"Le password delle connessioni salvate sono conservate nel portachiavi di sistema.",
|
||||
"As senhas das conexões salvas são armazenadas no chaveiro do sistema.",
|
||||
"Hasła zapisanych połączeń są przechowywane w systemowym pęku kluczy.",
|
||||
"已保存连接的密码存储在系统钥匙串中。",
|
||||
"保存済み接続のパスワードはシステムのキーチェーンに保存されます。",
|
||||
"저장된 연결의 비밀번호는 시스템 키체인에 저장됩니다.",
|
||||
"Kayıtlı bağlantıların parolaları sistem anahtarlığında saklanır.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.security.no_connections",
|
||||
[
|
||||
"No saved connections.",
|
||||
"Нет сохранённых подключений.",
|
||||
"No hay conexiones guardadas.",
|
||||
"Aucune connexion enregistrée.",
|
||||
"Keine gespeicherten Verbindungen.",
|
||||
"Nessuna connessione salvata.",
|
||||
"Nenhuma conexão salva.",
|
||||
"Brak zapisanych połączeń.",
|
||||
"没有已保存的连接。",
|
||||
"保存済みの接続はありません。",
|
||||
"저장된 연결이 없습니다.",
|
||||
"Kayıtlı bağlantı yok.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.security.forget_password_hover",
|
||||
[
|
||||
"Forget saved password",
|
||||
"Забыть сохранённый пароль",
|
||||
"Olvidar contraseña guardada",
|
||||
"Oublier le mot de passe enregistré",
|
||||
"Gespeichertes Passwort vergessen",
|
||||
"Dimentica password salvata",
|
||||
"Esquecer senha salva",
|
||||
"Zapomnij zapisane hasło",
|
||||
"忘记已保存的密码",
|
||||
"保存済みのパスワードを削除",
|
||||
"저장된 비밀번호 삭제",
|
||||
"Kayıtlı parolayı unut",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.security.password_forgotten",
|
||||
[
|
||||
"Password forgotten",
|
||||
"Пароль забыт",
|
||||
"Contraseña olvidada",
|
||||
"Mot de passe oublié",
|
||||
"Passwort vergessen",
|
||||
"Password dimenticata",
|
||||
"Senha esquecida",
|
||||
"Zapomniano hasło",
|
||||
"已忘记密码",
|
||||
"パスワードを削除しました",
|
||||
"비밀번호가 삭제되었습니다",
|
||||
"Parola unutuldu",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.security.forget_all",
|
||||
[
|
||||
"Forget All Saved Passwords",
|
||||
"Забыть все сохранённые пароли",
|
||||
"Olvidar todas las contraseñas guardadas",
|
||||
"Oublier tous les mots de passe enregistrés",
|
||||
"Alle gespeicherten Passwörter vergessen",
|
||||
"Dimentica tutte le password salvate",
|
||||
"Esquecer todas as senhas salvas",
|
||||
"Zapomnij wszystkie zapisane hasła",
|
||||
"忘记所有已保存的密码",
|
||||
"保存済みのパスワードをすべて削除",
|
||||
"저장된 모든 비밀번호 삭제",
|
||||
"Kayıtlı Tüm Parolaları Unut",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.security.all_forgotten",
|
||||
[
|
||||
"All saved passwords forgotten",
|
||||
"Все сохранённые пароли забыты",
|
||||
"Se olvidaron todas las contraseñas guardadas",
|
||||
"Tous les mots de passe enregistrés ont été oubliés",
|
||||
"Alle gespeicherten Passwörter wurden vergessen",
|
||||
"Tutte le password salvate sono state dimenticate",
|
||||
"Todas as senhas salvas foram esquecidas",
|
||||
"Zapomniano wszystkie zapisane hasła",
|
||||
"已忘记所有保存的密码",
|
||||
"保存済みのパスワードをすべて削除しました",
|
||||
"저장된 모든 비밀번호가 삭제되었습니다",
|
||||
"Kayıtlı tüm parolalar unutuldu",
|
||||
],
|
||||
),
|
||||
// ── Transfers ────────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.transfers.concurrent_title",
|
||||
[
|
||||
"Concurrent transfers",
|
||||
"Одновременные передачи",
|
||||
"Transferencias simultáneas",
|
||||
"Transferts simultanés",
|
||||
"Gleichzeitige Übertragungen",
|
||||
"Trasferimenti simultanei",
|
||||
"Transferências simultâneas",
|
||||
"Równoczesne transfery",
|
||||
"并发传输数",
|
||||
"同時転送数",
|
||||
"동시 전송",
|
||||
"Eşzamanlı Aktarımlar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.concurrent_hint",
|
||||
[
|
||||
"How many uploads/downloads can run at the same time.",
|
||||
"Сколько загрузок/скачиваний может выполняться одновременно.",
|
||||
"Cuántas subidas/descargas pueden ejecutarse al mismo tiempo.",
|
||||
"Combien d'envois/téléchargements peuvent s'exécuter simultanément.",
|
||||
"Wie viele Uploads/Downloads gleichzeitig laufen können.",
|
||||
"Quanti caricamenti/download possono essere eseguiti contemporaneamente.",
|
||||
"Quantos envios/downloads podem ser executados ao mesmo tempo.",
|
||||
"Ile wysyłek/pobrań może działać jednocześnie.",
|
||||
"可同时运行的上传/下载数量。",
|
||||
"同時に実行できるアップロード/ダウンロードの数。",
|
||||
"동시에 실행할 수 있는 업로드/다운로드 수입니다.",
|
||||
"Aynı anda kaç yükleme/indirme çalışabileceği.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.auto_remove_title",
|
||||
[
|
||||
"Auto-remove completed transfers",
|
||||
"Автоудаление завершённых передач",
|
||||
"Eliminar automáticamente transferencias completadas",
|
||||
"Suppression automatique des transferts terminés",
|
||||
"Abgeschlossene Übertragungen automatisch entfernen",
|
||||
"Rimuovi automaticamente i trasferimenti completati",
|
||||
"Remover automaticamente transferências concluídas",
|
||||
"Automatyczne usuwanie ukończonych transferów",
|
||||
"自动移除已完成的传输",
|
||||
"完了した転送を自動的に削除",
|
||||
"완료된 전송 자동 제거",
|
||||
"Tamamlanan Aktarımları Otomatik Kaldır",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.auto_remove_hint",
|
||||
[
|
||||
"Clear finished transfers from the queue automatically.",
|
||||
"Автоматически очищать завершённые передачи из очереди.",
|
||||
"Elimina automáticamente las transferencias finalizadas de la cola.",
|
||||
"Efface automatiquement les transferts terminés de la file d'attente.",
|
||||
"Entfernt abgeschlossene Übertragungen automatisch aus der Warteschlange.",
|
||||
"Rimuove automaticamente i trasferimenti terminati dalla coda.",
|
||||
"Remove automaticamente as transferências concluídas da fila.",
|
||||
"Automatycznie usuwa zakończone transfery z kolejki.",
|
||||
"自动从队列中清除已完成的传输。",
|
||||
"完了した転送をキューから自動的に消去します。",
|
||||
"완료된 전송을 대기열에서 자동으로 지웁니다.",
|
||||
"Tamamlanan aktarımları kuyruktan otomatik olarak temizler.",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.never",
|
||||
[
|
||||
"Never", "Никогда", "Nunca", "Jamais", "Nie", "Mai", "Nunca", "Nigdy", "从不", "しない",
|
||||
"안 함", "Asla",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.10s",
|
||||
[
|
||||
"10s", "10с", "10s", "10s", "10 s", "10s", "10s", "10s", "10秒", "10秒", "10초", "10sn",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.30s",
|
||||
[
|
||||
"30s", "30с", "30s", "30s", "30 s", "30s", "30s", "30s", "30秒", "30秒", "30초", "30sn",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.transfers.1min",
|
||||
[
|
||||
"1 min", "1 мин", "1 min", "1 min", "1 Min", "1 min", "1 min", "1 min", "1分钟", "1分",
|
||||
"1분", "1 dk",
|
||||
],
|
||||
),
|
||||
// ── About ────────────────────────────────────────────────────────────
|
||||
(
|
||||
"settings.about.title",
|
||||
[
|
||||
"About LoFlum",
|
||||
"О LoFlum",
|
||||
"Acerca de LoFlum",
|
||||
"À propos de LoFlum",
|
||||
"Über LoFlum",
|
||||
"Informazioni su LoFlum",
|
||||
"Sobre o LoFlum",
|
||||
"O programie LoFlum",
|
||||
"关于 LoFlum",
|
||||
"LoFlum について",
|
||||
"LoFlum 정보",
|
||||
"LoFlum Hakkında",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.about.version",
|
||||
[
|
||||
"Version", "Версия", "Versión", "Version", "Version", "Versione", "Versão", "Wersja",
|
||||
"版本", "バージョン", "버전", "Sürüm",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.about.license",
|
||||
[
|
||||
"License", "Лицензия", "Licencia", "Licence", "Lizenz", "Licenza", "Licença",
|
||||
"Licencja", "许可证", "ライセンス", "라이선스", "Lisans",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.about.database",
|
||||
[
|
||||
"Database", "База данных", "Base de datos", "Base de données", "Datenbank",
|
||||
"Database", "Banco de dados", "Baza danych", "数据库", "データベース", "데이터베이스",
|
||||
"Veritabanı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"settings.about.reveal_in_finder",
|
||||
[
|
||||
"Reveal in Finder",
|
||||
"Показать в Finder",
|
||||
"Mostrar en Finder",
|
||||
"Afficher dans le Finder",
|
||||
"Im Finder anzeigen",
|
||||
"Mostra nel Finder",
|
||||
"Mostrar no Finder",
|
||||
"Pokaż w Finderze",
|
||||
"在访达中显示",
|
||||
"Finder で表示",
|
||||
"Finder에서 보기",
|
||||
"Finder'da Göster",
|
||||
],
|
||||
),
|
||||
];
|
||||
251
src/i18n/strings/toolbar.rs
Normal file
251
src/i18n/strings/toolbar.rs
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
//! Тулбар, попап History, статус-бар, панель очереди передач.
|
||||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[
|
||||
(
|
||||
"toolbar.new_connection",
|
||||
[
|
||||
"New Connection",
|
||||
"Новое подключение",
|
||||
"Nueva conexión",
|
||||
"Nouvelle connexion",
|
||||
"Neue Verbindung",
|
||||
"Nuova connessione",
|
||||
"Nova conexão",
|
||||
"Nowe połączenie",
|
||||
"新建连接",
|
||||
"新規接続",
|
||||
"새 연결",
|
||||
"Yeni Bağlantı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"toolbar.queue_label",
|
||||
[
|
||||
"Queue", "Очередь", "Cola", "File d'attente", "Warteschlange", "Coda", "Fila",
|
||||
"Kolejka", "队列", "キュー", "대기열", "Kuyruk",
|
||||
],
|
||||
),
|
||||
(
|
||||
"toolbar.upload_queued",
|
||||
[
|
||||
"Upload queued: {name}",
|
||||
"Загрузка добавлена в очередь: {name}",
|
||||
"Subida en cola: {name}",
|
||||
"Envoi mis en file d'attente : {name}",
|
||||
"Upload eingereiht: {name}",
|
||||
"Caricamento in coda: {name}",
|
||||
"Envio na fila: {name}",
|
||||
"Wysyłanie dodane do kolejki: {name}",
|
||||
"已加入上传队列:{name}",
|
||||
"アップロードをキューに追加しました: {name}",
|
||||
"업로드 대기열에 추가됨: {name}",
|
||||
"Yükleme kuyruğa eklendi: {name}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"toolbar.download_queued",
|
||||
[
|
||||
"Download queued: {name}",
|
||||
"Скачивание добавлено в очередь: {name}",
|
||||
"Descarga en cola: {name}",
|
||||
"Téléchargement mis en file d'attente : {name}",
|
||||
"Download eingereiht: {name}",
|
||||
"Download in coda: {name}",
|
||||
"Download na fila: {name}",
|
||||
"Pobieranie dodane do kolejki: {name}",
|
||||
"已加入下载队列:{name}",
|
||||
"ダウンロードをキューに追加しました: {name}",
|
||||
"다운로드 대기열에 추가됨: {name}",
|
||||
"İndirme kuyruğa eklendi: {name}",
|
||||
],
|
||||
),
|
||||
(
|
||||
"history.recent_connections",
|
||||
[
|
||||
"Recent connections",
|
||||
"Недавние подключения",
|
||||
"Conexiones recientes",
|
||||
"Connexions récentes",
|
||||
"Letzte Verbindungen",
|
||||
"Connessioni recenti",
|
||||
"Conexões recentes",
|
||||
"Ostatnie połączenia",
|
||||
"最近的连接",
|
||||
"最近の接続",
|
||||
"최근 연결",
|
||||
"Son Bağlantılar",
|
||||
],
|
||||
),
|
||||
(
|
||||
"history.no_history",
|
||||
[
|
||||
"No history yet",
|
||||
"Пока нет истории",
|
||||
"Aún no hay historial",
|
||||
"Aucun historique pour l'instant",
|
||||
"Noch kein Verlauf",
|
||||
"Nessuna cronologia",
|
||||
"Ainda não há histórico",
|
||||
"Brak historii",
|
||||
"暂无历史记录",
|
||||
"履歴はまだありません",
|
||||
"아직 기록이 없습니다",
|
||||
"Henüz geçmiş yok",
|
||||
],
|
||||
),
|
||||
(
|
||||
"status.not_connected",
|
||||
[
|
||||
"Not connected",
|
||||
"Не подключено",
|
||||
"Sin conexión",
|
||||
"Non connecté",
|
||||
"Nicht verbunden",
|
||||
"Non connesso",
|
||||
"Não conectado",
|
||||
"Brak połączenia",
|
||||
"未连接",
|
||||
"未接続",
|
||||
"연결 안 됨",
|
||||
"Bağlı değil",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.title",
|
||||
[
|
||||
"Transfer Queue ({n})",
|
||||
"Очередь передач ({n})",
|
||||
"Cola de transferencias ({n})",
|
||||
"File de transferts ({n})",
|
||||
"Übertragungswarteschlange ({n})",
|
||||
"Coda trasferimenti ({n})",
|
||||
"Fila de transferências ({n})",
|
||||
"Kolejka transferów ({n})",
|
||||
"传输队列 ({n})",
|
||||
"転送キュー ({n})",
|
||||
"전송 대기열 ({n})",
|
||||
"Aktarım Kuyruğu ({n})",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.done_suffix",
|
||||
[
|
||||
"{done}/{total} done",
|
||||
"{done}/{total} готово",
|
||||
"{done}/{total} completado",
|
||||
"{done}/{total} terminé",
|
||||
"{done}/{total} fertig",
|
||||
"{done}/{total} completato",
|
||||
"{done}/{total} concluído",
|
||||
"{done}/{total} gotowe",
|
||||
"{done}/{total} 已完成",
|
||||
"{done}/{total} 完了",
|
||||
"{done}/{total} 완료",
|
||||
"{done}/{total} tamamlandı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.failed_suffix",
|
||||
[
|
||||
"{n} failed",
|
||||
"Ошибок: {n}",
|
||||
"{n} con errores",
|
||||
"{n} échoué(s)",
|
||||
"{n} fehlgeschlagen",
|
||||
"{n} falliti",
|
||||
"{n} falharam",
|
||||
"Błędów: {n}",
|
||||
"{n} 个失败",
|
||||
"失敗 {n} 件",
|
||||
"실패 {n}개",
|
||||
"{n} başarısız",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_queued",
|
||||
[
|
||||
"Queued", "В очереди", "En cola", "En attente", "Wartend", "In coda", "Na fila",
|
||||
"W kolejce", "排队中", "待機中", "대기 중", "Sırada",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_uploading",
|
||||
[
|
||||
"Uploading",
|
||||
"Загрузка…",
|
||||
"Subiendo…",
|
||||
"Envoi…",
|
||||
"Wird hochgeladen…",
|
||||
"Caricamento…",
|
||||
"Enviando…",
|
||||
"Wysyłanie…",
|
||||
"上传中…",
|
||||
"アップロード中…",
|
||||
"업로드 중…",
|
||||
"Yükleniyor…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_downloading",
|
||||
[
|
||||
"Downloading",
|
||||
"Скачивание…",
|
||||
"Descargando…",
|
||||
"Téléchargement…",
|
||||
"Wird heruntergeladen…",
|
||||
"Download in corso…",
|
||||
"Baixando…",
|
||||
"Pobieranie…",
|
||||
"下载中…",
|
||||
"ダウンロード中…",
|
||||
"다운로드 중…",
|
||||
"İndiriliyor…",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_complete",
|
||||
[
|
||||
"Complete", "Готово", "Completado", "Terminé", "Fertig", "Completato", "Concluído",
|
||||
"Gotowe", "已完成", "完了", "완료", "Tamamlandı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_failed",
|
||||
[
|
||||
"Failed", "Ошибка", "Fallido", "Échec", "Fehlgeschlagen", "Non riuscito", "Falhou",
|
||||
"Niepowodzenie", "失败", "失敗", "실패", "Başarısız",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_paused",
|
||||
[
|
||||
"Paused", "Приостановлено", "Pausado", "En pause", "Pausiert", "In pausa", "Pausado",
|
||||
"Wstrzymane", "已暂停", "一時停止", "일시 중지", "Duraklatıldı",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_cancelled",
|
||||
[
|
||||
"Cancelled", "Отменено", "Cancelado", "Annulé", "Abgebrochen", "Annullato",
|
||||
"Cancelado", "Anulowane", "已取消", "キャンセル済み", "취소됨", "İptal edildi",
|
||||
],
|
||||
),
|
||||
(
|
||||
"queue.state_retrying",
|
||||
[
|
||||
"Retrying",
|
||||
"Повтор…",
|
||||
"Reintentando…",
|
||||
"Nouvelle tentative…",
|
||||
"Erneuter Versuch…",
|
||||
"Nuovo tentativo…",
|
||||
"Tentando novamente…",
|
||||
"Ponawianie…",
|
||||
"正在重试…",
|
||||
"再試行中…",
|
||||
"재시도 중…",
|
||||
"Yeniden deneniyor…",
|
||||
],
|
||||
),
|
||||
];
|
||||
3
src/i18n/strings/welcome.rs
Normal file
3
src/i18n/strings/welcome.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
use super::Entry;
|
||||
|
||||
pub const ENTRIES: &[Entry] = &[];
|
||||
Loading…
Add table
Add a link
Reference in a new issue