diff --git a/CHANGELOG.md b/CHANGELOG.md index 096be7bc..74eed5ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - PostgreSQL: Support calling functions returning table (bug #1040) - Designs: adminer.css with 'prefers-color-scheme: dark' don't disable dark mode - Plugins: Method bodyClass() to add <body class> +- Hindi translation ## Adminer 5.2.1 (released 2025-04-11) - Fix search anywhere (bug #1004, regression from 5.1.1) diff --git a/adminer/include/lang.inc.php b/adminer/include/lang.inc.php index 49735481..d648cea3 100644 --- a/adminer/include/lang.inc.php +++ b/adminer/include/lang.inc.php @@ -66,6 +66,7 @@ function langs(): array { 'fr' => 'Français', // Francis Gagné, Aurélien Royer 'gl' => 'Galego', // Eduardo Penabad Ramos 'he' => 'עברית', // Binyamin Yawitz - https://stuff-group.com/ + 'hi' => 'हिन्दी', // Joshi yogesh 'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu 'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org 'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti diff --git a/adminer/lang/hi.inc.php b/adminer/lang/hi.inc.php new file mode 100644 index 00000000..5c9d0c85 --- /dev/null +++ b/adminer/lang/hi.inc.php @@ -0,0 +1,264 @@ + 'लॉगिन', + 'Logout successful.' => 'सफलतापूर्वक लॉगआउट हो गया।', + 'Invalid credentials.' => 'गलत पासवर्ड।', + 'Server' => 'सर्वर', + 'Username' => 'उपयोगकर्ता नाम', + 'Password' => 'पासवर्ड', + 'Select database' => 'डेटाबेस चुनें', + 'Invalid database.' => 'अमान्य डेटाबेस।', + 'Table has been dropped.' => 'टेबल हटा दिया गया है।', + 'Table has been altered.' => 'टेबल बदल दिया गया है।', + 'Table has been created.' => 'टेबल बनाया गया है।', + 'Alter table' => 'टेबल बदलें', + 'Create table' => 'टेबल बनाएं', + 'Table name' => 'टेबल का नाम', + 'engine' => 'इंजन', + 'collation' => 'कॉलेशन', + 'Column name' => 'कॉलम का नाम', + 'Type' => 'प्रकार', + 'Length' => 'लंबाई', + 'Auto Increment' => 'ऑटो इंक्रीमेंट', + 'Options' => 'विकल्प', + 'Save' => 'सहेजें', + 'Drop' => 'हटाएं', + 'Database has been dropped.' => 'डेटाबेस हटा दिया गया है।', + 'Database has been created.' => 'डेटाबेस बनाया गया है।', + 'Database has been renamed.' => 'डेटाबेस का नाम बदल दिया गया है।', + 'Database has been altered.' => 'डेटाबेस बदल दिया गया है।', + 'Alter database' => 'डेटाबेस बदलें', + 'Create database' => 'डेटाबेस बनाएं', + 'SQL command' => 'SQL कमांड', + 'Logout' => 'लॉगआउट', + 'Use' => 'उपयोग करें', + 'No tables.' => 'कोई टेबल नहीं।', + 'select' => 'चुनें', + 'Item has been deleted.' => 'आइटम हटा दिया गया है।', + 'Item has been updated.' => 'आइटम अपडेट किया गया है।', + 'Item%s has been inserted.' => 'आइटम%s डाला गया है।', + 'Edit' => 'संपादित करें', + 'Insert' => 'डालें', + 'Save and insert next' => 'सहेजें और अगला डालें', + 'Delete' => 'हटाएं', + 'Database' => 'डेटाबेस', + 'Routines' => 'रूटीन्स', + 'Indexes have been altered.' => 'इंडेक्स बदल दिए गए हैं।', + 'Indexes' => 'इंडेक्स', + 'Alter indexes' => 'इंडेक्स बदलें', + 'Add next' => 'अगला जोड़ें', + 'Language' => 'भाषा', + 'Select' => 'चुनें', + 'New item' => 'नया आइटम', + 'Search' => 'खोजें', + 'Sort' => 'क्रमबद्ध करें', + 'descending' => 'अवरोही', + 'Limit' => 'सीमा', + 'No rows.' => 'कोई पंक्ति नहीं।', + 'Action' => 'कार्रवाई', + 'edit' => 'संपादित करें', + 'Page' => 'पृष्ठ', + 'Query executed OK, %d row(s) affected.' => array('क्वेरी सफलतापूर्वक निष्पादित, %d पंक्ति प्रभावित।', 'क्वेरी सफलतापूर्वक निष्पादित, %d पंक्तियां प्रभावित।'), + 'Error in query' => 'क्वेरी में त्रुटि', + 'Execute' => 'निष्पादित करें', + 'Table' => 'टेबल', + 'Foreign keys' => 'फॉरेन की', + 'Triggers' => 'ट्रिगर्स', + 'View' => 'व्यू', + 'Unable to select the table' => 'टेबल चुनने में असमर्थ', + 'Invalid CSRF token. Send the form again.' => 'अमान्य CSRF टोकन। फॉर्म फिर से भेजें।', + 'Comment' => 'टिप्पणी', + 'Default values' => 'डिफ़ॉल्ट मान', + '%d byte(s)' => array('%d बाइट', '%d बाइट्स'), + 'No commands to execute.' => 'निष्पादित करने के लिए कोई कमांड नहीं।', + 'Unable to upload a file.' => 'फाइल अपलोड करने में असमर्थ।', + 'File upload' => 'फाइल अपलोड', + 'File uploads are disabled.' => 'फाइल अपलोड अक्षम हैं।', + 'Routine has been called, %d row(s) affected.' => array('रूटीन कॉल किया गया, %d पंक्ति प्रभावित।', 'रूटीन कॉल किया गया, %d पंक्तियां प्रभावित।'), + 'Call' => 'कॉल', + 'No extension' => 'कोई एक्सटेंशन नहीं', + 'None of the supported PHP extensions (%s) are available.' => 'कोई समर्थित PHP एक्सटेंशन (%s) उपलब्ध नहीं है।', + 'Session support must be enabled.' => 'सेशन सपोर्ट सक्षम होना चाहिए।', + 'Session expired, please login again.' => 'सेशन समाप्त, कृपया फिर से लॉगिन करें।', + 'Text length' => 'टेक्स्ट लंबाई', + 'Foreign key has been dropped.' => 'फॉरेन की हटा दी गई है।', + 'Foreign key has been altered.' => 'फॉरेन की बदल दी गई है।', + 'Foreign key has been created.' => 'फॉरेन की बनाई गई है।', + 'Foreign key' => 'फॉरेन की', + 'Target table' => 'लक्ष्य टेबल', + 'Change' => 'बदलें', + 'Source' => 'स्रोत', + 'Target' => 'लक्ष्य', + 'Add column' => 'कॉलम जोड़ें', + 'Alter' => 'बदलें', + 'Add foreign key' => 'फॉरेन की जोड़ें', + 'ON DELETE' => 'ऑन डिलीट', + 'ON UPDATE' => 'ऑन अपडेट', + 'Index Type' => 'इंडेक्स प्रकार', + 'length' => 'लंबाई', + 'View has been dropped.' => 'व्यू हटा दिया गया है।', + 'View has been altered.' => 'व्यू बदल दिया गया है।', + 'View has been created.' => 'व्यू बनाया गया है।', + 'Alter view' => 'व्यू बदलें', + 'Create view' => 'व्यू बनाएं', + 'Name' => 'नाम', + 'Process list' => 'प्रक्रिया सूची', + '%d process(es) have been killed.' => array('%d प्रक्रिया समाप्त की गई है।', '%d प्रक्रियाएं समाप्त की गई हैं।'), + 'Kill' => 'समाप्त करें', + 'Parameter name' => 'पैरामीटर नाम', + 'Database schema' => 'डेटाबेस स्कीमा', + 'Create procedure' => 'प्रक्रिया बनाएं', + 'Create function' => 'फंक्शन बनाएं', + 'Routine has been dropped.' => 'रूटीन हटा दिया गया है।', + 'Routine has been altered.' => 'रूटीन बदल दिया गया है।', + 'Routine has been created.' => 'रूटीन बनाया गया है।', + 'Alter function' => 'फंक्शन बदलें', + 'Alter procedure' => 'प्रक्रिया बदलें', + 'Return type' => 'वापसी प्रकार', + 'Add trigger' => 'ट्रिगर जोड़ें', + 'Trigger has been dropped.' => 'ट्रिगर हटा दिया गया है।', + 'Trigger has been altered.' => 'ट्रिगर बदल दिया गया है।', + 'Trigger has been created.' => 'ट्रिगर बनाया गया है।', + 'Alter trigger' => 'ट्रिगर बदलें', + 'Create trigger' => 'ट्रिगर बनाएं', + 'Time' => 'समय', + 'Event' => 'घटना', + '%s version: %s through PHP extension %s' => 'संस्करण %s: %s, PHP एक्सटेंशन %s के माध्यम से', + '%d row(s)' => array('%d पंक्ति', '%d पंक्तियां'), + 'Remove' => 'हटाएं', + 'Are you sure?' => 'क्या आप सुनिश्चित हैं?', + 'Privileges' => 'विशेषाधिकार', + 'Create user' => 'उपयोगकर्ता बनाएं', + 'User has been dropped.' => 'उपयोगकर्ता हटा दिया गया है।', + 'User has been altered.' => 'उपयोगकर्ता बदल दिया गया है।', + 'User has been created.' => 'उपयोगकर्ता बनाया गया है।', + 'Hashed' => 'हैश्ड', + 'Column' => 'कॉलम', + 'Routine' => 'रूटीन', + 'Grant' => 'अनुदान', + 'Revoke' => 'रद्द करें', + 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'बहुत बड़ा POST डेटा। डेटा कम करें या %s कॉन्फ़िगरेशन निर्देश बढ़ाएं।', + 'Logged as: %s' => '%s के रूप में लॉगिन', + 'Move up' => 'ऊपर ले जाएं', + 'Move down' => 'नीचे ले जाएं', + 'Functions' => 'फंक्शन्स', + 'Aggregation' => 'एग्रीगेशन', + 'Export' => 'निर्यात', + 'Output' => 'आउटपुट', + 'open' => 'खोलें', + 'save' => 'सहेजें', + 'Format' => 'प्रारूप', + 'Tables' => 'टेबल्स', + 'Data' => 'डेटा', + 'Event has been dropped.' => 'घटना हटा दी गई है।', + 'Event has been altered.' => 'घटना बदल दी गई है।', + 'Event has been created.' => 'घटना बनाई गई है।', + 'Alter event' => 'घटना बदलें', + 'Create event' => 'घटना बनाएं', + 'At given time' => 'निर्धारित समय पर', + 'Every' => 'हर', + 'Events' => 'घटनाएं', + 'Schedule' => 'अनुसूची', + 'Start' => 'शुरू', + 'End' => 'समाप्त', + 'Status' => 'स्थिति', + 'On completion preserve' => 'पूरा होने पर संरक्षित करें', + 'Tables and views' => 'टेबल्स और व्यूज', + 'Data Length' => 'डेटा लंबाई', + 'Index Length' => 'इंडेक्स लंबाई', + 'Data Free' => 'डेटा मुक्त', + 'Collation' => 'कॉलेशन', + 'Analyze' => 'विश्लेषण', + 'Optimize' => 'अनुकूलित', + 'Check' => 'जांच', + 'Repair' => 'मरम्मत', + 'Truncate' => 'ट्रंकेट', + 'Tables have been truncated.' => 'टेबल्स ट्रंकेट कर दिए गए हैं।', + 'Rows' => 'पंक्तियां', + ',' => ',', + '0123456789' => '०१२३४५६७८९', + 'Tables have been moved.' => 'टेबल्स स्थानांतरित कर दिए गए हैं।', + 'Move to other database' => 'अन्य डेटाबेस में स्थानांतरित करें', + 'Move' => 'स्थानांतरित करें', + 'Engine' => 'इंजन', + 'Save and continue edit' => 'सहेजें और संपादन जारी रखें', + 'original' => 'मूल', + 'Tables have been dropped.' => 'टेबल्स हटा दिए गए हैं।', + '%d item(s) have been affected.' => '%d आइटम प्रभावित हुए हैं।', + 'Whole result' => 'पूरा परिणाम', + 'Clone' => 'क्लोन', + 'Maximum number of allowed fields exceeded. Please increase %s.' => 'अनुमत फील्ड्स की अधिकतम संख्या पार हो गई। कृपया %s बढ़ाएं।', + 'Partition by' => 'द्वारा विभाजन', + 'Partitions' => 'पार्टीशन्स', + 'Partition name' => 'पार्टीशन नाम', + 'Values' => 'मान', + '%d row(s) have been imported.' => array('%d पंक्ति आयात की गई है।', '%d पंक्तियां आयात की गई हैं।'), + 'anywhere' => 'कहीं भी', + 'Import' => 'आयात', + 'Stop on error' => 'त्रुटि पर रुकें', + '%.3f s' => '%.3f सेकंड', + '$1-$3-$5' => '$1-$3-$5', + '[yyyy]-mm-dd' => '[yyyy]-mm-dd', + 'History' => 'इतिहास', + 'Variables' => 'चर', + 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'स्रोत और लक्ष्य कॉलम्स का डेटा प्रकार समान होना चाहिए, लक्ष्य कॉलम्स पर एक इंडेक्स होना चाहिए और संदर्भित डेटा मौजूद होना चाहिए।', + 'Relations' => 'संबंध', + 'Run file' => 'फाइल चलाएं', + 'Clear' => 'साफ़ करें', + 'Maximum allowed file size is %sB.' => 'अधिकतम अनुमत फाइल आकार %sB है।', + 'Numbers' => 'संख्याएं', + 'Date and time' => 'तिथि और समय', + 'Strings' => 'स्ट्रिंग्स', + 'Binary' => 'बाइनरी', + 'Lists' => 'सूचियां', + 'Editor' => 'संपादक', + 'Webserver file %s' => 'वेबसर्वर फाइल %s', + 'File does not exist.' => 'फाइल मौजूद नहीं है।', + '%d in total' => 'कुल %d', + 'Permanent login' => 'स्थायी लॉगिन', + 'Databases have been dropped.' => 'डेटाबेस हटा दिए गए हैं।', + 'Search data in tables' => 'टेबल्स में डेटा खोजें', + 'Schema' => 'स्कीमा', + 'Alter schema' => 'स्कीमा बदलें', + 'Create schema' => 'स्कीमा बनाएं', + 'Schema has been dropped.' => 'स्कीमा हटा दी गई है।', + 'Schema has been created.' => 'स्कीमा बनाई गई है।', + 'Schema has been altered.' => 'स्कीमा बदल दी गई है।', + 'Sequences' => 'अनुक्रम', + 'Create sequence' => 'अनुक्रम बनाएं', + 'Alter sequence' => 'अनुक्रम बदलें', + 'Sequence has been dropped.' => 'अनुक्रम हटा दिया गया है।', + 'Sequence has been created.' => 'अनुक्रम बनाया गया है।', + 'Sequence has been altered.' => 'अनुक्रम बदल दिया गया है।', + 'User types' => 'उपयोगकर्ता प्रकार', + 'Create type' => 'प्रकार बनाएं', + 'Alter type' => 'प्रकार बदलें', + 'Type has been dropped.' => 'प्रकार हटा दिया गया है।', + 'Type has been created.' => 'प्रकार बनाया गया है।', + 'Use edit link to modify this value.' => 'इस मान को संशोधित करने के लिए संपादन लिंक का उपयोग करें।', + 'last' => 'अंतिम', + 'From server' => 'सर्वर से', + 'System' => 'सिस्टम', + 'Select data' => 'डेटा चुनें', + 'Show structure' => 'संरचना दिखाएं', + 'empty' => 'खाली', + 'Network' => 'नेटवर्क', + 'Geometry' => 'ज्यामिति', + 'File exists.' => 'फाइल मौजूद है।', + '%d query(s) executed OK.' => array('%d क्वेरी सफलतापूर्वक निष्पादित।', '%d क्वेरीज़ सफलतापूर्वक निष्पादित।'), + 'Show only errors' => 'केवल त्रुटियां दिखाएं', + 'Refresh' => 'ताज़ा करें', + 'Invalid schema.' => 'अमान्य स्कीमा।', + 'Please use one of the extensions %s.' => 'कृपया %s एक्सटेंशन्स में से एक का उपयोग करें।', + 'now' => 'अब', + 'ltr' => 'ltr', + 'Tables have been copied.' => 'टेबल्स कॉपी कर दिए गए हैं।', + 'Copy' => 'कॉपी', + 'Permanent link' => 'स्थायी लिंक', + 'Edit all' => 'सभी संपादित करें', + 'HH:MM:SS' => 'HH:MM:SS', +); + +// run `php ../../lang.php hi` to update this file diff --git a/lang.php b/lang.php index f77fa4d9..844d5abc 100755 --- a/lang.php +++ b/lang.php @@ -53,7 +53,7 @@ function update_translations($lang, $messages, $filename, $pattern, $tabs = "\t" $start = $match[2][1]; preg_match_all("~^(\\s*(?:// [^'].*\\s+)?)(?:// )?(('(?:[^\\\\']+|\\\\.)*') => (.*[^,\n])),?~m", $match[2][0], $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); $s = ""; - $fullstop = ($lang == "bn" ? '।' : (preg_match('~^(ja|zh)~', $lang) ? '。' : ($lang == 'he' ? '[^.]' : '\.'))); + $fullstop = ($lang == 'bn' || $lang == 'hi' ? '।' : (preg_match('~^(ja|zh)~', $lang) ? '。' : ($lang == 'he' ? '[^.]' : '\.'))); foreach ($matches as $match) { list(, list($indent), list($line, $offset), list($en), list($translation)) = $match; if (isset($messages[$en])) {