summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/standalone/po/hi.po779
1 files changed, 216 insertions, 563 deletions
diff --git a/perl-install/standalone/po/hi.po b/perl-install/standalone/po/hi.po
index 28946cec4..a4afb9bcb 100644
--- a/perl-install/standalone/po/hi.po
+++ b/perl-install/standalone/po/hi.po
@@ -1,20 +1,21 @@
-# translation of DrakX-hi.po to हिन्दी, भारत (Hindi, India)
-# Copyright (C) 2003,2004 Free Software Foundation, Inc.
-# धनञ्जय शर्मा (Dhananjaya Sharma) <dysxhi@yahoo.co.in>, 2003, 2004.
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
#
+# Translators:
+# धनञ्जय शर्मा (Dhananjaya Sharma) <dysxhi@yahoo.co.in>, 2003-2004
msgid ""
msgstr ""
-"Project-Id-Version: DrakX-hi\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Mageia\n"
"POT-Creation-Date: 2015-05-13 07:38-0400\n"
-"PO-Revision-Date: 2004-04-04 21:54+0530\n"
-"Last-Translator: धनञ्जय शर्मा (Dhananjaya Sharma) <dysxhi@yahoo.co.in>\n"
-"Language-Team: हिन्दी (Hindi) <dysxhi@yahoo.co.in>\n"
-"Language: \n"
+"PO-Revision-Date: 2015-05-13 21:52+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Hindi (http://www.transifex.com/projects/p/mageia/language/"
+"hi/)\n"
+"Language: hi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: display_help:54 display_help:59 drakbug:173 drakperm:134
#, c-format
@@ -85,9 +86,9 @@ msgid ""
msgstr ""
#: drakboot:148
-#, fuzzy, c-format
+#, c-format
msgid "Do you want to configure it now?"
-msgstr "क्या आप इस संरचना का परीक्षण करना चाहते है?"
+msgstr ""
#: drakboot:157
#, c-format
@@ -100,9 +101,9 @@ msgid "Graphical boot theme selection"
msgstr "ग्राफ़िक्ल बूट थीम का चयन"
#: drakboot:162
-#, fuzzy, c-format
+#, c-format
msgid "Graphical boot mode:"
-msgstr "ग्राफ़िक्ल बूट का उपयोग"
+msgstr ""
#: drakboot:164
#, c-format
@@ -163,9 +164,9 @@ msgid "The \"%s\" program has crashed with the following error:"
msgstr ""
#: drakbug:62
-#, fuzzy, c-format
+#, c-format
msgid "%s Bug Report Tool"
-msgstr "मैनड्रिव दोष रिपोर्ट औज़ार"
+msgstr ""
#: drakbug:62 drakbug:67 drakbug:72 drakbug:73 drakbug:99 drakfont:523
#: drakfont:527 drakhelp:53 draksec:110 draksec:169 harddrake2:523
@@ -175,9 +176,9 @@ msgid "Mageia"
msgstr "मैनड्रैकलिनक्स"
#: drakbug:67
-#, fuzzy, c-format
+#, c-format
msgid "%s Control Center"
-msgstr "मैनड्रिव लिनक्स नियंत्रण केन्द्र"
+msgstr "%s नियंत्रण केंद्र"
#: drakbug:68
#, c-format
@@ -195,9 +196,9 @@ msgid "Standalone Tools"
msgstr ""
#: drakbug:72 drakbug:73
-#, fuzzy, c-format
+#, c-format
msgid "%s Online"
-msgstr "मैनड्रिव ऑनलाइन"
+msgstr ""
#: drakbug:74
#, c-format
@@ -220,18 +221,16 @@ msgid "Configuration Wizards"
msgstr "संरचना विज़ार्ड"
#: drakbug:99
-#, fuzzy, c-format
+#, c-format
msgid "Select %s Tool:"
-msgstr "सभी का चयन"
+msgstr ""
#: drakbug:100
-#, fuzzy, c-format
+#, c-format
msgid ""
"or Application Name\n"
"(or Full Path):"
msgstr ""
-"कार्यक्रम का नाम\n"
-"या सम्पूर्ण पथ:"
#: drakbug:103
#, c-format
@@ -239,9 +238,9 @@ msgid "Find Package"
msgstr "पैकेज खोजे"
#: drakbug:104
-#, fuzzy, c-format
+#, c-format
msgid "Browse"
-msgstr "ब्राउज़"
+msgstr ""
#: drakbug:106
#, c-format
@@ -264,16 +263,12 @@ msgid "Used theme: %s"
msgstr ""
#: drakbug:146
-#, fuzzy, c-format
+#, c-format
msgid ""
"To submit a bug report, click on the report button. \n"
"This will open a web browser window on %s where you'll find a form to fill "
"in. The information displayed above will be transferred to that server"
msgstr ""
-"एक दोष-सूचनार्थ को प्रेषित करने हेतु, रिपोर्ट बटन पर क्लिक करें । \n"
-"यह %s पर एक वेब ब्राउज़र विण्डो को खोलेगा जहाँ आप एक प्रारूप\n"
-" को भरने के लिए पायेगें । उपरोक्त दिखायी गई सूचना को उस सर्वर \n"
-"को भेज दिया जायेगा । "
#: drakbug:148
#, c-format
@@ -292,9 +287,9 @@ msgid "'%s'"
msgstr ""
#: drakbug:154
-#, fuzzy, c-format
+#, c-format
msgid "You should also attach the following files: %s as well as %s."
-msgstr "%s पैकेजों का संसाधन नहीं हो सका"
+msgstr ""
#: drakbug:161
#, c-format
@@ -393,9 +388,9 @@ msgid "Timezone"
msgstr "समय क्षेत्र"
#: drakclock:116
-#, fuzzy, c-format
+#, c-format
msgid "Please enter a valid NTP server address."
-msgstr "कृपया एक वैध आईपी पता बताएँ।"
+msgstr ""
#: drakclock:140
#, c-format
@@ -408,9 +403,9 @@ msgid "Quit"
msgstr "निकास"
#: drakclock:142
-#, fuzzy, c-format
+#, c-format
msgid "Retry"
-msgstr "पुनः स्थापना"
+msgstr ""
#: drakclock:165 drakclock:175
#, c-format
@@ -418,9 +413,9 @@ msgid "Reset"
msgstr "पुनःस्थापना"
#: drakdvb:30
-#, fuzzy, c-format
+#, c-format
msgid "DVB"
-msgstr "डीवीडी"
+msgstr ""
#: drakdvb:39 harddrake2:101
#, c-format
@@ -456,14 +451,14 @@ msgid "Cancel"
msgstr "निरस्त करें"
#: drakdvb:148
-#, fuzzy, c-format
+#, c-format
msgid "Detect Channels"
-msgstr "चैनल"
+msgstr ""
#: drakdvb:150
-#, fuzzy, c-format
+#, c-format
msgid "View Channel"
-msgstr "चैनल"
+msgstr ""
#: drakedm:41
#, c-format
@@ -476,9 +471,9 @@ msgid "KDM (KDE Display Manager)"
msgstr ""
#: drakedm:43
-#, fuzzy, c-format
+#, c-format
msgid "XDM (X Display Manager)"
-msgstr "एक अवलोकन प्रंबधक का चयन"
+msgstr ""
#: drakedm:54
#, c-format
@@ -610,9 +605,9 @@ msgid ""
msgstr ""
#: drakfont:479
-#, fuzzy, c-format
+#, c-format
msgid "Font Installation"
-msgstr "संसाधन के उपरान्त"
+msgstr ""
#: drakfont:490
#, c-format
@@ -650,19 +645,19 @@ msgid "Import"
msgstr "इम्पोर्ट"
#: drakfont:521
-#, fuzzy, c-format
+#, c-format
msgid "Drakfont"
msgstr "ड्रैकफ़ॉन्ट"
#: drakfont:523 harddrake2:523
-#, fuzzy, c-format
+#, c-format
msgid "Copyright (C) %s by %s"
-msgstr "सर्वाधिकार (C) १९९९-२००४ मैनड्रिव सॉफ़्ट ।"
+msgstr ""
#: drakfont:525
-#, fuzzy, c-format
+#, c-format
msgid "Font installer."
-msgstr "संसाधन नहीं किया गया है"
+msgstr ""
#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")
#. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith <jsmith@nowhere.com>")
@@ -787,9 +782,9 @@ msgid "Post Install"
msgstr "संसाधन के उपरान्त"
#: drakfont:767
-#, fuzzy, c-format
+#, c-format
msgid "Removing fonts"
-msgstr "फ़ान्टों को इम्पोर्ट किया जा रहा है"
+msgstr ""
#: drakfont:773
#, c-format
@@ -802,7 +797,7 @@ msgid "Post Uninstall"
msgstr "असंसाधन के उपरान्त"
#: drakhelp:17
-#, fuzzy, c-format
+#, c-format
msgid ""
" drakhelp 0.1\n"
"Copyright (C) %s Mandriva.\n"
@@ -812,17 +807,11 @@ msgid ""
"\n"
"Usage: \n"
msgstr ""
-" ड्रैकहैल्प ०।१\n"
-"सर्वाधिकार (C) २००३-२००४ मैनड्रिव सॉफ़्ट ।\n"
-"यह निःशुल्क सॉफ़्टवेय है और इसे जीएनयू/जीपीएल की शर्तों के अन्तर्गत पुनः वितरित किया जा "
-"सकता है ।\n"
-"\n"
-"उपयोगिता: \n"
#: drakhelp:23
-#, fuzzy, c-format
+#, c-format
msgid " --help - display this help \n"
-msgstr " --help - इस सहायता का अवलोकन \n"
+msgstr ""
#: drakhelp:24
#, c-format
@@ -841,9 +830,9 @@ msgstr ""
" --doc <link> - अन्य वेब पृष्ट से कड़ी ( डब्लू०एम० स्वागत फ़्रन्टाऐन्ड के लिए)\n"
#: drakhelp:53
-#, fuzzy, c-format
+#, c-format
msgid "%s Help Center"
-msgstr "मैनड्रिव नियंत्रण केन्द्र"
+msgstr ""
#: drakhelp:53
#, c-format
@@ -866,9 +855,9 @@ msgid "Custom & system settings"
msgstr "ऐच्छिक व तंत्र समायोजनायें"
#: drakperm:33
-#, fuzzy, c-format
+#, c-format
msgid "Security Permissions"
-msgstr "अनुमतियां"
+msgstr ""
#: drakperm:45
#, c-format
@@ -973,9 +962,9 @@ msgid "browse"
msgstr "ब्राउज़"
#: drakperm:244
-#, fuzzy, c-format
+#, c-format
msgid "user"
-msgstr "उपयोग"
+msgstr ""
#: drakperm:244
#, c-format
@@ -1137,9 +1126,9 @@ msgid "Ignore"
msgstr "ध्यान ना दें"
#: draksec:87
-#, fuzzy, c-format
+#, c-format
msgid "Security Level and Checks"
-msgstr "सुरक्षा स्तर:"
+msgstr ""
#: draksec:110
#, c-format
@@ -1167,9 +1156,9 @@ msgid "Software Management"
msgstr "सॉफ़्टवेयर प्रबंधक"
#: draksec:169
-#, fuzzy, c-format
+#, c-format
msgid "%s Update"
-msgstr "मैनड्रिव ऑनलाइन"
+msgstr ""
#: draksec:170
#, c-format
@@ -1177,34 +1166,34 @@ msgid "Software Media Manager"
msgstr "सॉफ़्टवेयर मीडीया प्रबंधक"
#: draksec:171
-#, fuzzy, c-format
+#, c-format
msgid "Configure 3D Desktop effects"
-msgstr "एक न्यूजसमूह सर्वर की संरचना"
+msgstr ""
#: draksec:172
-#, fuzzy, c-format
+#, c-format
msgid "Graphical Server Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: draksec:173
-#, fuzzy, c-format
+#, c-format
msgid "Mouse Configuration"
-msgstr "स्वंम के द्वारा संरचना"
+msgstr ""
#: draksec:174
-#, fuzzy, c-format
+#, c-format
msgid "Keyboard Configuration"
-msgstr "नेटवर्क संरचना"
+msgstr ""
#: draksec:175
-#, fuzzy, c-format
+#, c-format
msgid "UPS Configuration"
-msgstr "यूपीएस चालक संरचना"
+msgstr ""
#: draksec:176
-#, fuzzy, c-format
+#, c-format
msgid "Network Configuration"
-msgstr "चेतावनी का आकार"
+msgstr "नेटवर्क संरचना"
#: draksec:177
#, c-format
@@ -1212,9 +1201,9 @@ msgid "Hosts definitions"
msgstr ""
#: draksec:178
-#, fuzzy, c-format
+#, c-format
msgid "Network Center"
-msgstr "नेटवर्क और इंटरनेट"
+msgstr ""
#: draksec:179
#, c-format
@@ -1232,9 +1221,9 @@ msgid "Proxy Configuration"
msgstr "प्रोक्सी संरचना"
#: draksec:182
-#, fuzzy, c-format
+#, c-format
msgid "Connection Sharing"
-msgstr "कनेक्शन"
+msgstr ""
#: draksec:184
#, c-format
@@ -1252,14 +1241,14 @@ msgid "Services"
msgstr "सेवायें"
#: draksec:188
-#, fuzzy, c-format
+#, c-format
msgid "Users"
-msgstr "उपयोगकर्ता"
+msgstr "उपयोग-कर्ता"
#: draksec:190
-#, fuzzy, c-format
+#, c-format
msgid "Boot Configuration"
-msgstr "चेतावनी का आकार"
+msgstr ""
#: draksec:223
#, c-format
@@ -1267,9 +1256,9 @@ msgid "Hardware"
msgstr "हार्डवेयर"
#: draksec:224
-#, fuzzy, c-format
+#, c-format
msgid "Network"
-msgstr "नेटवर्क विकल्प"
+msgstr "नेटवर्क"
#: draksec:225
#, c-format
@@ -1288,19 +1277,11 @@ msgstr "कोई सांउड कार्ड नहीं खोजा ग
#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
#: draksound:51
-#, fuzzy, c-format
+#, c-format
msgid ""
"No Sound Card has been detected on your machine. Please verify that a Linux-"
"supported Sound Card is correctly plugged in"
msgstr ""
-"आपके कम्प्यूटर पर कोई टीवी कार्ड नहीं खोजा जा सका । कृपया सत्यापित कर लें कि इसमेंएक "
-"लिनक्स समर्थित वीडीओ/टीवी कार्ड भली-भांति लगा हुआ है ।\n"
-"\n"
-"\n"
-"आप हमारे हार्डवेयर डाटाबेस को निम्नलिखित वेब-कड़ी पर देख सकते है:\n"
-"\n"
-"\n"
-"http://www.mandrivalinux.com/hi/hardware.php3"
#: draksound:54
#, c-format
@@ -1507,9 +1488,9 @@ msgid "Password"
msgstr "कूट-शब्द"
#: drakups:329
-#, fuzzy, c-format
+#, c-format
msgid "UPS Management"
-msgstr "प्रिंटर प्रबंधन \n"
+msgstr ""
#: drakups:333 drakups:342
#, c-format
@@ -1528,19 +1509,11 @@ msgstr "कोई टीवी कार्ड नहीं खोज़ा गय
#. -PO: keep the double empty lines between sections, this is formatted a la LaTeX
#: drakxtv:69
-#, fuzzy, c-format
+#, c-format
msgid ""
"No TV Card has been detected on your machine. Please verify that a Linux-"
"supported Video/TV Card is correctly plugged in."
msgstr ""
-"आपके कम्प्यूटर पर कोई टीवी कार्ड नहीं खोजा जा सका । कृपया सत्यापित कर लें कि इसमेंएक "
-"लिनक्स समर्थित वीडीओ/टीवी कार्ड भली-भांति लगा हुआ है ।\n"
-"\n"
-"\n"
-"आप हमारे हार्डवेयर डाटाबेस को निम्नलिखित वेब-कड़ी पर देख सकते है:\n"
-"\n"
-"\n"
-"http://www.mandrivalinux.com/hi/hardware.php3"
#: finish-install:60
#, c-format
@@ -1555,7 +1528,7 @@ msgstr "कृपया, अपने की-बोर्ड खाके का
#: finish-install:109
#, c-format
msgid "Testing your connection..."
-msgstr ""
+msgstr "आपके संबंध का परीक्षण किया जा रहा है..."
#: finish-install:199 finish-install:217 finish-install:230
#, c-format
@@ -1583,9 +1556,9 @@ msgid "Formatting encrypted home partition"
msgstr ""
#: finish-install:264
-#, fuzzy, c-format
+#, c-format
msgid "Finishing install"
-msgstr "संसाधन नहीं किया गया है"
+msgstr ""
#: finish-install:264
#, c-format
@@ -1688,14 +1661,14 @@ msgid "the module of the GNU/Linux kernel that handles the device"
msgstr "जीएनयू/लिनक्स कर्नल का मॉडूयल जो कि उपकरणों की देख-भाल करता है"
#: harddrake2:50
-#, fuzzy, c-format
+#, c-format
msgid "Extended partitions"
-msgstr "एक नये विभाजन का निर्माण करें"
+msgstr ""
#: harddrake2:50
-#, fuzzy, c-format
+#, c-format
msgid "the number of extended partitions"
-msgstr "प्रोसेसरों की संख्या"
+msgstr ""
#: harddrake2:51
#, c-format
@@ -1708,9 +1681,9 @@ msgid "Cylinder/head/sectors geometry of the disk"
msgstr ""
#: harddrake2:52
-#, fuzzy, c-format
+#, c-format
msgid "Disk controller"
-msgstr "एमएम बस के नियंत्रक"
+msgstr ""
#: harddrake2:52
#, c-format
@@ -1718,9 +1691,9 @@ msgid "the disk controller on the host side"
msgstr ""
#: harddrake2:53
-#, fuzzy, c-format
+#, c-format
msgid "Identifier"
-msgstr "मेरी पहचान"
+msgstr ""
#: harddrake2:53
#, c-format
@@ -1753,14 +1726,14 @@ msgid "network printer port"
msgstr "नेटवर्क प्रिंटर पोर्ट"
#: harddrake2:57
-#, fuzzy, c-format
+#, c-format
msgid "Primary partitions"
-msgstr "विभाजनों को फ़ार्मेट करें"
+msgstr ""
#: harddrake2:57
-#, fuzzy, c-format
+#, c-format
msgid "the number of the primary partitions"
-msgstr "प्रोसेसरों की संख्या"
+msgstr ""
#: harddrake2:58 harddrake2:92
#, c-format
@@ -1778,14 +1751,14 @@ msgid "PCI domain"
msgstr ""
#: harddrake2:59 harddrake2:60
-#, fuzzy, c-format
+#, c-format
msgid "the PCI domain of the device"
-msgstr "उपकरण के विक्रेता का नाम"
+msgstr ""
#: harddrake2:60
-#, fuzzy, c-format
+#, c-format
msgid "PCI revision"
-msgstr "अनुमतियां"
+msgstr ""
#: harddrake2:61
#, c-format
@@ -1793,19 +1766,19 @@ msgid "Bus PCI #"
msgstr ""
#: harddrake2:61
-#, fuzzy, c-format
+#, c-format
msgid "the PCI bus on which the device is plugged"
-msgstr "यह एक भौतकीय बस है जिस पर उपकरण जुड़ा हुआ है (जैसे कि: पीसीआई, यूएसबी, ...)"
+msgstr ""
#: harddrake2:62
-#, fuzzy, c-format
+#, c-format
msgid "PCI device #"
-msgstr "यूपीएस के उपकरण"
+msgstr ""
#: harddrake2:62
-#, fuzzy, c-format
+#, c-format
msgid "PCI device number"
-msgstr "जीवनपर्यन्त संख्या"
+msgstr ""
#: harddrake2:63
#, c-format
@@ -1813,14 +1786,14 @@ msgid "PCI function #"
msgstr ""
#: harddrake2:63
-#, fuzzy, c-format
+#, c-format
msgid "PCI function number"
-msgstr "संबंध का नाम"
+msgstr ""
#: harddrake2:64
-#, fuzzy, c-format
+#, c-format
msgid "Vendor ID"
-msgstr "विक्रेता"
+msgstr ""
#: harddrake2:64
#, c-format
@@ -1828,14 +1801,14 @@ msgid "this is the standard numerical identifier of the vendor"
msgstr ""
#: harddrake2:65
-#, fuzzy, c-format
+#, c-format
msgid "Device ID"
-msgstr "उपकरण:"
+msgstr ""
#: harddrake2:65
-#, fuzzy, c-format
+#, c-format
msgid "this is the numerical identifier of the device"
-msgstr "उपकरण के विक्रेता का नाम"
+msgstr ""
#: harddrake2:66
#, c-format
@@ -1848,19 +1821,19 @@ msgid "this is the minor numerical identifier of the vendor"
msgstr ""
#: harddrake2:67
-#, fuzzy, c-format
+#, c-format
msgid "Sub device ID"
-msgstr "यूपीएस के उपकरण"
+msgstr ""
#: harddrake2:67
-#, fuzzy, c-format
+#, c-format
msgid "this is the minor numerical identifier of the device"
-msgstr "उपकरण के विक्रेता का नाम"
+msgstr ""
#: harddrake2:68
-#, fuzzy, c-format
+#, c-format
msgid "Device USB ID"
-msgstr "उपकरण:"
+msgstr ""
#: harddrake2:68
#, c-format
@@ -1939,9 +1912,9 @@ msgid "CPU flags reported by the kernel"
msgstr "कर्नल के द्वारा रिपोर्ट किये गये सीपीयू के फ़्लैग"
#: harddrake2:80 harddrake2:144
-#, fuzzy, c-format
+#, c-format
msgid "Cores"
-msgstr "समाप्त"
+msgstr ""
#: harddrake2:80
#, c-format
@@ -1949,9 +1922,9 @@ msgid "CPU cores"
msgstr ""
#: harddrake2:81
-#, fuzzy, c-format
+#, c-format
msgid "Core ID"
-msgstr "विक्रेता"
+msgstr ""
#: harddrake2:82
#, c-format
@@ -1964,9 +1937,9 @@ msgid "ACPI ID"
msgstr ""
#: harddrake2:84
-#, fuzzy, c-format
+#, c-format
msgid "Siblings"
-msgstr "समायोजनायें"
+msgstr ""
#: harddrake2:85
#, c-format
@@ -2050,9 +2023,9 @@ msgid "EIDE/SCSI channel"
msgstr "ई०आई०डी०ई०/एस०सी०एस०आई० चैनल"
#: harddrake2:102
-#, fuzzy, c-format
+#, c-format
msgid "Disk identifier"
-msgstr "मेरी पहचान"
+msgstr ""
#: harddrake2:102
#, c-format
@@ -2070,9 +2043,9 @@ msgid "the SCSI target identifier"
msgstr ""
#: harddrake2:104
-#, fuzzy, c-format
+#, c-format
msgid "Logical unit number"
-msgstr "तार्किक वाल्यूम का नाम"
+msgstr ""
#: harddrake2:104
#, c-format
@@ -2084,9 +2057,9 @@ msgstr ""
#. -PO: here, "size" is the size of the ram chip (eg: 128Mo, 256Mo, ...)
#: harddrake2:111
-#, fuzzy, c-format
+#, c-format
msgid "Installed size"
-msgstr "तंत्र संसाधन"
+msgstr ""
#: harddrake2:111
#, c-format
@@ -2094,9 +2067,9 @@ msgid "Installed size of the memory bank"
msgstr ""
#: harddrake2:112
-#, fuzzy, c-format
+#, c-format
msgid "Enabled Size"
-msgstr "सक्रियता"
+msgstr ""
#: harddrake2:112
#, c-format
@@ -2109,9 +2082,9 @@ msgid "Type"
msgstr "प्रकार"
#: harddrake2:113
-#, fuzzy, c-format
+#, c-format
msgid "type of the memory device"
-msgstr "पीयर्स प्रमाणपत्र का नाम"
+msgstr ""
#: harddrake2:114
#, c-format
@@ -2124,9 +2097,9 @@ msgid "Speed of the memory bank"
msgstr ""
#: harddrake2:115
-#, fuzzy, c-format
+#, c-format
msgid "Bank connections"
-msgstr "कनेक्शनों का प्रबंधन"
+msgstr ""
#: harddrake2:116
#, c-format
@@ -2134,9 +2107,9 @@ msgid "Socket designation of the memory bank"
msgstr ""
#: harddrake2:118
-#, fuzzy, c-format
+#, c-format
msgid "Location"
-msgstr "कार्य-कलाप"
+msgstr ""
#: harddrake2:119
#, c-format
@@ -2144,14 +2117,14 @@ msgid "Size"
msgstr "आकार "
#: harddrake2:119
-#, fuzzy, c-format
+#, c-format
msgid "Size of the memory device"
-msgstr "पीयर्स प्रमाणपत्र का नाम"
+msgstr ""
#: harddrake2:124
-#, fuzzy, c-format
+#, c-format
msgid "Device file"
-msgstr "प्राचीन उपकरण संचिका"
+msgstr ""
#: harddrake2:120
#, c-format
@@ -2165,19 +2138,19 @@ msgid "Emulated wheel"
msgstr ""
#: harddrake2:121
-#, fuzzy, c-format
+#, c-format
msgid "whether the wheel is emulated or not"
-msgstr "व्हील ऐम्यूलेशन के साथ"
+msgstr ""
#: harddrake2:122
-#, fuzzy, c-format
+#, c-format
msgid "the type of the mouse"
-msgstr "कृपया माउस का परीक्षण करें"
+msgstr ""
#: harddrake2:123
-#, fuzzy, c-format
+#, c-format
msgid "the name of the mouse"
-msgstr "केन्द्रीय संसाधन इकाई का नाम"
+msgstr ""
#: harddrake2:124
#, c-format
@@ -2215,9 +2188,9 @@ msgid "Connection"
msgstr "कनेक्शन"
#: harddrake2:145
-#, fuzzy, c-format
+#, c-format
msgid "Performances"
-msgstr "वरीयतायें"
+msgstr ""
#: harddrake2:152
#, c-format
@@ -2245,9 +2218,9 @@ msgid "Autodetect parallel _zip drives"
msgstr ""
#: harddrake2:184
-#, fuzzy, c-format
+#, c-format
msgid "Hardware Configuration"
-msgstr "नेटवर्क संरचना"
+msgstr ""
#: harddrake2:193
#, c-format
@@ -2260,9 +2233,9 @@ msgid "_Help"
msgstr "सहायता (_H)"
#: harddrake2:195
-#, fuzzy, c-format
+#, c-format
msgid "<control>H"
-msgstr "<control>Q"
+msgstr ""
#: harddrake2:196
#, c-format
@@ -2347,7 +2320,7 @@ msgid "The following packages need to be installed:\n"
msgstr "निम्नलिखित पैकेजों का संसाधन करना आवश्यक है:\n"
#: harddrake2:521
-#, fuzzy, c-format
+#, c-format
msgid "Harddrake"
msgstr "हार्ड ड्रैक"
@@ -2390,9 +2363,9 @@ msgid "LocaleDrake"
msgstr "लोकेलड्रैक"
#: localedrake:46
-#, fuzzy, c-format
+#, c-format
msgid "You should install the following packages: %s"
-msgstr "%s पैकेजों का संसाधन नहीं हो सका"
+msgstr ""
#. -PO: the following is used to combine packages names. eg: "initscripts, harddrake, yudit"
#: localedrake:49
@@ -2401,9 +2374,9 @@ msgid ", "
msgstr ", "
#: logdrake:56
-#, fuzzy, c-format
+#, c-format
msgid "%s Tools Logs"
-msgstr "मैनड्रिव टूल्स लॉग्स"
+msgstr ""
#: logdrake:70
#, c-format
@@ -2489,9 +2462,9 @@ msgid "Mail alert"
msgstr "विपत्र सूचना"
#: logdrake:178
-#, fuzzy, c-format
+#, c-format
msgid "The alert wizard has failed unexpectedly:"
-msgstr "यह सचेतक विजार्ड अचानक असफ़ल हो गया:"
+msgstr ""
#: logdrake:182
#, c-format
@@ -2629,14 +2602,14 @@ msgid "and enter the name (or the IP) of the SMTP server you wish to use"
msgstr "और एसएमटीपी सर्वर का नाम (या आईपी) बतायें, जिसका आप उपयोग करना चाहते है"
#: logdrake:449
-#, fuzzy, c-format
+#, c-format
msgid "Email address"
-msgstr "आईपी पता"
+msgstr ""
#: logdrake:450
-#, fuzzy, c-format
+#, c-format
msgid "Email server"
-msgstr "सॉबा सर्वर"
+msgstr ""
#: logdrake:454
#, c-format
@@ -2729,9 +2702,9 @@ msgid "The %s is not supported by this version of %s."
msgstr "%s को %s के इस संस्मरण के द्वारा समर्थन नहीं प्राप्त है ।"
#: scannerdrake:102 scannerdrake:113
-#, fuzzy, c-format
+#, c-format
msgid "Confirmation"
-msgstr "संरचना"
+msgstr ""
#: scannerdrake:102
#, c-format
@@ -2744,9 +2717,9 @@ msgid "%s is not in the scanner database, configure it manually?"
msgstr "%s स्कैनर डाटाबेस में नहीं है, क्या आप स्वंम इसकी संरचना करना चाहते है?"
#: scannerdrake:128
-#, fuzzy, c-format
+#, c-format
msgid "Scanner configuration"
-msgstr "चेतावनी का आकार"
+msgstr ""
#: scannerdrake:129
#, c-format
@@ -2769,9 +2742,9 @@ msgid " (UNSUPPORTED)"
msgstr ""
#: scannerdrake:140
-#, fuzzy, c-format
+#, c-format
msgid "The %s is not supported under Linux."
-msgstr "%s को %s के इस संस्मरण के द्वारा समर्थन नहीं प्राप्त है ।"
+msgstr ""
#: scannerdrake:167 scannerdrake:181
#, c-format
@@ -2779,9 +2752,9 @@ msgid "Do not install firmware file"
msgstr "फ़र्मवेयर संचिका को संसाधित ना करें"
#: scannerdrake:170 scannerdrake:220
-#, fuzzy, c-format
+#, c-format
msgid "Scanner Firmware"
-msgstr "स्कैनर सहभाजिता"
+msgstr ""
#: scannerdrake:171 scannerdrake:223
#, c-format
@@ -2883,9 +2856,9 @@ msgid "Select firmware file for the %s"
msgstr "%s के लिए फ़र्मवेयर संचिका का चयन करें"
#: scannerdrake:272
-#, fuzzy, c-format
+#, c-format
msgid "Could not install the firmware file for the %s!"
-msgstr "फ़र्मवेयर संचिका को संसाधित ना करें"
+msgstr ""
#: scannerdrake:285
#, c-format
@@ -2908,9 +2881,9 @@ msgstr ""
"हार्डवेयर अनुभाग के %s नियंत्रण केन्द्र से आप प्रिंटरड्रैक को आरम्भ कर सकते है ।"
#: scannerdrake:318
-#, fuzzy, c-format
+#, c-format
msgid "Setting up kernel modules..."
-msgstr "यू०एस०बी० प्रिंटर कर्नल मॉडयूल को लाया जा रहा है ...\n"
+msgstr ""
#: scannerdrake:328 scannerdrake:335 scannerdrake:365
#, c-format
@@ -2918,9 +2891,9 @@ msgid "Auto-detect available ports"
msgstr "उपलब्ध पोर्टों की स्वतः-पहचान"
#: scannerdrake:329 scannerdrake:375
-#, fuzzy, c-format
+#, c-format
msgid "Device choice"
-msgstr "प्राचीन उपकरण संचिका"
+msgstr ""
#: scannerdrake:330 scannerdrake:376
#, c-format
@@ -2943,9 +2916,9 @@ msgid "Searching for scanners..."
msgstr "स्कैनरों के लिए खोज जारी है..."
#: scannerdrake:403 scannerdrake:410
-#, fuzzy, c-format
+#, c-format
msgid "Attention!"
-msgstr "आकर्षण"
+msgstr ""
#: scannerdrake:404
#, c-format
@@ -2964,14 +2937,11 @@ msgid ""
msgstr ""
#: scannerdrake:407 scannerdrake:416
-#, fuzzy, c-format
+#, c-format
msgid ""
"After that you may scan documents using \"XSane\" or \"%s\" from Multimedia/"
"Graphics in the applications menu."
msgstr ""
-"आपका %s संरचित हो चुका है।\n"
-"ऐप्लीकेशन मीनू के मल्टीमीडिया/ग्राफ़िक्स विकल्प से \"एक्ससाने\" या \"कूका\" का उपयोग "
-"करकेअब आप प्रलेखों को स्कैन कर सकते है।"
#: scannerdrake:411
#, c-format
@@ -2998,15 +2968,12 @@ msgid "Congratulations!"
msgstr "बधाईयां!"
#: scannerdrake:419
-#, fuzzy, c-format
+#, c-format
msgid ""
"Your %s has been configured.\n"
"You may now scan documents using \"XSane\" or \"%s\" from Multimedia/"
"Graphics in the applications menu."
msgstr ""
-"आपका %s संरचित हो चुका है।\n"
-"ऐप्लीकेशन मीनू के मल्टीमीडिया/ग्राफ़िक्स विकल्प से \"एक्ससाने\" या \"कूका\" का उपयोग "
-"करकेअब आप प्रलेखों को स्कैन कर सकते है।"
#: scannerdrake:444
#, c-format
@@ -3040,9 +3007,9 @@ msgid "There are no scanners found which are available on your system.\n"
msgstr "कोई स्कैनर नहीं मिलें जो कि आपके तंत्र पर उपलब्ध हो।\n"
#: scannerdrake:458
-#, fuzzy, c-format
+#, c-format
msgid "Scanner Management"
-msgstr "प्रिंटर प्रबंधन \n"
+msgstr ""
#: scannerdrake:464
#, c-format
@@ -3075,9 +3042,9 @@ msgid "This machine"
msgstr "यह कम्प्य़ूटर"
#: scannerdrake:593
-#, fuzzy, c-format
+#, c-format
msgid "Scanner Sharing"
-msgstr "स्कैनर सहभाजिता"
+msgstr ""
#: scannerdrake:594
#, c-format
@@ -3208,9 +3175,9 @@ msgstr ""
"आपके स्कैनर(स्कैनरों) को सहभाजित करने हेतु आवश्यक पैकेजों को संसाधित नहीं किया जा सका ।"
#: service_harddrake:157
-#, fuzzy, c-format
+#, c-format
msgid "The graphics card '%s' is no longer supported by driver '%s'"
-msgstr "%s को %s के इस संस्मरण के द्वारा समर्थन नहीं प्राप्त है ।"
+msgstr ""
#: service_harddrake:167
#, c-format
@@ -3294,56 +3261,48 @@ msgid "HardDrake"
msgstr "हार्ड ड्रैक"
#: ../menu/harddrake.desktop.in.h:2
-#, fuzzy
msgid "Hardware Central Configuration/information tool"
-msgstr "नेटवर्क संरचना"
+msgstr ""
#: ../menu/harddrake.desktop.in.h:3
-#, fuzzy
msgid "Hardware Configuration Tool"
-msgstr "नेटवर्क संरचना"
+msgstr ""
#: ../menu/localedrake-system.desktop.in.h:1
-#, fuzzy
msgid "System Regional Settings"
-msgstr "तंत्र समायोजनायें"
+msgstr ""
#: ../menu/localedrake-system.desktop.in.h:2
msgid "System wide language & country configurator"
msgstr ""
#: ../menu/localedrake-user.desktop.in.h:1
-#, fuzzy
msgid "Regional Settings"
-msgstr "समायोजनायें"
+msgstr ""
#: ../menu/localedrake-user.desktop.in.h:2
-#, fuzzy
msgid "Language & country configuration"
-msgstr "स्वंम के द्वारा संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakauth.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Authentication Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakauth.policy.in.h:2
msgid "Authentication is required to run Mageia Authentication Configuration"
msgstr ""
#: ../polkit/org.mageia.drakboot.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Boot Configuration"
-msgstr "चेतावनी का आकार"
+msgstr ""
#: ../polkit/org.mageia.drakboot.policy.in.h:2
msgid "Authentication is required to run Mageia Boot Configuration"
msgstr ""
#: ../polkit/org.mageia.drakclock.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Date and Time Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakclock.policy.in.h:2
msgid "Authentication is required to run Mageia Date and Time Configuration"
@@ -3358,27 +3317,24 @@ msgid "Authentication is required to run Mageia Disk Layout Editor"
msgstr ""
#: ../polkit/org.mageia.drakdm.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Login Manager Configuration"
-msgstr "स्वंम के द्वारा संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakdm.policy.in.h:2
msgid "Authentication is required to run Mageia Login Manager Configuration"
msgstr ""
#: ../polkit/org.mageia.drakfont.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Font Configuration"
-msgstr "स्वंम के द्वारा संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakfont.policy.in.h:2
msgid "Authentication is required to run Mageia Font Configuration"
msgstr ""
#: ../polkit/org.mageia.drakhardware.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Hardware Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakhardware.policy.in.h:2
msgid "Authentication is required to run Mageia Hardware Configuration"
@@ -3393,9 +3349,8 @@ msgid "Authentication is required to run Mageia Log Viewer"
msgstr ""
#: ../polkit/org.mageia.drakperm.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Security Permissions Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakperm.policy.in.h:2
msgid ""
@@ -3403,18 +3358,16 @@ msgid ""
msgstr ""
#: ../polkit/org.mageia.drakscanner.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Scanner Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakscanner.policy.in.h:2
msgid "Authentication is required to run Mageia Scanner Configuration"
msgstr ""
#: ../polkit/org.mageia.draksec.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Application Security Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.draksec.policy.in.h:2
msgid ""
@@ -3422,317 +3375,17 @@ msgid ""
msgstr ""
#: ../polkit/org.mageia.drakups.policy.in.h:1
-#, fuzzy
msgid "Run Mageia UPS Configuration"
-msgstr "यूपीएस चालक संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakups.policy.in.h:2
msgid "Authentication is required to run Mageia UPS Configuration"
msgstr ""
#: ../polkit/org.mageia.drakxservices.policy.in.h:1
-#, fuzzy
msgid "Run Mageia Service Configuration"
-msgstr "विपत्र चेतावनी संरचना"
+msgstr ""
#: ../polkit/org.mageia.drakxservices.policy.in.h:2
msgid "Authentication is required to run Mageia Service Configuration"
msgstr ""
-
-#~ msgid "File/_Quit"
-#~ msgstr "संचिका (F)/निकास (_Q)"
-
-#~ msgid "Autodetect _jaz drives"
-#~ msgstr "जैज़ ड्राइवों की स्वतः खोज (_j)"
-
-#~ msgid "File/_New"
-#~ msgstr "संचिका (F)/नवीन (_N)"
-
-#~ msgid "<control>N"
-#~ msgstr "<control>N"
-
-#~ msgid "File/_Open"
-#~ msgstr "संचिका (F)/खोलें (_O)"
-
-#~ msgid "<control>O"
-#~ msgstr "<control>O"
-
-#~ msgid "File/_Save"
-#~ msgstr "संचिका (F)/सुरक्षित (_S)"
-
-#~ msgid "File/Save _As"
-#~ msgstr "संचिका (F)/जैसे सुरक्षित करें ( _A)"
-
-#~ msgid "File/-"
-#~ msgstr "संचिका (F)/-"
-
-#~ msgid "Options/Test"
-#~ msgstr "विकल्प (O)/परीक्षण"
-
-#~ msgid "Help/_About..."
-#~ msgstr "सहायता (H)/के बारें में (_A)..."
-
-#~ msgid "Verbose"
-#~ msgstr "बड़बोला"
-
-#~ msgid "Autodetect _printers"
-#~ msgstr "प्रिंटरों की स्वतः खोज (_p)"
-
-#, fuzzy
-#~ msgid "Copyright (C) %s by Mageia"
-#~ msgstr "सर्वाधिकार (C) २००१-२००६ मैनड्रिव एसऐ"
-
-#~ msgid ""
-#~ "No Sound Card has been detected on your machine. Please verify that a "
-#~ "Linux-supported Sound Card is correctly plugged in.\n"
-#~ "\n"
-#~ "\n"
-#~ "You can visit our hardware database at:\n"
-#~ "\n"
-#~ "\n"
-#~ "http://www.mandrivalinux.com/en/hardware.php3"
-#~ msgstr ""
-#~ "आपके कम्प्यूटर पर कोई सांउड कार्ड नहीं पहचाना गया । कृपया सत्यापित करें कि एक लिनक्स-"
-#~ "समर्थित सांउड कार्ड भली-भांति लगा हुआ है । \n"
-#~ "\n"
-#~ "\n"
-#~ "आप हमारे हार्डवेयर डाटाबेस के अवलोकन हेतु निम्न वेब कड़ी पर जा सकते है:\n"
-#~ "\n"
-#~ "\n"
-#~ "http://www.mandrivalinux.com/hi/hardware.php3"
-
-#~ msgid ""
-#~ "Display theme\n"
-#~ "under console"
-#~ msgstr ""
-#~ "कन्सोल के अन्तर्गत\n"
-#~ "डिस्पले थीम"
-
-#~ msgid "Create new theme"
-#~ msgstr "नवीन थीम का निर्माण"
-
-#~ msgid "Text box height"
-#~ msgstr "टेक्स्ट बाक्स की ऊंचाई"
-
-#~ msgid "The width of the progress bar"
-#~ msgstr "प्रगति पट्टी की चौड़ाई"
-
-#, fuzzy
-#~ msgid "Text"
-#~ msgstr "सिर्फ पाठ"
-
-#~ msgid "Text color"
-#~ msgstr "पाठ रंग"
-
-#~ msgid "Background color"
-#~ msgstr "पृष्ठभूमि रंग"
-
-#~ msgid "Theme name"
-#~ msgstr "थीम का नाम"
-
-#~ msgid "Display logo on Console"
-#~ msgstr "पहचान-चिह्न का कन्सोल पर अवलोकन"
-
-#~ msgid "Save theme"
-#~ msgstr "थीम को सुरक्षित करें"
-
-#, fuzzy
-#~ msgid "Please enter a theme name"
-#~ msgstr "कृपया इस कार्ड हेतु बेतार के पैरामीटरों को बतायें:"
-
-#, fuzzy
-#~ msgid "Please select a splash image"
-#~ msgstr "कृपया अपने यूपीएस मॉडल का चयन करें"
-
-#~ msgid "saving Bootsplash theme..."
-#~ msgstr "बूटस्प्लॉश शैली को सुरक्षित किया जा रहा है..."
-
-#~ msgid "choose image"
-#~ msgstr "प्रतिबिंब का चयन करें"
-
-#~ msgid "Coma bug"
-#~ msgstr "कॉमा दोष"
-
-#~ msgid "whether this cpu has the Cyrix 6x86 Coma bug"
-#~ msgstr "क्या इस सीपीयू में साइरिक्स ६x८६ कॉमा दोष है"
-
-#~ msgid "Fdiv bug"
-#~ msgstr "एफ़-डिव दोष"
-
-#~ msgid ""
-#~ "Early Intel Pentium chips manufactured have a bug in their floating point "
-#~ "processor which did not achieve the required precision when performing a "
-#~ "Floating point DIVision (FDIV)"
-#~ msgstr ""
-#~ "पूर्ववर्ती निर्मित इन्टेल पेन्टियम चिपों के फ़्लोटिंग पाइंट प्रोसेसर में एक दोष थाजिसके कारण "
-#~ "जब एक फ़्लोटिंग पाइंट डिवीजन (एफ़डीआईवी) किया जा रहा हो,तब इच्छित सूक्ष्मता प्राप्त "
-#~ "नहीं होती थी"
-
-#~ msgid "Is FPU present"
-#~ msgstr "क्या एफ़पीयू उपस्थिति है"
-
-#~ msgid "yes means the processor has an arithmetic coprocessor"
-#~ msgstr "हाँ का अर्थ है कि प्रोसेसर के साथ एक गणतीय सह-प्रोसेसर है "
-
-#~ msgid "Whether the FPU has an irq vector"
-#~ msgstr "क्या एफ़०पी०यू० के पास एक आई०आर०क्यू० वेक्टर है"
-
-#~ msgid ""
-#~ "yes means the arithmetic coprocessor has an exception vector attached"
-#~ msgstr "हाँ का अर्थ है कि गणतीय सहप्रोसेसर में एक अपवाद वेक्टर भी संलग्न है"
-
-#~ msgid "F00f bug"
-#~ msgstr "एफ़००एफ़ दोष"
-
-#~ msgid ""
-#~ "early pentiums were buggy and freezed when decoding the F00F bytecode"
-#~ msgstr ""
-#~ "पूर्ववर्ती पेन्टियम दोषपूर्ण थे और जड़ हो जाते थे जबकि एफ़००एफ़ बाइटकूट का कूटवाचन किया "
-#~ "जा रहा हो"
-
-#~ msgid "Halt bug"
-#~ msgstr "दोष को तुरन्त रोकों"
-
-#~ msgid ""
-#~ "Some of the early i486DX-100 chips cannot reliably return to operating "
-#~ "mode after the \"halt\" instruction is used"
-#~ msgstr ""
-#~ "कुछ पूर्ववर्ती आई४८६डीएक्स-१०० चिपें संचालन विधा में विश्वास के साथ नहीं लौट सकती "
-#~ "हैजबकि \"halt\" निर्देश का उपयोग किया गया हो"
-
-#, fuzzy
-#~ msgid "Bugs"
-#~ msgstr "बस"
-
-#~ msgid "Unknown/Others"
-#~ msgstr "अज्ञात/अन्य"
-
-#~ msgid "(default value: %s)"
-#~ msgstr "(डिफ़ाल्ट मूल्य: %s)"
-
-#~ msgid "Security Level:"
-#~ msgstr "सुरक्षा स्तर:"
-
-#~ msgid "Security Alerts:"
-#~ msgstr "सुरक्षा चेतावनियां:"
-
-#~ msgid "Security Administrator:"
-#~ msgstr "सुरक्षा प्रबंधक:"
-
-#~ msgid "Basic options"
-#~ msgstr "आधार-भूत विकल्प"
-
-#~ msgid "Network Options"
-#~ msgstr "नेटवर्क विकल्प"
-
-#~ msgid "System Options"
-#~ msgstr "तंत्र के विकल्प"
-
-#~ msgid "Periodic Checks"
-#~ msgstr "समय-समय पर की जाने वाली जाँचें"
-
-#~ msgid "Please wait, setting security level..."
-#~ msgstr "कृपया प्रतीक्षा करें, सुरक्षा स्तर की स्थापना हो रही है..."
-
-#~ msgid "Please wait, setting security options..."
-#~ msgstr "कृपया प्रतिक्षा करें, सुरक्षा विकल्पों को स्थापित किया जा रहा है..."
-
-#, fuzzy
-#~ msgid ""
-#~ "The following localization packages do not seem to be useful for your "
-#~ "system:"
-#~ msgstr "निम्नलिखित पैकेजों का संसाधन करना आवश्यक है:\n"
-
-#, fuzzy
-#~ msgid "Do you want to remove these packages?"
-#~ msgstr "क्या आप उचित संरचना टूल को चलाना चाहते है ?"
-
-#, fuzzy
-#~ msgid ""
-#~ "The following hardware packages do not seem to be useful for your system:"
-#~ msgstr "निम्नलिखित पैकेजों का संसाधन करना आवश्यक है:\n"
-
-#~ msgid "Please wait, adding media..."
-#~ msgstr "कृपया प्रतीक्षा करें, माध्यम को जोड़ा जा रहा है..."
-
-#~ msgid "The change is done, but to be effective you must logout"
-#~ msgstr ""
-#~ "परिवर्तनों को कर दिया गया है, परन्तु इनको प्रभाव में लाये जाने के लिए आपको संत्र-समाप्त "
-#~ "करना पड़ेगा "
-
-#~ msgid "Restart XFS"
-#~ msgstr "एक्सएफ़एस को पुनः आरम्भ करें"
-
-#~ msgid "Error!"
-#~ msgstr "त्रुटि !"
-
-#~ msgid "I cannot find needed image file `%s'."
-#~ msgstr "मै आवश्यक प्रतिबिंब संचिका `%s' को खोज नहीं सका ।"
-
-#~ msgid "Auto Install Configurator"
-#~ msgstr "स्वचालित संसाधन संरचनाकर्ता"
-
-#~ msgid "replay"
-#~ msgstr "पुनः चलाना"
-
-#~ msgid "manual"
-#~ msgstr "मैनुअल"
-
-#~ msgid ""
-#~ "Please choose for each step whether it will replay like your install, or "
-#~ "it will be manual"
-#~ msgstr ""
-#~ "कृपया प्रत्येक चरण के लिए चयन करें कि वह आपके संसाधन जैसा ही चलाया जायेगा,या यह मैनुयल "
-#~ "होगा"
-
-#~ msgid "Insert a blank floppy in drive %s"
-#~ msgstr "%s में एक खाली फ़्लापी डालें"
-
-#~ msgid "Creating auto install floppy"
-#~ msgstr "स्वतः संसाधन फ़्लापी का निर्माण किया जा रहा है"
-
-#~ msgid "Insert another blank floppy in drive %s (for drivers disk)"
-#~ msgstr "ड्राइव %s में एक अन्य खाली फ़्लापी को डालें (चालकों की डिस्क के लिए)"
-
-#~ msgid "Creating auto install floppy (drivers disk)"
-#~ msgstr "स्वतः संसाधन फ़्लापी का निर्माण किया जा रहा है (चालकों की डिस्क)"
-
-#~ msgid ""
-#~ "\n"
-#~ "Welcome.\n"
-#~ "\n"
-#~ "The parameters of the auto-install are available in the sections on the "
-#~ "left"
-#~ msgstr ""
-#~ "\n"
-#~ "स्वागत।\n"
-#~ "\n"
-#~ "विभागों के बाँयें तरफ़ स्वतः-संसाधन के पैरामीटर उपलब्ध है"
-
-#~ msgid ""
-#~ "The floppy has been successfully generated.\n"
-#~ "You may now replay your installation."
-#~ msgstr ""
-#~ "फ़्लापी का निर्माण सफ़लतापूर्वक हो चुका है ।\n"
-#~ "आप अपने संसाधन को पुनः चला सकते है ।"
-
-#~ msgid "Auto Install"
-#~ msgstr "स्वतः संसाधन"
-
-#~ msgid "Add an item"
-#~ msgstr "एक ईकाई (आईटम) को जोड़ें"
-
-#~ msgid "Remove the last item"
-#~ msgstr "अंतिम मद को हटायें"
-
-#~ msgid "Menudrake"
-#~ msgstr "मीनूड्रैक"
-
-#~ msgid "Msec"
-#~ msgstr "मिली-सेकंड"
-
-#~ msgid "Urpmi"
-#~ msgstr "यू०आर०पी०एम०आई०"
-
-#~ msgid "Userdrake"
-#~ msgstr "यूज़रड्रैक"
an class="hl opt">} sub gtkset_background { &mygtk2::set_root_window_background } sub gtkset_text { my ($w, $s) = @_; $w->set_text($s); $w; } sub gtkcombo_setpopdown_strings { my $w = shift; $w->set_popdown_strings(@_); $w; } sub gtkset_mousecursor { my ($type, $w) = @_; ($w || gtkroot())->set_cursor(Gtk2::Gdk::Cursor->new($type)); $w; } sub gtksignal_connect { my $w = shift; $w->signal_connect(@_); $w; } sub gtkset_name { my ($widget, $name) = @_; $widget->set_name($name); $widget; } sub gtkpowerpack { #- Get Default Attributes (if any). 2 syntaxes allowed : #- gtkpowerpack( {expand => 1, fill => 0}, $box...) : the attributes are picked from a specified hash ref #- gtkpowerpack(1, 0, 1, $box, ...) : the attributes are picked from the non-ref list, in the order (expand, fill, padding, pack_end). my @attributes_list = qw(expand fill padding pack_end); my $default_attrs = {}; if (ref($_[0]) eq 'HASH') { $default_attrs = shift; } elsif (!ref($_[0])) { foreach (@attributes_list) { ref($_[0]) and last; $default_attrs->{$_} = shift; } } my $box = shift; while (@_) { #- Get attributes (if specified). 4 syntaxes allowed (default values are undef ie. false...) : #- gtkpowerpack({defaultattrs}, $box, $widget1, $widget2, ...) : the attrs are picked from the default ones (if they exist) #- gtkpowerpack($box, {fill=>1, expand=>0, ...}, $widget1, ...) : the attributes are picked from a specified hash ref #- gtkpowerpack($box, [1,0,1], $widget1, ...) : the attributes are picked from the array ref : (expand, fill, padding, pack_end). #- gtkpowerpack({attr=>'arg'}, $box, 1, $widget1, 0, $widget2, etc...) : the 'arg' value will tell gtkpowerpack to always read the #- attr value directly in the arg list (avoiding confusion between value 0 and Gtk::Label("0"). That can simplify some writings but #- this arg(s) MUST then be present... my (%attr, $attrs); ref($_[0]) eq 'HASH' || ref($_[0]) eq 'ARRAY' and $attrs = shift; foreach (@attributes_list) { if (($default_attrs->{$_} || '') eq 'arg') { ref($_[0]) and internal_error "error in packing definition\n"; $attr{$_} = shift; ref($attrs) eq 'ARRAY' and shift @$attrs; } elsif (ref($attrs) eq 'HASH' && defined($attrs->{$_})) { $attr{$_} = $attrs->{$_}; } elsif (ref($attrs) eq 'ARRAY') { $attr{$_} = shift @$attrs; } elsif (defined($default_attrs->{$_})) { $attr{$_} = int $default_attrs->{$_}; } else { $attr{$_} = 0; } } #- Get and pack the widget (create it if necessary to a label...) my $widget = ref($_[0]) ? shift : gtknew('WrappedLabel', text => shift); my $pack_call = 'pack_' . ($attr{pack_end} ? 'end' : 'start'); $box->$pack_call($widget, $attr{expand}, $attr{fill}, $attr{padding}); $widget->show; } return $box; } sub gtktreeview_children { my ($model, $iter) = @_; my @l; $model or return; for (my $p = $model->iter_children($iter); $p; $p = $model->iter_next($p)) { push @l, $p; } @l; } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # create # # Helpers that allow omitting common operations on common widgets # (e.g. create widgets with good default properties) sub create_pixbutton { my ($label, $pix, $reverse_order) = @_; my @label_and_pix = (0, $label, if_($pix, 0, $pix)); gtkadd(gtknew('Button'), gtknew('HBox', spacing => 3, children => [ 1, "", $reverse_order ? reverse(@label_and_pix) : @label_and_pix, 1, "", ])); } sub create_adjustment { my ($val, $min, $max) = @_; Gtk2::Adjustment->new($val, $min, $max + 1, 1, ($max - $min + 1) / 10, 1); } sub create_scrolled_window { my ($W, $o_policy, $o_viewport_shadow) = @_; gtknew('ScrolledWindow', ($o_policy ? (h_policy => $o_policy->[0], v_policy => $o_policy->[1]) : ()), child => $W, if_($o_viewport_shadow, shadow_type => $o_viewport_shadow)); } sub n_line_size { my ($nbline, $type, $widget) = @_; my $spacing = ${{ text => 3, various => 17 }}{$type}; my %fontinfo = gtkfontinfo($widget); round($nbline * ($fontinfo{ascent} + $fontinfo{descent} + $spacing) + 8); } # Glib::Markup::escape_text() if no use for us because it'll do extra # s/X/&foobar;/ (such as s/'/&apos;/) that are suitable for # Gtk2::Labels but are not for Gtk2::TextViews, resulting in # displaying the raw enriched text instead... # sub escape_text_for_TextView_markup_format { my ($str) = @_; my %rules = ('&' => '&amp;', '<' => '&lt;', '>' => '&gt;', ); eval { $str =~ s!([&<>])!$rules{$1}!g }; #^(&(amp|lt|gt);)!!) { if (my $err = $@) { internal_error("$err\n$str"); } $str; } sub markup_to_TextView_format { my ($s, $o_default_attrs) = @_; require interactive; my $l = interactive::markup_parse($s) or return $s; foreach (@$l) { my ($_txt, $attrs) = @$_; if ($attrs) { $attrs->{weight} eq 'bold' and $attrs->{weight} = do { require Gtk2::Pango; Gtk2::Pango->PANGO_WEIGHT_BOLD }; $attrs->{size} eq 'larger' and do { require Gtk2::Pango; $attrs->{scale} = Gtk2::Pango->PANGO_SCALE_X_LARGE; # equivalent to Label's size => 'larger' delete $attrs->{size}; }; } #- nb: $attrs may be empty, need special handling if $o_default_attrs is used add2hash_($_->[1] ||= {}, $o_default_attrs) if $o_default_attrs; } $l; } sub create_box_with_title { my ($o, @l) = @_; my $nbline = sum(map { round(length($_) / 60 + 1/2) } map { split "\n" } @l); my $box = gtknew('VBox'); if ($nbline == 0) { $o->{box_size} = 0; return $box; } $o->{box_size} = n_line_size($nbline, 'text', $box); if (@l <= 2 && $nbline > 4) { $o->{icon} && !$::isWizard and eval { gtkpack__($box, gtknew('HBox', border_width => 5, children_loose => [ gtkcreate_img($o->{icon}) ])) }; my $wanted = $o->{box_size}; $o->{box_size} = min(200, $o->{box_size}); my $has_scroll = $o->{box_size} < $wanted; chomp(my $text = join("\n", @l)); my $wtext = gtknew('TextView', text => markup_to_TextView_format($text)); $wtext->set_left_margin(3); $wtext->can_focus($has_scroll); my $width = 400; my $scroll = gtknew('ScrolledWindow', child => $wtext, width => $width, height => 200); $scroll->signal_connect(realize => sub { my $layout = $wtext->create_pango_layout($text); $layout->set_width(($width - 10) * Gtk2::Pango->scale); $wtext->set_size_request($width, min(200, ($layout->get_pixel_size)[1] + 10)); $scroll->set_size_request($width, min(200, ($layout->get_pixel_size)[1] + 10)); $o->{rwindow}->queue_resize; }); gtkpack_($box, $o->{box_allow_grow} || 0, $scroll); } else { my $new_label = sub { my ($txt) = @_; ref($txt) ? $txt : gtknew('WrappedLabel', text_markup => $txt, width=> 490); }; gtkpack__($box, if_($::isWizard, gtknew('Label', height => 10)), (map { my $w = $new_label->($_); $::isWizard ? gtknew('HBox', children_tight => [ gtknew('Label', width => 20), $w ]) : $w; } @l), if_($::isWizard, gtknew('Label', height => 15)), ); } } sub _create_dialog { my ($title, $o_options) = @_; my $options = $o_options || {}; #- keep compatibility with "transient" now called "transient_for" $options->{transient_for} = delete $options->{transient} if $options->{transient}; gtknew('Dialog', title => $title, position_policy => 'center-on-parent', # center-on-parent does not work modal => 1, if_(!$::isInstall, icon_no_error => wm_icon()), %$options, allow_unknown_options => 1, ); } # drakfloppy / drakfont / harddrake2 / mcc sub create_dialog { my ($title, $label, $o_options) = @_; my $ret = 0; $o_options ||= {}; $o_options->{transient_for} = $::main_window if !$o_options->{transient_for} && $::main_window; my $dialog = gtkset_border_width(_create_dialog($title, $o_options), 10); $dialog->set_border_width(10); my $text = ref($label) ? $label : $o_options->{use_markup} ? gtknew('WrappedLabel', text_markup => $label) : gtknew('WrappedLabel', text => $label); gtkpack($dialog->vbox, gtknew('HBox', children => [ if_($o_options->{stock}, 0, Gtk2::Image->new_from_stock($o_options->{stock}, 'dialog'), 0, gtknew('Label', text => " "), ), 1, $o_options->{scroll} ? create_scrolled_window($text, [ 'never', 'automatic' ]) : $text, ]), ); if ($o_options->{cancel}) { $dialog->action_area->pack_start( gtknew('Button', text => N("Cancel"), clicked => sub { $ret = 0; $dialog->destroy; Gtk2->main_quit }, can_default => 1), 1, 1, 0); } my $button = gtknew('Button', text => N("Ok"), can_default => 1, clicked => sub { $ret = 1; $dialog->destroy; Gtk2->main_quit }); $dialog->action_area->pack_start($button, 1, 1, 0); $button->grab_default; $dialog->set_has_separator(0); $dialog->show_all; Gtk2->main; $ret; } sub info_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-info' }); create_dialog($title, $label, $o_options); } sub warn_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-warning', cancel => 1 }); create_dialog($title, $label, $o_options); } sub err_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-error' }); create_dialog($title, $label, $o_options); } sub create_hbox { gtknew('HButtonBox', layout => $_[0]) } sub create_vbox { gtknew('VButtonBox', layout => $_[0]) } sub create_factory_menu_ { my ($type, $name, $window, @menu_items) = @_; my $widget = Gtk2::ItemFactory->new($type, $name, my $accel_group = Gtk2::AccelGroup->new); $widget->create_items($window, @menu_items); $window->add_accel_group($accel_group); ($widget->get_widget($name), $widget); } sub create_factory_popup_menu { create_factory_menu_("Gtk2::Menu", '<main>', @_) } sub create_factory_menu { create_factory_menu_("Gtk2::MenuBar", '<main>', @_) } sub create_menu { my $title = shift; my $w = Gtk2::MenuItem->new($title); $w->set_submenu(gtkshow(gtkappend(Gtk2::Menu->new, @_))); $w; } sub create_notebook { my $book = gtknew('Notebook'); while (@_) { my ($page, $title) = splice(@_, 0, 2); gtkappend_page($book, $page, $title); } $book; } sub create_packtable { my ($options, @l) = @_; my $w = Gtk2::Table->new(0, 0, $options->{homogeneous} || 0); add2hash_($options, { xpadding => 5, ypadding => 0 }); each_index { my ($i, $l) = ($::i, $_); each_index { my $j = $::i; if ($_) { ref $_ or $_ = gtknew('WrappedLabel', text => $_); $j != $#$l && !$options->{mcc} ? $w->attach($_, $j, $j + 1, $i, $i + 1, 'fill', 'fill', $options->{xpadding}, $options->{ypadding}) : $w->attach($_, $j, $j + 1, $i, $i + 1, ['expand', 'fill'], ref($_) eq 'Gtk2::ScrolledWindow' || $_->get_data('must_grow') ? ['expand', 'fill'] : [], 0, 0); $_->show; } } @$l; } @l; $w->set_col_spacings($options->{col_spacings} || 0); $w->set_row_spacings($options->{row_spacings} || 0); gtkset_border_width($w, $::isInstall ? 3 : 10); } my $wm_is_kde; sub create_okcancel { my ($w, $o_ok, $o_cancel, $_o_spread, @other) = @_; # @other is a list of extra buttons (usually help (eg: XFdrake/drakx caller) or advanced (eg: interactive caller) button) # extra buttons have the following structure [ label, handler, is_first, pack_right ] local $::isWizard = $::isWizard && !$w->{pop_it}; my $cancel; if (defined $o_cancel || defined $o_ok) { $cancel = $o_cancel; } elsif (!$::Wizard_no_previous) { $cancel = $::isWizard ? N("Previous") : N("Cancel"); } my $ok = defined $o_ok ? $o_ok : $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next")) : N("Ok"); my $bok = $ok && ($w->{ok} = gtknew('Button', text => $ok, clicked => $w->{ok_clicked} || sub { $w->{retval} = 1; Gtk2->main_quit })); my $bprev; if ($cancel) { $bprev = $w->{cancel} = gtknew('Button', text => $cancel, clicked => $w->{cancel_clicked} || sub { log::l("default cancel_clicked"); undef $w->{retval}; Gtk2->main_quit }); } $w->{wizcancel} = gtknew('Button', text => N("Cancel"), clicked => sub { die 'wizcancel' }) if $::isWizard && !$::isInstall; if (!defined $wm_is_kde) { require any; $wm_is_kde = !$::isInstall && any::running_window_manager() eq "kwin" || 0; } my $f = sub { $w->{buttons}{$_[0][0]} = gtknew('Button', text => $_[0][0], clicked => $_[0][1]) }; my @left = ((map { $f->($_) } grep { $_->[2] && !$_->[3] } @other), map { $f->($_) } grep { !$_->[2] && !$_->[3] } @other); my @right = ((map { $f->($_) } grep { $_->[2] && $_->[3] } @other), map { $f->($_) } grep { !$_->[2] && $_->[3] } @other); # we put space to group buttons in two packs (but if there's only one when not in wizard mode) # but in the installer where all windows run in wizard mode because of design even when not in a wizard step $bprev = gtknew('Label') if !$cancel && $::Wizard_no_previous && !@left && !@right; if ($::isWizard) { # wizard mode: order is cancel/left_extras/white/right_extras/prev/next unshift @left, $w->{wizcancel} if !$::isInstall; push @right, $bprev, $bok; } else { # normal mode: cancel/ok button follow GNOME's HIG unshift @left, ($wm_is_kde ? $bok : $bprev); push @left, gtknew('Label') if $ok && $cancel; # space buttons but if there's only one button push @right, ($wm_is_kde ? $bprev : $bok); } gtknew('VBox', spacing => 5, children_loose => [ gtknew('HBox', height => 5), gtknew('HSeparator'), gtknew('HBox', children_loose => [ map { gtknew('HButtonBox', layout => $_->[1], children_loose => [ map { $_->can_default($::isWizard); $_; } grep { $_ } @{$_->[0]} ]); } ([ \@left, 'start' ], [ \@right, 'end' ], ) ]), ]); } sub _setup_paned { my ($paned, $child1, $child2, %options) = @_; foreach ([ 'resize1', 0 ], [ 'shrink1', 1 ], [ 'resize2', 1 ], [ 'shrink2', 1 ]) { $options{$_->[0]} = $_->[1] unless defined($options{$_->[0]}); } $paned->pack1(gtkshow($child1), $options{resize1}, $options{shrink1}); $paned->pack2(gtkshow($child2), $options{resize2}, $options{shrink2}); gtkshow($paned); } sub create_vpaned { _setup_paned(Gtk2::VPaned->new, @_); } sub create_hpaned { _setup_paned(Gtk2::HPaned->new, @_); } sub gtkcreate_frame { my ($label) = @_; gtknew('Frame', text => $label, border_width => 5); } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # helpers # # Functions that do typical operations on widgets, that you may need in # several places of your programs. sub _find_imgfile { my ($name) = @_; if ($name =~ m|/| && -f $name) { $name; } else { foreach my $path (icon_paths()) { foreach ('', '.png', '.xpm') { my $file = "$path/$name$_"; -f $file and return $file; } } } } # use it if you want to display an icon/image in your app sub gtkcreate_img { my ($file, $o_size) = @_; gtknew('Image', file => $file, if_($o_size, size => $o_size)); } # use it if you want to draw an image onto a drawingarea sub gtkcreate_pixbuf { my ($file, $o_size) = @_; gtknew('Pixbuf', file => $_[0], if_($o_size, size => $o_size)); } sub gtktext_append { gtktext_insert(@_, append => 1) } sub may_set_icon { my ($w, $name) = @_; if (my $f = $name && _find_imgfile($name)) { $w->set_icon(gtkcreate_pixbuf($f)); } } sub gtktext_insert { &mygtk2::_text_insert } sub icon_paths { &mygtk2::_icon_paths } sub add_icon_path { &mygtk2::add_icon_path } sub set_main_window_size { my ($o) = @_; mygtk2::set_main_window_size($o->{rwindow}); } # extracts interesting font metrics for a given widget sub gtkfontinfo { my ($widget) = @_; my $context = $widget->get_pango_context; my $metrics = $context->get_metrics($context->get_font_description, $context->get_language); my %fontinfo; foreach (qw(ascent descent approximate_char_width approximate_digit_width)) { no strict; my $func = "get_$_"; $fontinfo{$_} = Gtk2::Pango->pixels($metrics->$func); } %fontinfo; } sub gtkmodify_font { my ($w, $arg) = @_; $w->modify_font(ref($arg) ? $arg : Gtk2::Pango::FontDescription->from_string($arg)); $w; } sub gtkset_property { my ($w, $property, $value) = @_; $w->set_property($property, $value); $w; } sub set_back_pixbuf { my ($widget, $pixbuf) = @_; my $window = $widget->window; my ($width, $height) = ($pixbuf->get_width, $pixbuf->get_height); my $pixmap = Gtk2::Gdk::Pixmap->new($window, $width, $height, $window->get_depth); $pixbuf->render_to_drawable($pixmap, $widget->style->fg_gc('normal'), 0, 0, 0, 0, $width, $height, 'none', 0, 0); $window->set_back_pixmap($pixmap, 0); } sub set_back_pixmap { my ($w) = @_; return if !$w->realized; my $window = $w->window; my $pixmap = $w->{back_pixmap} ||= Gtk2::Gdk::Pixmap->new($window, 1, 2, $window->get_depth); my $style = $w->get_style; $pixmap->draw_points($style->bg_gc('normal'), 0, 0); $pixmap->draw_points($style->base_gc('normal'), 0, 1); $window->set_back_pixmap($pixmap); } sub add2notebook { my ($n, $title, $book) = @_; $n->append_page($book, gtkshow(gtknew('Label', text => $title))); $book->show; } sub string_size { my ($widget, $text) = @_; my $layout = $widget->create_pango_layout($text); my @size = $layout->get_pixel_size; @size; } sub string_width { my ($widget, $text) = @_; my ($width, undef) = string_size($widget, $text); $width; } my ($def_step_icon, $def_step_title); sub set_default_step_items { ($def_step_icon, $def_step_title) = @_; } sub get_default_step_items { ($def_step_icon, $def_step_title) } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # toplevel window creation helper # # Use the 'new' function as a method constructor and then 'main' on it to # launch the main loop. Use $o->{retval} to indicate that the window needs # to terminate. # Set $::isWizard to have a wizard appearance. # Set $::isEmbedded and $::XID so that the window will plug. sub new { my ($type, $title, %opts) = @_; my $o = bless { %opts }, $type; while (my $e = shift @tempory::objects) { $e->destroy } my $icon = find { _find_imgfile($_) } $opts{icon}, (get_default_step_items())[0], 'banner-generic-ad'; my $banner_title = $opts{banner_title}; my $window = gtknew( 'MagicWindow', title => $title || '', pop_it => $o->{pop_it}, $::isInstall ? (banner => Gtk2::Banner->new($icon, $title || (get_default_step_items())[1])) : (), $::isStandalone && $banner_title && $icon ? (banner => Gtk2::Banner->new($icon, $banner_title)) : (), child => gtknew('VBox'), width => $opts{width}, height => $opts{height}, default_width => $opts{default_width}, default_height => $opts{default_height}, modal => $opts{modal} || $grab || $o->{grab} || $o->{modal} || $o->{transient}, no_Window_Manager => exists $opts{no_Window_Manager} ? $opts{no_Window_Manager} : !$::isStandalone, if_(!$::isInstall, icon_no_error => wm_icon()), if_($o->{transient}, transient_for => $o->{transient}), ); $window->set_border_width(10) if !$window->{pop_it} && !$::noborderWhenEmbedded; $o->{rwindow} = $o->{window} = $window; $o->{real_window} = $window->{real_window}; $o->{pop_it} = $window->{pop_it}; $o; } sub main { my ($o, $o_completed, $o_canceled) = @_; gtkset_mousecursor_normal(); $o->show; mygtk2::main($o->{rwindow}, sub { $o->{retval} ? !$o_completed || $o_completed->() : !$o_canceled || $o_canceled->() }); $o->{retval}; } sub show($) { my ($o) = @_; $o->{rwindow}->show; } sub destroy($) { my ($o) = @_; $o->{rwindow}->destroy; flush(); } sub DESTROY { goto &destroy } sub sync { my ($o) = @_; show($o); flush(); } sub flush() { gtkflush() } sub shrink_topwindow { my ($o) = @_; $o->{real_window}->signal_emit('size_allocate', Gtk2::Gdk::Rectangle->new(-1, -1, -1, -1)); } sub exit { gtkset_mousecursor_normal(); #- for restoring a normal in any case flush(); if ($::isStandalone) { require standalone; standalone::__exit($_[1]); #- workaround } else { c::_exit($_[1]); #- workaround } } #- in case "exit" above was not called by the program END { &exit() } # -=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=---=-=--- # ask # # Full UI managed functions that will return to you the value that the # user chose. sub ask_warn { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_warn(@_); main($w) } sub ask_yesorno { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Yes"), N("No")); main($w) } sub ask_okcancel { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Is this correct?"), N("Ok"), N("Cancel")); main($w) } sub ask_from_entry { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_from_entry(@_); main($w) } sub ask_dir { my $w = ugtk2->new(shift @_, grab => 1); $w->_ask_dir(@_); main($w) } sub _ask_from_entry($$@) { my ($o, @msgs) = @_; my $entry = gtknew('Entry'); my $f = sub { $o->{retval} = $entry->get_text; Gtk2->main_quit }; $o->{ok_clicked} = $f; $o->{cancel_clicked} = sub { undef $o->{retval}; Gtk2->main_quit }; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), gtksignal_connect($entry, 'activate' => $f), ($o->{hide_buttons} ? () : create_okcancel($o))), ); $entry->grab_focus; } sub _ask_warn($@) { my ($o, @msgs) = @_; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), my $w = gtknew('Button', text => N("Ok"), clicked => sub { Gtk2->main_quit }), ), ); $w->grab_focus; } sub _ask_okcancel($@) { my ($o, @msgs) = @_; my ($ok, $cancel) = splice @msgs, -2; gtkadd($o->{window}, gtkpack(create_box_with_title($o, @msgs), create_okcancel($o, $ok, $cancel), ) ); $o->{ok}->grab_focus; } sub create_file_selector { my (%opts) = @_; my $w = ugtk2->new(delete $opts{title}, modal => 1); my ($message, $save, $want_a_dir) = (delete $opts{message}, delete $opts{save}, delete $opts{want_a_dir}); my $action = $want_a_dir ? ($save ? 'create_folder' : 'select_folder') : ($save ? 'save' : 'open'); add2hash(\%opts, { width => 480, height => 250 }); gtkadd($w->{window}, gtkpack_(create_box_with_title($w, $message), 1, $w->{chooser} = gtknew('FileChooser', action => $action, %opts), 0, create_okcancel($w), )); $w->{chooser}->signal_connect(file_activated => sub { $w->{ok}->clicked }); $w; } sub file_selected_check { my ($save, $want_a_dir, $file) = @_; if (!$file) { N("No file chosen"); } elsif (-f $file && $want_a_dir) { N("You have chosen a file, not a directory"); } elsif (-d $file && !$want_a_dir) { N("You have chosen a directory, not a file"); } elsif (!-e $file && !$save) { $want_a_dir ? N("No such directory") : N("No such file"); } else { ''; } } sub _ask_file { my ($o, $title, $path) = @_; my $w = create_file_selector(title => $title, want_a_dir => 0, directory => $path); put_in_hash($o, $w); $w->{ok}->signal_connect(clicked => sub { $o->{retval} = $w->{chooser}->get_filename }); } sub _ask_dir { my ($o, $title, $path) = @_; my $w = create_file_selector(title => $title, want_a_dir => 1, directory => $path); put_in_hash($o, $w); $w->{ok}->signal_connect(clicked => sub { $o->{retval} = $w->{chooser}->get_filename }); } sub ask_browse_tree_info { my ($common) = @_; my $w = ugtk2->new($common->{title}); my $tree_model = Gtk2::TreeStore->new("Glib::String", "Gtk2::Gdk::Pixbuf", "Glib::String"); my $tree = Gtk2::TreeView->new_with_model($tree_model); $tree->get_selection->set_mode('browse'); $tree->append_column(my $textcolumn = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 0)); $tree->append_column(my $pixcolumn = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererPixbuf->new, 'pixbuf' => 1)); $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 2)); $tree->set_headers_visible(0); $tree->set_rules_hint(1); $textcolumn->set_min_width(200); $textcolumn->set_max_width(200); gtkadd($w->{window}, gtknew('VBox', spacing => 5, children => [ 0, $common->{message}, 1, gtknew('HBox', children_loose => [ gtknew('ScrolledWindow', child => $tree), gtknew('Frame', text => N("Info"), child => gtknew('ScrolledWindow', child => my $info = gtknew('TextView')), ) ]), 0, my $status = gtknew('Label'), if_($common->{auto_deps}, 0, gtknew('CheckButton', text => $common->{auto_deps}, active_ref => \$common->{state}{auto_deps}) ), 0, my $box2 = gtknew('HBox', spacing => 10), ])); #gtkpack__($box2, my $toolbar = Gtk2::Toolbar->new('horizontal', 'icons')); gtkpack__($box2, my $toolbar = Gtk2::Toolbar->new); my @l = ([ $common->{ok}, 1 ], if_($common->{cancel}, [ $common->{cancel}, 0 ])); @l = reverse @l if !$::isInstall; my @buttons = map { my ($t, $val) = @$_; $box2->pack_end(my $w = gtknew('Button', text => $t, clicked => sub { $w->{retval} = $val; Gtk2->main_quit; }), 0, 1, 20); $w->show; $w; } @l; @buttons = reverse @buttons if !$::isInstall; gtkpack__($box2, gtknew('Button', text => N("Help"), clicked => sub { ask_warn(N("Help"), $common->{interactive_help}->()); })) if $common->{interactive_help}; $status->show; $w->{window}->set_size_request(map { $_ - 2 * $border - 4 } $w->{windowwidth}, $w->{windowheight}) if !$::isInstall; $buttons[0]->grab_focus; $w->{rwindow}->show; my @toolbar = (ftout => [ N("Expand Tree"), sub { $tree->expand_all } ], ftin => [ N("Collapse Tree"), sub { $tree->collapse_all } ], reload => [ N("Toggle between flat and group sorted"), sub { invbool(\$common->{state}{flat}); $common->{rebuild_tree}->() } ]); foreach my $ic (@{$common->{icons} || []}) { push @toolbar, ($ic->{icon} => [ $ic->{help}, sub { if ($ic->{code}) { my $_w = $ic->{wait_message} && $common->{wait_message}->('', $ic->{wait_message}); $ic->{code}(); $common->{rebuild_tree}->(); } } ]); } my %toolbar = @toolbar; foreach (grep_index { $::i % 2 == 0 } @toolbar) { $toolbar->append_item(undef, $toolbar{$_}[0], undef, gtkcreate_img("$_.png"), $toolbar{$_}[1]); } $pixcolumn->{is_pix} = 1; $common->{widgets} = { w => $w, tree => $tree, tree_model => $tree_model, info => $info, status => $status }; ask_browse_tree_info_given_widgets($common); } sub ask_browse_tree_info_given_widgets { my ($common) = @_; my $w = $common->{widgets}; my ($curr, $prev_label, $idle, $mouse_toggle_pending); my (%wtree, %ptree, %pix, %node_state, %state_stats); my $update_size = sub { if ($w->{status}) { my $new_label = $common->{get_status}(); $prev_label ne $new_label and $w->{status}->set($prev_label = $new_label); } }; my $set_node_state_flat = sub { my ($iter, $state) = @_; $state eq 'XXX' and return; $pix{$state} ||= gtkcreate_pixbuf($state); $w->{tree_model}->set($iter, 1 => $pix{$state}); }; my $set_node_state_tree; $set_node_state_tree = sub { my ($iter, $state) = @_; my $iter_str = $w->{tree_model}->get_path_str($iter); $state eq 'XXX' and return; $pix{$state} ||= gtkcreate_pixbuf($state); if ($node_state{$iter_str} ne $state) { my $parent; if (!$w->{tree_model}->iter_has_child($iter) && ($parent = $w->{tree_model}->iter_parent($iter))) { my $parent_str = $w->{tree_model}->get_path_str($parent); my $stats = $state_stats{$parent_str} ||= {}; $stats->{$node_state{$iter_str}}--; $stats->{$state}++; my @list = grep { $stats->{$_} > 0 } keys %$stats; my $new_state = @list == 1 ? $list[0] : 'semiselected'; $node_state{$parent_str} ne $new_state and $set_node_state_tree->($parent, $new_state); } $w->{tree_model}->set($iter, 1 => $pix{$state}); $node_state{$iter_str} = $state; #- cache for efficiency } }; my $set_node_state = $common->{state}{flat} ? $set_node_state_flat : $set_node_state_tree; my $set_leaf_state = sub { my ($leaf, $state) = @_; $set_node_state->($_, $state) foreach @{$ptree{$leaf}}; }; my $add_parent; $add_parent = sub { my ($root, $state) = @_; $root or return undef; if (my $w = $wtree{$root}) { return $w } my $s; foreach (split '\|', $root) { my $s2 = $s ? "$s|$_" : $_; $wtree{$s2} ||= do { my $iter = $w->{tree_model}->append_set($s ? $add_parent->($s, $state) : undef, [ 0 => $_ ]); $iter; }; $s = $s2; } $set_node_state->($wtree{$s}, $state); #- use this state by default as tree is building. $wtree{$s}; }; my $add_node = sub { my ($leaf, $root, $options) = @_; my $state = $common->{node_state}($leaf) or return; if ($leaf) { my $iter = $w->{tree_model}->append_set($add_parent->($root, $state), [ 0 => $leaf ]); $set_node_state->($iter, $state); push @{$ptree{$leaf}}, $iter; } else { my $parent = $add_parent->($root, $state); #- hackery for partial displaying of trees, used in rpmdrake: #- if leaf is void, we may create the parent and one child (to have the [+] in front of the parent in the ctree) #- though we use '' as the label of the child; then rpmdrake will connect on tree_expand, and whenever #- the first child has '' as the label, it will remove the child and add all the "right" children $options->{nochild} or $w->{tree_model}->append_set($parent, [ 0 => '' ]); } }; my $clear_all_caches = sub { foreach (values %ptree) { foreach my $n (@$_) { delete $node_state{$w->{tree_model}->get_path_str($n)}; } } foreach (values %wtree) { my $iter_str = $w->{tree_model}->get_path_str($_); delete $node_state{$iter_str}; delete $state_stats{$iter_str}; } %ptree = %wtree = (); }; $common->{delete_all} = sub { $clear_all_caches->(); $w->{tree_model}->clear; }; $common->{rebuild_tree} = sub { $common->{delete_all}->(); $set_node_state = $common->{state}{flat} ? $set_node_state_flat : $set_node_state_tree; $common->{build_tree}($add_node, $common->{state}{flat}, $common->{tree_mode}); &$update_size; }; $common->{delete_category} = sub { my ($cat) = @_; exists $wtree{$cat} or return; foreach (keys %ptree) { my @to_remove; foreach my $node (@{$ptree{$_}}) { my $category; my $parent = $node; my @parents; while ($parent = $w->{tree_model}->iter_parent($parent)) { #- LEAKS my $parent_name = $w->{tree_model}->get($parent, 0); $category = $category ? "$parent_name|$category" : $parent_name; $_->[1] = "$parent_name|$_->[1]" foreach @parents; push @parents, [ $parent, $category ]; } if ($category =~ /^\Q$cat/) { push @to_remove, $node; foreach (@parents) { next if $_->[1] eq $cat || !exists $wtree{$_->[1]}; delete $wtree{$_->[1]}; delete $node_state{$w->{tree_model}->get_path_str($_->[0])}; delete $state_stats{$w->{tree_model}->get_path_str($_->[0])}; } } } foreach (@to_remove) { delete $node_state{$w->{tree_model}->get_path_str($_)}; } @{$ptree{$_}} = difference2($ptree{$_}, \@to_remove); } if (exists $wtree{$cat}) { my $iter_str = $w->{tree_model}->get_path_str($wtree{$cat}); delete $node_state{$iter_str}; delete $state_stats{$iter_str}; $w->{tree_model}->remove($wtree{$cat}); delete $wtree{$cat}; } &$update_size; }; $common->{add_nodes} = sub { my (@nodes) = @_; $add_node->($_->[0], $_->[1], $_->[2]) foreach @nodes; &$update_size; }; $common->{display_info} = sub { gtktext_insert($w->{info}, $common->{get_info}($curr)); 0 }; my $children = sub { map { $w->{tree_model}->get($_, 0) } gtktreeview_children($w->{tree_model}, $_[0]) }; my $toggle = sub { if (ref($curr) && !$_[0]) { $w->{tree}->toggle_expansion($w->{tree_model}->get_path($curr)); } else { if (ref $curr) { my @l = $common->{grep_allowed_to_toggle}($children->($curr)) or return; my @unsel = $common->{grep_unselected}(@l); my @p = @unsel ? #- not all is selected, select all if no option to potentially override (exists $common->{partialsel_unsel} && $common->{partialsel_unsel}->(\@unsel, \@l) ? difference2(\@l, \@unsel) : @unsel) : @l; $common->{toggle_nodes}($set_leaf_state, @p); &$update_size; } else { $common->{check_interactive_to_toggle}($curr) and $common->{toggle_nodes}($set_leaf_state, $curr); &$update_size; } } }; $w->{tree}->signal_connect(key_press_event => sub { my $c = chr($_[1]->keyval & 0xff); if ($_[1]->keyval >= 0x100 ? $c eq "\r" || $c eq "\x8d" : $c eq ' ') { $toggle->(0); } 0; }); $w->{tree}->get_selection->signal_connect(changed => sub { my ($model, $iter) = $_[0]->get_selected; $model && $iter or return; Glib::Source->remove($idle) if $idle; if (!$model->iter_has_child($iter)) { $curr = $model->get($iter, 0); $idle = Glib::Timeout->add(100, $common->{display_info}); } else { $curr = $iter; } #- the following test for equality is because we can have a button_press_event first, then #- two changed events, the first being on a different row :/ (is it a bug in gtk2?) - that #- happens in rpmdrake when doing a "search" and directly trying to select a found package if ($mouse_toggle_pending eq $model->get($iter, 0)) { $toggle->(1); $mouse_toggle_pending = 0; } 0; }); $w->{tree}->signal_connect(button_press_event => sub { #- not too good, but CellRendererPixbuf does not have the needed signals :( my ($path, $column) = $w->{tree}->get_path_at_pos($_[1]->x, $_[1]->y); if ($path && $column) { $column->{is_pix} and $mouse_toggle_pending = $w->{tree_model}->get($w->{tree_model}->get_iter($path), 0); } 0; }); $common->{rebuild_tree}->(); &$update_size; $common->{initial_selection} and $common->{toggle_nodes}($set_leaf_state, @{$common->{initial_selection}}); my $_b = before_leaving { $clear_all_caches->() }; $common->{init_callback}->() if $common->{init_callback}; $w->{w}->main; } sub gtk_set_treelist { my ($treelist, $l) = @_; my $list = $treelist->get_model; $list->clear; $list->append_set([ 0 => $_ ]) foreach @$l; } sub gtk_TextView_get_log { my ($log_w, $command, $filter_output, $when_command_is_over) = @_; my $pid = open(my $F, "$command |") or return; common::nonblock($F); my $gtk_buffer = $log_w->get_buffer; $log_w->signal_connect(destroy => sub { kill 9, $pid if $pid; #- we do not continue in background $pid = $gtk_buffer = ''; #- ensure $gtk_buffer is valid when its value is non-null }); Glib::Timeout->add(100, sub { if ($gtk_buffer) { my $end = $gtk_buffer->get_end_iter; while (defined (my $s = <$F>)) { $gtk_buffer->insert($end, $filter_output->($s)); } $log_w->{to_bottom}->(); } if (waitpid($pid, c::WNOHANG()) > 0) { #- we do not call $when_command_is_over if $gtk_buffer does not exist anymore #- since it is not a normal case $when_command_is_over->($gtk_buffer) if $when_command_is_over && $gtk_buffer; $pid = ''; 0; } else { to_bool($gtk_buffer); } }); $pid; #- $pid becomes invalid after $when_command_is_over is called } sub gtk_new_TextView_get_log { my ($command, $filter_output, $when_command_is_over) = @_; my $log_w = gtknew('TextView', editable => 0); my $log_scroll = gtknew('ScrolledWindow', child => $log_w, to_bottom => 1); my $pid = gtk_TextView_get_log($log_w, $command, $filter_output, $when_command_is_over) or return; $log_scroll, $pid; } # misc helpers: package Gtk2::TreeStore; sub append_set { my ($model, $parent, @values) = @_; # compatibility: @values = @{$values[0]} if @values == 1 && ref($values[0]) eq 'ARRAY'; my $iter = $model->append($parent); $model->set($iter, @values); return $iter; } package Gtk2::ListStore; # Append a new row, set the values, return the TreeIter sub append_set { my ($model, @values) = @_; # compatibility: @values = @{$values[0]} if @values == 1 && ref($values[0]) eq 'ARRAY'; my $iter = $model->append; $model->set($iter, @values); return $iter; } package Gtk2::TreeModel; # gets the string representation of a TreeIter sub get_path_str { my ($self, $iter) = @_; my $path = $self->get_path($iter); $path or return; $path->to_string; } sub iter_each_children { my ($model, $iter, $f) = @_; for (my $child = $model->iter_children($iter); $child; $child = $model->iter_next($child)) { $f->($child); } } package Gtk2::TreeView; # likewise gtk-1.2 function