feat: add ru locale (#280)

* feat: add ru locale

* feat: add russian lang to readme
This commit is contained in:
Alexander Chepurnoy
2024-08-31 18:29:01 +07:00
committed by GitHub
parent 6f0df2d555
commit bdad92fe01
4 changed files with 418 additions and 3 deletions
+1
View File
@@ -161,6 +161,7 @@ To run backend (from root folder of repository):
- Vietnamese
- Chinese (Simplified)
- Chinese (Traditional)
- Russian
## Features
+4 -1
View File
@@ -4,6 +4,7 @@ import fa from './fa'
import vi from './vi'
import zhcn from './zhcn'
import zhtw from './zhtw'
import ru from './ru'
export const i18n = createI18n({
legacy: false,
@@ -14,7 +15,8 @@ export const i18n = createI18n({
fa: fa,
vi: vi,
zhHans: zhcn,
zhHant: zhtw
zhHant: zhtw,
ru: ru
},
})
@@ -24,4 +26,5 @@ export const languages = [
{ title: 'Tiếng Việt', value: 'vi' },
{ title: '简体中文', value: 'zhHans' },
{ title: '繁體中文', value: 'zhHant' },
{ title: 'Русский', value: 'ru' },
]
+411
View File
@@ -0,0 +1,411 @@
export default {
message: "Добро пожаловать",
success: "успех",
failed: "ошибка",
enable: "Включить",
disable: "Отключить",
none: "Никакие",
all: "Все",
filter: "Фильтр",
loading: "Загрузка...",
confirm: "Вы уверены?",
yes: "да",
no: "нет",
unlimited: "бесконечный",
remained: "Осталось",
type: "Тип",
protocol: "Протокол",
submit: "Отправить",
reset: "Сбросить",
now: "Сейчас",
network: "Сеть",
copyToClipboard: "Копировать в буфер обмена",
noData: "Нет данных!",
invalidLogin: "Неверный логин!",
online: "В сети",
version: "Версия",
email: "Электронная почта",
commaSeparated: "(разделено запятыми)",
count: "Количество",
template: "Шаблон",
error: {
dplData: "Дублирующие данные",
core: "Ошибка Sing-Box",
},
pages: {
login: "Вход",
home: "Главная",
inbounds: "Входящие",
outbounds: "Исходящие",
clients: "Клиенты",
rules: "Правила",
tls: "Настройки TLS",
basics: "Основы",
admins: "Администраторы",
settings: "Настройки",
},
main: {
tiles: "Плитки",
gauges: "Датчики",
charts: "Графики",
infos: "Информация",
gauge: {
cpu: "Загрузка ЦП",
mem: "Загрузка ОЗУ",
},
chart: {
cpu: "Мониторинг ЦП",
mem: "Мониторинг ОЗУ",
net: "Сетевой трафик",
pnet: "Сетевые пакеты",
},
info: {
sys: "Информация о системе",
sbd: "Информация о Sing-Box",
host: "Хост",
cpu: "ЦП",
core: "Ядро",
uptime: "Время работы",
threads: "Потоки",
memory: "Память",
running: "Работает"
}
},
objects: {
inbound: "Входящий",
client: "Клиент",
outbound: "Исходящий",
rule: "Правило",
user: "Пользователь",
tag: "Тег",
listen: "Прослушивание",
dial: "Звонок",
tls: "TLS",
multiplex: "Мультиплекс",
transport: "Транспорт",
method: "Метод",
headers: "Заголовки",
key: "Ключ",
value: "Значение",
},
actions: {
action: "Действие",
add: "Добавить",
new: "Новый",
edit: "Редактировать",
del: "Удалить",
clone: "Клонировать",
save: "Сохранить",
update: "Обновить",
submit: "Отправить",
set: "Установить",
generate: "Генерировать",
disable: "Отключить",
close: "Закрыть",
restartApp: "Перезапустить приложение",
},
login: {
title: "Вход",
username: "Имя пользователя",
unRules: "Имя пользователя не может быть пустым",
password: "Пароль",
pwRules: "Пароль не может быть пустым",
},
menu: {
logout: "Выйти",
},
admin: {
changeCred: "Изменить учетные данные",
oldPass: "Текущий пароль",
newUname: "Новое имя пользователя",
newPass: "Новый пароль",
lastLogin: "Последний вход",
date: "Дата",
time: "Время",
changes: "Изменения",
actor: "Исполнитель",
key: "Ключ",
action: "Действие",
},
setting: {
interface: "Интерфейс",
sub: "Подписка",
addr: "Адрес",
port: "Порт",
webPath: "Базовый URI",
domain: "Домен",
sslKey: "Путь к SSL ключу",
sslCert: "Путь к SSL сертификату",
webUri: "URI панели",
sessionAge: "Максимальная длительность сессии",
trafficAge: "Максимальная длительность трафика",
timeLoc: "Часовой пояс",
subEncode: "Включить кодирование",
subInfo: "Включить информацию о клиенте",
path: "Путь по умолчанию",
update: "Время автоматического обновления",
subUri: "URI подписки",
jsonSub: "JSON подписка",
toDirect: "Маршрутизация на Direct",
toBlock: "Маршрутизация на Block",
timestamp: "Метка времени",
globalDns: "Глобальный DNS",
directDns: "Прямой DNS",
toDirectDns: "Маршрутизация на Direct DNS",
jsonSubOptions: "Другие параметры",
},
client: {
name: "Имя",
desc: "Описание",
group: "Группа",
inboundTags: "Теги входящих",
basics: "Основы",
config: "Конфигурация",
links: "Ссылки",
external: "Внешняя ссылка",
sub: "Внешняя подписка",
},
types: {
un: "Имя пользователя",
pw: "Пароль",
direct: {
overrideAddr: "Переопределить адрес",
overridePort: "Переопределить порт",
},
hy: {
obfs: "Обфусцированный пароль",
auth: "Пароль аутентификации",
hyOptions: "Параметры Hysteria",
hy2Options: "Параметры Hysteria2",
ignoreBw: "Игнорировать пропускную способность клиента",
},
shdwTls: {
hs: "Сервер рукопожатий",
addHS: "Добавить сервер рукопожатий",
},
ssh: {
passphrase: "Парольная фраза",
hostKey: "Ключи хоста",
algorithm: "Алгоритмы ключей",
clientVer: "Версия клиента",
options: "Параметры SSH",
},
tor: {
execPath: "Путь к исполняемому файлу",
dataDir: "Каталог данных",
extArgs: "Дополнительные аргументы",
},
tuic: {
congControl: "Контроль перегрузок",
authTimeout: "Таймаут аутентификации",
hb: "Сердцебиение",
},
vless: {
flow: "Поток",
udpEnc: "Кодирование UDP пакетов",
},
vmess: {
security: "Безопасность",
globalPadding: "Глобальная подкладка",
authLen: "Длина шифрования",
},
wg: {
privKey: "Приватный ключ",
pubKey: "Публичный ключ пира",
psk: "Предварительно разделенный ключ",
localIp: "Локальные IP",
worker: "Работники",
ifName: "Имя интерфейса",
sysIf: "Системный интерфейс",
gso: "Отключение сегментации",
options: "Параметры Wireguard",
multiPeer: "Множественный пир",
allowedIp: "Разрешенные IP",
peer: "Пир",
peers: "Пиры",
},
lb: {
defaultOut: "Исходящий по умолчанию",
interruptConn: "Прервать существующие соединения",
testUrl: "Тестовый URL",
interval: "Интервал",
tolerance: "Толерантность",
urlTestOptions: "Параметры теста URL"
}
},
in: {
addr: "Адрес",
port: "Порт",
clients: "Включить клиентов",
ssMethod: "Метод",
sSide: "Сторона сервера",
cSide: "Сторона клиента",
multiDomain: "Мультидомен",
remark: "Примечание",
mdOption: "Параметры мультидомена",
},
listen: {
sniffing: "Обнаружение",
sniffingTimeout: "Таймаут обнаружения",
sniffingOverride: "Переопределение назначения",
options: "Параметры прослушивания",
tcpOptions: "Параметры TCP",
udpOptions: "Параметры UDP",
detour: "Обход",
detourText: "Переадресация на входящий",
domainStrategy: "Стратегия домена",
},
dial: {
bindIf: "Привязка к сетевому интерфейсу",
bindIp4: "Привязка к IPv4",
bindIp6: "Привязка к IPv6",
reuseAddr: "Повторное использование адреса слушателя",
connTimeout: "Таймаут подключения",
fbTimeout: "Таймаут возврата",
options: "Параметры вызова",
detourText: "Переадресация на исходящий",
},
transport: {
enable: "Включить транспорт",
host: "Хост",
hosts: "Хосты",
path: "Путь",
httpMethod: "Метод запроса",
idleTimeout: "Таймаут бездействия",
pingTimeout: "Таймаут пинга",
grpcServiceName: "Имя службы",
grpcPws: "Разрешить без потока",
},
mux: {
enable: "Включить мультиплекс",
maxConn: "Максимальное количество соединений",
minStr: "Минимальное количество потоков",
maxStr: "Максимальное количество потоков",
padding: "Только подкладка",
enableBrutal: "Включить Brutal",
},
out: {
addr: "Адрес сервера",
port: "Порт сервера",
},
rule: {
add: "Добавить правило",
simple: "Простое",
logical: "Логическое",
mode: "Режим",
invert: "Инвертировать",
ipVer: "Версия IP",
domain: "Домены",
domainSufix: "Суффиксы доменов",
domainKw: "Ключевые слова домена",
domainRgx: "Регулярные выражения домена",
ip: "CIDR IP",
privateIp: "Недействительные диапазоны IP",
port: "Порты",
portRange: "Диапазоны портов",
srcCidr: "CIDR исходного IP",
srcPrivateIp: "Недействительные исходные IP",
srcPort: "Исходные порты",
srcPortRange: "Диапазоны исходных портов",
ruleset: "Наборы правил",
rulesetMatchSrc: "Набор правил для соответствия источника IPcidr",
options: "Параметры правила",
domainRules: "Домен/IP",
srcIpRules: "Источник IP",
srcPortRules: "Источник порта",
},
ruleset: {
add: "Добавить набор правил",
format: "Формат данных",
interval: "Интервалы обновления",
remote: "Удаленный",
local: "Локальный",
},
basic: {
log: {
title: "Журналы",
level: "Уровень",
output: "Вывод",
timestamp: "Включить метку времени",
},
dns: {
final: "Итоговый",
server: "Сервер",
firstServer: "Первый сервер",
addrResolver: "Разрешение адреса",
},
routing: {
title: "Маршрутизация",
defaultOut: "Исходящий по умолчанию",
defaultIf: "Сетевой интерфейс по умолчанию",
defaultRm: "Маршрут по умолчанию",
autoBind: "Автопривязка сетевого интерфейса",
},
exp: {
storeFakeIp: "Хранить поддельный IP",
},
},
tls: {
enable: "Включить TLS",
usePath: "Использовать путь",
useText: "Использовать текст",
certPath: "Путь к файлу сертификата",
keyPath: "Путь к файлу ключа",
cert: "Сертификат",
key: "Ключ",
options: "Параметры TLS",
minVer: "Минимальная версия",
maxVer: "Максимальная версия",
cs: "Наборы шифров",
privKey: "Приватный ключ",
pubKey: "Публичный ключ",
disableSni: "Отключить SNI",
insecure: "Разрешить небезопасное",
acme: {
options: "Параметры ACME",
dataDir: "Каталог данных",
defaultDomain: "Домен по умолчанию",
disableChallenges: "Отключить вызовы",
httpChallenge: "Отключить HTTP вызов",
tlsChallenge: "Отключить TLS вызов",
altPorts: "Альтернативные порты",
altHport: "Альтернативный HTTP порт",
altTport: "Альтернативный TLS порт",
caProvider: "Поставщик CA",
customCa: "Пользовательский поставщик CA",
extAcc: "Внешний аккаунт",
dns01: "DNS01 вызов",
dns01Provider: "Поставщик DNS01 вызова",
},
},
stats: {
upload: "Загрузка",
download: "Скачивание",
volume: "Объем",
usage: "Использование",
enable: "Включить статистику",
graphTitle: "График трафика",
B: "Б",
KB: "КБ",
MB: "МБ",
GB: "ГБ",
TB: "ТБ",
PB: "ПБ",
p: "п",
Kp: "Кп",
Mp: "Мп",
Gb: "Гб",
bps: "б/с",
Kbps: "Кб/с",
Mbps: "Мб/с",
},
date: {
expiry: "Срок действия",
expired: "Истек",
d: "д",
h: "ч",
m: "м",
s: "с",
ms: "мс",
},
}
+2 -2
View File
@@ -9,7 +9,7 @@ import '@mdi/font/css/materialdesignicons.css'
import 'vuetify/styles'
import colors from 'vuetify/util/colors'
import { fa, en, vi, zhHans, zhHant } from 'vuetify/locale'
import { fa, en, vi, zhHans, zhHant, ru } from 'vuetify/locale'
// Composables
import { createVuetify } from 'vuetify'
@@ -53,6 +53,6 @@ export default createVuetify({
locale: {
locale: localStorage.getItem("locale") ?? 'en',
fallback: 'en',
messages: { en, fa, vi, zhHans, zhHant },
messages: { en, fa, vi, zhHans, zhHant, ru },
},
})