diff --git a/CHANGELOG.md b/CHANGELOG.md
index cb43c6ce..99918e1e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@
- New plugin: IMAP driver created for fun
- New plugin: Display links to tables referencing current row
- New plugin: Allow switching light and dark mode (bug #926)
+- Uzbek translation
## Adminer 5.0.6 (released 2025-03-17)
- Align numbers right (bug #912)
diff --git a/adminer/include/lang.inc.php b/adminer/include/lang.inc.php
index 7e01db72..eacd5228 100644
--- a/adminer/include/lang.inc.php
+++ b/adminer/include/lang.inc.php
@@ -45,6 +45,7 @@ $langs = array(
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
'uk' => 'Українська', // Valerii Kryzhov
+ 'uz' => 'Oʻzbekcha', // Junaydullaev Inoyatullokhon - https://av.uz/
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
'zh' => '简体中文', // Mr. Lodar, vea - urn2.net - vea.urn2@gmail.com
'zh-tw' => '繁體中文', // http://tzangms.com
diff --git a/adminer/lang/uz.inc.php b/adminer/lang/uz.inc.php
new file mode 100644
index 00000000..ab429c82
--- /dev/null
+++ b/adminer/lang/uz.inc.php
@@ -0,0 +1,365 @@
+ 'Tizim',
+ 'Server' => 'Server',
+ 'Username' => 'Foydalanuvchi nomi',
+ 'Password' => 'Parol',
+ 'Permanent login' => 'Doimiy kirish',
+ 'Login' => 'Kirish',
+ 'Logout' => 'Chiqish',
+ 'Logged as: %s' => 'Siz kirgansiz: %s',
+ 'Logout successful.' => 'Muvaffaqiyatli chiqdingiz.',
+ 'Thanks for using Adminer, consider donating.' => 'Adminer dasturidan foydalanganingiz uchun rahmat, xayriya qilishni o\'ylab ko\'ring.',
+ 'Loaded plugins' => 'Yuklangan plaginlar',
+ '%s must return an array.' => '%s massiv qaytarishi kerak.',
+ 'Configure %s in %s.' => '%s ni %s ichida sozlang.',
+ 'Invalid credentials.' => 'Noto\'g\'ri ma\'lumotlar.',
+ 'There is a space in the input password which might be the cause.' => 'Kiritilgan parolda bo\'sh joy bor, bu sabab bo\'lishi mumkin.',
+ 'Adminer does not support accessing a database without a password, more information.' => 'Adminer parolsiz ma\'lumotlar bazasiga kirishni qo\'llab-quvvatlamaydi, ko\'proq ma\'lumot.',
+ 'Database does not support password.' => 'Ma\'lumotlar bazasi parolni qo\'llab-quvvatlamaydi.',
+ 'Too many unsuccessful logins, try again in %d minute(s).' => array('Juda ko\'p muvaffaqiyatsiz urinishlar, %d daqiqadan so\'ng qayta urining.', 'Juda ko\'p muvaffaqiyatsiz urinishlar, %d daqiqadan so\'ng qayta urining.'),
+ 'Master password expired. Implement %s method to make it permanent.' => 'Asosiy parol muddati tugadi. Uni doimiy qilish uchun %s usulini amalga oshiring.',
+ 'Language' => 'Til',
+ 'Invalid CSRF token. Send the form again.' => 'Noto\'g\'ri CSRF belgisi. Shaklni qayta yuboring.',
+ 'If you did not send this request from Adminer then close this page.' => 'Agar bu so\'rovni Adminerdan yuborgan bo\'lmasangiz, ushbu sahifani yoping.',
+ 'No extension' => 'Kengaytma yo\'q',
+ // %s contains the list of the extensions, e.g. 'mysqli, PDO_MySQL'
+ 'None of the supported PHP extensions (%s) are available.' => 'Qo\'llab-quvvatlanadigan PHP kengaytmalarining (%s) hech biri mavjud emas.',
+ 'Connecting to privileged ports is not allowed.' => 'Imtiyozli portlarga ulanishga ruxsat berilmagan.',
+ 'Disable %s or enable %s or %s extensions.' => '%s ni o\'chiring yoki %s yoki %s kengaytmalarini yoqing.',
+ 'Session support must be enabled.' => 'Sessiya qo\'llab-quvvatlashi yoqilgan bo\'lishi kerak.',
+ 'Session expired, please login again.' => 'Sessiya muddati tugadi, iltimos, qayta kiring.',
+ 'The action will be performed after successful login with the same credentials.' => 'Amal bir xil ma\'lumotlar bilan muvaffaqiyatli kirishdan so\'ng amalga oshiriladi.',
+ '%s version: %s through PHP extension %s' => '%s versiyasi: %s PHP kengaytmasi %s orqali',
+ 'Refresh' => 'Yangilash',
+
+ // text direction - 'ltr' or 'rtl'
+ 'ltr' => 'ltr',
+
+ 'Privileges' => 'Imtiyozlar',
+ 'Create user' => 'Foydalanuvchi yaratish',
+ 'User has been dropped.' => 'Foydalanuvchi o\'chirildi.',
+ 'User has been altered.' => 'Foydalanuvchi o\'zgartirildi.',
+ 'User has been created.' => 'Foydalanuvchi yaratildi.',
+ 'Hashed' => 'Xeshlangan',
+ 'Column' => 'Ustun',
+ 'Routine' => 'Protsedura',
+ 'Grant' => 'Berish',
+ 'Revoke' => 'Bekor qilish',
+
+ 'Process list' => 'Jarayonlar ro\'yxati',
+ '%d process(es) have been killed.' => array('%d jarayon to\'xtatildi.', '%d jarayonlar to\'xtatildi.'),
+ 'Kill' => 'To\'xtatish',
+
+ 'Variables' => 'O\'zgaruvchilar',
+ 'Status' => 'Holat',
+
+ 'SQL command' => 'SQL buyrug\'i',
+ '%d query(s) executed OK.' => array('%d so\'rov muvaffaqiyatli bajarildi.', '%d so\'rovlar muvaffaqiyatli bajarildi.'),
+ 'Query executed OK, %d row(s) affected.' => array('So\'rov muvaffaqiyatli bajarildi, %d qator o\'zgartirildi.', 'So\'rov muvaffaqiyatli bajarildi, %d qatorlar o\'zgartirildi.'),
+ 'No commands to execute.' => 'Bajariladigan buyruqlar yo\'q.',
+ 'Error in query' => 'So\'rovda xatolik',
+ 'Unknown error.' => 'Noma\'lum xatolik.',
+ 'Warnings' => 'Ogohlantirishlar',
+ 'ATTACH queries are not supported.' => 'ATTACH so\'rovlari qo\'llab-quvvatlanmaydi.',
+ 'Execute' => 'Bajarish',
+ 'Stop on error' => 'Xatoda to\'xtash',
+ 'Show only errors' => 'Faqat xatolarni ko\'rsatish',
+ // sprintf() format for time of the command
+ '%.3f s' => '%.3f s',
+ 'History' => 'Tarix',
+ 'Clear' => 'Tozalash',
+ 'Edit all' => 'Hammasini tahrirlash',
+
+ 'File upload' => 'Fayl yuklash',
+ 'From server' => 'Serverdan',
+ 'Webserver file %s' => 'Veb-server fayli %s',
+ 'Run file' => 'Faylni ishga tushirish',
+ 'File does not exist.' => 'Fayl mavjud emas.',
+ 'File uploads are disabled.' => 'Fayl yuklash o\'chirilgan.',
+ 'Unable to upload a file.' => 'Faylni yuklab bo\'lmadi.',
+ 'Maximum allowed file size is %sB.' => 'Maksimal ruxsat etilgan fayl hajmi %sB.',
+ 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Juda katta POST ma\'lumotlari. Ma\'lumotlarni kamaytiring yoki %s konfiguratsiya direktivasini oshiring.',
+ 'You can upload a big SQL file via FTP and import it from server.' => 'Katta SQL faylini FTP orqali yuklab, uni serverdan import qilishingiz mumkin.',
+ 'You are offline.' => 'Siz oflayndasiz.',
+
+ 'Export' => 'Eksport',
+ 'Output' => 'Natija',
+ 'open' => 'ochish',
+ 'save' => 'saqlash',
+ 'Saving' => 'Saqlanmoqda',
+ 'Format' => 'Format',
+ 'Data' => 'Ma\'lumotlar',
+
+ 'Database' => 'Ma\'lumotlar bazasi',
+ 'DB' => 'MB',
+ 'Use' => 'Foydalanish',
+ 'Select database' => 'Ma\'lumotlar bazasini tanlash',
+ 'Invalid database.' => 'Noto\'g\'ri ma\'lumotlar bazasi.',
+ 'Database has been dropped.' => 'Ma\'lumotlar bazasi o\'chirildi.',
+ 'Databases have been dropped.' => 'Ma\'lumotlar bazalari o\'chirildi.',
+ 'Database has been created.' => 'Ma\'lumotlar bazasi yaratildi.',
+ 'Database has been renamed.' => 'Ma\'lumotlar bazasi qayta nomlandi.',
+ 'Database has been altered.' => 'Ma\'lumotlar bazasi o\'zgartirildi.',
+ 'Alter database' => 'Ma\'lumotlar bazasini o\'zgartirish',
+ 'Create database' => 'Ma\'lumotlar bazasini yaratish',
+ 'Database schema' => 'Ma\'lumotlar bazasi sxemasi',
+
+ // link to current database schema layout
+ 'Permanent link' => 'Doimiy havola',
+
+ // thousands separator - must contain single byte
+ ',' => ' ',
+ '0123456789' => '0123456789',
+ 'Engine' => 'Dvigatel',
+ 'Collation' => 'Kodlash',
+ 'Data Length' => 'Ma\'lumotlar hajmi',
+ 'Index Length' => 'Indeks hajmi',
+ 'Data Free' => 'Bo\'sh ma\'lumotlar',
+ 'Rows' => 'Qatorlar',
+ '%d in total' => 'Jami %d',
+ 'Analyze' => 'Tahlil qilish',
+ 'Optimize' => 'Optimallash',
+ 'Vacuum' => 'Tozalash',
+ 'Check' => 'Tekshirish',
+ 'Repair' => 'Ta\'mirlash',
+ 'Truncate' => 'Bo\'shatish',
+ 'Tables have been truncated.' => 'Jadvallar bo\'shatildi.',
+ 'Move to other database' => 'Boshqa ma\'lumotlar bazasiga ko\'chirish',
+ 'Move' => 'Ko\'chirish',
+ 'Tables have been moved.' => 'Jadvallar ko\'chirildi.',
+ 'Copy' => 'Nusxalash',
+ 'Tables have been copied.' => 'Jadvallar nusxalandi.',
+ 'overwrite' => 'qayta yozish',
+
+ 'Routines' => 'Protseduralar',
+ 'Routine has been called, %d row(s) affected.' => array('Protsedura chaqirildi, %d qator o\'zgartirildi.', 'Protsedura chaqirildi, %d qatorlar o\'zgartirildi.'),
+ 'Call' => 'Chaqirish',
+ 'Parameter name' => 'Parametr nomi',
+ 'Create procedure' => 'Protsedura yaratish',
+ 'Create function' => 'Funksiya yaratish',
+ 'Routine has been dropped.' => 'Protsedura o\'chirildi.',
+ 'Routine has been altered.' => 'Protsedura o\'zgartirildi.',
+ 'Routine has been created.' => 'Protsedura yaratildi.',
+ 'Alter function' => 'Funksiyani o\'zgartirish',
+ 'Alter procedure' => 'Protseduranni o\'zgartirish',
+ 'Return type' => 'Qaytarish turi',
+
+ 'Events' => 'Hodisalar',
+ 'Event has been dropped.' => 'Hodisa o\'chirildi.',
+ 'Event has been altered.' => 'Hodisa o\'zgartirildi.',
+ 'Event has been created.' => 'Hodisa yaratildi.',
+ 'Alter event' => 'Hodisani o\'zgartirish',
+ 'Create event' => 'Hodisa yaratish',
+ 'At given time' => 'Belgilangan vaqtda',
+ 'Every' => 'Har bir',
+ 'Schedule' => 'Jadval',
+ 'Start' => 'Boshlash',
+ 'End' => 'Tugatish',
+ 'On completion preserve' => 'Yakunlangandan so\'ng saqlash',
+
+ 'Tables' => 'Jadvallar',
+ 'Tables and views' => 'Jadvallar va ko\'rinishlar',
+ 'Table' => 'Jadval',
+ 'No tables.' => 'Jadvallar yo\'q.',
+ 'Alter table' => 'Jadvalni o\'zgartirish',
+ 'Create table' => 'Jadval yaratish',
+ 'Table has been dropped.' => 'Jadval o\'chirildi.',
+ 'Tables have been dropped.' => 'Jadvallar o\'chirildi.',
+ 'Tables have been optimized.' => 'Jadvallar optimallashtirildi.',
+ 'Table has been altered.' => 'Jadval o\'zgartirildi.',
+ 'Table has been created.' => 'Jadval yaratildi.',
+ 'Table name' => 'Jadval nomi',
+ 'Show structure' => 'Tuzilishni ko\'rsatish',
+ 'engine' => 'dvigatel',
+ 'collation' => 'kodlash',
+ 'Column name' => 'Ustun nomi',
+ 'Type' => 'Tur',
+ 'Length' => 'Uzunlik',
+ 'Auto Increment' => 'Avto ko\'payish',
+ 'Options' => 'Variantlar',
+ 'Comment' => 'Izoh',
+ 'Default value' => 'Standart qiymat',
+ 'Default values' => 'Standart qiymatlar',
+ 'Drop' => 'O\'chirish',
+ 'Drop %s?' => '%s ni o\'chirasizmi?',
+ 'Are you sure?' => 'Ishonchingiz komilmi?',
+ 'Size' => 'Hajm',
+ 'Compute' => 'Hisoblash',
+ 'Move up' => 'Yuqoriga ko\'chirish',
+ 'Move down' => 'Pastga ko\'chirish',
+ 'Remove' => 'Olib tashlash',
+ 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Ruxsat etilgan maydonlar soni oshib ketdi. Iltimos, %s ni oshiring.',
+
+ 'Partition by' => 'Bo\'lish mezon',
+ 'Partitions' => 'Bo\'limlar',
+ 'Partition name' => 'Bo\'lim nomi',
+ 'Values' => 'Qiymatlar',
+
+ 'View' => 'Ko\'rinish',
+ 'Materialized view' => 'Moddiy ko\'rinish',
+ 'View has been dropped.' => 'Ko\'rinish o\'chirildi.',
+ 'View has been altered.' => 'Ko\'rinish o\'zgartirildi.',
+ 'View has been created.' => 'Ko\'rinish yaratildi.',
+ 'Alter view' => 'Ko\'rinishni o\'zgartirish',
+ 'Create view' => 'Ko\'rinish yaratish',
+
+ 'Indexes' => 'Indekslar',
+ 'Indexes have been altered.' => 'Indekslar o\'zgartirildi.',
+ 'Alter indexes' => 'Indekslarni o\'zgartirish',
+ 'Add next' => 'Keyingisini qo\'shish',
+ 'Index Type' => 'Indeks turi',
+ 'length' => 'uzunlik',
+
+ 'Foreign keys' => 'Tashqi kalitlar',
+ 'Foreign key' => 'Tashqi kalit',
+ 'Foreign key has been dropped.' => 'Tashqi kalit o\'chirildi.',
+ 'Foreign key has been altered.' => 'Tashqi kalit o\'zgartirildi.',
+ 'Foreign key has been created.' => 'Tashqi kalit yaratildi.',
+ 'Target table' => 'Maqsad jadvali',
+ 'Change' => 'O\'zgartirish',
+ 'Source' => 'Manba',
+ 'Target' => 'Maqsad',
+ 'Add column' => 'Ustun qo\'shish',
+ 'Alter' => 'O\'zgartirish',
+ 'Add foreign key' => 'Tashqi kalit qo\'shish',
+ 'ON DELETE' => 'O\'CHIRILGANDA',
+ 'ON UPDATE' => 'YANGILANGANDA',
+ 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Manba va maqsad ustunlari bir xil ma\'lumot turiga ega bo\'lishi kerak, maqsad ustunlarda indeks bo\'lishi kerak va havolalar qilingan ma\'lumotlar mavjud bo\'lishi kerak.',
+
+ 'Triggers' => 'Triggerlar',
+ 'Add trigger' => 'Trigger qo\'shish',
+ 'Trigger has been dropped.' => 'Trigger o\'chirildi.',
+ 'Trigger has been altered.' => 'Trigger o\'zgartirildi.',
+ 'Trigger has been created.' => 'Trigger yaratildi.',
+ 'Alter trigger' => 'Triggerni o\'zgartirish',
+ 'Create trigger' => 'Trigger yaratish',
+ 'Time' => 'Vaqt',
+ 'Event' => 'Hodisa',
+ 'Name' => 'Nomi',
+
+ 'select' => 'tanlash',
+ 'Select' => 'Tanlash',
+ 'Select data' => 'Ma\'lumotlarni tanlash',
+ 'Functions' => 'Funksiyalar',
+ 'Aggregation' => 'Agregatsiya',
+ 'Search' => 'Qidirish',
+ 'anywhere' => 'hamma joyda',
+ 'Search data in tables' => 'Jadvallarda ma\'lumotlarni qidirish',
+ 'Sort' => 'Saralash',
+ 'descending' => 'kamayish bo\'yicha',
+ 'Limit' => 'Cheklov',
+ 'Limit rows' => 'Qatorlarni cheklash',
+ 'Text length' => 'Matn uzunligi',
+ 'Action' => 'Amal',
+ 'Full table scan' => 'To\'liq jadval skanerlash',
+ 'Unable to select the table' => 'Jadvalni tanlab bo\'lmadi',
+ 'No rows.' => 'Qatorlar yo\'q.',
+ // used in SQL query limit and it is followed by another number, e.g. '10 / 50 rows' meaning 10 of 50 rows
+ '%d / ' => '%d / ',
+ '%d row(s)' => array('%d qator', '%d qatorlar'),
+ 'Page' => 'Sahifa',
+ 'last' => 'oxirgi',
+ 'Load more data' => 'Ko\'proq ma\'lumot yuklash',
+ 'Loading' => 'Yuklanmoqda',
+ 'Whole result' => 'Butun natija',
+ '%d byte(s)' => array('%d bayt', '%d baytlar'),
+
+ 'Import' => 'Import',
+ '%d row(s) have been imported.' => array('%d qator import qilindi.', '%d qatorlar import qilindi.'),
+ 'File must be in UTF-8 encoding.' => 'Fayl UTF-8 kodlashda bo\'lishi kerak.',
+
+ // in-place editing in select
+ 'Modify' => 'O\'zgartirish',
+ 'Ctrl+click on a value to modify it.' => 'Qiymatni o\'zgartirish uchun Ctrl+bosing.',
+ 'Use edit link to modify this value.' => 'Bu qiymatni o\'zgartirish uchun tahrir havolasidan foydalaning.',
+
+ // %s can contain auto-increment value, e.g. ' 123'
+ 'Item%s has been inserted.' => 'Element%s kiritildi.',
+ 'Item has been deleted.' => 'Element o\'chirildi.',
+ 'Item has been updated.' => 'Element yangilandi.',
+ '%d item(s) have been affected.' => array('%d element o\'zgartirildi.', '%d elementlar o\'zgartirildi.'),
+ 'New item' => 'Yangi element',
+ 'original' => 'asl',
+ // label for value '' in enum data type
+ 'empty' => 'bo\'sh',
+ 'edit' => 'tahrirlash',
+ 'Edit' => 'Tahrirlash',
+ 'Insert' => 'Kiritish',
+ 'Save' => 'Saqlash',
+ 'Save and continue edit' => 'Saqlash va tahrirlashni davom ettirish',
+ 'Save and insert next' => 'Saqlash va keyingisini kiritish',
+ 'Selected' => 'Tanlangan',
+ 'Clone' => 'Klonlash',
+ 'Delete' => 'O\'chirish',
+ 'You have no privileges to update this table.' => 'Bu jadvalni yangilash uchun sizda huquqlar yo\'q.',
+
+ 'E-mail' => 'E-pochta',
+ 'From' => 'Kimdan',
+ 'Subject' => 'Mavzu',
+ 'Attachments' => 'Ilovalar',
+ 'Send' => 'Yuborish',
+ '%d e-mail(s) have been sent.' => array('%d e-pochta yuborildi.', '%d e-pochtalar yuborildi.'),
+
+ // data type descriptions
+ 'Numbers' => 'Raqamlar',
+ 'Date and time' => 'Sana va vaqt',
+ 'Strings' => 'Matnlar',
+ 'Binary' => 'Ikkilik',
+ 'Lists' => 'Ro\'yxatlar',
+ 'Network' => 'Tarmoq',
+ 'Geometry' => 'Geometriya',
+ 'Relations' => 'Munosabatlar',
+
+ 'Editor' => 'Muharrir',
+ // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
+ '$1-$3-$5' => '$5.$3.$1',
+ // hint for date format - use language equivalents for day, month and year shortcuts
+ '[yyyy]-mm-dd' => 'dd.mm.[yyyy]',
+ // hint for time format - use language equivalents for hour, minute and second shortcuts
+ 'HH:MM:SS' => 'SS:MM:SS',
+ 'now' => 'hozir',
+ 'yes' => 'ha',
+ 'no' => 'yo\'q',
+
+ // general SQLite error in create, drop or rename database
+ 'File exists.' => 'Fayl mavjud.',
+ 'Please use one of the extensions %s.' => 'Iltimos, kengaytmalardan birini %s foydalaning.',
+
+ // PostgreSQL and MS SQL schema support
+ 'Alter schema' => 'Sxemani o\'zgartirish',
+ 'Create schema' => 'Sxema yaratish',
+ 'Schema has been dropped.' => 'Sxema o\'chirildi.',
+ 'Schema has been created.' => 'Sxema yaratildi.',
+ 'Schema has been altered.' => 'Sxema o\'zgartirildi.',
+ 'Schema' => 'Sxema',
+ 'Invalid schema.' => 'Noto\'g\'ri sxema.',
+
+ // PostgreSQL sequences support
+ 'Sequences' => 'Ketma-ketliklar',
+ 'Create sequence' => 'Ketma-ketlik yaratish',
+ 'Sequence has been dropped.' => 'Ketma-ketlik o\'chirildi.',
+ 'Sequence has been created.' => 'Ketma-ketlik yaratildi.',
+ 'Sequence has been altered.' => 'Ketma-ketlik o\'zgartirildi.',
+ 'Alter sequence' => 'Ketma-ketlikni o\'zgartirish',
+
+ // PostgreSQL user types support
+ 'User types' => 'Foydalanuvchi turlari',
+ 'Create type' => 'Tur yaratish',
+ 'Type has been dropped.' => 'Tur o\'chirildi.',
+ 'Type has been created.' => 'Tur yaratildi.',
+ 'Alter type' => 'Turni o\'zgartirish',
+
+ // Table check constraints
+ 'Checks' => 'Tekshirishlar',
+ 'Create check' => 'Tekshirish yaratish',
+ 'Alter check' => 'Tekshirishni o\'zgartirish',
+ 'Check has been created.' => 'Tekshirish yaratildi.',
+ 'Check has been altered.' => 'Tekshirish o\'zgartirildi.',
+ 'Check has been dropped.' => 'Tekshirish o\'chirildi.',
+);
+
+// run `php ../../lang.php uz` to update this file