mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 02:53:43 +08:00
fix: add system language sup
This commit is contained in:
parent
ae5b2cfb79
commit
fc925ea032
12
src-tauri/Cargo.lock
generated
12
src-tauri/Cargo.lock
generated
@ -1,6 +1,6 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 4
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "addr2line"
|
name = "addr2line"
|
||||||
@ -1074,6 +1074,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_yaml",
|
"serde_yaml",
|
||||||
|
"sys-locale",
|
||||||
"sysinfo",
|
"sysinfo",
|
||||||
"sysproxy",
|
"sysproxy",
|
||||||
"tauri",
|
"tauri",
|
||||||
@ -6373,6 +6374,15 @@ dependencies = [
|
|||||||
"syn 2.0.87",
|
"syn 2.0.87",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sys-locale"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sysinfo"
|
name = "sysinfo"
|
||||||
version = "0.32.0"
|
version = "0.32.0"
|
||||||
|
@ -59,6 +59,7 @@ reqwest_dav = "0.1.14"
|
|||||||
aes-gcm = { version = "0.10.3", features = ["std"] }
|
aes-gcm = { version = "0.10.3", features = ["std"] }
|
||||||
base64 = "0.22.1"
|
base64 = "0.22.1"
|
||||||
getrandom = "0.2"
|
getrandom = "0.2"
|
||||||
|
sys-locale = "0.3.1"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
runas = "=1.2.0"
|
runas = "=1.2.0"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use crate::config::DEFAULT_PAC;
|
use crate::config::DEFAULT_PAC;
|
||||||
use crate::config::{deserialize_encrypted, serialize_encrypted};
|
use crate::config::{deserialize_encrypted, serialize_encrypted};
|
||||||
use crate::utils::{dirs, help};
|
use crate::utils::{dirs, help};
|
||||||
|
use crate::utils::i18n;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use log::LevelFilter;
|
use log::LevelFilter;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -202,6 +203,21 @@ pub struct IVergeTheme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl IVerge {
|
impl IVerge {
|
||||||
|
fn get_system_language() -> String {
|
||||||
|
let sys_lang = sys_locale::get_locale()
|
||||||
|
.unwrap_or_else(|| String::from("en"))
|
||||||
|
.to_lowercase();
|
||||||
|
|
||||||
|
let lang_code = sys_lang.split(['_', '-']).next().unwrap_or("en");
|
||||||
|
let supported_languages = i18n::get_supported_languages();
|
||||||
|
|
||||||
|
if supported_languages.contains(&lang_code.to_string()) {
|
||||||
|
lang_code.to_string()
|
||||||
|
} else {
|
||||||
|
String::from("en")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
match dirs::verge_path().and_then(|path| help::read_yaml::<IVerge>(&path)) {
|
match dirs::verge_path().and_then(|path| help::read_yaml::<IVerge>(&path)) {
|
||||||
Ok(config) => config,
|
Ok(config) => config,
|
||||||
@ -215,7 +231,7 @@ impl IVerge {
|
|||||||
pub fn template() -> Self {
|
pub fn template() -> Self {
|
||||||
Self {
|
Self {
|
||||||
clash_core: Some("verge-mihomo".into()),
|
clash_core: Some("verge-mihomo".into()),
|
||||||
language: Some("zh".into()),
|
language: Some(Self::get_system_language()),
|
||||||
theme_mode: Some("system".into()),
|
theme_mode: Some("system".into()),
|
||||||
#[cfg(not(target_os = "windows"))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
env_type: Some("bash".into()),
|
env_type: Some("bash".into()),
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
cmds,
|
cmds,
|
||||||
config::Config,
|
config::Config,
|
||||||
feat, t,
|
feat,
|
||||||
utils::{
|
utils::{
|
||||||
dirs,
|
dirs,
|
||||||
resolve::{self, VERSION},
|
resolve::{self, VERSION},
|
||||||
|
i18n::t,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use tauri::AppHandle;
|
use tauri::AppHandle;
|
||||||
use tauri::{
|
use tauri::{
|
||||||
@ -67,7 +69,6 @@ impl Tray {
|
|||||||
|
|
||||||
pub fn update_part() -> Result<()> {
|
pub fn update_part() -> Result<()> {
|
||||||
let app_handle = handle::Handle::global().app_handle().unwrap();
|
let app_handle = handle::Handle::global().app_handle().unwrap();
|
||||||
let use_zh = { Config::verge().latest().language == Some("zh".into()) };
|
|
||||||
let version = VERSION.get().unwrap();
|
let version = VERSION.get().unwrap();
|
||||||
let mode = {
|
let mode = {
|
||||||
Config::clash()
|
Config::clash()
|
||||||
@ -190,11 +191,11 @@ impl Tray {
|
|||||||
|
|
||||||
let _ = tray.set_tooltip(Some(&format!(
|
let _ = tray.set_tooltip(Some(&format!(
|
||||||
"Clash Verge {version}\n{}: {}\n{}: {}\n{}: {}",
|
"Clash Verge {version}\n{}: {}\n{}: {}\n{}: {}",
|
||||||
t!("SysProxy", "系统代理", use_zh),
|
t("SysProxy"),
|
||||||
switch_map[system_proxy],
|
switch_map[system_proxy],
|
||||||
t!("TUN", "Tun模式", use_zh),
|
t("TUN"),
|
||||||
switch_map[tun_mode],
|
switch_map[tun_mode],
|
||||||
t!("Profile", "当前订阅", use_zh),
|
t("Profile"),
|
||||||
current_profile_name
|
current_profile_name
|
||||||
)));
|
)));
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -208,129 +209,116 @@ fn create_tray_menu(
|
|||||||
tun_mode_enabled: bool,
|
tun_mode_enabled: bool,
|
||||||
) -> Result<tauri::menu::Menu<Wry>> {
|
) -> Result<tauri::menu::Menu<Wry>> {
|
||||||
let mode = mode.unwrap_or("");
|
let mode = mode.unwrap_or("");
|
||||||
let use_zh = { Config::verge().latest().language == Some("zh".into()) };
|
|
||||||
let version = VERSION.get().unwrap();
|
let version = VERSION.get().unwrap();
|
||||||
|
|
||||||
let open_window = &MenuItem::with_id(
|
let open_window = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"open_window",
|
"open_window",
|
||||||
t!("Dashboard", "打开面板", use_zh),
|
t("Dashboard"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let rule_mode = &CheckMenuItem::with_id(
|
let rule_mode = &CheckMenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"rule_mode",
|
"rule_mode",
|
||||||
t!("Rule Mode", "规则模式", use_zh),
|
t("Rule Mode"),
|
||||||
true,
|
true,
|
||||||
mode == "rule",
|
mode == "rule",
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let global_mode = &CheckMenuItem::with_id(
|
let global_mode = &CheckMenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"global_mode",
|
"global_mode",
|
||||||
t!("Global Mode", "全局模式", use_zh),
|
t("Global Mode"),
|
||||||
true,
|
true,
|
||||||
mode == "global",
|
mode == "global",
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let direct_mode = &CheckMenuItem::with_id(
|
let direct_mode = &CheckMenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"direct_mode",
|
"direct_mode",
|
||||||
t!("Direct Mode", "直连模式", use_zh),
|
t("Direct Mode"),
|
||||||
true,
|
true,
|
||||||
mode == "direct",
|
mode == "direct",
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let system_proxy = &CheckMenuItem::with_id(
|
let system_proxy = &CheckMenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"system_proxy",
|
"system_proxy",
|
||||||
t!("System Proxy", "系统代理", use_zh),
|
t("System Proxy"),
|
||||||
true,
|
true,
|
||||||
system_proxy_enabled,
|
system_proxy_enabled,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let tun_mode = &CheckMenuItem::with_id(
|
let tun_mode = &CheckMenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"tun_mode",
|
"tun_mode",
|
||||||
t!("TUN Mode", "Tun模式", use_zh),
|
t("TUN Mode"),
|
||||||
true,
|
true,
|
||||||
tun_mode_enabled,
|
tun_mode_enabled,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let copy_env = &MenuItem::with_id(
|
let copy_env = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"copy_env",
|
"copy_env",
|
||||||
t!("Copy Env", "复制环境变量", use_zh),
|
t("Copy Env"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let open_app_dir = &MenuItem::with_id(
|
let open_app_dir = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"open_app_dir",
|
"open_app_dir",
|
||||||
t!("Conf Dir", "配置目录", use_zh),
|
t("Conf Dir"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let open_core_dir = &MenuItem::with_id(
|
let open_core_dir = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"open_core_dir",
|
"open_core_dir",
|
||||||
t!("Core Dir", "内核目录", use_zh),
|
t("Core Dir"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let open_logs_dir = &MenuItem::with_id(
|
let open_logs_dir = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"open_logs_dir",
|
"open_logs_dir",
|
||||||
t!("Logs Dir", "日志目录", use_zh),
|
t("Logs Dir"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
let open_dir = &Submenu::with_id_and_items(
|
let open_dir = &Submenu::with_id_and_items(
|
||||||
app_handle,
|
app_handle,
|
||||||
"open_dir",
|
"open_dir",
|
||||||
t!("Open Dir", "打开目录", use_zh),
|
t("Open Dir"),
|
||||||
true,
|
true,
|
||||||
&[open_app_dir, open_core_dir, open_logs_dir],
|
&[open_app_dir, open_core_dir, open_logs_dir],
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let restart_clash = &MenuItem::with_id(
|
let restart_clash = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"restart_clash",
|
"restart_clash",
|
||||||
t!("Restart Clash Core", "重启Clash内核", use_zh),
|
t("Restart Clash Core"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let restart_app = &MenuItem::with_id(
|
let restart_app = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"restart_app",
|
"restart_app",
|
||||||
t!("Restart App", "重启App", use_zh),
|
t("Restart App"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let app_version = &MenuItem::with_id(
|
let app_version = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
@ -338,26 +326,23 @@ fn create_tray_menu(
|
|||||||
format!("Version {version}"),
|
format!("Version {version}"),
|
||||||
true,
|
true,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let more = &Submenu::with_id_and_items(
|
let more = &Submenu::with_id_and_items(
|
||||||
app_handle,
|
app_handle,
|
||||||
"more",
|
"more",
|
||||||
t!("More", "更多", use_zh),
|
t("More"),
|
||||||
true,
|
true,
|
||||||
&[restart_clash, restart_app, app_version],
|
&[restart_clash, restart_app, app_version],
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let quit = &MenuItem::with_id(
|
let quit = &MenuItem::with_id(
|
||||||
app_handle,
|
app_handle,
|
||||||
"quit",
|
"quit",
|
||||||
t!("Quit", "退出", use_zh),
|
t("Quit"),
|
||||||
true,
|
true,
|
||||||
Some("CmdOrControl+Q"),
|
Some("CmdOrControl+Q"),
|
||||||
)
|
).unwrap();
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let separator = &PredefinedMenuItem::separator(app_handle).unwrap();
|
let separator = &PredefinedMenuItem::separator(app_handle).unwrap();
|
||||||
|
|
||||||
|
59
src-tauri/src/utils/i18n.rs
Normal file
59
src-tauri/src/utils/i18n.rs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
use std::{fs, path::Path};
|
||||||
|
use crate::config::Config;
|
||||||
|
use sys_locale;
|
||||||
|
|
||||||
|
pub fn get_supported_languages() -> Vec<String> {
|
||||||
|
let project_dir = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap();
|
||||||
|
let i18n_path = project_dir.join("src/services/i18n.ts");
|
||||||
|
|
||||||
|
if let Ok(content) = fs::read_to_string(i18n_path) {
|
||||||
|
let mut languages = Vec::new();
|
||||||
|
for line in content.lines() {
|
||||||
|
if line.contains("resources = {") {
|
||||||
|
for line in content.lines() {
|
||||||
|
if let Some(lang) = line.trim().strip_suffix(": { translation:") {
|
||||||
|
let lang = lang.trim().trim_matches('"');
|
||||||
|
if !lang.is_empty() {
|
||||||
|
languages.push(lang.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if line.contains("};") {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !languages.is_empty() {
|
||||||
|
return languages;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vec!["en".to_string(), "ru".to_string(), "zh".to_string(), "fa".to_string()]
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn t(text: &str) -> String {
|
||||||
|
let config = Config::verge();
|
||||||
|
let verge = config.latest();
|
||||||
|
let current_lang = verge.language.as_ref().map_or_else(
|
||||||
|
|| get_system_language(),
|
||||||
|
|lang| lang.to_string()
|
||||||
|
);
|
||||||
|
|
||||||
|
text.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_system_language() -> String {
|
||||||
|
let sys_lang = sys_locale::get_locale()
|
||||||
|
.unwrap_or_else(|| String::from("en"))
|
||||||
|
.to_lowercase();
|
||||||
|
|
||||||
|
let lang_code = sys_lang.split(['_', '-']).next().unwrap_or("en");
|
||||||
|
let supported_languages = get_supported_languages();
|
||||||
|
|
||||||
|
if supported_languages.contains(&lang_code.to_string()) {
|
||||||
|
lang_code.to_string()
|
||||||
|
} else {
|
||||||
|
String::from("en")
|
||||||
|
}
|
||||||
|
}
|
@ -5,3 +5,4 @@ pub mod init;
|
|||||||
pub mod resolve;
|
pub mod resolve;
|
||||||
pub mod server;
|
pub mod server;
|
||||||
pub mod tmpl;
|
pub mod tmpl;
|
||||||
|
pub mod i18n;
|
||||||
|
@ -100,6 +100,7 @@ const SettingVerge = ({ onError }: Props) => {
|
|||||||
<MenuItem value="en">English</MenuItem>
|
<MenuItem value="en">English</MenuItem>
|
||||||
<MenuItem value="ru">Русский</MenuItem>
|
<MenuItem value="ru">Русский</MenuItem>
|
||||||
<MenuItem value="fa">فارسی</MenuItem>
|
<MenuItem value="fa">فارسی</MenuItem>
|
||||||
|
<MenuItem value="tt">Татар</MenuItem>
|
||||||
</Select>
|
</Select>
|
||||||
</GuardState>
|
</GuardState>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
|
424
src/locales/tt.json
Normal file
424
src/locales/tt.json
Normal file
@ -0,0 +1,424 @@
|
|||||||
|
{
|
||||||
|
"millis": "Миллисекундлар",
|
||||||
|
"seconds": "Секундлар",
|
||||||
|
"mins": "Минутлар",
|
||||||
|
"Back": "Кире",
|
||||||
|
"Close": "Ябу",
|
||||||
|
"Cancel": "Баш тарту",
|
||||||
|
"Confirm": "Растау",
|
||||||
|
"Maximize": "Зурайту",
|
||||||
|
"Minimize": "Кечерәйтү",
|
||||||
|
"Format document": "Документны форматлау",
|
||||||
|
"Empty": "Буш",
|
||||||
|
"New": "Яңа",
|
||||||
|
"Edit": "Үзгәртү",
|
||||||
|
"Save": "Саклау",
|
||||||
|
"Delete": "Бетерү",
|
||||||
|
"Enable": "Кушу",
|
||||||
|
"Disable": "Сүндерү",
|
||||||
|
"Label-Proxies": "Прокси",
|
||||||
|
"Label-Profiles": "Профильләр",
|
||||||
|
"Label-Connections": "Тоташулар",
|
||||||
|
"Label-Rules": "Кагыйдәләр",
|
||||||
|
"Label-Logs": "Логлар",
|
||||||
|
"Label-Test": "Тест",
|
||||||
|
"Label-Settings": "Көйләүләр",
|
||||||
|
"Proxies": "Прокси",
|
||||||
|
"Proxy Groups": "Прокси төркемнәре",
|
||||||
|
"Proxy Provider": "Прокси провайдеры",
|
||||||
|
"Update All": "Барысын да яңарту",
|
||||||
|
"Update At": "Яңартылган вакыт",
|
||||||
|
"rule": "кагыйдә",
|
||||||
|
"global": "глобаль",
|
||||||
|
"direct": "туры",
|
||||||
|
"script": "скриптлы",
|
||||||
|
"Location": "Урын",
|
||||||
|
"Delay check": "Задержканы тикшерү",
|
||||||
|
"Sort by default": "Башлангыч итеп сортлау",
|
||||||
|
"Sort by delay": "Задержка буенча сортлау",
|
||||||
|
"Sort by name": "Исем буенча сортлау",
|
||||||
|
"Delay check URL": "Задержканы тикшерү URL-ы",
|
||||||
|
"Delay check to cancel fixed": "Беркетелгәнне гамәлдән чыгару өчен задержканы тикшерү",
|
||||||
|
"Proxy basic": "Прокси турында кыскача мәгълүмат",
|
||||||
|
"Proxy detail": "Прокси турында тулы мәгълүмат",
|
||||||
|
"Profiles": "Профильләр",
|
||||||
|
"Update All Profiles": "Барлык профильләрне яңарту",
|
||||||
|
"View Runtime Config": "Кулланылган конфигурацияне карау",
|
||||||
|
"Reactivate Profiles": "Профильләрне янәдән активлаштыру",
|
||||||
|
"Paste": "Кую",
|
||||||
|
"Profile URL": "Профиль URL-ы",
|
||||||
|
"Import": "Импорт",
|
||||||
|
"From": "Каян",
|
||||||
|
"Update Time": "Яңарту вакыты",
|
||||||
|
"Used / Total": "Кулланылган / Барлыгы",
|
||||||
|
"Expire Time": "Тамамлану вакыты",
|
||||||
|
"Create Profile": "Профиль булдыру",
|
||||||
|
"Edit Profile": "Профильне үзгәртү",
|
||||||
|
"Edit Proxies": "Проксины үзгәртү",
|
||||||
|
"Use newlines for multiple uri": "Берничә URI өчен яңа юл символын кулланыгыз (Base64 кодлавы ярдәм ителә)",
|
||||||
|
"Edit Rules": "Кагыйдәләрне үзгәртү",
|
||||||
|
"Rule Type": "Кагыйдә төре",
|
||||||
|
"Rule Content": "Кагыйдә эчтәлеге",
|
||||||
|
"Proxy Policy": "Прокси сәясәте",
|
||||||
|
"No Resolve": "Резолвсыз",
|
||||||
|
"Prepend Rule": "Кагыйдәне өскә өстәү",
|
||||||
|
"Append Rule": "Кагыйдәне аска өстәү",
|
||||||
|
"Prepend Group": "Төркемне өскә өстәү",
|
||||||
|
"Append Group": "Төркемне аска өстәү",
|
||||||
|
"Prepend Proxy": "Проксины өскә өстәү",
|
||||||
|
"Append Proxy": "Проксины аска өстәү",
|
||||||
|
"Rule Condition Required": "Кагыйдә шарты кирәк",
|
||||||
|
"Invalid Rule": "Яраксыз кагыйдә",
|
||||||
|
"Advanced": "Өстәмә",
|
||||||
|
"Visualization": "Визуализация",
|
||||||
|
"DOMAIN": "Домен исеменең тулы туры килүе",
|
||||||
|
"DOMAIN-SUFFIX": "Домен суффиксына туры килү",
|
||||||
|
"DOMAIN-KEYWORD": "Доменда төп сүзгә туры килү",
|
||||||
|
"DOMAIN-REGEX": "Доменны регекс аша туры китерү",
|
||||||
|
"GEOSITE": "Geosite исемлегендәге доменга туры килү",
|
||||||
|
"GEOIP": "IP-адресның ил коды буенча туры килү",
|
||||||
|
"SRC-GEOIP": "Чыганак IP-адресның ил коды буенча туры килү",
|
||||||
|
"IP-ASN": "IP-адрес ASN'ы буенча туры килү",
|
||||||
|
"SRC-IP-ASN": "Чыганак IP-адрес ASN'ы буенча туры килү",
|
||||||
|
"IP-CIDR": "IP-адреслар диапазонына туры килү",
|
||||||
|
"IP-CIDR6": "IPv6 адреслар диапазонына туры килү",
|
||||||
|
"SRC-IP-CIDR": "Чыганак IP-адреслар диапазонына туры килү",
|
||||||
|
"IP-SUFFIX": "IP-адрес суффиксына туры килү",
|
||||||
|
"SRC-IP-SUFFIX": "Чыганак IP-адрес суффиксына туры килү",
|
||||||
|
"SRC-PORT": "Чыганак портлар диапазонына туры килү",
|
||||||
|
"DST-PORT": "Максат портлар диапазонына туры килү",
|
||||||
|
"IN-PORT": "Керүче портка туры килү",
|
||||||
|
"DSCP": "DSCP тамгалавы (tproxy UDP өчен)",
|
||||||
|
"PROCESS-NAME": "Процесс исеменә туры килү (Android пакет исеме)",
|
||||||
|
"PROCESS-PATH": "Процесс юлына туры килү",
|
||||||
|
"PROCESS-NAME-REGEX": "Процесс исемен регекс белән туры китерү (Android пакет исеме)",
|
||||||
|
"PROCESS-PATH-REGEX": "Процесс юлын регекс белән туры китерү",
|
||||||
|
"NETWORK": "Транспорт протоколына (tcp/udp) туры килү",
|
||||||
|
"UID": "Linux USER ID'га туры килү",
|
||||||
|
"IN-TYPE": "Керүче тоташу төренә туры килү",
|
||||||
|
"IN-USER": "Керүче тоташу кулланучысына туры килү",
|
||||||
|
"IN-NAME": "Керүче тоташу исеменә туры килү",
|
||||||
|
"SUB-RULE": "Кушымча кагыйдә",
|
||||||
|
"RULE-SET": "Кагыйдәләр тупланмасына туры килү",
|
||||||
|
"AND": "Логик ҺӘМ",
|
||||||
|
"OR": "Логик ЯКИ",
|
||||||
|
"NOT": "Логик ТҮГЕЛ",
|
||||||
|
"MATCH": "Барлык сорауларга туры килә",
|
||||||
|
"DIRECT": "Туры чыгу",
|
||||||
|
"REJECT": "Сорауларны тоткарлау",
|
||||||
|
"REJECT-DROP": "Сорауларны кире кагу",
|
||||||
|
"PASS": "Туры килсә дә, бу кагыйдәне урап узу",
|
||||||
|
"Edit Groups": "Прокси төркемнәрен үзгәртү",
|
||||||
|
"Group Type": "Төркем төре",
|
||||||
|
"select": "Проксины кулдан сайлау",
|
||||||
|
"url-test": "URL-тест задержкасына карап прокси сайлау",
|
||||||
|
"fallback": "Хата булган очракта башка проксига күчү",
|
||||||
|
"load-balance": "Трафикны баланслау нигезендә прокси тарату",
|
||||||
|
"relay": "Билгеле прокси чылбыры аша тапшыру",
|
||||||
|
"Group Name": "Төркем исеме",
|
||||||
|
"Use Proxies": "Прокси куллану",
|
||||||
|
"Use Provider": "Провайдер куллану",
|
||||||
|
"Health Check Url": "Сәламәтлекне тикшерү URL-ы",
|
||||||
|
"Expected Status": "Көтелгән статус коды",
|
||||||
|
"Interval": "Интервал",
|
||||||
|
"Lazy": "Сак режим (lazy)",
|
||||||
|
"Timeout": "Таймаут",
|
||||||
|
"Max Failed Times": "Иң күп хаталы тикшерү саны",
|
||||||
|
"Interface Name": "Интерфейс исеме",
|
||||||
|
"Routing Mark": "Маршрут билгесе",
|
||||||
|
"Include All": "Барлык прокси һәм провайдерларны кертү",
|
||||||
|
"Include All Providers": "Барлык провайдерларны кертү",
|
||||||
|
"Include All Proxies": "Барлык проксины кертү",
|
||||||
|
"Exclude Filter": "Фильтр аша чыгару",
|
||||||
|
"Exclude Type": "Чыгару төре",
|
||||||
|
"Disable UDP": "UDP'ны сүндерү",
|
||||||
|
"Hidden": "Яшерен",
|
||||||
|
"Group Name Required": "Төркем исеме кирәк",
|
||||||
|
"Group Name Already Exists": "Әлеге төркем исеме бар инде",
|
||||||
|
"Extend Config": "Merge-ны үзгәртергә",
|
||||||
|
"Extend Script": "Script-ны үзгәртергә",
|
||||||
|
"Global Merge": "Гомумкеңәйтелгән көйләүләр",
|
||||||
|
"Global Script": "Гомумкеңәйтелгән скрипт",
|
||||||
|
"Type": "Төр",
|
||||||
|
"Name": "Исем",
|
||||||
|
"Descriptions": "Тасвирламалар",
|
||||||
|
"Subscription URL": "Подписка URL-ы",
|
||||||
|
"Update Interval": "Яңарту интервалы",
|
||||||
|
"Choose File": "Файл сайлау",
|
||||||
|
"Use System Proxy": "Системалы проксины кулланып яңарту",
|
||||||
|
"Use Clash Proxy": "Clash прокси кулланып яңарту",
|
||||||
|
"Accept Invalid Certs (Danger)": "Дөрес булмаган сертификатларны кабул итү (Куркыныч)",
|
||||||
|
"Refresh": "Яңарту",
|
||||||
|
"Home": "Баш бит",
|
||||||
|
"Select": "Сайлау",
|
||||||
|
"Edit Info": "Мәгълүматны үзгәртү",
|
||||||
|
"Edit File": "Файлны үзгәртү",
|
||||||
|
"Open File": "Файлны ачу",
|
||||||
|
"Update": "Яңарту",
|
||||||
|
"Update(Proxy)": "Яңарту (прокси аша)",
|
||||||
|
"Confirm deletion": "Бетерүне раслагыз",
|
||||||
|
"This operation is not reversible": "Бу гамәлне кире кайтарып булмый",
|
||||||
|
"Script Console": "Скрипт консоле",
|
||||||
|
"To Top": "Өскә",
|
||||||
|
"To End": "Аска",
|
||||||
|
"Connections": "Тоташулар",
|
||||||
|
"Table View": "Таблица күзаллау",
|
||||||
|
"List View": "Исемлек күзаллау",
|
||||||
|
"Close All": "Барысын да ябу",
|
||||||
|
"Default": "Башлангыч",
|
||||||
|
"Download Speed": "Йөкләү тизлеге",
|
||||||
|
"Upload Speed": "Йөкләү (чыгару) тизлеге",
|
||||||
|
"Host": "Хост",
|
||||||
|
"Downloaded": "Йөкләнгән",
|
||||||
|
"Uploaded": "Чыгарылган",
|
||||||
|
"DL Speed": "Йөкләү тизл.",
|
||||||
|
"UL Speed": "Чыгару тизл.",
|
||||||
|
"Chains": "Чылбырлар",
|
||||||
|
"Rule": "Кагыйдә",
|
||||||
|
"Process": "Процесс",
|
||||||
|
"Time": "Тоташу вакыты",
|
||||||
|
"Source": "Чыганак адресы",
|
||||||
|
"Destination IP": "Максат IP-адресы",
|
||||||
|
"Close Connection": "Тоташуны ябу",
|
||||||
|
"Rules": "Кагыйдәләр",
|
||||||
|
"Rule Provider": "Кагыйдә провайдеры",
|
||||||
|
"Logs": "Логлар",
|
||||||
|
"Pause": "Туктау",
|
||||||
|
"Clear": "Чистарту",
|
||||||
|
"Test": "Тест",
|
||||||
|
"Test All": "Барчасын тестлау",
|
||||||
|
"Create Test": "Тест булдыру",
|
||||||
|
"Edit Test": "Тестны үзгәртү",
|
||||||
|
"Icon": "Иконка",
|
||||||
|
"Test URL": "Тест URL-ы",
|
||||||
|
"Settings": "Көйләүләр",
|
||||||
|
"System Setting": "Система көйләүләре",
|
||||||
|
"Tun Mode": "Tun режимы (виртуаль челтәр адаптеры)",
|
||||||
|
"Reset to Default": "Башлангычка кайтару",
|
||||||
|
"Tun Mode Info": "Tun режимы бөтен системаның трафигын тотып ала. Аны кабызган очракта системалы проксины аерым кабызу таләп ителми.",
|
||||||
|
"Stack": "Стек",
|
||||||
|
"System and Mixed Can Only be Used in Service Mode": "Система яки кушылган режимнар бары тик сервис режимында гына активлаштырыла ала",
|
||||||
|
"Device": "Җайланма исеме",
|
||||||
|
"Auto Route": "Авто-маршрутлау",
|
||||||
|
"Strict Route": "Катгый маршрутлау",
|
||||||
|
"Auto Detect Interface": "Интерфейсны автоматик ачыклау",
|
||||||
|
"DNS Hijack": "DNS'ны үзгәртеп тоту (hijack)",
|
||||||
|
"MTU": "MTU (макс. тапшыру берәмлеге)",
|
||||||
|
"Service Mode": "Сервис режимы",
|
||||||
|
"Service Mode Info": "Tun режимын кабызганчы сервис режимын урнаштыру сорала. Сервис буларак эшләтелгән Clash ядросына виртуаль челтәр адаптеры (TUN) куллану рөхсәт ителә.",
|
||||||
|
"Current State": "Агымдагы торыш",
|
||||||
|
"pending": "Көтә",
|
||||||
|
"installed": "Урнаштырылган",
|
||||||
|
"uninstall": "Урнаштырылмаган",
|
||||||
|
"active": "Актив",
|
||||||
|
"unknown": "Билгесез",
|
||||||
|
"Information: Please make sure that the Clash Verge Service is installed and enabled": "Игътибар: Clash Verge сервисы урнаштырылган һәм активлаштырылган булырга тиеш",
|
||||||
|
"Install": "Урнаштыру",
|
||||||
|
"Uninstall": "Салдыру",
|
||||||
|
"Disable Service Mode": "Сервис режимын сүндерү",
|
||||||
|
"System Proxy": "Системалы прокси",
|
||||||
|
"System Proxy Info": "Системалы прокси көйләүләрен үзгәртү рөхсәтен бирегез. Әгәр рөхсәт алу мөмкин түгел икән, прокси көйләүләрен кулдан үзгәртегез",
|
||||||
|
"System Proxy Setting": "Системалы прокси көйләүләре",
|
||||||
|
"Current System Proxy": "Агымдагы системалы прокси",
|
||||||
|
"Enable status": "Активлаштыру статусы",
|
||||||
|
"Enabled": "Кушылган",
|
||||||
|
"Disabled": "Сүнгән",
|
||||||
|
"Server Addr": "Сервер адресы",
|
||||||
|
"Not available": "Мөмкин түгел",
|
||||||
|
"Proxy Guard": "Прокси саклаучы",
|
||||||
|
"Proxy Guard Info": "Системалы прокси көйләүләрен чит программа үзгәртмәсен өчен шушы функцияне кабызыгыз",
|
||||||
|
"Guard Duration": "Саклау вакыты",
|
||||||
|
"Always use Default Bypass": "Һәрвакыт төп Bypass-ны куллану",
|
||||||
|
"Proxy Bypass": "Проксины әйләнеп узу:",
|
||||||
|
"Bypass": "Әйләнеп узу:",
|
||||||
|
"Use PAC Mode": "PAC режимын куллану",
|
||||||
|
"PAC Script Content": "PAC скрипты эчтәлеге",
|
||||||
|
"PAC URL": "PAC адресы",
|
||||||
|
"Auto Launch": "Автостарт",
|
||||||
|
"Silent Start": "Фон режимында башлау",
|
||||||
|
"Silent Start Info": "Программаны фоновый режимда, тәрәзәсез эшләтеп җибәрү",
|
||||||
|
"TG Channel": "Telegram каналы",
|
||||||
|
"Manual": "Документация",
|
||||||
|
"Github Repo": "GitHub репозиториясе",
|
||||||
|
"Clash Setting": "Clash көйләүләре",
|
||||||
|
"Allow Lan": "Локаль челтәргә рөхсәт",
|
||||||
|
"Network Interface": "Челтәр интерфейсы",
|
||||||
|
"Ip Address": "IP адресы",
|
||||||
|
"Mac Address": "MAC адресы",
|
||||||
|
"IPv6": "IPv6",
|
||||||
|
"Unified Delay": "Бердәм задержка",
|
||||||
|
"Unified Delay Info": "Бердәм задержка актив булганда, төрле типтагы узеллар өчен икеләтә тест башкарыла, TCP установканы раслау аермаларын тигезләү максатында",
|
||||||
|
"Log Level": "Лог дәрәҗәсе",
|
||||||
|
"Log Level Info": "Бу фәкать сервис режимында эшләгән вакытта системалы журнал файлларына кагыла",
|
||||||
|
"Port Config": "Порт көйләүләре",
|
||||||
|
"Random Port": "Очраклы порт",
|
||||||
|
"Mixed Port": "Катнаш прокси порты",
|
||||||
|
"Socks Port": "Socks прокси порты",
|
||||||
|
"Http Port": "HTTP(s) прокси порты",
|
||||||
|
"Redir Port": "Redir — үтә күренмәле прокси порты",
|
||||||
|
"Tproxy Port": "Tproxy — үтә күренмәле прокси порты",
|
||||||
|
"External": "Тышкы",
|
||||||
|
"External Controller": "Тышкы контроллер адресы",
|
||||||
|
"Core Secret": "Серсүз",
|
||||||
|
"Recommended": "Тавсия ителә",
|
||||||
|
"Open URL": "URL ачарга",
|
||||||
|
"Replace host, port, secret with %host, %port, %secret": "Хост, порт, серсүзне %host, %port, %secret белән алмаштырыгыз",
|
||||||
|
"Support %host, %port, %secret": "%host, %port, %secret макросларын хуплау",
|
||||||
|
"Clash Core": "Clash ядросы",
|
||||||
|
"Upgrade": "Яңарту",
|
||||||
|
"Restart": "Перезапуск",
|
||||||
|
"Release Version": "Рәсми версия",
|
||||||
|
"Alpha Version": "Альфа-версия",
|
||||||
|
"Please Enable Service Mode": "Башта сервис режимын кабызырга кирәк",
|
||||||
|
"Please enter your root password": "root паролен языгыз",
|
||||||
|
"Grant": "Рөхсәт бирү",
|
||||||
|
"Open UWP tool": "UWP инструментын ачу",
|
||||||
|
"Open UWP tool Info": "Windows 8'дән башлап UWP кушымталары (Microsoft Store кебек) локаль хосттагы челтәр хезмәтләренә турыдан-туры тоташа алмый. Бу инструмент әлеге чикләүне әйләнеп узарга ярдәм итә",
|
||||||
|
"Update GeoData": "GeoData яңарту",
|
||||||
|
"Verge Setting": "Verge көйләүләре",
|
||||||
|
"Language": "Тел",
|
||||||
|
"Theme Mode": "Теманың режимы",
|
||||||
|
"theme.light": "Якты",
|
||||||
|
"theme.dark": "Караңгы",
|
||||||
|
"theme.system": "Система",
|
||||||
|
"Tray Click Event": "Трейдагы басу вакыйгасы",
|
||||||
|
"Show Main Window": "Төп тәрәзәне күрсәтү",
|
||||||
|
"Copy Env Type": "Env төрен күчереп алу",
|
||||||
|
"Copy Success": "Күчерелде",
|
||||||
|
"Start Page": "Баш бит",
|
||||||
|
"Startup Script": "Башлану скрипты",
|
||||||
|
"Browse": "Карау",
|
||||||
|
"Theme Setting": "Тема көйләүләре",
|
||||||
|
"Primary Color": "Төп төс",
|
||||||
|
"Secondary Color": "Икенче төс",
|
||||||
|
"Primary Text Color": "Төп текст төсе",
|
||||||
|
"Secondary Text Color": "Икенче текст төсе",
|
||||||
|
"Info Color": "Мәгълүмат төсе",
|
||||||
|
"Warning Color": "Кисәтү төсе",
|
||||||
|
"Error Color": "Хата төсе",
|
||||||
|
"Success Color": "Уңыш төсе",
|
||||||
|
"Font Family": "Шрифтлар гаиләсе",
|
||||||
|
"CSS Injection": "CSS кертү",
|
||||||
|
"Layout Setting": "Расположение көйләүләре",
|
||||||
|
"Traffic Graph": "Трафик графигы",
|
||||||
|
"Memory Usage": "Хәтер куллану",
|
||||||
|
"Memory Cleanup": "Хәтерне чистарту өчен басыгыз",
|
||||||
|
"Proxy Group Icon": "Прокси төркеме иконкасы",
|
||||||
|
"Nav Icon": "Навигация иконкасы",
|
||||||
|
"Monochrome": "Монохром",
|
||||||
|
"Colorful": "Төсле",
|
||||||
|
"Tray Icon": "Трей иконкасы",
|
||||||
|
"Common Tray Icon": "Гомуми трей иконкасы",
|
||||||
|
"System Proxy Tray Icon": "Системалы прокси иконкасы",
|
||||||
|
"Tun Tray Icon": "Tun (виртуаль адаптер) иконкасы",
|
||||||
|
"Miscellaneous": "Өстәмә көйләүләр",
|
||||||
|
"App Log Level": "Кушымта журналы дәрәҗәсе",
|
||||||
|
"Auto Close Connections": "Тоташуларны автоматик ябу",
|
||||||
|
"Auto Close Connections Info": "Прокси төркеме яисә режимын үзгәрткәндә актив тоташуларны өзү",
|
||||||
|
"Auto Check Update": "Яңартуларны автоматик тикшерү",
|
||||||
|
"Enable Builtin Enhanced": "Эчке камилләштерүне кабызу",
|
||||||
|
"Enable Builtin Enhanced Info": "Конфигурация файлы белән туры килә торган өстәмә оптимизация",
|
||||||
|
"Proxy Layout Columns": "Прокси күрсәтү баганалары саны",
|
||||||
|
"Auto Columns": "Авто баганалар",
|
||||||
|
"Auto Log Clean": "Логларны автоматик чистарту",
|
||||||
|
"Never Clean": "Беркайчан чистартмаска",
|
||||||
|
"Retain _n Days": "{{n}} көн саклау",
|
||||||
|
"Default Latency Test": "Тоткарлануны тикшерү сылтамасы (defaults)",
|
||||||
|
"Default Latency Test Info": "Бу фәкать клиентның HTTP сораулары тесты өчен кулланыла, конфигурация файлына йогынты ясамый",
|
||||||
|
"Default Latency Timeout": "Тоткарлануның стандарт таймауты",
|
||||||
|
"Hotkey Setting": "Клавиатура төймәләре (hotkey) көйләүләре",
|
||||||
|
"open_or_close_dashboard": "Панельне ачу/ябу",
|
||||||
|
"clash_mode_rule": "Кагыйдәләр режимы",
|
||||||
|
"clash_mode_global": "Глобаль режим",
|
||||||
|
"clash_mode_direct": "Туры режим",
|
||||||
|
"toggle_system_proxy": "Системалы проксины кабызу/сүндерү",
|
||||||
|
"toggle_tun_mode": "Tun режимын кабызу/сүндерү",
|
||||||
|
"Backup Setting": "Резерв копия көйләүләре",
|
||||||
|
"Backup Setting Info": "WebDAV аша конфигурация файлын саклауны хуплый",
|
||||||
|
"Runtime Config": "Агымдагы конфигурация",
|
||||||
|
"Open Conf Dir": "Кушымта папкасын ачу",
|
||||||
|
"Open Conf Dir Info": "Әгәр программада хаталар чыкса, бу папкадагы файлларны саклап калыгыз да, аннары барысын да бетереп, программаны яңадан башлагыз",
|
||||||
|
"Open Core Dir": "Ядро сакланган папканы ачу",
|
||||||
|
"Open Logs Dir": "Логлар папкасын ачу",
|
||||||
|
"Check for Updates": "Яңартуларны тикшерү",
|
||||||
|
"Go to Release Page": "Релизлар битенә күчү",
|
||||||
|
"Portable Updater Error": "Портатив версиядә кушымта эчендә яңарту хупланмый, кулдан төшереп алыгыз",
|
||||||
|
"Break Change Update Error": "Бу зур яңарту, ул кушымта эчендә яңартылмый. Борып алып ташлап, яңадан урнаштыру сорала.",
|
||||||
|
"Open Dev Tools": "Разработчик коралларын ачу",
|
||||||
|
"Exit": "Чыгу",
|
||||||
|
"Verge Version": "Verge версиясе",
|
||||||
|
"ReadOnly": "Уку режимы гына",
|
||||||
|
"ReadOnlyMessage": "Уку режимында үзгәртү мөмкин түгел",
|
||||||
|
"Filter": "Фильтр",
|
||||||
|
"Filter conditions": "Фильтр шартлары",
|
||||||
|
"Match Case": "Регистрны исәпкә алу",
|
||||||
|
"Match Whole Word": "Сүзнең тулы туры килүе",
|
||||||
|
"Use Regular Expression": "Регуляр выражениеләр куллану",
|
||||||
|
"Profile Imported Successfully": "Профиль уңышлы импортланды",
|
||||||
|
"Profile Switched": "Профиль алмаштырылды",
|
||||||
|
"Profile Reactivated": "Профиль яңадан активлаштырылды",
|
||||||
|
"Only YAML Files Supported": "Фәкать YAML-файллар гына хуплана",
|
||||||
|
"Settings Applied": "Көйләүләр кулланылды",
|
||||||
|
"Service Installed Successfully": "Сервис уңышлы урнаштырылды",
|
||||||
|
"Service Uninstalled Successfully": "Сервис уңышлы салдырылды",
|
||||||
|
"Proxy Daemon Duration Cannot be Less than 1 Second": "Прокси-демон эш вакыты 1 секундтан ким була алмый",
|
||||||
|
"Invalid Bypass Format": "Дөрес булмаган Bypass форматы",
|
||||||
|
"Clash Port Modified": "Clash порты үзгәртелде",
|
||||||
|
"Port Conflict": "Порт конфликтлары",
|
||||||
|
"Restart Application to Apply Modifications": "Үзгәрешләрне куллану өчен кушымтаны яңадан ачарга кирәк",
|
||||||
|
"External Controller Address Modified": "Тышкы контроллер адресы үзгәртелде",
|
||||||
|
"Permissions Granted Successfully for _clash Core": "{{core}} ядросы өчен рөхсәтләр бирелде",
|
||||||
|
"Core Version Updated": "Ядро версиясе яңартылды",
|
||||||
|
"Clash Core Restarted": "Clash ядросы яңадан башланды",
|
||||||
|
"Switched to _clash Core": "{{core}} ядросына күчү башкарылды",
|
||||||
|
"GeoData Updated": "GeoData яңартылды",
|
||||||
|
"Currently on the Latest Version": "Сездә иң соңгы версия урнаштырылган",
|
||||||
|
"Import subscription successful": "Подписка уңышлы импортланды",
|
||||||
|
"WebDAV Server URL": "WebDAV сервер URL-ы (http(s)://)",
|
||||||
|
"Username": "Кулланучы исеме",
|
||||||
|
"Password": "Пароль",
|
||||||
|
"Backup": "Резерв копия",
|
||||||
|
"Filename": "Файл исеме",
|
||||||
|
"Actions": "Гамәлләр",
|
||||||
|
"Restore": "Кайтару",
|
||||||
|
"No Backups": "Резерв копияләр юк",
|
||||||
|
"WebDAV URL Required": "WebDAV адресы буш булырга тиеш түгел",
|
||||||
|
"Invalid WebDAV URL": "WebDAV адресы дөрес түгел",
|
||||||
|
"Username Required": "Кулланучы исеме буш булмаска тиеш",
|
||||||
|
"Password Required": "Пароль буш булмаска тиеш",
|
||||||
|
"Failed to Fetch Backups": "Резерв копия файлларын алуда хата",
|
||||||
|
"WebDAV Config Saved": "WebDAV көйләүләре сакланды",
|
||||||
|
"WebDAV Config Save Failed": "WebDAV көйләүләрен саклап булмады: {{error}}",
|
||||||
|
"Backup Created": "Резерв копия уңышлы ясалды",
|
||||||
|
"Backup Failed": "Резерв копия хата белән төгәлләнде: {{error}}",
|
||||||
|
"Delete Backup": "Резерв копияне бетерү",
|
||||||
|
"Restore Backup": "Резерв копияне кайтару",
|
||||||
|
"Backup Time": "Резерв копия вакыты",
|
||||||
|
"Confirm to delete this backup file?": "Бу резерв копия файлын бетерергә телисезме?",
|
||||||
|
"Confirm to restore this backup file?": "Бу резерв копия файлын кире кайтарырга телисезме?",
|
||||||
|
"Restore Success, App will restart in 1s": "Уңышлы кайтарылды, кушымта 1 секундтан яңадан башланачак",
|
||||||
|
"Failed to fetch backup files": "Резерв копия файлларын алуда хата",
|
||||||
|
"Profile": "Профиль",
|
||||||
|
"Help": "Ярдәм",
|
||||||
|
"About": "Турында",
|
||||||
|
"Theme": "Тема",
|
||||||
|
"Main Window": "Төп тәрәзә",
|
||||||
|
"Traffic Graph": "Трафик графигы",
|
||||||
|
"Memory Usage": "Хәтер куллану",
|
||||||
|
"Group Icon": "Төркем иконкасы",
|
||||||
|
"Menu Icon": "Меню иконкасы",
|
||||||
|
"Tray Icon": "Трей иконкасы",
|
||||||
|
"PAC File": "PAC файлы",
|
||||||
|
"Web UI": "Веб-интерфейс",
|
||||||
|
"Hotkeys": "Кызу төймәләр",
|
||||||
|
"Verge Mixed Port": "Verge катнаш порты",
|
||||||
|
"Verge Socks Port": "Verge Socks порты",
|
||||||
|
"Verge Redir Port": "Verge кире юнәлтү порты",
|
||||||
|
"Verge Tproxy Port": "Verge Tproxy порты",
|
||||||
|
"Verge Port": "Verge порты",
|
||||||
|
"Verge HTTP Enabled": "Verge HTTP кушылган",
|
||||||
|
"WebDAV URL": "WebDAV URL",
|
||||||
|
"WebDAV Username": "WebDAV кулланучы исеме",
|
||||||
|
"WebDAV Password": "WebDAV серсүзе",
|
||||||
|
"Dashboard": "Панель"
|
||||||
|
}
|
@ -4,12 +4,14 @@ import en from "@/locales/en.json";
|
|||||||
import ru from "@/locales/ru.json";
|
import ru from "@/locales/ru.json";
|
||||||
import zh from "@/locales/zh.json";
|
import zh from "@/locales/zh.json";
|
||||||
import fa from "@/locales/fa.json";
|
import fa from "@/locales/fa.json";
|
||||||
|
import tt from "@/locales/tt.json";
|
||||||
|
|
||||||
const resources = {
|
const resources = {
|
||||||
en: { translation: en },
|
en: { translation: en },
|
||||||
ru: { translation: ru },
|
ru: { translation: ru },
|
||||||
zh: { translation: zh },
|
zh: { translation: zh },
|
||||||
fa: { translation: fa },
|
fa: { translation: fa },
|
||||||
|
tt: { translation: tt },
|
||||||
};
|
};
|
||||||
|
|
||||||
i18n.use(initReactI18next).init({
|
i18n.use(initReactI18next).init({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user