Uzbek and Russian languages are added

pull/4310/head
dilshodturab 2025-04-26 14:02:00 +05:00
parent ab97bc2259
commit 4b1fdc19ec
4 changed files with 370 additions and 1 deletions

View File

@ -16,6 +16,12 @@
<el-dropdown-item :disabled="language==='ja'" command="ja">
日本語
</el-dropdown-item>
<el-dropdown-item :disabled="language==='ru'" command="ru">
Русский
</el-dropdown-item>
<el-dropdown-item :disabled="language==='uz'" command="uz">
O'zbek
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>

View File

@ -5,10 +5,13 @@ import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
import elementEsLocale from 'element-ui/lib/locale/lang/es'// element-ui lang
import elementJaLocale from 'element-ui/lib/locale/lang/ja'// element-ui lang
import elementRuLocale from 'element-ui/lib/locale/lang/ru-RU'// element-ui lang
import enLocale from './en'
import zhLocale from './zh'
import esLocale from './es'
import jaLocale from './ja'
import ruLocale from './ru'
import uzLocale from './uz'
Vue.use(VueI18n)
@ -28,8 +31,17 @@ const messages = {
ja: {
...jaLocale,
...elementJaLocale
},
ru: {
...ruLocale,
...elementRuLocale
},
uz: {
...uzLocale,
...elementEnLocale // Using English Element UI for Uzbek as there's no Uzbek version
}
}
export function getLanguage() {
const chooseLanguage = Cookies.get('language')
if (chooseLanguage) return chooseLanguage
@ -44,9 +56,10 @@ export function getLanguage() {
}
return 'en'
}
const i18n = new VueI18n({
// set locale
// options: en | zh | es
// options: en | zh | es | ja | ru | uz
locale: getLanguage(),
// set locale messages
messages

175
src/lang/ru.js Normal file
View File

@ -0,0 +1,175 @@
export default {
route: {
dashboard: 'Панель управления',
documentation: 'Документация',
guide: 'Руководство',
permission: 'Разрешения',
pagePermission: 'Разрешения страницы',
rolePermission: 'Разрешения роли',
directivePermission: 'Разрешения директивы',
icons: 'Иконки',
components: 'Компоненты',
tinymce: 'Tinymce',
markdown: 'Markdown',
jsonEditor: 'JSON редактор',
dndList: 'Dnd список',
splitPane: 'SplitPane',
avatarUpload: 'Загрузка аватара',
dropzone: 'Dropzone',
sticky: 'Sticky',
countTo: 'Count To',
componentMixin: 'Mixin',
backToTop: 'Наверх',
dragDialog: 'Перетаскивание диалога',
dragSelect: 'Перетаскивание выбора',
dragKanban: 'Перетаскивание Kanban',
charts: 'Графики',
keyboardChart: 'Клавиатурный график',
lineChart: 'Линейный график',
mixChart: 'Смешанный график',
example: 'Пример',
nested: 'Вложенные маршруты',
menu1: 'Меню 1',
'menu1-1': 'Меню 1-1',
'menu1-2': 'Меню 1-2',
'menu1-2-1': 'Меню 1-2-1',
'menu1-2-2': 'Меню 1-2-2',
'menu1-3': 'Меню 1-3',
menu2: 'Меню 2',
Table: 'Таблица',
dynamicTable: 'Динамическая таблица',
dragTable: 'Перетаскиваемая таблица',
inlineEditTable: 'Встроенное редактирование',
complexTable: 'Сложная таблица',
tab: 'Вкладка',
form: 'Форма',
createArticle: 'Создать статью',
editArticle: 'Редактировать статью',
articleList: 'Список статей',
errorPages: 'Страницы ошибок',
page401: '401',
page404: '404',
errorLog: 'Журнал ошибок',
excel: 'Excel',
exportExcel: 'Экспорт в Excel',
selectExcel: 'Экспорт выбранного',
mergeHeader: 'Объединение заголовков',
uploadExcel: 'Загрузка Excel',
zip: 'Zip',
pdf: 'PDF',
exportZip: 'Экспорт в Zip',
theme: 'Тема',
clipboardDemo: 'Буфер обмена',
i18n: 'I18n',
externalLink: 'Внешняя ссылка',
profile: 'Профиль'
},
navbar: {
dashboard: 'Панель управления',
github: 'Github',
logOut: 'Выйти',
profile: 'Профиль',
theme: 'Тема',
size: 'Глобальный размер'
},
login: {
title: 'Форма входа',
logIn: 'Войти',
username: 'Имя пользователя',
password: 'Пароль',
any: 'любой',
thirdparty: 'Или войти через',
thirdpartyTips: 'Не может быть смоделировано локально, поэтому, пожалуйста, объедините с вашей собственной бизнес-симуляцией!'
},
documentation: {
documentation: 'Документация',
github: 'Github репозиторий'
},
permission: {
addRole: 'Новая роль',
editPermission: 'Редактировать',
roles: 'Ваши роли',
switchRoles: 'Переключить роли',
tips: 'В некоторых случаях использование v-permission не будет иметь эффекта. Например: Element-UI el-tab или el-table-column и другие сцены, которые динамически отображают dom. Вы можете сделать это только с v-if.',
delete: 'Удалить',
confirm: 'Подтвердить',
cancel: 'Отмена'
},
guide: {
description: 'Страница руководства полезна для людей, которые впервые вошли в проект. Вы можете кратко представить функции проекта. Демо основано на ',
button: 'Показать руководство'
},
components: {
documentation: 'Документация',
tinymceTips: 'Rich text является основной функцией бэкенда управления, но в то же время это место с множеством проблем. В процессе выбора rich text я также сделал много обходных путей. Общие rich text на рынке были в основном использованы, и я в конечном итоге выбрал Tinymce.',
dropzoneTips: 'Поскольку мой бизнес имеет особые потребности и должен загружать изображения в qiniu, вместо третьей стороны я выбрал инкапсуляцию самостоятельно. Это очень просто, вы можете увидеть подробный код в @/components/Dropzone.',
stickyTips: 'когда страница прокручивается до заданной позиции, она будет прилипать к верху.',
backToTopTips1: 'Когда страница прокручивается до указанной позиции, кнопка "Наверх" появляется в правом нижнем углу',
backToTopTips2: 'Вы можете настроить стиль кнопки, показать/скрыть, высоту появления, высоту возврата. Если вам нужна текстовая подсказка, вы можете использовать element-ui el-tooltip элементы снаружи',
imageUploadTips: 'Поскольку я использовал только vue@1 версию, и она в настоящее время несовместима с mockjs, я изменил ее сам, и если вы собираетесь использовать ее, лучше использовать официальную версию.'
},
table: {
dynamicTips1: 'Фиксированный заголовок, отсортированный по порядку заголовка',
dynamicTips2: 'Нефиксированный заголовок, отсортированный по порядку клика',
dragTips1: 'Порядок по умолчанию',
dragTips2: 'Порядок после перетаскивания',
title: 'Заголовок',
importance: 'Важность',
type: 'Тип',
remark: 'Примечание',
search: 'Поиск',
add: 'Добавить',
export: 'Экспорт',
reviewer: 'рецензент',
id: 'ID',
date: 'Дата',
author: 'Автор',
readings: 'Чтения',
status: 'Статус',
actions: 'Действия',
edit: 'Редактировать',
publish: 'Опубликовать',
draft: 'Черновик',
delete: 'Удалить',
cancel: 'Отмена',
confirm: 'Подтвердить'
},
example: {
warning: 'Страницы создания и редактирования не могут быть кэшированы с помощью keep-alive, потому что keep-alive include в настоящее время не поддерживает кэширование на основе маршрутов, поэтому в настоящее время кэшируется на основе имени компонента. Если вы хотите достичь аналогичного эффекта кэширования, вы можете использовать схему кэширования браузера, такую как localStorage. Или не используйте keep-alive include для кэширования всех страниц напрямую.'
},
errorLog: {
tips: 'Пожалуйста, нажмите на значок ошибки в правом верхнем углу',
description: 'Сейчас системы управления в основном в форме spa, это улучшает пользовательский опыт, но также увеличивает вероятность проблем со страницей, небольшая небрежность может привести к блокировке всей страницы. К счастью, Vue предоставляет способ перехвата обработки исключений, где вы можете обрабатывать ошибки или сообщать об исключениях.',
documentation: 'Введение в документацию'
},
excel: {
export: 'Экспорт',
selectedExport: 'Экспорт выбранных элементов',
placeholder: 'Пожалуйста, введите имя файла (по умолчанию excel-list)'
},
zip: {
export: 'Экспорт',
placeholder: 'Пожалуйста, введите имя файла (по умолчанию file)'
},
pdf: {
tips: 'Здесь мы используем window.print() для реализации функции загрузки PDF.'
},
theme: {
change: 'Изменить тему',
documentation: 'Документация по теме',
tips: 'Совет: Это отличается от theme-pick на navbar, это два разных способа скинирования, каждый с разными областями применения. Подробности см. в документации.'
},
tagsView: {
refresh: 'Обновить',
close: 'Закрыть',
closeOthers: 'Закрыть другие',
closeAll: 'Закрыть все'
},
settings: {
title: 'Настройки стиля страницы',
theme: 'Цвет темы',
tagsView: 'Открыть Tags-View',
fixedHeader: 'Фиксированный заголовок',
sidebarLogo: 'Логотип боковой панели'
}
}

175
src/lang/uz.js Normal file
View File

@ -0,0 +1,175 @@
export default {
route: {
dashboard: 'Boshqaruv paneli',
documentation: 'Hujjatlar',
guide: 'Qo\'llanma',
permission: 'Ruxsatnomalar',
pagePermission: 'Sahifa ruxsatnomalari',
rolePermission: 'Rol ruxsatnomalari',
directivePermission: 'Direktiva ruxsatnomalari',
icons: 'Ikonkalar',
components: 'Komponentlar',
tinymce: 'Tinymce',
markdown: 'Markdown',
jsonEditor: 'JSON muharriri',
dndList: 'Dnd ro\'yxati',
splitPane: 'SplitPane',
avatarUpload: 'Avatar yuklash',
dropzone: 'Dropzone',
sticky: 'Sticky',
countTo: 'Count To',
componentMixin: 'Mixin',
backToTop: 'Yuqoriga qaytish',
dragDialog: 'Dialogni sudrab o\'tkazish',
dragSelect: 'Sudrab tanlash',
dragKanban: 'Sudrab Kanban',
charts: 'Grafiklar',
keyboardChart: 'Klaviatura grafigi',
lineChart: 'Chiziqli grafik',
mixChart: 'Aralash grafik',
example: 'Misol',
nested: 'Ichki marshrutlar',
menu1: 'Menyu 1',
'menu1-1': 'Menyu 1-1',
'menu1-2': 'Menyu 1-2',
'menu1-2-1': 'Menyu 1-2-1',
'menu1-2-2': 'Menyu 1-2-2',
'menu1-3': 'Menyu 1-3',
menu2: 'Menyu 2',
Table: 'Jadval',
dynamicTable: 'Dinamik jadval',
dragTable: 'Sudrab jadval',
inlineEditTable: 'Ichki tahrirlash',
complexTable: 'Murakkab jadval',
tab: 'Tab',
form: 'Forma',
createArticle: 'Maqola yaratish',
editArticle: 'Maqolani tahrirlash',
articleList: 'Maqolalar ro\'yxati',
errorPages: 'Xato sahifalari',
page401: '401',
page404: '404',
errorLog: 'Xato jurnali',
excel: 'Excel',
exportExcel: 'Excelga eksport',
selectExcel: 'Tanlanganlarni eksport qilish',
mergeHeader: 'Sarlavhalarni birlashtirish',
uploadExcel: 'Excel yuklash',
zip: 'Zip',
pdf: 'PDF',
exportZip: 'Zipga eksport',
theme: 'Mavzu',
clipboardDemo: 'Bufer',
i18n: 'I18n',
externalLink: 'Tashqi havola',
profile: 'Profil'
},
navbar: {
dashboard: 'Boshqaruv paneli',
github: 'Github',
logOut: 'Chiqish',
profile: 'Profil',
theme: 'Mavzu',
size: 'Global o\'lcham'
},
login: {
title: 'Tizimga kirish',
logIn: 'Kirish',
username: 'Foydalanuvchi nomi',
password: 'Parol',
any: 'har qanday',
thirdparty: 'Yoki boshqa tizimlar orqali',
thirdpartyTips: 'Lokalda simulyatsiya qilib bo\'lmaydi, iltimos o\'z biznesingizga moslab ishlating!'
},
documentation: {
documentation: 'Hujjatlar',
github: 'Github ombori'
},
permission: {
addRole: 'Yangi rol',
editPermission: 'Tahrirlash',
roles: 'Sizning rollaringiz',
switchRoles: 'Rollarni almashtirish',
tips: 'Ba\'zi hollarda v-permission ishlamaydi. Masalan: Element-UI el-tab yoki el-table-column va boshqa dinamik DOM render qiladigan sahifalar. Bunday hollarda faqat v-if ishlatishingiz mumkin.',
delete: 'O\'chirish',
confirm: 'Tasdiqlash',
cancel: 'Bekor qilish'
},
guide: {
description: 'Qo\'llanma sahifasi loyihaga birinchi marta kirganlar uchun foydalidir. Siz loyihaning asosiy funksiyalarini qisqacha tushuntirishingiz mumkin. Demo asosida ',
button: 'Qo\'llanmani ko\'rsatish'
},
components: {
documentation: 'Hujjatlar',
tinymceTips: 'Rich text - bu boshqaruv panelining asosiy funksiyasi, lekin shu bilan birga ko\'plab muammolar mavjud. Rich text tanlash jarayonida men ham ko\'p yo\'llarni bosib o\'tdim. Bozordagi keng tarqalgan rich textlarni ishlatib ko\'rdim va oxirida Tinymce ni tanladim.',
dropzoneTips: 'Mening biznesim maxsus talablarga ega va rasmni qiniuga yuklashim kerak, shuning uchun uchinchi tomonni tanlamasdan, uni o\'zim o\'rab chiqdim. Bu juda oddiy, @/components/Dropzone da kodni ko\'rishingiz mumkin.',
stickyTips: 'sahifa belgilangan joyga scroll qilinganda yuqoriga yopishadi.',
backToTopTips1: 'Sahifa belgilangan joyga scroll qilinganda, "Yuqoriga qaytish" tugmasi pastki o\'ng burchakda paydo bo\'ladi',
backToTopTips2: 'Siz tugmaning uslubini, ko\'rinishini/yashirinishini, paydo bo\'lish balandligini, qaytish balandligini sozlashingiz mumkin. Agar matnli ko\'rsatma kerak bo\'lsa, element-ui el-tooltip elementlarini tashqaridan ishlatishingiz mumkin',
imageUploadTips: 'Men faqat vue@1 versiyasini ishlatganim uchun va hozircha mockjs bilan mos kelmayotgani uchun, uni o\'zim o\'zgartirdim. Agar siz ishlatmoqchi bo\'lsangiz, rasmiy versiyani ishlatish yaxshiroq.'
},
table: {
dynamicTips1: 'Belgilangan sarlavha, sarlavha tartibida saralangan',
dynamicTips2: 'Belgilanmagan sarlavha, bosish tartibida saralangan',
dragTips1: 'Standart tartib',
dragTips2: 'Sudrab o\'tkazgandan keyingi tartib',
title: 'Sarlavha',
importance: 'Muhimlik',
type: 'Turi',
remark: 'Izoh',
search: 'Qidirish',
add: 'Qo\'shish',
export: 'Eksport',
reviewer: 'tekshiruvchi',
id: 'ID',
date: 'Sana',
author: 'Muallif',
readings: 'O\'qilganlar',
status: 'Holat',
actions: 'Harakatlar',
edit: 'Tahrirlash',
publish: 'Nashr qilish',
draft: 'Qoralama',
delete: 'O\'chirish',
cancel: 'Bekor qilish',
confirm: 'Tasdiqlash'
},
example: {
warning: 'Yaratish va tahrirlash sahifalari keep-alive orqali keshlanmaydi, chunki keep-alive include hozircha marshrutlar asosida keshlashni qo\'llab-quvvatlamaydi, shuning uchun hozircha komponent nomi asosida keshlanadi. Agar shunga o\'xshash keshlash effektini olishni xohlasangiz, localStorage kabi brauzer keshlash sxemasidan foydalanishingiz mumkin. Yoki keep-alive include dan foydalanmasdan barcha sahifalarni to\'g\'ridan-to\'g\'ri keshlashingiz mumkin.'
},
errorLog: {
tips: 'Iltimos, yuqori o\'ng burchakdagi xato ikonkasini bosing',
description: 'Hozirgi boshqaruv tizimlari asosan SPA shaklida, bu foydalanuvchi tajribasini yaxshilaydi, lekin shu bilan birga sahifa muammolarining ehtimolini ham oshiradi, kichik e\'tiborsizlik butun sahifani blokirovka qilishiga olib kelishi mumkin. Baxtimizga, Vue xatolarni ushlash va qayta ishlash usulini taqdim etadi, bu erda siz xatolarni qayta ishlashingiz yoki istisnolarni xabar berishingiz mumkin.',
documentation: 'Hujjatlar tushuntirishi'
},
excel: {
export: 'Eksport',
selectedExport: 'Tanlangan elementlarni eksport qilish',
placeholder: 'Iltimos, fayl nomini kiriting (standart excel-list)'
},
zip: {
export: 'Eksport',
placeholder: 'Iltimos, fayl nomini kiriting (standart file)'
},
pdf: {
tips: 'Bu erda PDF yuklab olish funksiyasini amalga oshirish uchun window.print() dan foydalanamiz.'
},
theme: {
change: 'Mavzuni o\'zgartirish',
documentation: 'Mavzu hujjatlari',
tips: 'Maslahat: Bu navbar-dagi theme-pick dan farq qiladi, ular ikki xil teri o\'zgartirish usuli, har biri turli xil qo\'llash sohalariga ega. Batafsil ma\'lumot uchun hujjatlarni ko\'ring.'
},
tagsView: {
refresh: 'Yangilash',
close: 'Yopish',
closeOthers: 'Boshqalarini yopish',
closeAll: 'Hammasini yopish'
},
settings: {
title: 'Sahifa uslubi sozlamalari',
theme: 'Mavzu rangi',
tagsView: 'Tags-View ni ochish',
fixedHeader: 'Belgilangan sarlavha',
sidebarLogo: 'Yon panel logotipi'
}
}