diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 14785e91896..d55e7ad0270 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -129,14 +129,11 @@ def db_monodb(req): return db_redirect(req, True)[0] def redirect_with_hash(req, url, code=303): - if req.httprequest.user_agent.browser == 'msie': - try: - version = float(req.httprequest.user_agent.version) - if version < 10: - return "" % url - except Exception: - pass - return werkzeug.utils.redirect(url, code) + # Most IE and Safari versions decided not to preserve location.hash upon + # redirect. And even if IE10 pretends to support it, it still fails + # inexplicably in case of multiple redirects (and we do have some). + # See extensive test page at http://greenbytes.de/tech/tc/httpredirects/ + return "" % url def module_topological_sort(modules): """ Return a list of module names sorted so that their dependencies of the @@ -1087,7 +1084,10 @@ class DataSet(openerpweb.Controller): } records = Model.read(ids, fields or False, req.context) - records.sort(key=lambda obj: ids.index(obj['id'])) + + index = dict((r['id'], r) for r in records) + records = [index[x] for x in ids if x in index] + return { 'length': length, 'records': records @@ -1570,7 +1570,7 @@ class Export(openerpweb.Controller): req, fields[base]['relation'], base, fields[base]['string'], subfields )) - else: + elif base in fields: info[base] = fields[base]['string'] return info diff --git a/addons/web/i18n/ar.po b/addons/web/i18n/ar.po index dd689b26d37..46a0dd3dbe7 100644 --- a/addons/web/i18n/ar.po +++ b/addons/web/i18n/ar.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-10-03 07:31+0000\n" +"PO-Revision-Date: 2014-03-25 00:31+0000\n" "Last-Translator: Mustafa Rawi \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -29,7 +29,7 @@ msgstr "اللغة الافتراضية:" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d minutes ago" -msgstr "قبل %d دقيقة/دقائق" +msgstr "منذ %d دقيقة مضت" #. module: web #. openerp-web @@ -43,7 +43,7 @@ msgstr "جار التحميل
برجاء الانتظار" #: code:addons/web/static/src/js/search.js:1999 #, python-format msgid "%(field)s %(operator)s \"%(value)s\"" -msgstr "" +msgstr "%(field)s %(operator)s \"%(value)s\"" #. module: web #. openerp-web @@ -66,6 +66,10 @@ msgid "" "created,\n" " you will be able to install your first application." msgstr "" +"املأ هذا النموذج لإنشاء قاعدة بيانات كروز. يمكنك\n" +" إنشاء قاعدة بيانات لكل شركة، أو لأغراض مختلفة\n" +" (الاختبار، الرسمية). ما أن يتم إنشاء قاعدة البيانات،\n" +" يمكنك البدء في تنصيب التطبيقات." #. module: web #. openerp-web @@ -95,21 +99,21 @@ msgstr "اليوم" #: code:addons/web/static/src/js/chrome.js:513 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "" +msgstr "هل ترغب حقاً في حذف قاعدة البيانات: %s؟" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1502 #, python-format msgid "Search %(field)s at: %(value)s" -msgstr "" +msgstr "بحث في %(field)s عند: %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:559 #, python-format msgid "Access Denied" -msgstr "" +msgstr "تم منع الوصول" #. module: web #. openerp-web @@ -123,7 +127,7 @@ msgstr "الآن" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "about an hour ago" -msgstr "منذ ساعة مضت" +msgstr "منذ ساعة تقريباً" #. module: web #. openerp-web @@ -139,14 +143,14 @@ msgstr "أسبوع من السنة" #: code:addons/web/static/src/xml/base.xml:234 #, python-format msgid "Backup Database" -msgstr "نسخة قاعدة البيانات الاحتياطية" +msgstr "حفظ قاعدة البيانات احتياطياً" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:518 #, python-format msgid "%(view_type)s view" -msgstr "" +msgstr "واجهة %(view_type)s" #. module: web #. openerp-web @@ -154,7 +158,7 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "" +msgstr "'%s' ليس صيغة تاريخ صالحة" #. module: web #. openerp-web @@ -168,34 +172,34 @@ msgstr "التالي >" #: code:addons/web/static/src/xml/base.xml:1858 #, python-format msgid "Here is a preview of the file we could not import:" -msgstr "هذه معاينة للملف الذي لم يمكن استيراده:" +msgstr "إليك معاينة الملف الذي لم يمكن استيراده:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:410 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "الرجاء إدخال كلمة المرور السابقة" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:591 #, python-format msgid "about a minute ago" -msgstr "" +msgstr "منذ دقيقة تقريباً" #. module: web #: code:addons/web/controllers/main.py:869 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "لا يمكنك ترك أي كلمة مرور فارغة." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:732 #, python-format msgid "Invalid username or password" -msgstr "كلمة السر أو اسم المستخدم غير صالح" +msgstr "كلمة المرور أو اسم المستخدم غير صالح" #. module: web #. openerp-web @@ -212,7 +216,7 @@ msgstr "كلمة المرور الرئيسية:" #: code:addons/web/static/src/xml/base.xml:1402 #, python-format msgid "Select" -msgstr "حدّد" +msgstr "اختر" #. module: web #. openerp-web @@ -240,28 +244,28 @@ msgstr "تاريخ آخر تعديل:" #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "" +msgstr "لا تتعامل حقول البحث M2O مع عدة قيم افتراضية للوقت الراهن." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "نوع الأداة '%s' غير مُدرج." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:134 #, python-format msgid "e.g. mycompany" -msgstr "" +msgstr "مثلاً: cubexco.com" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "لا يمكن تجاهل بيانات النموذج" #. module: web #. openerp-web @@ -269,28 +273,28 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:320 #, python-format msgid "Form" -msgstr "نموذج" +msgstr "النموذج" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1352 #, python-format msgid "(no string)" -msgstr "(لا كلام)" +msgstr "(بلا تعبير)" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:286 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' ليست صيغة وقت صالحة" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1401 #, python-format msgid "not a valid number" -msgstr "قيمة رقمية خاطئة" +msgstr "ليست قيمة رقمية صالحة" #. module: web #. openerp-web @@ -304,14 +308,14 @@ msgstr "كلمة المرور الجديدة:" #: code:addons/web/static/src/xml/base.xml:632 #, python-format msgid "Attachment :" -msgstr "" +msgstr "المرفق:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1712 #, python-format msgid "Fields to export" -msgstr "حقول للتصدير" +msgstr "الحقول لتصديرها" #. module: web #. openerp-web @@ -332,14 +336,14 @@ msgstr "رفع ملف" #: code:addons/web/static/src/js/coresetup.js:597 #, python-format msgid "about a month ago" -msgstr "" +msgstr "منذ شهر تقريباً" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1618 #, python-format msgid "Custom Filters" -msgstr "" +msgstr "معاملات فرز مُخصصة" #. module: web #. openerp-web @@ -353,21 +357,21 @@ msgstr "نوع الزر:" #: code:addons/web/static/src/xml/base.xml:441 #, python-format msgid "OpenERP SA Company" -msgstr "شركة OpenERP SA" +msgstr "كيوبكس لحلول الأعمال" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1663 #, python-format msgid "Custom Filter" -msgstr "" +msgstr "معامل فرز مخصص" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:177 #, python-format msgid "Duplicate Database" -msgstr "" +msgstr "استنساخ قاعدة البيانات" #. module: web #. openerp-web @@ -382,21 +386,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:354 #, python-format msgid "Change Password" -msgstr "تغيير كلمة السر" +msgstr "تغيير كلمة المرور" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3528 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "" +msgstr "نوع الواجهة '%s' غير مدعوم في حقول O2M." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:189 #, python-format msgid "Original database name:" -msgstr "" +msgstr "اسم قاعدة البيانات الأصلي:" #. module: web #. openerp-web @@ -411,14 +415,14 @@ msgstr "تحميل" #: code:addons/web/static/src/js/formats.js:270 #, python-format msgid "'%s' is not a correct datetime" -msgstr "" +msgstr "'%s' ليست صيغة تاريخ-وقت صحيحة" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:432 #, python-format msgid "Group" -msgstr "مجموعة" +msgstr "المجموعة" #. module: web #. openerp-web @@ -439,20 +443,20 @@ msgstr "أداة غير معالجة" #: code:addons/web/static/src/xml/base.xml:1004 #, python-format msgid "Selection:" -msgstr "خيار:" +msgstr "الاختيار:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:881 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "الحقول التالية غير صالحة:" #. module: web #: code:addons/web/controllers/main.py:890 #, python-format msgid "Languages" -msgstr "" +msgstr "اللغات" #. module: web #. openerp-web @@ -466,7 +470,7 @@ msgstr "عرض الشهر التالي" #: code:addons/web/static/src/xml/base.xml:1298 #, python-format msgid "...Upload in progress..." -msgstr "" +msgstr "..عملية الرفع جارية.." #. module: web #. openerp-web @@ -480,21 +484,21 @@ msgstr "استيراد" #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Could not restore the database" -msgstr "" +msgstr "لم يمكن استعادة قاعدة البيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4982 #, python-format msgid "File upload" -msgstr "" +msgstr "رفع ملف" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3925 #, python-format msgid "Action Button" -msgstr "" +msgstr "زر إجراء" #. module: web #. openerp-web @@ -502,7 +506,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1493 #, python-format msgid "Manage Filters" -msgstr "إدارة المرشحات" +msgstr "إدارة معاملات الفرز" #. module: web #. openerp-web @@ -516,35 +520,35 @@ msgstr "يحتوي" #: code:addons/web/static/src/js/coresetup.js:623 #, python-format msgid "Take a minute to get a coffee,
because it's loading..." -msgstr "" +msgstr "أحضر كوباً من الشاي،
فالعمل لا يزال جارياً" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:435 #, python-format msgid "Activate the developer mode" -msgstr "" +msgstr "تنشيط وضع التطوير" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:341 #, python-format msgid "Loading (%d)" -msgstr "تحميل (%d)" +msgstr "جاري التحميل (%d)" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1216 #, python-format msgid "GroupBy" -msgstr "" +msgstr "تجميع حسب" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:699 #, python-format msgid "You must select at least one record." -msgstr "" +msgstr "يجب أن تختار سجلاً واحداً على الأقل" #. module: web #. openerp-web @@ -558,21 +562,21 @@ msgstr "عرض السجل (perm_read)" #: code:addons/web/static/src/js/view_form.js:1071 #, python-format msgid "Set Default" -msgstr "تعيين الافتراضي" +msgstr "تعيين كافتراضي" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1000 #, python-format msgid "Relation:" -msgstr "علاقة:" +msgstr "العلاقة:" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:590 #, python-format msgid "less than a minute ago" -msgstr "" +msgstr "منذ أقل من دقيقة مضت" #. module: web #. openerp-web @@ -586,7 +590,7 @@ msgstr "اختر تاريخاً" #: code:addons/web/static/src/xml/base.xml:873 #, python-format msgid "Condition:" -msgstr "الحالة:" +msgstr "الشرط/الحالة:" #. module: web #. openerp-web @@ -600,14 +604,14 @@ msgstr "الوقت" #: code:addons/web/static/src/js/view_form.js:1709 #, python-format msgid "Unsupported operator %s in domain %s" -msgstr "عامل غير مدعوم %s في نطاق %s" +msgstr "المعامل %s غير مدعوم في النطام %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:246 #, python-format msgid "'%s' is not a correct float" -msgstr "" +msgstr "'%s' ليس قيمة عائمة صحيحة" #. module: web #. openerp-web @@ -621,21 +625,21 @@ msgstr "مستعادة" #: code:addons/web/static/src/js/view_list.js:409 #, python-format msgid "%d-%d of %d" -msgstr "" +msgstr "%d-%d of %d" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2955 #, python-format msgid "Create and Edit..." -msgstr "" +msgstr "إنشاء وتحرير..." #. module: web #. openerp-web #: code:addons/web/static/src/js/pyeval.js:736 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "نوع حرفي غير معروف " #. module: web #. openerp-web @@ -649,14 +653,14 @@ msgstr "ليس" #: code:addons/web/static/src/xml/base.xml:572 #, python-format msgid "Print Workflow" -msgstr "" +msgstr "طباعة مسار التدفق" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:413 #, python-format msgid "Please confirm your new password" -msgstr "" +msgstr "الرجاء تأكيد كلمة المرور الجديدة" #. module: web #. openerp-web @@ -670,35 +674,35 @@ msgstr "UTF-8" #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "For more information visit" -msgstr "لمزيد من العلومات قم بزيارة" +msgstr "لمزيد من المعلومات، زُر" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1880 #, python-format msgid "Add All Info..." -msgstr "" +msgstr "إضافة كافة البيانات..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1701 #, python-format msgid "Export Formats" -msgstr "تنسيقات التصدير" +msgstr "هيئة التصدير" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:996 #, python-format msgid "On change:" -msgstr "حين التغيير:" +msgstr "عند التغيير:" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:939 #, python-format msgid "Model %s fields" -msgstr "نموذج %s للحقول" +msgstr "حقول الموديل %s" #. module: web #. openerp-web @@ -709,21 +713,21 @@ msgstr "نموذج %s للحقول" #: code:addons/web/static/src/js/search.js:2145 #, python-format msgid "is set" -msgstr "مضبوطة" +msgstr "مضبوط" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:906 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "" +msgstr "ضبط سمة 'id' على الحقل الموجود مسبقاً %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:8 #, python-format msgid "List" -msgstr "قائمة" +msgstr "القائمة" #. module: web #. openerp-web @@ -739,42 +743,42 @@ msgstr "أكبر من" #: code:addons/web/static/src/js/chrome.js:585 #, python-format msgid "Changed Password" -msgstr "" +msgstr "تغيير كلمة المرور" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1492 #, python-format msgid "Save Filter" -msgstr "حفظ المرشح" +msgstr "حفظ معامل الفرز" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1372 #, python-format msgid "Action ID:" -msgstr "معرف الإجراء" +msgstr "معرف الإجراء:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:479 #, python-format msgid "Your user's preference timezone does not match your browser timezone:" -msgstr "" +msgstr "المنطقة الزمنية المضبوطة لا تطابق المنطقة الزمنية بالمتصفح:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1237 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "" +msgstr "لم يمكن إيجاد الحقل '%s' المحدد في الواجهة." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1777 #, python-format msgid "Saved exports:" -msgstr "مُصدرة محفوظة:" +msgstr "تصديرات محفوظة:" #. module: web #. openerp-web @@ -788,21 +792,21 @@ msgstr "كلمة المرور القديمة:" #: code:addons/web/static/src/js/formats.js:113 #, python-format msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" -msgstr "" +msgstr "بايت، Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:503 #, python-format msgid "The database has been duplicated." -msgstr "" +msgstr "تم استنساخ قاعدة البيانات بنجاح." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1643 #, python-format msgid "Apply" -msgstr "" +msgstr "تطبيق" #. module: web #. openerp-web @@ -831,28 +835,28 @@ msgstr "حفظ باسم" #: code:addons/web/static/src/xml/base.xml:109 #, python-format msgid "Create a New Database" -msgstr "" +msgstr "إنشاء قاعدة بيانات جديدة" #. module: web #. openerp-web #: code:addons/web/doc/module/static/src/xml/web_example.xml:3 #, python-format msgid "00:00:00" -msgstr "" +msgstr "00:00:00" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:595 #, python-format msgid "a day ago" -msgstr "يوم سابق" +msgstr "يوم مضى" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:138 #, python-format msgid "Load demonstration data:" -msgstr "" +msgstr "تحميل بيانات الاستعراض:" #. module: web #. openerp-web @@ -877,6 +881,8 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" +"تحذير: تم تعديل محتويات السجل، سيتم تجاهل التغييرات./n/nهل تريد حقاً مغادرة " +"هذه الصفحة؟" #. module: web #. openerp-web @@ -890,35 +896,35 @@ msgstr "بحث: " #: code:addons/web/static/src/xml/base.xml:141 #, python-format msgid "Check this box to evaluate OpenERP." -msgstr "" +msgstr "حدد هذا الاختيار لتقييم OpenERP." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:566 #, python-format msgid "Technical translation" -msgstr "ترجمة تقنية" +msgstr "الترجمة التقنية" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1818 #, python-format msgid "Delimiter:" -msgstr "محدد:" +msgstr "المُحدد" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:484 #, python-format msgid "Browser's timezone" -msgstr "" +msgstr "منطقة المتصفح الزمنية" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1623 #, python-format msgid "Filter name" -msgstr "" +msgstr "اسم المعامل:" #. module: web #. openerp-web @@ -935,56 +941,56 @@ msgstr "-- الإجراءات --" #: code:addons/web/static/src/xml/base.xml:1726 #, python-format msgid "Add" -msgstr "اضافة" +msgstr "إضافة" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1795 #, python-format msgid "1. Import a .CSV file" -msgstr "إستيراد ملف .CSV" +msgstr "1. استيراد ملف CSV" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "OpenERP.com" -msgstr "OpenERP.com" +msgstr "cubexco.com" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2349 #, python-format msgid "Can't send email to invalid e-mail address" -msgstr "لايمكن إرسال رسالة إلكترونية إلى عنوان بريد إلكتروني غير صحيح" +msgstr "لا يمكن إرسال بريد إلكتروني إلى عنوان بريد غير صالح" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:658 #, python-format msgid "Add..." -msgstr "" +msgstr "إضافة..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:424 #, python-format msgid "Preferences" -msgstr "تفضيلات" +msgstr "التفضيلات" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1704 #, python-format msgid "Only export selection:" -msgstr "" +msgstr "تصدير التحديد فقط:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:435 #, python-format msgid "Wrong on change format: %s" -msgstr "" +msgstr "خطأ بصيغة عند التغيير: %s" #. module: web #. openerp-web @@ -992,7 +998,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:203 #, python-format msgid "Drop Database" -msgstr "" +msgstr "حذف قاعدة البيانات" #. module: web #. openerp-web @@ -1008,21 +1014,21 @@ msgstr "إغلاق" #: code:addons/web/static/src/xml/base.xml:488 #, python-format msgid "Click here to change your user's timezone." -msgstr "" +msgstr "انقر هنا لتغيير المنطقة الزمنية للمستخدم." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:988 #, python-format msgid "Modifiers:" -msgstr "معدل:" +msgstr "المُعدِّلات:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:649 #, python-format msgid "Delete this attachment" -msgstr "" +msgstr "حذف هذا المرفق" #. module: web #. openerp-web @@ -1040,7 +1046,7 @@ msgstr "حفظ" #: code:addons/web/static/src/xml/base.xml:370 #, python-format msgid "More" -msgstr "" +msgstr "المزيد" #. module: web #. openerp-web @@ -1054,21 +1060,21 @@ msgstr "اسم المستخدم" #: code:addons/web/static/src/js/chrome.js:503 #, python-format msgid "Duplicating database" -msgstr "" +msgstr "جاري استنساخ قاعدة البيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:585 #, python-format msgid "Password has been changed successfully" -msgstr "" +msgstr "تم تغيير كلمة المرور بنجاح" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "Resource Error" -msgstr "" +msgstr "خطأ بالمورد" #. module: web #. openerp-web @@ -1082,7 +1088,7 @@ msgstr "الساعة" #: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Debug View#" -msgstr "تنقيح العرض#" +msgstr "وضع اكتشاف الأخطاء#" #. module: web #. openerp-web @@ -1105,7 +1111,7 @@ msgstr "حذف" #: code:addons/web/static/src/xml/base.xml:425 #, python-format msgid "My OpenERP.com account" -msgstr "" +msgstr "حساب OpenERP" #. module: web #. openerp-web @@ -1117,13 +1123,17 @@ msgid "" "\n" "%s" msgstr "" +"خطأ تقييم محلي\n" +"%s\n" +"\n" +"%s" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:367 #, python-format msgid "Invalid database name" -msgstr "اسم قاعدة بيانات خاطئ" +msgstr "اسم قاعدة بيانات غير صالح" #. module: web #. openerp-web @@ -1137,7 +1147,7 @@ msgstr "حفظ قائمة الحقول" #: code:addons/web/doc/module/static/src/xml/web_example.xml:5 #, python-format msgid "Start" -msgstr "" +msgstr "ابدأ" #. module: web #. openerp-web @@ -1158,14 +1168,14 @@ msgstr "تاريخ الإنشاء:" #: code:addons/web/controllers/main.py:878 #, python-format msgid "Error, password not changed !" -msgstr "" +msgstr "خطأً، لم يتم تغيير كلمة المرور!" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4981 #, python-format msgid "The selected file exceed the maximum file size of %s." -msgstr "" +msgstr "حجم الملف المحدد يتجاوز الحدث الأقصى: %s." #. module: web #. openerp-web @@ -1194,7 +1204,7 @@ msgstr "<السابق" #: code:addons/web/static/src/js/view_form.js:2450 #, python-format msgid "Set DD as first week day" -msgstr "وضع DD كأول يوم في الاسبوع" +msgstr "ضبط DD كأول يوم في الأسبوع" #. module: web #. openerp-web @@ -1204,6 +1214,8 @@ msgid "" "By default, the master password is 'admin'. This password\n" " is required to created, delete dump or restore databases." msgstr "" +"بشكل افتراضي، فإن كلمة المرور الرئيسية هي 'admin'. ستحتاج كلمة " +" المرور هذه عندما تنشئ، تحذف أو تستعيد قاعدة بيانات." #. module: web #. openerp-web @@ -1211,7 +1223,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:327 #, python-format msgid "Backup" -msgstr "نسخة إحتياطية" +msgstr "نسخ احتياطي" #. module: web #. openerp-web @@ -1219,35 +1231,35 @@ msgstr "نسخة إحتياطية" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "" +msgstr "'%s' ليس وقتاً صحيحاً" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:278 #, python-format msgid "'%s' is not a correct date" -msgstr "" +msgstr "'%s' ليس تاريخاً صحيحاً" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:955 #, python-format msgid "(nolabel)" -msgstr "(لا اسم)" +msgstr "(بلااسم)" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:596 #, python-format msgid "%d days ago" -msgstr "" +msgstr "منذ %d أيام مضت" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1500 #, python-format msgid "(Any existing filter with the same name will be replaced)" -msgstr "(لاحظ أن أي مرشح بنفس الاسم سيتم إستبداله)" +msgstr "(سيتم استبدال أي معاملات فرز بنفس الاسم)" #. module: web #. openerp-web @@ -1273,21 +1285,21 @@ msgstr "جاري التحميل..." #: code:addons/web/static/src/xml/base.xml:589 #, python-format msgid "Latest Modification by:" -msgstr "أخر تعديلات بواسطة:" +msgstr "آخر تعديل بواسطة:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:492 #, python-format msgid "Timezone mismatch" -msgstr "" +msgstr "عدم تطابق المنطقة الزمنية" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1663 #, python-format msgid "Unknown operator %s in domain %s" -msgstr "عامل غير معروف %s في نطاق %s" +msgstr "العامل %s غير معروف في النطاق %s" #. module: web #. openerp-web @@ -1301,21 +1313,21 @@ msgstr "عرض الشهر السابق" #: code:addons/web/static/src/js/view_form.js:427 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1803 #, python-format msgid "2. Check your file format" -msgstr "تأكد من إمتداد الملف" +msgstr "2. افحص هيئة الملف" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1739 #, python-format msgid "Name" -msgstr "اسم" +msgstr "الاسم" #. module: web #. openerp-web @@ -1333,7 +1345,7 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:598 #, python-format msgid "%d months ago" -msgstr "" +msgstr "منذ %d شهور مضت" #. module: web #. openerp-web @@ -1348,13 +1360,13 @@ msgstr "إزالة" #: code:addons/web/static/src/xml/base.xml:1491 #, python-format msgid "Add Advanced Filter" -msgstr "إضافة مرشح متقدم:" +msgstr "إضافة معامل فرز متقدم" #. module: web #: code:addons/web/controllers/main.py:871 #, python-format msgid "The new password and its confirmation must be identical." -msgstr "" +msgstr "يجب أن تتطابق كلمة المرور وتأكيدها." #. module: web #. openerp-web @@ -1362,21 +1374,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:266 #, python-format msgid "Restore Database" -msgstr "استرجاع قاعدة البيانات." +msgstr "استعادة قاعدة بيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:702 #, python-format msgid "Login" -msgstr "" +msgstr "تسجيل الدخول" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:442 #, python-format msgid "Licenced under the terms of" -msgstr "النظام مرخص بشروط" +msgstr "مرخص وفق شروط" #. module: web #. openerp-web @@ -1384,7 +1396,7 @@ msgstr "النظام مرخص بشروط" #: code:addons/web/static/src/xml/base.xml:328 #, python-format msgid "Restore" -msgstr "استرجاع" +msgstr "استعادة" #. module: web #. openerp-web @@ -1398,14 +1410,14 @@ msgstr "نوع التصدير:" #: code:addons/web/static/src/xml/base.xml:428 #, python-format msgid "Log out" -msgstr "" +msgstr "تسجيل الخروج" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1192 #, python-format msgid "Group by: %s" -msgstr "" +msgstr "تجميع حسب: %s" #. module: web #. openerp-web @@ -1419,7 +1431,7 @@ msgstr "عرض شهر آخر" #: code:addons/web/static/src/js/view_form.js:154 #, python-format msgid "No data provided." -msgstr "" +msgstr "لم يتم توفير بيانات." #. module: web #. openerp-web @@ -1441,21 +1453,21 @@ msgstr "تصدير لملف" #: code:addons/web/static/src/js/views.js:1172 #, python-format msgid "You must choose at least one record." -msgstr "عليك إختيار سجل واحد علي الأقل." +msgstr "يجب أن تختار سجلاً واحداً على الأقل" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:621 #, python-format msgid "Don't leave yet,
it's still loading..." -msgstr "" +msgstr "لا تغادر الآن،التحميل مستمر..." #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:841 #, python-format msgid "Invalid Search" -msgstr "بحث خاطئ" +msgstr "بحث غير صالح" #. module: web #. openerp-web @@ -1476,14 +1488,14 @@ msgstr "إزالة الكل" #: code:addons/web/static/src/js/chrome.js:253 #, python-format msgid "Your OpenERP session expired. Please refresh the current web page." -msgstr "" +msgstr "انتهت جلستك في OpenERP. الرجاء إعادة تحديث الصفحة الحالية." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1368 #, python-format msgid "Method:" -msgstr "طريقة:" +msgstr "الطريقة:" #. module: web #. openerp-web @@ -1497,35 +1509,35 @@ msgstr "%(page)d/%(page_count)d" #: code:addons/web/static/src/js/chrome.js:414 #, python-format msgid "The confirmation does not match the password" -msgstr "" +msgstr "التأكيد لا يطابق كلمة المرور" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:463 #, python-format msgid "Edit Company data" -msgstr "" +msgstr "تحرير بيانات المؤسسة" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "Save As..." -msgstr "حفظ بإسم" +msgstr "حفظ باسم..." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5138 #, python-format msgid "Could not display the selected image." -msgstr "" +msgstr "لم يمكن عرض الصورة المحددة." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:531 #, python-format msgid "Database backed up successfully" -msgstr "تم حفظ قاعدة البيانات بنجاح" +msgstr "تم حفظ قاعدة البيانات احتياطياً بنجاح" #. module: web #. openerp-web @@ -1534,35 +1546,37 @@ msgstr "تم حفظ قاعدة البيانات بنجاح" msgid "" "For use if CSV files have titles on multiple lines, skips more than a single " "line during import" -msgstr "يستخدم مع ملفات CSV لو هناك عناوين لأكثر من سطر" +msgstr "" +"للاستخدام إذا كان ملف CSV يتضمن أكثر من صف للعناوين، فيتجاوز أكثر من سطر عند " +"الاستيراد" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:414 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:427 #, python-format msgid "Help" -msgstr "" +msgstr "المساعدة" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:558 #, python-format msgid "Toggle Form Layout Outline" -msgstr "" +msgstr "تبديل مخطط النموذج" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:702 #, python-format msgid "No database selected !" -msgstr "" +msgstr "لم تختر قاعدة بيانات!" #. module: web #. openerp-web @@ -1583,7 +1597,7 @@ msgstr "تغيير الإفتراضي:" #: code:addons/web/static/src/js/search.js:1879 #, python-format msgid "Advanced" -msgstr "" +msgstr "متقدم" #. module: web #. openerp-web @@ -1593,21 +1607,21 @@ msgstr "" #: code:addons/web/static/src/js/search.js:2119 #, python-format msgid "is equal to" -msgstr "مساوٍ لـ" +msgstr "يساوي" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1581 #, python-format msgid "Could not serialize XML" -msgstr "" +msgstr "لم يمكن إنشاء تسلسل XML" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1637 #, python-format msgid "Advanced Search" -msgstr "" +msgstr "بحث متقدم" #. module: web #. openerp-web @@ -1621,7 +1635,7 @@ msgstr "تأكيد كلمة المرور الرئيسية الجديدة:" #: code:addons/web/static/src/js/coresetup.js:624 #, python-format msgid "Maybe you should consider reloading the application by pressing F5..." -msgstr "" +msgstr "ربما يجدر بك تحديث النظام بالضغط على زر F5..." #. module: web #. openerp-web @@ -1639,7 +1653,7 @@ msgstr "إنشاء" #: code:addons/web/static/src/js/search.js:2043 #, python-format msgid "doesn't contain" -msgstr "لا يحتوي علي" +msgstr "لا يحتوي" #. module: web #. openerp-web @@ -1653,21 +1667,21 @@ msgstr "خيارات الاستيراد" #: code:addons/web/static/src/js/view_form.js:3023 #, python-format msgid "Add %s" -msgstr "" +msgstr "إضافة %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2434 #, python-format msgid "Close without change" -msgstr "أغلق دون تغيير" +msgstr "إغلاق دون تغيير" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:159 #, python-format msgid "Choose a password:" -msgstr "" +msgstr "اختر كلمة المرور:" #. module: web #. openerp-web @@ -1682,7 +1696,7 @@ msgstr "أختر D,Md" #, python-format msgid "" "You may not believe it,
but the application is actually loading..." -msgstr "" +msgstr "قد لا تصدق هذا،
ولكن النظام لا يزال يحمل البيانات حقاً" #. module: web #. openerp-web @@ -1703,55 +1717,55 @@ msgstr "الدقيقة" #: code:addons/web/static/src/js/view_tree.js:11 #, python-format msgid "Tree" -msgstr "شجرة" +msgstr "الشجرة" #. module: web #: code:addons/web/controllers/main.py:793 #, python-format msgid "Could not drop database !" -msgstr "" +msgstr "لم يمكن حذف قاعدة البيانات!" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:231 #, python-format msgid "'%s' is not a correct integer" -msgstr "" +msgstr "'%s' ليس عدد طبيعي صحيح" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:899 #, python-format msgid "All users" -msgstr "جميع المستخدمين" +msgstr "كافة المستخدمين" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1671 #, python-format msgid "Unknown field %s in domain %s" -msgstr "حقل غير معروف %s في نطاق %s" +msgstr "الحقل %s غير معروف في النطاق %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1546 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "" +msgstr "العقدة [%s] ليست عقدة JSON-XML" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1454 #, python-format msgid "Advanced Search..." -msgstr "" +msgstr "بحث متقدم..." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:521 #, python-format msgid "Dropping database" -msgstr "" +msgstr "جاري حذف قاعدة البيانات" #. module: web #. openerp-web @@ -1759,7 +1773,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:467 #, python-format msgid "Powered by" -msgstr "يتم تشغيل هذا التطبيق بواسطة" +msgstr "يعمل على" #. module: web #. openerp-web @@ -1774,14 +1788,14 @@ msgstr "نعم" #: code:addons/web/static/src/js/chrome.js:1350 #, python-format msgid "Timezone Mismatch" -msgstr "" +msgstr "المنطقة الزمنية غير مطابقة" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5002 #, python-format msgid "There was a problem while uploading your file" -msgstr "حدث خطأ أثناء رفع الملف الخاص بك" +msgstr "حدثت مشكلة أثناء رفع الملف" #. module: web #. openerp-web @@ -1795,35 +1809,35 @@ msgstr "معرف XML:" #: code:addons/web/static/src/xml/base.xml:976 #, python-format msgid "Size:" -msgstr "حجم:" +msgstr "الحجم:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1845 #, python-format msgid "--- Don't Import ---" -msgstr "" +msgstr "-- لا تستورد --" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1697 #, python-format msgid "Import-Compatible Export" -msgstr "" +msgstr "تصدير قابل للاستيراد" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:600 #, python-format msgid "%d years ago" -msgstr "" +msgstr "منذ %d سنوات مضت" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1050 #, python-format msgid "Unknown m2m command %s" -msgstr "" +msgstr "أمر M2M غير معروف %s" #. module: web #. openerp-web @@ -1845,70 +1859,70 @@ msgstr "اسم قاعدة البيانات الجديدة:" #: code:addons/web/static/src/js/chrome.js:411 #, python-format msgid "Please enter your new password" -msgstr "" +msgstr "الرجاء إدخال كلمة المرور الجديدة" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "" +msgstr "الحقل فارغ، لا يوجد ما يمكن حفظه!" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:567 #, python-format msgid "Manage Views" -msgstr "إدارة العروض" +msgstr "إدارة الواجهات" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2349 #, python-format msgid "E-mail Error" -msgstr "" +msgstr "خطأ بالبريد الإلكتروني" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1822 #, python-format msgid "Encoding:" -msgstr "ترميز:" +msgstr "الترميز:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1829 #, python-format msgid "Lines to skip" -msgstr "خطوط للتجاهل" +msgstr "صفوف لتجاوزها" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2945 #, python-format msgid "Create \"%s\"" -msgstr "" +msgstr "إنشاء \"%s\"" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:362 #, python-format msgid "Please select fields to save export list..." -msgstr "اختر الحقول للحفظ في قائمة التصدير" +msgstr "اختر الحقول لحفظ قائمة التصدير..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." -msgstr "حقوق النشر محفوظة ٢٠٠٤ - ٢٠١٢ لشركة OpenERP SA" +msgstr "كافة حقوق النشر محفوظة لكيوبكس لحلول الأعمال © 2010 - اليوم." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "This resource is empty" -msgstr "المصدر فارغ" +msgstr "المورد فارغ" #. module: web #. openerp-web @@ -1922,7 +1936,7 @@ msgstr "الحقول المتوفرة" #: code:addons/web/static/src/xml/base.xml:1856 #, python-format msgid "The import failed due to:" -msgstr "فشلت عملية الإستيراد للأسباب التالية:" +msgstr "فشلت عملية الاستيراد بسبب:" #. module: web #. openerp-web @@ -1930,7 +1944,7 @@ msgstr "فشلت عملية الإستيراد للأسباب التالية:" #: code:addons/web/static/src/xml/base.xml:561 #, python-format msgid "JS Tests" -msgstr "" +msgstr "اختبارات جافاسكربت" #. module: web #. openerp-web @@ -1944,7 +1958,7 @@ msgstr "حفظ باسم:" #: code:addons/web/static/src/js/search.js:1024 #, python-format msgid "Filter on: %s" -msgstr "" +msgstr "الفرز على: %s" #. module: web #. openerp-web @@ -1974,21 +1988,21 @@ msgstr "عرض الحقول" #: code:addons/web/static/src/xml/base.xml:348 #, python-format msgid "Confirm New Password:" -msgstr "" +msgstr "تأكيد كلمة المرور الجديدة:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:587 #, python-format msgid "Do you really want to remove these records?" -msgstr "هل تريد إزالة هذه السجلات ؟" +msgstr "هل ترغب حقاً في إزالة هذه السجلات؟" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:980 #, python-format msgid "Context:" -msgstr "سياق:" +msgstr "السياق:" #. module: web #. openerp-web @@ -2010,14 +2024,14 @@ msgstr "تصدير البيانات" #: code:addons/web/static/src/xml/base.xml:984 #, python-format msgid "Domain:" -msgstr "نطاق:" +msgstr "النطاق:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:856 #, python-format msgid "Default:" -msgstr "الإفتراضي:" +msgstr "الافتراضي" #. module: web #. openerp-web @@ -2032,7 +2046,7 @@ msgstr "OpenERP" #: code:addons/web/doc/module/static/src/xml/web_example.xml:8 #, python-format msgid "Stop" -msgstr "" +msgstr "إيقاف" #. module: web #. openerp-web @@ -2049,14 +2063,14 @@ msgstr "قاعدة البيانات:" #: code:addons/web/static/src/xml/base.xml:1268 #, python-format msgid "Uploading ..." -msgstr "جاري التحميل..." +msgstr "جاري الرفع..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1874 #, python-format msgid "Name:" -msgstr "" +msgstr "الاسم:" #. module: web #. openerp-web @@ -2070,14 +2084,14 @@ msgstr "حول" #: code:addons/web/static/src/xml/base.xml:1457 #, python-format msgid "Search Again" -msgstr "" +msgstr "ابحث مجدداً" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1481 #, python-format msgid "-- Filters --" -msgstr "-- المرشحات --" +msgstr "-- معاملات الفرز --" #. module: web #. openerp-web @@ -2085,14 +2099,14 @@ msgstr "-- المرشحات --" #: code:addons/web/static/src/js/search.js:2165 #, python-format msgid "%(field)s %(operator)s" -msgstr "" +msgstr "%(field)s %(operator)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1698 #, python-format msgid "Export all Data" -msgstr "تصدير جميع البيانات" +msgstr "تصدير كافة البيانات" #. module: web #. openerp-web @@ -2102,13 +2116,14 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" +"التجميع على الحقل '%s' غير ممكن لأن هذا الحقل لا يظهر في واجهة القائمة." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:559 #, python-format msgid "Set Defaults" -msgstr "" +msgstr "ضبط الافتراضيات" #. module: web #. openerp-web @@ -2120,10 +2135,8 @@ msgid "" " You can export all data or only the fields that can be " "reimported after modification." msgstr "" -"هذا المعالج سيقوم بتصدير كافة البيانات التي تطابق شروط البحث الحالية لملف " -"CSV.\n" -" يمكنك تصدير كل البيانات أو الحقول التي يمكن إستيرادها بعد " -"التعديل." +"سيقوم هذا المعالج بتصدير كافة البيانات التي تطابق معايير البحث/n " +"إلى ملف CSV. يمكنك تصدير كافة البيانات أو الحقول التي يمكنك استيرادها لاحقاً." #. module: web #. openerp-web @@ -2144,28 +2157,28 @@ msgstr "عرض سنة أخرى" #: code:addons/web/static/src/xml/base.xml:1498 #, python-format msgid "Filter Name:" -msgstr "اسم المرشح:" +msgstr "اسم معامل الفرز:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:968 #, python-format msgid "Type:" -msgstr "نوع:" +msgstr "النوع:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:560 #, python-format msgid "Incorrect super-administrator password" -msgstr "" +msgstr "كلمة مرور المدير العام غير صحيحة" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:964 #, python-format msgid "Object:" -msgstr "كائن:" +msgstr "الكائن:" #. module: web #. openerp-web @@ -2173,7 +2186,7 @@ msgstr "كائن:" #: code:addons/web/static/src/js/chrome.js:343 #, python-format msgid "Loading" -msgstr "تحميل" +msgstr "جاري التحميل" #. module: web #. openerp-web @@ -2187,7 +2200,7 @@ msgstr "عرض الشهر الحالي" #: code:addons/web/static/src/js/coresetup.js:599 #, python-format msgid "about a year ago" -msgstr "" +msgstr "منذ سنة تقريباً" #. module: web #. openerp-web @@ -2197,7 +2210,7 @@ msgstr "" #: code:addons/web/static/src/js/search.js:2120 #, python-format msgid "is not equal to" -msgstr "ليس مساويًا لـ" +msgstr "لا يساوي" #. module: web #. openerp-web @@ -2207,6 +2220,7 @@ msgid "" "The type of the field '%s' must be a many2many field with a relation to " "'ir.attachment' model." msgstr "" +"نوع الحقل '%s' يجب أن يكون M2M مع علاقة تربطه بموديل 'ir.attachment'." #. module: web #. openerp-web @@ -2215,21 +2229,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1260 #, python-format msgid "Clear" -msgstr "إفراغ" +msgstr "تفريغ" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:132 #, python-format msgid "Select a database name:" -msgstr "" +msgstr "اختر اسم قاعدة البيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:594 #, python-format msgid "%d hours ago" -msgstr "قبل %d ساعة/ساعات" +msgstr "منذ %d ساعة مضت" #. module: web #. openerp-web @@ -2244,7 +2258,7 @@ msgstr "إضافة: " #: code:addons/web/static/src/xml/base.xml:1879 #, python-format msgid "Quick Add" -msgstr "" +msgstr "إضافة سريعة" #. module: web #. openerp-web @@ -2264,21 +2278,21 @@ msgstr "Latin 1" #: code:addons/web/static/src/xml/base.xml:1773 #, python-format msgid "Ok" -msgstr "تم" +msgstr "موافق" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1237 #, python-format msgid "Uploading..." -msgstr "تحميل..." +msgstr "جاري الرفع..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:637 #, python-format msgid "Created by :" -msgstr "" +msgstr "أنشأه:" #. module: web #. openerp-web @@ -2286,14 +2300,14 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:26 #, python-format msgid "'%s' is not a valid datetime" -msgstr "" +msgstr "'%s' ليس تاريخ-وقت صالح" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:274 #, python-format msgid "File:" -msgstr "ملف:" +msgstr "الملف:" #. module: web #. openerp-web @@ -2317,28 +2331,28 @@ msgstr "تحذير" #: code:addons/web/static/src/xml/base.xml:569 #, python-format msgid "Edit SearchView" -msgstr "تحرير بحث العروض" +msgstr "تحرير واجهة البحث" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2160 #, python-format msgid "is true" -msgstr "يكون صواب" +msgstr "True" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4030 #, python-format msgid "Add an item" -msgstr "" +msgstr "إضافة عنصر" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1621 #, python-format msgid "Save current filter" -msgstr "" +msgstr "حفظ معامل الفرز الحالي" #. module: web #. openerp-web @@ -2352,7 +2366,7 @@ msgstr "تأكيد" #: code:addons/web/static/src/js/data_export.js:127 #, python-format msgid "Please enter save field list name" -msgstr "رجاء حفظ اسم قائمة الحقل" +msgstr "الرجاء كتابة اسم لقائمة الحقول" #. module: web #. openerp-web @@ -2366,14 +2380,14 @@ msgstr "تحميل \"%s\"" #: code:addons/web/static/src/js/view_form.js:325 #, python-format msgid "New" -msgstr "" +msgstr "جديد" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1777 #, python-format msgid "Can't convert value %s to context" -msgstr "" +msgstr "لم يمكن تحويل القيمة %s إلى سياق" #. module: web #. openerp-web @@ -2411,14 +2425,14 @@ msgstr "زر" #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "OpenERP is a trademark of the" -msgstr "OpenERP هي علامة تجارية لـ" +msgstr "OpenERP علامة تجارية ملك" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:375 #, python-format msgid "Please select fields to export..." -msgstr "اختر الحقول للتصدير..." +msgstr "اختر حقولاً لتصديرها..." #. module: web #. openerp-web @@ -2429,7 +2443,7 @@ msgstr "اختر الحقول للتصدير..." #: code:addons/web/static/src/js/search.js:2146 #, python-format msgid "is not set" -msgstr "لم يضبط" +msgstr "غير مضبوط" #. module: web #. openerp-web @@ -2443,69 +2457,69 @@ msgstr "كلمة مرور رئيسية جديدة:" #: code:addons/web/static/src/xml/base.xml:1626 #, python-format msgid "Share with all users" -msgstr "" +msgstr "مشاركة مع كافة المستخدمين" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2161 #, python-format msgid "is false" -msgstr "يكون خاطئ" +msgstr "False" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:426 #, python-format msgid "About OpenERP" -msgstr "" +msgstr "حول OpenERP" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:301 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "" +msgstr "'%s' ليس تاريخاً أو وقتاً أو حتى تاريخ-وقت صحيح" #. module: web #: code:addons/web/controllers/main.py:1307 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "" +msgstr "لم نجد محتوى للحقل '%s' في '%s:%s'." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:322 #, python-format msgid "Database Management" -msgstr "" +msgstr "قواعد البيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5138 #, python-format msgid "Image" -msgstr "" +msgstr "الصورة" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:81 #, python-format msgid "Manage Databases" -msgstr "إدارة قواعد البيانات" +msgstr "قواعد البيانات" #. module: web #. openerp-web #: code:addons/web/static/src/js/pyeval.js:770 #, python-format msgid "Evaluation Error" -msgstr "" +msgstr "خطأ تقييم" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1387 #, python-format msgid "not a valid integer" -msgstr "قيمة رقمية خاطئة" +msgstr "عدد طبيعي غير صالح" #. module: web #. openerp-web @@ -2517,21 +2531,21 @@ msgstr "قيمة رقمية خاطئة" #: code:addons/web/static/src/xml/base.xml:1648 #, python-format msgid "or" -msgstr "" +msgstr "أو" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1485 #, python-format msgid "No" -msgstr "كلا" +msgstr "لا" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:313 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "" +msgstr "'%s' غير قابل للتحويل إلى تاريخ، وقت أو تاريخ-وقت." #. module: web #. openerp-web @@ -2540,7 +2554,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:325 #, python-format msgid "Duplicate" -msgstr "تكرار" +msgstr "استنساخ" #. module: web #. openerp-web @@ -2549,28 +2563,28 @@ msgstr "تكرار" #: code:addons/web/static/src/xml/base.xml:1419 #, python-format msgid "Discard" -msgstr "" +msgstr "تجاهل" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5314 #, python-format msgid "Uploading Error" -msgstr "" +msgstr "خطأ بالرفع" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1642 #, python-format msgid "Add a condition" -msgstr "" +msgstr "إضافة شرط" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:619 #, python-format msgid "Still loading..." -msgstr "" +msgstr "لا يزال التحميل جاري..." #. module: web #. openerp-web @@ -2584,7 +2598,7 @@ msgstr "قيمة خاطئة للحقل %(fieldname)s: [%(value)s] تكون %(mes #: code:addons/web/static/src/js/view_form.js:3926 #, python-format msgid "The o2m record must be saved before an action can be used" -msgstr "" +msgstr "يجب حفظ سجل O2M قبل استخدام الإجراء" #. module: web #. openerp-web @@ -2598,7 +2612,7 @@ msgstr "مدعوم" #: code:addons/web/static/src/xml/base.xml:1628 #, python-format msgid "Use by default" -msgstr "" +msgstr "استخدامه كافتراضي" #. module: web #. openerp-web @@ -2616,28 +2630,28 @@ msgstr "فتح: " #: code:addons/web/static/src/js/view_list.js:1358 #, python-format msgid "%s (%d)" -msgstr "" +msgstr "%s (%d)" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:841 #, python-format msgid "triggered from search view" -msgstr "مشغلة من بحث العرض" +msgstr "تُشغل من واجهة البحث" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1079 #, python-format msgid "Filter" -msgstr "" +msgstr "معامل الفرز" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:972 #, python-format msgid "Widget:" -msgstr "ودجة:" +msgstr "الأداة:" #. module: web #. openerp-web @@ -2653,6 +2667,8 @@ msgstr "تحرير الإجراء" msgid "" "This filter is global and will be removed for everybody if you continue." msgstr "" +"معامل الفرز هذا عام على النظام وسيتم حذفه من كافة المستخدمين إذا تابعت " +"العملية." #. module: web #. openerp-web @@ -2673,49 +2689,49 @@ msgstr "أنت فقط" #: code:addons/web/static/src/xml/base.xml:571 #, python-format msgid "Edit Workflow" -msgstr "حرر مسار العمل" +msgstr "تحرير مسار التدفق" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1246 #, python-format msgid "Do you really want to delete this attachment ?" -msgstr "" +msgstr "هل ترغب حقاً في حذف هذا المرفق؟" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:914 #, python-format msgid "Technical Translation" -msgstr "" +msgstr "الترجمة التقنية" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:960 #, python-format msgid "Field:" -msgstr "حقل:" +msgstr "الحقل:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:642 #, python-format msgid "Modified by :" -msgstr "" +msgstr "حرره:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:521 #, python-format msgid "The database %s has been dropped" -msgstr "" +msgstr "تم حذف قاعدة البيانات %s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:482 #, python-format msgid "User's timezone" -msgstr "" +msgstr "المنطقة الزمنية للمستخدم" #. module: web #. openerp-web @@ -2723,14 +2739,14 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:1276 #, python-format msgid "Client Error" -msgstr "خطأ عميل" +msgstr "خطأ بالعميل" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1073 #, python-format msgid "Print" -msgstr "" +msgstr "طباعة" #. module: web #. openerp-web @@ -2744,21 +2760,21 @@ msgstr "خاص:" #, python-format msgid "" "The old password you provided is incorrect, your password was not changed." -msgstr "" +msgstr "كلمة المرور القديمة غير صحيحة. لم يتم تغيير كلمة المرور." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:583 #, python-format msgid "Creation User:" -msgstr "منشأ بالمستخدم:" +msgstr "أنشأ بواسطة:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:769 #, python-format msgid "Do you really want to delete this record?" -msgstr "هل تريد حذف هذا السجل؟" +msgstr "هل ترغب حقاً في حذف هذا السجل؟" #. module: web #. openerp-web @@ -2779,7 +2795,7 @@ msgstr "حفظ و إغلاق" #: code:addons/web/static/src/js/view_form.js:2932 #, python-format msgid "Search More..." -msgstr "" +msgstr "بحث عن المزيد..." #. module: web #. openerp-web @@ -2825,21 +2841,21 @@ msgstr "اختر التاريخ" #: code:addons/web/static/src/js/search.js:1369 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "" +msgstr "بحث في %(field)s عن %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1305 #, python-format msgid "Delete this file" -msgstr "" +msgstr "حذف هذا الملف" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:168 #, python-format msgid "Create Database" -msgstr "" +msgstr "إنشاء قاعدة بيانات" #. module: web #. openerp-web @@ -2853,7 +2869,7 @@ msgstr "GNU Affero General Public License" #: code:addons/web/static/src/xml/base.xml:1816 #, python-format msgid "Separator:" -msgstr "فاصل :" +msgstr "الفاصل:" #. module: web #. openerp-web @@ -2868,7 +2884,7 @@ msgstr "الثانية" #: code:addons/web/static/src/xml/base.xml:1480 #, python-format msgid "Filters" -msgstr "المرشحات" +msgstr "معاملات الفرز" #, python-format #~ msgid "Admin password:" diff --git a/addons/web/i18n/bg.po b/addons/web/i18n/bg.po index 8a8d5781150..517230742f1 100644 --- a/addons/web/i18n/bg.po +++ b/addons/web/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bn.po b/addons/web/i18n/bn.po index a26f0977b3d..95199f3cb64 100644 --- a/addons/web/i18n/bn.po +++ b/addons/web/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bs.po b/addons/web/i18n/bs.po index 9f1e0b93a65..d04ad62796d 100644 --- a/addons/web/i18n/bs.po +++ b/addons/web/i18n/bs.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" "PO-Revision-Date: 2013-09-05 10:27+0000\n" -"Last-Translator: Bosko Stojakovic \n" +"Last-Translator: Boško Stojaković \n" "Language-Team: Bosnian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -2908,3 +2908,23 @@ msgstr "Filteri" #, python-format #~ msgid "Admin password:" #~ msgstr "Administratorov pasword:" + +#, python-format +#~ msgid "File" +#~ msgstr "Datoteka" + +#, python-format +#~ msgid "Uploading error" +#~ msgstr "Greška pri slanju" + +#, python-format +#~ msgid "E-mail error" +#~ msgstr "Greška e-maila" + +#, python-format +#~ msgid "Resource error" +#~ msgstr "Greška resursa" + +#, python-format +#~ msgid "/web/binary/upload_attachment" +#~ msgstr "/web/binary/upload_attachment" diff --git a/addons/web/i18n/ca.po b/addons/web/i18n/ca.po index 75578c8d459..701110fc75a 100644 --- a/addons/web/i18n/ca.po +++ b/addons/web/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/cs.po b/addons/web/i18n/cs.po index 71038cd0faf..5ef58f65a82 100644 --- a/addons/web/i18n/cs.po +++ b/addons/web/i18n/cs.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-08-25 07:34+0000\n" -"Last-Translator: Jan B. Krejčí \n" +"PO-Revision-Date: 2014-03-07 21:03+0000\n" +"Last-Translator: Jiří Hajda \n" "Language-Team: openerp-i18n-czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" "X-Poedit-Language: Czech\n" #. module: web @@ -1781,7 +1781,7 @@ msgstr "Mažu databázi" #: code:addons/web/static/src/xml/base.xml:467 #, python-format msgid "Powered by" -msgstr "" +msgstr "Založeno na" #. module: web #. openerp-web diff --git a/addons/web/i18n/da.po b/addons/web/i18n/da.po index 36c3b72f2e7..cc12f2e09e2 100644 --- a/addons/web/i18n/da.po +++ b/addons/web/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/de.po b/addons/web/i18n/de.po index 3834b934670..6367a61e99e 100644 --- a/addons/web/i18n/de.po +++ b/addons/web/i18n/de.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-11-12 15:33+0000\n" -"Last-Translator: Felix Schubert \n" +"PO-Revision-Date: 2014-02-02 18:57+0000\n" +"Last-Translator: Ralf Hilgenstock \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -66,6 +66,12 @@ msgid "" "created,\n" " you will be able to install your first application." msgstr "" +"Füllen Sie dieses Formular aus, um eine OpenERP Datenbank zu erzeugen. Sie " +"können:\n" +" Datenbanken für mehrere Firmen anlegen oder Datenbanken " +"für unterschiedliche Einsatzzwecke (Test, Produktion) erzeugen.\n" +" Sobald die Datenbank angelegt wurde, können Sie ihre " +"erste Anwendung installieren." #. module: web #. openerp-web @@ -74,14 +80,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:300 #, python-format msgid "Master password:" -msgstr "Master Passwort" +msgstr "Masterpasswort" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:292 #, python-format msgid "Change Master Password" -msgstr "Master Passwort ändern" +msgstr "Masterpasswort ändern" #. module: web #. openerp-web @@ -168,7 +174,8 @@ msgstr "Nachfolger>" #: code:addons/web/static/src/xml/base.xml:1858 #, python-format msgid "Here is a preview of the file we could not import:" -msgstr "Hier ist eine Vorschau der Datei die nicht importiert werden konnte" +msgstr "" +"Hier ist eine Vorschau der Datei, die nicht importiert werden konnte:" #. module: web #. openerp-web @@ -204,7 +211,7 @@ msgstr "Ungültiger Benutzername oder Passwort" #: code:addons/web/static/src/xml/base.xml:278 #, python-format msgid "Master Password:" -msgstr "Master Passwort" +msgstr "Masterpasswort" #. module: web #. openerp-web @@ -212,7 +219,7 @@ msgstr "Master Passwort" #: code:addons/web/static/src/xml/base.xml:1402 #, python-format msgid "Select" -msgstr "Ausgewählte Hinzufügen" +msgstr "Auswählen" #. module: web #. openerp-web @@ -248,14 +255,14 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "Widget Typ '%s' ist nicht implementiert" +msgstr "Widgettyp '%s' ist nicht implementiert" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:134 #, python-format msgid "e.g. mycompany" -msgstr "" +msgstr "z.B. meine Firma" #. module: web #. openerp-web @@ -284,7 +291,7 @@ msgstr "(keine Zeichen)" #: code:addons/web/static/src/js/formats.js:286 #, python-format msgid "'%s' is not a correct time" -msgstr "'%s' ist keine gülte Zeit" +msgstr "'%s' ist keine gültige Zeitangabe" #. module: web #. openerp-web @@ -347,7 +354,7 @@ msgstr "Benutzerdefinierte Filter" #: code:addons/web/static/src/xml/base.xml:1364 #, python-format msgid "Button Type:" -msgstr "Schaltfläche Typ:" +msgstr "Button-Typ:" #. module: web #. openerp-web @@ -390,14 +397,14 @@ msgstr "Passwort ändern" #: code:addons/web/static/src/js/view_form.js:3528 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "Ansichtstyp '%s' wird von O2M nicht unterstützt." +msgstr "Ansichtstyp '%s' wird von One2Many nicht unterstützt." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:189 #, python-format msgid "Original database name:" -msgstr "Original Datenbank Name :" +msgstr "Original Datenbankname :" #. module: web #. openerp-web @@ -433,7 +440,7 @@ msgstr "KW" #: code:addons/web/static/src/xml/base.xml:949 #, python-format msgid "Unhandled widget" -msgstr "unbekanntes Oberflächenelement" +msgstr "Unbekanntes Oberflächenelement" #. module: web #. openerp-web @@ -524,7 +531,7 @@ msgstr "Nehmen Sie sich einen Moment Zeit,
laden dauert noch etwas..." #: code:addons/web/static/src/xml/base.xml:435 #, python-format msgid "Activate the developer mode" -msgstr "Entwickler Modus aktivieren" +msgstr "Entwicklermodus aktivieren" #. module: web #. openerp-web @@ -580,7 +587,7 @@ msgstr "vor weniger als einer Minute" #: code:addons/web/static/src/js/view_form.js:2453 #, python-format msgid "Select a date" -msgstr "Wähle ein Datum" +msgstr "Wählen Sie ein Datum" #. module: web #. openerp-web @@ -685,7 +692,7 @@ msgstr "All Informationen hinzufügen..." #: code:addons/web/static/src/xml/base.xml:1701 #, python-format msgid "Export Formats" -msgstr "Export Formate" +msgstr "Exportformate" #. module: web #. openerp-web @@ -848,7 +855,7 @@ msgstr "00:00:00" #: code:addons/web/static/src/js/coresetup.js:595 #, python-format msgid "a day ago" -msgstr "Vor 1 Tag" +msgstr "vor einem Tag" #. module: web #. openerp-web @@ -862,7 +869,7 @@ msgstr "Installiere Demodaten:" #: code:addons/web/static/src/xml/base.xml:1810 #, python-format msgid "Does your file have titles?" -msgstr "Enthält Ihre Datei eine Titel Zeile?" +msgstr "Enthält Ihre Datei eine Titelzeile?" #. module: web #. openerp-web @@ -932,7 +939,7 @@ msgstr "Filtername" #: code:addons/web/static/src/xml/base.xml:1490 #, python-format msgid "-- Actions --" -msgstr "-- Actions --" +msgstr "-- Aktionen --" #. module: web #. openerp-web @@ -984,7 +991,7 @@ msgstr "Einstellungen" #: code:addons/web/static/src/xml/base.xml:1704 #, python-format msgid "Only export selection:" -msgstr "" +msgstr "Nur Auswahl exportieren:" #. module: web #. openerp-web @@ -1075,7 +1082,7 @@ msgstr "Ihr Passwort wurde erfolgreich geändert" #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "Resource Error" -msgstr "" +msgstr "Ressourcen Fehler" #. module: web #. openerp-web @@ -1089,7 +1096,7 @@ msgstr "Stunde" #: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Debug View#" -msgstr "Source von Sicht#" +msgstr "Debugansicht#" #. module: web #. openerp-web @@ -1134,7 +1141,7 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:367 #, python-format msgid "Invalid database name" -msgstr "Ungültiger Datenbank Name" +msgstr "Ungültiger Datenbankname" #. module: web #. openerp-web @@ -1169,7 +1176,7 @@ msgstr "Erstellungsdatum:" #: code:addons/web/controllers/main.py:878 #, python-format msgid "Error, password not changed !" -msgstr "Fehler, das Passwort wurde nicht geändert!" +msgstr "Fehler: das Passwort wurde nicht geändert!" #. module: web #. openerp-web @@ -1225,7 +1232,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:327 #, python-format msgid "Backup" -msgstr "Sichern" +msgstr "Backup" #. module: web #. openerp-web @@ -1341,7 +1348,7 @@ msgid "" msgstr "" "Wählen Sie eine CSV Datei aus, die Sie importieren möchten. Wenn Sie eine " "Beispieldatei benötigen,\n" -" sollten Sie beim Export die Option \"Import-Kompatibel\" wählen." +" sollten Sie beim Export die Option \"Import kompatibel\" wählen." #. module: web #. openerp-web @@ -1406,7 +1413,7 @@ msgstr "Wiederherstellen" #: code:addons/web/static/src/xml/base.xml:1695 #, python-format msgid "Export Type:" -msgstr "Export Typ:" +msgstr "Exporttyp:" #. module: web #. openerp-web @@ -1630,7 +1637,7 @@ msgstr "Erweiterte Suche" #: code:addons/web/static/src/xml/base.xml:308 #, python-format msgid "Confirm new master password:" -msgstr "Bestätigen Sie das neue Master Passwort:" +msgstr "Bestätigen Sie das neue Masterpasswort:" #. module: web #. openerp-web @@ -1690,7 +1697,7 @@ msgstr "Wählen Sie ein Passwort:" #: code:addons/web/static/src/js/view_form.js:2451 #, python-format msgid "Select D, M d" -msgstr "Wähle D, M d aus" +msgstr "Wählen Sie D, M d aus" #. module: web #. openerp-web @@ -1740,7 +1747,7 @@ msgstr "'%s' ist kein gültiger Integer-Wert" #: code:addons/web/static/src/xml/base.xml:899 #, python-format msgid "All users" -msgstr "Für alle Benutzer" +msgstr "Alle Benutzer" #. module: web #. openerp-web @@ -1869,7 +1876,7 @@ msgstr "Bitte geben Sie Ihr neues Passwort ein" #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "Das Feld ist leer, sie können nichts speichern!" +msgstr "Das Feld ist leer. Sie können nichts speichern!" #. module: web #. openerp-web @@ -1984,7 +1991,7 @@ msgstr "Abgeschlossen" #: code:addons/web/static/src/xml/base.xml:562 #, python-format msgid "View Fields" -msgstr "Ansicht Felder" +msgstr "Felder anzeigen" #. module: web #. openerp-web @@ -1998,7 +2005,7 @@ msgstr "Neues Passwort bestätigen:" #: code:addons/web/static/src/js/view_list.js:587 #, python-format msgid "Do you really want to remove these records?" -msgstr "Möchten Sie diese Datensätze wirklich löschen" +msgstr "Möchten Sie diese Datensätze wirklich löschen?" #. module: web #. openerp-web @@ -2049,7 +2056,7 @@ msgstr "OpenERP" #: code:addons/web/doc/module/static/src/xml/web_example.xml:8 #, python-format msgid "Stop" -msgstr "Stop" +msgstr "Stopp" #. module: web #. openerp-web @@ -2102,7 +2109,7 @@ msgstr "-- Filter --" #: code:addons/web/static/src/js/search.js:2165 #, python-format msgid "%(field)s %(operator)s" -msgstr "" +msgstr "%(field)s %(operator)s" #. module: web #. openerp-web @@ -2139,8 +2146,8 @@ msgid "" " You can export all data or only the fields that can be " "reimported after modification." msgstr "" -"Dieser Assistent wird alle Daten in eine CSV exportieren, die den aktuellen " -"Suchbedingungen entsprechen.\n" +"Dieser Assistent wird alle Daten in eine CSV Datei exportieren, die den " +"aktuellen Suchbedingungen entsprechen.\n" " Sie können alle Daten oder nur die Felder exportieren, die nach einer " "Bearbeitung wieder importiert werden können." @@ -2163,7 +2170,7 @@ msgstr "Ein anderes Jahr anzeigen" #: code:addons/web/static/src/xml/base.xml:1498 #, python-format msgid "Filter Name:" -msgstr "Filter Name:" +msgstr "Filtername:" #. module: web #. openerp-web @@ -2236,14 +2243,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1260 #, python-format msgid "Clear" -msgstr "Suche Leeren" +msgstr "Suche löschen" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:132 #, python-format msgid "Select a database name:" -msgstr "Datenbankname:" +msgstr "Wählen Sie einen Datenbanknamen:" #. module: web #. openerp-web @@ -2323,7 +2330,7 @@ msgstr "Datei:" #: code:addons/web/static/src/js/search.js:2122 #, python-format msgid "less than" -msgstr "ist kleiner als" +msgstr "ist weniger als" #. module: web #. openerp-web @@ -2345,7 +2352,7 @@ msgstr "Bearbeite Suchansicht" #: code:addons/web/static/src/js/search.js:2160 #, python-format msgid "is true" -msgstr "ist Wahr" +msgstr "ist wahr" #. module: web #. openerp-web @@ -2402,7 +2409,7 @@ msgstr "Kann Wert %s nicht in den Kontext konvertieren" #: code:addons/web/static/src/xml/base.xml:563 #, python-format msgid "Fields View Get" -msgstr "Feld Ansicht Definition" +msgstr "Ansicht der Felder aufrufen" #. module: web #. openerp-web @@ -2425,7 +2432,7 @@ msgstr "ist größer oder gleich als" #: code:addons/web/static/src/xml/base.xml:1349 #, python-format msgid "Button" -msgstr "Schaltfläche" +msgstr "Button" #. module: web #. openerp-web @@ -2457,7 +2464,7 @@ msgstr "ist nicht gesetzt" #: code:addons/web/static/src/xml/base.xml:304 #, python-format msgid "New master password:" -msgstr "Neues Master Passwort:" +msgstr "Neues Masterpasswort:" #. module: web #. openerp-web @@ -2500,7 +2507,7 @@ msgstr "Kein Inhalt für das Feld '%s' am '%s:%s' gefunden" #: code:addons/web/static/src/xml/base.xml:322 #, python-format msgid "Database Management" -msgstr "Datenbank Verwaltung" +msgstr "Datenbankverwaltung" #. module: web #. openerp-web @@ -2521,7 +2528,7 @@ msgstr "Datenbanken verwalten" #: code:addons/web/static/src/js/pyeval.js:770 #, python-format msgid "Evaluation Error" -msgstr "Evalution Fehler" +msgstr "Evalutionsfehler" #. module: web #. openerp-web @@ -2781,7 +2788,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:583 #, python-format msgid "Creation User:" -msgstr "Benutzer Erstellung" +msgstr "Benutzer erstellen" #. module: web #. openerp-web @@ -2809,7 +2816,7 @@ msgstr "Speichern & Beenden" #: code:addons/web/static/src/js/view_form.js:2932 #, python-format msgid "Search More..." -msgstr "Mehr suchen" +msgstr "Weitere suchen..." #. module: web #. openerp-web diff --git a/addons/web/i18n/en_AU.po b/addons/web/i18n/en_AU.po index 018b61b3970..2263c32fcab 100644 --- a/addons/web/i18n/en_AU.po +++ b/addons/web/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_GB.po b/addons/web/i18n/en_GB.po index 27e73e922e0..168bb32dee5 100644 --- a/addons/web/i18n/en_GB.po +++ b/addons/web/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es.po b/addons/web/i18n/es.po index a971f562ac0..d486b081638 100644 --- a/addons/web/i18n/es.po +++ b/addons/web/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CL.po b/addons/web/i18n/es_CL.po index 0349271af6c..d1968dd6e31 100644 --- a/addons/web/i18n/es_CL.po +++ b/addons/web/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CR.po b/addons/web/i18n/es_CR.po index 887f384425d..f7041b27bc0 100644 --- a/addons/web/i18n/es_CR.po +++ b/addons/web/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_DO.po b/addons/web/i18n/es_DO.po index c12a69ef6ef..37c1c5dab4c 100644 --- a/addons/web/i18n/es_DO.po +++ b/addons/web/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_EC.po b/addons/web/i18n/es_EC.po index 8c5c94ee621..2209d82e40a 100644 --- a/addons/web/i18n/es_EC.po +++ b/addons/web/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_MX.po b/addons/web/i18n/es_MX.po index d0f918f8f25..e7802f4836f 100644 --- a/addons/web/i18n/es_MX.po +++ b/addons/web/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_PE.po b/addons/web/i18n/es_PE.po index 6b12dbce212..f5fee398d57 100644 --- a/addons/web/i18n/es_PE.po +++ b/addons/web/i18n/es_PE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/et.po b/addons/web/i18n/et.po index 69dc0defea0..fa025bfbdcd 100644 --- a/addons/web/i18n/et.po +++ b/addons/web/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -547,7 +547,7 @@ msgstr "Laadimine (%d)" #: code:addons/web/static/src/js/search.js:1216 #, python-format msgid "GroupBy" -msgstr "" +msgstr "Grupeeri" #. module: web #. openerp-web @@ -645,7 +645,7 @@ msgstr "Loo ja Muuda..." #: code:addons/web/static/src/js/pyeval.js:736 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "Tundmatu mittesõnaline tüüp " #. module: web #. openerp-web @@ -701,7 +701,7 @@ msgstr "Ekspordi formaadid" #: code:addons/web/static/src/xml/base.xml:996 #, python-format msgid "On change:" -msgstr "" +msgstr "Muudatusel:" #. module: web #. openerp-web @@ -784,7 +784,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1777 #, python-format msgid "Saved exports:" -msgstr "" +msgstr "Salvestatud väljastused:" #. module: web #. openerp-web @@ -848,7 +848,7 @@ msgstr "" #: code:addons/web/doc/module/static/src/xml/web_example.xml:3 #, python-format msgid "00:00:00" -msgstr "" +msgstr "00:00:00" #. module: web #. openerp-web @@ -896,7 +896,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:2991 #, python-format msgid "Search: " -msgstr "" +msgstr "Otsi: " #. module: web #. openerp-web @@ -917,7 +917,7 @@ msgstr "Tehniline tõlge" #: code:addons/web/static/src/xml/base.xml:1818 #, python-format msgid "Delimiter:" -msgstr "" +msgstr "Eraldaja:" #. module: web #. openerp-web @@ -1018,7 +1018,7 @@ msgstr "Klõpsa siia, et vahetada oma kasutaja ajavööndit." #: code:addons/web/static/src/xml/base.xml:988 #, python-format msgid "Modifiers:" -msgstr "" +msgstr "Täpsustajad:" #. module: web #. openerp-web @@ -1140,7 +1140,7 @@ msgstr "" #: code:addons/web/doc/module/static/src/xml/web_example.xml:5 #, python-format msgid "Start" -msgstr "" +msgstr "Käivita" #. module: web #. openerp-web @@ -1183,7 +1183,7 @@ msgstr "Vaade" #: code:addons/web/static/src/xml/base.xml:1457 #, python-format msgid "Search" -msgstr "" +msgstr "Otsi" #. module: web #. openerp-web @@ -1222,7 +1222,7 @@ msgstr "Varunda" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "" +msgstr "'%s' ei ole sobiv aeg" #. module: web #. openerp-web @@ -2886,3 +2886,7 @@ msgstr "Filtrid" #, python-format #~ msgid "Resource error" #~ msgstr "Ressurss vigane" + +#, python-format +#~ msgid "E-mail error" +#~ msgstr "E-posti viga" diff --git a/addons/web/i18n/eu.po b/addons/web/i18n/eu.po index 210adcd75b2..23551fe2676 100644 --- a/addons/web/i18n/eu.po +++ b/addons/web/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fa.po b/addons/web/i18n/fa.po index da8c8a72e75..6a2cf7621be 100644 --- a/addons/web/i18n/fa.po +++ b/addons/web/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fi.po b/addons/web/i18n/fi.po index e5512a95b8d..597dfd88dd4 100644 --- a/addons/web/i18n/fi.po +++ b/addons/web/i18n/fi.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-12-09 20:29+0000\n" +"PO-Revision-Date: 2014-02-24 08:45+0000\n" "Last-Translator: Harri Luuppala \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -266,7 +266,7 @@ msgstr "esim. omayritys" #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "Asiakirjan dataa ei voida hylätä" +msgstr "Lomakkeen tietoja ei voi hylätä" #. module: web #. openerp-web @@ -1574,7 +1574,7 @@ msgstr "Ohje" #: code:addons/web/static/src/xml/base.xml:558 #, python-format msgid "Toggle Form Layout Outline" -msgstr "Näytä Sijoittelu" +msgstr "Vaihda lomakkeen asettelua" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po index 73514802761..cd8993741a3 100644 --- a/addons/web/i18n/fr.po +++ b/addons/web/i18n/fr.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-07-28 06:54+0000\n" -"Last-Translator: Gestion-Ressources \n" +"PO-Revision-Date: 2013-12-31 08:56+0000\n" +"Last-Translator: WANTELLET Sylvain \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -96,7 +96,7 @@ msgstr "Changer le mot de passe principal" #: code:addons/web/static/src/js/view_form.js:2439 #, python-format msgid "Today" -msgstr "" +msgstr "Aujourd'hui" #. module: web #. openerp-web @@ -124,7 +124,7 @@ msgstr "Accès refusé" #: code:addons/web/static/src/js/view_form.js:2462 #, python-format msgid "Now" -msgstr "" +msgstr "Maintenant" #. module: web #. openerp-web @@ -169,7 +169,7 @@ msgstr "'%s' n'est pas une date valide" #: code:addons/web/static/src/js/view_form.js:2437 #, python-format msgid "Next>" -msgstr "" +msgstr "Suiv.>" #. module: web #. openerp-web @@ -286,7 +286,7 @@ msgstr "Formulaire" #: code:addons/web/static/src/xml/base.xml:1352 #, python-format msgid "(no string)" -msgstr "(no string)" +msgstr "(chaîne vide)" #. module: web #. openerp-web @@ -590,7 +590,7 @@ msgstr "il y a moins d'une minute" #: code:addons/web/static/src/js/view_form.js:2453 #, python-format msgid "Select a date" -msgstr "" +msgstr "Sélectionnez une date" #. module: web #. openerp-web @@ -604,7 +604,7 @@ msgstr "Condition :" #: code:addons/web/static/src/js/view_form.js:2458 #, python-format msgid "Time" -msgstr "" +msgstr "Heure" #. module: web #. openerp-web @@ -994,14 +994,14 @@ msgstr "Préférences" #: code:addons/web/static/src/xml/base.xml:1704 #, python-format msgid "Only export selection:" -msgstr "" +msgstr "N'exporter que les éléments sélectionnés" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:435 #, python-format msgid "Wrong on change format: %s" -msgstr "Mauvais format sur le changement : %s" +msgstr "Mauvais format \"on change\": %s" #. module: web #. openerp-web @@ -1085,14 +1085,14 @@ msgstr "Le mot de passe a été modifié avec succès" #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "Resource Error" -msgstr "" +msgstr "Erreur de ressource" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2459 #, python-format msgid "Hour" -msgstr "" +msgstr "Heure" #. module: web #. openerp-web @@ -1122,7 +1122,7 @@ msgstr "Supprimer" #: code:addons/web/static/src/xml/base.xml:425 #, python-format msgid "My OpenERP.com account" -msgstr "" +msgstr "Mon compte OpenERP.com" #. module: web #. openerp-web @@ -1209,7 +1209,7 @@ msgstr "Rechercher" #: code:addons/web/static/src/js/view_form.js:2435 #, python-format msgid ", 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2013-06-07 19:37+0000\n" +"PO-Revision-Date: 2013-12-31 00:07+0000\n" +"Last-Translator: Amir Elion \n" +"Language-Team: Hebrew \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" +"Language: he\n" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:147 +#, python-format +msgid "Default language:" +msgstr "שפת ברירת־מחדל:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:592 +#, python-format +msgid "%d minutes ago" +msgstr "לפני %d דקות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:620 +#, python-format +msgid "Still loading...
Please be patient." +msgstr "עדיין טוען...
נא להמתין." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1999 +#, python-format +msgid "%(field)s %(operator)s \"%(value)s\"" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2061 +#: code:addons/web/static/src/js/search.js:2097 +#: code:addons/web/static/src/js/search.js:2124 +#, python-format +msgid "less or equal than" +msgstr "יותר או פחות מ" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:114 +#, python-format +msgid "" +"Fill in this form to create an OpenERP database. You can\n" +" create databases for different companies or for " +"different\n" +" goals (testing, production). Once the database is " +"created,\n" +" you will be able to install your first application." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:126 +#: code:addons/web/static/src/xml/base.xml:185 +#: code:addons/web/static/src/xml/base.xml:300 +#, python-format +msgid "Master password:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:292 +#, python-format +msgid "Change Master Password" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2439 +#, python-format +msgid "Today" +msgstr "היום" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:513 +#, python-format +msgid "Do you really want to delete the database: %s ?" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1502 +#, python-format +msgid "Search %(field)s at: %(value)s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:559 +#, python-format +msgid "Access Denied" +msgstr "הגישה נדחתה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2462 +#, python-format +msgid "Now" +msgstr "עכשיו" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:593 +#, python-format +msgid "about an hour ago" +msgstr "לפני כשעה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2446 +#, python-format +msgid "Week of the year" +msgstr "שבוע בשנה" + +#. module: web +#. openerp-web +#: code:addons/web/controllers/main.py:811 +#: code:addons/web/static/src/js/chrome.js:536 +#: code:addons/web/static/src/xml/base.xml:234 +#, python-format +msgid "Backup Database" +msgstr "גיבוי בסיס הנתונים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:518 +#, python-format +msgid "%(view_type)s view" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/dates.js:49 +#: code:addons/web/static/src/js/dates.js:53 +#, python-format +msgid "'%s' is not a valid date" +msgstr "'%s' אינן תאריך תקין" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2437 +#, python-format +msgid "Next>" +msgstr "הבא>" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1858 +#, python-format +msgid "Here is a preview of the file we could not import:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:410 +#, python-format +msgid "Please enter your previous password" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:591 +#, python-format +msgid "about a minute ago" +msgstr "לפני כדקה" + +#. module: web +#: code:addons/web/controllers/main.py:869 +#, python-format +msgid "You cannot leave any password empty." +msgstr "לא ניתן להשאיר סיסמא כלשהי ריקה." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:732 +#, python-format +msgid "Invalid username or password" +msgstr "שם משתמש או סיסמה לא-תקפים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:224 +#: code:addons/web/static/src/xml/base.xml:256 +#: code:addons/web/static/src/xml/base.xml:278 +#, python-format +msgid "Master Password:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1245 +#: code:addons/web/static/src/xml/base.xml:1402 +#, python-format +msgid "Select" +msgstr "בחר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:571 +#, python-format +msgid "Database restored successfully" +msgstr "בסיס הנתונים שוחזר בהצלחה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:437 +#, python-format +msgid "Version" +msgstr "גירסה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:592 +#, python-format +msgid "Latest Modification Date:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1566 +#, python-format +msgid "M2O search fields do not currently handle multiple default values" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1241 +#, python-format +msgid "Widget type '%s' is not implemented" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:134 +#, python-format +msgid "e.g. mycompany" +msgstr "למשל - החברה שלי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list_editable.js:793 +#, python-format +msgid "The form's data can not be discarded" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:77 +#: code:addons/web/static/src/js/view_form.js:320 +#, python-format +msgid "Form" +msgstr "טופס" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1352 +#, python-format +msgid "(no string)" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:286 +#, python-format +msgid "'%s' is not a correct time" +msgstr "'%s' אינו זמן תקין" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1401 +#, python-format +msgid "not a valid number" +msgstr "אינו מספר תקין" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:343 +#, python-format +msgid "New Password:" +msgstr "סיסמה חדשה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:632 +#, python-format +msgid "Attachment :" +msgstr "קובץ מצורף:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1712 +#, python-format +msgid "Fields to export" +msgstr "שדות שיש לייצא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1350 +#, python-format +msgid "Undefined" +msgstr "לא מוגדר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5002 +#, python-format +msgid "File Upload" +msgstr "העלאת קובץ" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:597 +#, python-format +msgid "about a month ago" +msgstr "לפני כחודש" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1618 +#, python-format +msgid "Custom Filters" +msgstr "מסננים מותאמים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1364 +#, python-format +msgid "Button Type:" +msgstr "סוג הכפתור:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:441 +#, python-format +msgid "OpenERP SA Company" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1663 +#, python-format +msgid "Custom Filter" +msgstr "מַסְנֵן מותאם אישית" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:177 +#, python-format +msgid "Duplicate Database" +msgstr "שכפל בסיס נתונים" + +#. module: web +#. openerp-web +#: code:addons/web/controllers/main.py:832 +#: code:addons/web/controllers/main.py:833 +#: code:addons/web/controllers/main.py:869 +#: code:addons/web/controllers/main.py:871 +#: code:addons/web/controllers/main.py:877 +#: code:addons/web/controllers/main.py:878 +#: code:addons/web/static/src/js/chrome.js:823 +#: code:addons/web/static/src/xml/base.xml:294 +#: code:addons/web/static/src/xml/base.xml:354 +#, python-format +msgid "Change Password" +msgstr "שינוי סיסמה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:3528 +#, python-format +msgid "View type '%s' is not supported in One2Many." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:189 +#, python-format +msgid "Original database name:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5082 +#: code:addons/web/static/src/js/view_list.js:2204 +#, python-format +msgid "Download" +msgstr "הורדה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:270 +#, python-format +msgid "'%s' is not a correct datetime" +msgstr "'%s' אינו בתצורת תאריך וזמן תקינה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:432 +#, python-format +msgid "Group" +msgstr "קבוצה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2445 +#, python-format +msgid "Wk" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:949 +#, python-format +msgid "Unhandled widget" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1004 +#, python-format +msgid "Selection:" +msgstr "בחירה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:881 +#, python-format +msgid "The following fields are invalid:" +msgstr "השדות הבאים אינם תקינים:" + +#. module: web +#: code:addons/web/controllers/main.py:890 +#, python-format +msgid "Languages" +msgstr "שפות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2438 +#, python-format +msgid "Show the next month" +msgstr "הצג את החודש הבא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1298 +#, python-format +msgid "...Upload in progress..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1789 +#, python-format +msgid "Import" +msgstr "ייבוא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:565 +#, python-format +msgid "Could not restore the database" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:4982 +#, python-format +msgid "File upload" +msgstr "העלאת קובץ" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:3925 +#, python-format +msgid "Action Button" +msgstr "כפתור פעולה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:564 +#: code:addons/web/static/src/xml/base.xml:1493 +#, python-format +msgid "Manage Filters" +msgstr "ניהול מסננים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2042 +#, python-format +msgid "contains" +msgstr "מכיל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:623 +#, python-format +msgid "Take a minute to get a coffee,
because it's loading..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:435 +#, python-format +msgid "Activate the developer mode" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:341 +#, python-format +msgid "Loading (%d)" +msgstr "טוען (%d)" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1216 +#, python-format +msgid "GroupBy" +msgstr "קבץ לפי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:699 +#, python-format +msgid "You must select at least one record." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:557 +#, python-format +msgid "View Log (perm_read)" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1071 +#, python-format +msgid "Set Default" +msgstr "קבע כברירת מחדל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1000 +#, python-format +msgid "Relation:" +msgstr "יחס:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:590 +#, python-format +msgid "less than a minute ago" +msgstr "לפני פחות מדקה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2453 +#, python-format +msgid "Select a date" +msgstr "בחר תאריך" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:873 +#, python-format +msgid "Condition:" +msgstr "תנאי:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2458 +#, python-format +msgid "Time" +msgstr "זמן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1709 +#, python-format +msgid "Unsupported operator %s in domain %s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:246 +#, python-format +msgid "'%s' is not a correct float" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:571 +#, python-format +msgid "Restored" +msgstr "שוחזר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:409 +#, python-format +msgid "%d-%d of %d" +msgstr "%d-%d מתוך %d" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2955 +#, python-format +msgid "Create and Edit..." +msgstr "צור וערוך..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/pyeval.js:736 +#, python-format +msgid "Unknown nonliteral type " +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2144 +#, python-format +msgid "is not" +msgstr "אינו" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:572 +#, python-format +msgid "Print Workflow" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:413 +#, python-format +msgid "Please confirm your new password" +msgstr "אנא אשר את הסיסמא החדשה שלך" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1825 +#, python-format +msgid "UTF-8" +msgstr "UTF-8" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:443 +#, python-format +msgid "For more information visit" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1880 +#, python-format +msgid "Add All Info..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1701 +#, python-format +msgid "Export Formats" +msgstr "תצורות ייצוא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:996 +#, python-format +msgid "On change:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:939 +#, python-format +msgid "Model %s fields" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2046 +#: code:addons/web/static/src/js/search.js:2062 +#: code:addons/web/static/src/js/search.js:2098 +#: code:addons/web/static/src/js/search.js:2125 +#: code:addons/web/static/src/js/search.js:2145 +#, python-format +msgid "is set" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:906 +#, python-format +msgid "Setting 'id' attribute on existing record %s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:8 +#, python-format +msgid "List" +msgstr "רשימה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2058 +#: code:addons/web/static/src/js/search.js:2094 +#: code:addons/web/static/src/js/search.js:2121 +#, python-format +msgid "greater than" +msgstr "גדול מ־" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:585 +#, python-format +msgid "Changed Password" +msgstr "שנה סיסמא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1492 +#, python-format +msgid "Save Filter" +msgstr "שמור מסנן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1372 +#, python-format +msgid "Action ID:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:479 +#, python-format +msgid "Your user's preference timezone does not match your browser timezone:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1237 +#, python-format +msgid "Field '%s' specified in view could not be found." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1777 +#, python-format +msgid "Saved exports:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:338 +#, python-format +msgid "Old Password:" +msgstr "סיסמה ישנה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:113 +#, python-format +msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:503 +#, python-format +msgid "The database has been duplicated." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1643 +#, python-format +msgid "Apply" +msgstr "החל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1414 +#, python-format +msgid "Save & New" +msgstr "שמור וצור חדש" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2432 +#, python-format +msgid "Erase the current date" +msgstr "מחק תאריך נוכחי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1251 +#: code:addons/web/static/src/xml/base.xml:1253 +#, python-format +msgid "Save As" +msgstr "שמירה בשם" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:109 +#, python-format +msgid "Create a New Database" +msgstr "צור בסיס נתונים חדש" + +#. module: web +#. openerp-web +#: code:addons/web/doc/module/static/src/xml/web_example.xml:3 +#, python-format +msgid "00:00:00" +msgstr "00:00:00" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:595 +#, python-format +msgid "a day ago" +msgstr "לפני יום" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:138 +#, python-format +msgid "Load demonstration data:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1810 +#, python-format +msgid "Does your file have titles?" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:327 +#, python-format +msgid "Unlimited" +msgstr "בלתי־מוגבל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:788 +#, python-format +msgid "" +"Warning, the record has been modified, your changes will be discarded.\n" +"\n" +"Are you sure you want to leave this page ?" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2991 +#, python-format +msgid "Search: " +msgstr "חיפוש: " + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:141 +#, python-format +msgid "Check this box to evaluate OpenERP." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:566 +#, python-format +msgid "Technical translation" +msgstr "תרגום טכני" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1818 +#, python-format +msgid "Delimiter:" +msgstr "מפריד:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:484 +#, python-format +msgid "Browser's timezone" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1623 +#, python-format +msgid "Filter name" +msgstr "שם המסנן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1490 +#, python-format +msgid "-- Actions --" +msgstr "-- פעולות --" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:4262 +#: code:addons/web/static/src/js/view_form.js:4423 +#: code:addons/web/static/src/xml/base.xml:1435 +#: code:addons/web/static/src/xml/base.xml:1726 +#, python-format +msgid "Add" +msgstr "הוסף" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1795 +#, python-format +msgid "1. Import a .CSV file" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:443 +#, python-format +msgid "OpenERP.com" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2349 +#, python-format +msgid "Can't send email to invalid e-mail address" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:658 +#, python-format +msgid "Add..." +msgstr "הוסף..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:424 +#, python-format +msgid "Preferences" +msgstr "העדפות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1704 +#, python-format +msgid "Only export selection:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:435 +#, python-format +msgid "Wrong on change format: %s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/controllers/main.py:793 +#: code:addons/web/static/src/xml/base.xml:203 +#, python-format +msgid "Drop Database" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/data_export.js:30 +#: code:addons/web/static/src/js/view_form.js:1077 +#: code:addons/web/static/src/xml/base.xml:1422 +#, python-format +msgid "Close" +msgstr "סגור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:488 +#, python-format +msgid "Click here to change your user's timezone." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:988 +#, python-format +msgid "Modifiers:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:649 +#, python-format +msgid "Delete this attachment" +msgstr "מחק קובץ מצורף זה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:796 +#: code:addons/web/static/src/xml/base.xml:837 +#: code:addons/web/static/src/xml/base.xml:1410 +#: code:addons/web/static/src/xml/base.xml:1630 +#, python-format +msgid "Save" +msgstr "שמור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1074 +#: code:addons/web/static/src/xml/base.xml:370 +#, python-format +msgid "More" +msgstr "עוד" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:73 +#, python-format +msgid "Username" +msgstr "שם משתמש" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:503 +#, python-format +msgid "Duplicating database" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:585 +#, python-format +msgid "Password has been changed successfully" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2379 +#, python-format +msgid "Resource Error" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2459 +#, python-format +msgid "Hour" +msgstr "שעה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:555 +#, python-format +msgid "Debug View#" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:77 +#, python-format +msgid "Log in" +msgstr "התחבר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:199 +#: code:addons/web/static/src/js/view_list.js:346 +#: code:addons/web/static/src/xml/base.xml:1785 +#, python-format +msgid "Delete" +msgstr "מחק" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:425 +#, python-format +msgid "My OpenERP.com account" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/pyeval.js:774 +#, python-format +msgid "" +"Local evaluation failure\n" +"%s\n" +"\n" +"%s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:367 +#, python-format +msgid "Invalid database name" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1714 +#, python-format +msgid "Save fields list" +msgstr "שמור רשימת שדות" + +#. module: web +#. openerp-web +#: code:addons/web/doc/module/static/src/xml/web_example.xml:5 +#, python-format +msgid "Start" +msgstr "התחל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:897 +#, python-format +msgid "View Log (%s)" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:586 +#, python-format +msgid "Creation Date:" +msgstr "תאריך יצירה:" + +#. module: web +#: code:addons/web/controllers/main.py:833 +#: code:addons/web/controllers/main.py:878 +#, python-format +msgid "Error, password not changed !" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:4981 +#, python-format +msgid "The selected file exceed the maximum file size of %s." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:2258 +#: code:addons/web/static/src/xml/base.xml:568 +#, python-format +msgid "View" +msgstr "תצוגה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1457 +#, python-format +msgid "Search" +msgstr "חיפוש" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2435 +#, python-format +msgid "it's still loading..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:841 +#, python-format +msgid "Invalid Search" +msgstr "חיפוש לא חוקי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:990 +#, python-format +msgid "Could not find id in dataset" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1728 +#, python-format +msgid "Remove All" +msgstr "הסר הכול" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:253 +#, python-format +msgid "Your OpenERP session expired. Please refresh the current web page." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1368 +#, python-format +msgid "Method:" +msgstr "שיטה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1449 +#, python-format +msgid "%(page)d/%(page_count)d" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:414 +#, python-format +msgid "The confirmation does not match the password" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:463 +#, python-format +msgid "Edit Company data" +msgstr "ערוך מידע על חברה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5017 +#, python-format +msgid "Save As..." +msgstr "שמירה בשם..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5138 +#, python-format +msgid "Could not display the selected image." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:531 +#, python-format +msgid "Database backed up successfully" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1829 +#, python-format +msgid "" +"For use if CSV files have titles on multiple lines, skips more than a single " +"line during import" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:414 +#, python-format +msgid "99+" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:427 +#, python-format +msgid "Help" +msgstr "עזרה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:558 +#, python-format +msgid "Toggle Form Layout Outline" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:702 +#, python-format +msgid "No database selected !" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:184 +#, python-format +msgid "(%d records)" +msgstr "(%d רשומות)" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:992 +#, python-format +msgid "Change default:" +msgstr "שנה ברירת מחדל:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1879 +#, python-format +msgid "Advanced" +msgstr "מתקדם" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2044 +#: code:addons/web/static/src/js/search.js:2056 +#: code:addons/web/static/src/js/search.js:2092 +#: code:addons/web/static/src/js/search.js:2119 +#, python-format +msgid "is equal to" +msgstr "שווה ל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1581 +#, python-format +msgid "Could not serialize XML" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1637 +#, python-format +msgid "Advanced Search" +msgstr "חיפוש מתקדם" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:308 +#, python-format +msgid "Confirm new master password:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:624 +#, python-format +msgid "Maybe you should consider reloading the application by pressing F5..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:17 +#: code:addons/web/static/src/js/view_list.js:2258 +#: code:addons/web/static/src/xml/base.xml:324 +#: code:addons/web/static/src/xml/base.xml:834 +#: code:addons/web/static/src/xml/base.xml:1404 +#, python-format +msgid "Create" +msgstr "צור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2043 +#, python-format +msgid "doesn't contain" +msgstr "לא מכיל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1806 +#, python-format +msgid "Import Options" +msgstr "אפשרויות ייבוא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:3023 +#, python-format +msgid "Add %s" +msgstr "הוסף %s" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2434 +#, python-format +msgid "Close without change" +msgstr "סגור מבלי לשמור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:159 +#, python-format +msgid "Choose a password:" +msgstr "בחרו סיסמה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2451 +#, python-format +msgid "Select D, M d" +msgstr "בחרו D, M d" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:622 +#, python-format +msgid "" +"You may not believe it,
but the application is actually loading..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1800 +#, python-format +msgid "CSV File:" +msgstr "קובץ CSV:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2460 +#, python-format +msgid "Minute" +msgstr "דקה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_tree.js:11 +#, python-format +msgid "Tree" +msgstr "עץ" + +#. module: web +#: code:addons/web/controllers/main.py:793 +#, python-format +msgid "Could not drop database !" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:231 +#, python-format +msgid "'%s' is not a correct integer" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:899 +#, python-format +msgid "All users" +msgstr "כל המשתמשים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1671 +#, python-format +msgid "Unknown field %s in domain %s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1546 +#, python-format +msgid "Node [%s] is not a JSONified XML node" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1454 +#, python-format +msgid "Advanced Search..." +msgstr "חיפוש מתקדם..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:521 +#, python-format +msgid "Dropping database" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:82 +#: code:addons/web/static/src/xml/base.xml:467 +#, python-format +msgid "Powered by" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1484 +#: code:addons/web/static/src/xml/base.xml:992 +#, python-format +msgid "Yes" +msgstr "כן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:1350 +#, python-format +msgid "Timezone Mismatch" +msgstr "אי התאמה באזור זמן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5002 +#, python-format +msgid "There was a problem while uploading your file" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:580 +#, python-format +msgid "XML ID:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:976 +#, python-format +msgid "Size:" +msgstr "גודל:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1845 +#, python-format +msgid "--- Don't Import ---" +msgstr "--- אל תייבא ---" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1697 +#, python-format +msgid "Import-Compatible Export" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:600 +#, python-format +msgid "%d years ago" +msgstr "לפני %d שנים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1050 +#, python-format +msgid "Unknown m2m command %s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1078 +#, python-format +msgid "Save default" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:193 +#: code:addons/web/static/src/xml/base.xml:282 +#, python-format +msgid "New database name:" +msgstr "שם בסיס הנתונים החדש:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:411 +#, python-format +msgid "Please enter your new password" +msgstr "הזן את הסיסמה החדשה שלך" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5017 +#, python-format +msgid "The field is empty, there's nothing to save !" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:567 +#, python-format +msgid "Manage Views" +msgstr "נהל תצוגות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2349 +#, python-format +msgid "E-mail Error" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1822 +#, python-format +msgid "Encoding:" +msgstr "קידוד:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1829 +#, python-format +msgid "Lines to skip" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2945 +#, python-format +msgid "Create \"%s\"" +msgstr "צור \"%s\"" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/data_export.js:362 +#, python-format +msgid "Please select fields to save export list..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:440 +#, python-format +msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2379 +#, python-format +msgid "This resource is empty" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1710 +#, python-format +msgid "Available fields" +msgstr "שדות זמינים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1856 +#, python-format +msgid "The import failed due to:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:886 +#: code:addons/web/static/src/xml/base.xml:561 +#, python-format +msgid "JS Tests" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1771 +#, python-format +msgid "Save as:" +msgstr "שמירה בשם:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1024 +#, python-format +msgid "Filter on: %s" +msgstr "מסנן על: %s" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2991 +#: code:addons/web/static/src/js/view_form.js:3878 +#, python-format +msgid "Create: " +msgstr "צור: " + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2433 +#: code:addons/web/static/src/js/view_form.js:2463 +#, python-format +msgid "Done" +msgstr "בוצע" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:562 +#, python-format +msgid "View Fields" +msgstr "צפה בשדות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:348 +#, python-format +msgid "Confirm New Password:" +msgstr "אימות הסיסמה החדשה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:587 +#, python-format +msgid "Do you really want to remove these records?" +msgstr "האם אתם באמת רוצים להסיר רשומות אלו?" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:980 +#, python-format +msgid "Context:" +msgstr "הקשר:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2114 +#: code:addons/web/static/src/js/search.js:2143 +#, python-format +msgid "is" +msgstr "הוא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/data_export.js:6 +#, python-format +msgid "Export Data" +msgstr "ייצוא נתונים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:984 +#, python-format +msgid "Domain:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:856 +#, python-format +msgid "Default:" +msgstr "ברירת מחדל:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:82 +#: code:addons/web/static/src/xml/base.xml:468 +#, python-format +msgid "OpenERP" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/doc/module/static/src/xml/web_example.xml:8 +#, python-format +msgid "Stop" +msgstr "עצור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:68 +#: code:addons/web/static/src/xml/base.xml:211 +#: code:addons/web/static/src/xml/base.xml:243 +#, python-format +msgid "Database:" +msgstr "בסיס נתונים:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1211 +#: code:addons/web/static/src/xml/base.xml:1268 +#, python-format +msgid "Uploading ..." +msgstr "מעלה..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1874 +#, python-format +msgid "Name:" +msgstr "שם:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:1165 +#, python-format +msgid "About" +msgstr "אודות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1457 +#, python-format +msgid "Search Again" +msgstr "חפש שנית" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1481 +#, python-format +msgid "-- Filters --" +msgstr "-- מסננים --" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1998 +#: code:addons/web/static/src/js/search.js:2165 +#, python-format +msgid "%(field)s %(operator)s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1698 +#, python-format +msgid "Export all Data" +msgstr "ייצוא כל הנתונים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1344 +#, python-format +msgid "" +"Grouping on field '%s' is not possible because that field does not appear in " +"the list view." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:559 +#, python-format +msgid "Set Defaults" +msgstr "הגדר ברירת מחדל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1688 +#, python-format +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:320 +#, python-format +msgid "The record could not be found in the database." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2444 +#, python-format +msgid "Show a different year" +msgstr "הצג שנה אחרת" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1498 +#, python-format +msgid "Filter Name:" +msgstr "שם המסנן:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:968 +#, python-format +msgid "Type:" +msgstr "סוג:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:560 +#, python-format +msgid "Incorrect super-administrator password" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:964 +#, python-format +msgid "Object:" +msgstr "אובייקט:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:309 +#: code:addons/web/static/src/js/chrome.js:343 +#, python-format +msgid "Loading" +msgstr "טוען" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2440 +#, python-format +msgid "Show the current month" +msgstr "הצג את החודש הנוכחי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:599 +#, python-format +msgid "about a year ago" +msgstr "לפני כשנה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2045 +#: code:addons/web/static/src/js/search.js:2057 +#: code:addons/web/static/src/js/search.js:2093 +#: code:addons/web/static/src/js/search.js:2120 +#, python-format +msgid "is not equal to" +msgstr "אינו שווה ל-" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5167 +#, python-format +msgid "" +"The type of the field '%s' must be a many2many field with a relation to " +"'ir.attachment' model." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2431 +#: code:addons/web/static/src/xml/base.xml:1258 +#: code:addons/web/static/src/xml/base.xml:1260 +#, python-format +msgid "Clear" +msgstr "נקה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:132 +#, python-format +msgid "Select a database name:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:594 +#, python-format +msgid "%d hours ago" +msgstr "לפני %d שעות" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:4334 +#: code:addons/web/static/src/js/view_form.js:4464 +#, python-format +msgid "Add: " +msgstr "הוסף: " + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1879 +#, python-format +msgid "Quick Add" +msgstr "הוספה מהירה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1826 +#, python-format +msgid "Latin 1" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:277 +#: code:addons/web/static/src/js/chrome.js:286 +#: code:addons/web/static/src/js/chrome.js:466 +#: code:addons/web/static/src/js/chrome.js:847 +#: code:addons/web/static/src/js/view_form.js:575 +#: code:addons/web/static/src/js/view_form.js:1940 +#: code:addons/web/static/src/xml/base.xml:1773 +#, python-format +msgid "Ok" +msgstr "אישור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1237 +#, python-format +msgid "Uploading..." +msgstr "מעלה..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:637 +#, python-format +msgid "Created by :" +msgstr "נוצר על ידי :" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/dates.js:22 +#: code:addons/web/static/src/js/dates.js:26 +#, python-format +msgid "'%s' is not a valid datetime" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:274 +#, python-format +msgid "File:" +msgstr "קובץ:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2059 +#: code:addons/web/static/src/js/search.js:2095 +#: code:addons/web/static/src/js/search.js:2122 +#, python-format +msgid "less than" +msgstr "פחות מ-" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:699 +#: code:addons/web/static/src/js/views.js:1172 +#, python-format +msgid "Warning" +msgstr "אזהרה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:569 +#, python-format +msgid "Edit SearchView" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2160 +#, python-format +msgid "is true" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:4030 +#, python-format +msgid "Add an item" +msgstr "הוסף פריט" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1621 +#, python-format +msgid "Save current filter" +msgstr "שמור מסנן נוכחי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:1933 +#, python-format +msgid "Confirm" +msgstr "אשר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/data_export.js:127 +#, python-format +msgid "Please enter save field list name" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:2216 +#, python-format +msgid "Download \"%s\"" +msgstr "הורד \"%s\"" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:325 +#, python-format +msgid "New" +msgstr "חדש" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1777 +#, python-format +msgid "Can't convert value %s to context" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:881 +#: code:addons/web/static/src/xml/base.xml:563 +#, python-format +msgid "Fields View Get" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:163 +#, python-format +msgid "Confirm password:" +msgstr "אימות סיסמה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2060 +#: code:addons/web/static/src/js/search.js:2096 +#: code:addons/web/static/src/js/search.js:2123 +#, python-format +msgid "greater or equal than" +msgstr "גדול או שווה ל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1349 +#, python-format +msgid "Button" +msgstr "כפתור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:440 +#, python-format +msgid "OpenERP is a trademark of the" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/data_export.js:375 +#, python-format +msgid "Please select fields to export..." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2047 +#: code:addons/web/static/src/js/search.js:2063 +#: code:addons/web/static/src/js/search.js:2099 +#: code:addons/web/static/src/js/search.js:2126 +#: code:addons/web/static/src/js/search.js:2146 +#, python-format +msgid "is not set" +msgstr "אינו מוגדר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:304 +#, python-format +msgid "New master password:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1626 +#, python-format +msgid "Share with all users" +msgstr "שתף עם משתמשים אחרים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:2161 +#, python-format +msgid "is false" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:426 +#, python-format +msgid "About OpenERP" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:301 +#, python-format +msgid "'%s' is not a correct date, datetime nor time" +msgstr "" + +#. module: web +#: code:addons/web/controllers/main.py:1307 +#, python-format +msgid "No content found for field '%s' on '%s:%s'" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:322 +#, python-format +msgid "Database Management" +msgstr "ניהול בסיס נתונים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5138 +#, python-format +msgid "Image" +msgstr "תמונה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:81 +#, python-format +msgid "Manage Databases" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/pyeval.js:770 +#, python-format +msgid "Evaluation Error" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1387 +#, python-format +msgid "not a valid integer" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:355 +#: code:addons/web/static/src/xml/base.xml:798 +#: code:addons/web/static/src/xml/base.xml:838 +#: code:addons/web/static/src/xml/base.xml:1404 +#: code:addons/web/static/src/xml/base.xml:1412 +#: code:addons/web/static/src/xml/base.xml:1648 +#, python-format +msgid "or" +msgstr "או" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1485 +#, python-format +msgid "No" +msgstr "לא" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/formats.js:313 +#, python-format +msgid "'%s' is not convertible to date, datetime nor time" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:200 +#: code:addons/web/static/src/xml/base.xml:179 +#: code:addons/web/static/src/xml/base.xml:325 +#, python-format +msgid "Duplicate" +msgstr "שכפל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:799 +#: code:addons/web/static/src/xml/base.xml:839 +#: code:addons/web/static/src/xml/base.xml:1419 +#, python-format +msgid "Discard" +msgstr "בטל" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:5314 +#, python-format +msgid "Uploading Error" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1642 +#, python-format +msgid "Add a condition" +msgstr "הוסף תנאי" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/coresetup.js:619 +#, python-format +msgid "Still loading..." +msgstr "עדיין טוען..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:884 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:3926 +#, python-format +msgid "The o2m record must be saved before an action can be used" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:531 +#, python-format +msgid "Backed" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1628 +#, python-format +msgid "Use by default" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:3139 +#: code:addons/web/static/src/js/view_form.js:3785 +#: code:addons/web/static/src/js/view_form.js:3906 +#: code:addons/web/static/src/js/view_form.js:4358 +#: code:addons/web/static/src/js/view_form.js:4482 +#, python-format +msgid "Open: " +msgstr "פתח: " + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_list.js:1358 +#, python-format +msgid "%s (%d)" +msgstr "%s (%d)" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:841 +#, python-format +msgid "triggered from search view" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1079 +#, python-format +msgid "Filter" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:972 +#, python-format +msgid "Widget:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:570 +#, python-format +msgid "Edit Action" +msgstr "ערוך פעולה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1681 +#, python-format +msgid "" +"This filter is global and will be removed for everybody if you continue." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:577 +#, python-format +msgid "ID:" +msgstr "מזהה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:892 +#, python-format +msgid "Only you" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:571 +#, python-format +msgid "Edit Workflow" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1246 +#, python-format +msgid "Do you really want to delete this attachment ?" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:914 +#, python-format +msgid "Technical Translation" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:960 +#, python-format +msgid "Field:" +msgstr "שדה:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:642 +#, python-format +msgid "Modified by :" +msgstr "שונה על ידי:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:521 +#, python-format +msgid "The database %s has been dropped" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:482 +#, python-format +msgid "User's timezone" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/chrome.js:301 +#: code:addons/web/static/src/js/chrome.js:1276 +#, python-format +msgid "Client Error" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/views.js:1073 +#, python-format +msgid "Print" +msgstr "הדפס" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1359 +#, python-format +msgid "Special:" +msgstr "מיוחד:" + +#. module: web +#: code:addons/web/controllers/main.py:877 +#, python-format +msgid "" +"The old password you provided is incorrect, your password was not changed." +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:583 +#, python-format +msgid "Creation User:" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:769 +#, python-format +msgid "Do you really want to delete this record?" +msgstr "האם אתה בטוח שאתה רוצה למחוק רשומה זאת?" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:318 +#, python-format +msgid "Back to Login" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1413 +#, python-format +msgid "Save & Close" +msgstr "שמור וסגור" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2932 +#, python-format +msgid "Search More..." +msgstr "חפש עוד..." + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:75 +#: code:addons/web/static/src/xml/base.xml:329 +#, python-format +msgid "Password" +msgstr "סיסמה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2457 +#, python-format +msgid "Choose Time" +msgstr "בחר זמן" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:568 +#: code:addons/web/static/src/xml/base.xml:831 +#: code:addons/web/static/src/xml/base.xml:1206 +#, python-format +msgid "Edit" +msgstr "ערוך" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1727 +#, python-format +msgid "Remove" +msgstr "הסר" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1090 +#, python-format +msgid "Select date" +msgstr "בחר תאריך" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:1351 +#: code:addons/web/static/src/js/search.js:1369 +#, python-format +msgid "Search %(field)s for: %(value)s" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1305 +#, python-format +msgid "Delete this file" +msgstr "מחיקת קובץ זה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:168 +#, python-format +msgid "Create Database" +msgstr "צור בסיס נתונים" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:442 +#, python-format +msgid "GNU Affero General Public License" +msgstr "" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/xml/base.xml:1816 +#, python-format +msgid "Separator:" +msgstr "מפריד:" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/view_form.js:2461 +#, python-format +msgid "Second" +msgstr "שנייה" + +#. module: web +#. openerp-web +#: code:addons/web/static/src/js/search.js:616 +#: code:addons/web/static/src/xml/base.xml:1480 +#, python-format +msgid "Filters" +msgstr "מסננים" diff --git a/addons/web/i18n/hi.po b/addons/web/i18n/hi.po index 5f424daf844..28f9b10db8f 100644 --- a/addons/web/i18n/hi.po +++ b/addons/web/i18n/hi.po @@ -14,29 +14,29 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:147 #, python-format msgid "Default language:" -msgstr "" +msgstr "डिफ़ॉल्ट भाषाः" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d मिनट पहले" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...
Please be patient." -msgstr "" +msgstr "अब भी है लोड हो रहा है ...
कृपया धैर्य रखें." #. module: web #. openerp-web diff --git a/addons/web/i18n/hr.po b/addons/web/i18n/hr.po index 971fda09f4a..585069f1e49 100644 --- a/addons/web/i18n/hr.po +++ b/addons/web/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hu.po b/addons/web/i18n/hu.po index 64a4c3a265f..9fcd7140401 100644 --- a/addons/web/i18n/hu.po +++ b/addons/web/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/id.po b/addons/web/i18n/id.po index f2837b4aa66..1365ec3bcbf 100644 --- a/addons/web/i18n/id.po +++ b/addons/web/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/it.po b/addons/web/i18n/it.po index d463e3dd83c..da75d6bfa71 100644 --- a/addons/web/i18n/it.po +++ b/addons/web/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ja.po b/addons/web/i18n/ja.po index 4bec79e5a5c..4eb3244adc3 100644 --- a/addons/web/i18n/ja.po +++ b/addons/web/i18n/ja.po @@ -8,21 +8,21 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-11-28 11:11+0000\n" -"Last-Translator: Yoshi Tashiro \n" +"PO-Revision-Date: 2014-02-26 10:11+0000\n" +"Last-Translator: Yoshi Tashiro \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:147 #, python-format msgid "Default language:" -msgstr "デフォルトの言語:" +msgstr "デフォルト言語:" #. module: web #. openerp-web @@ -446,7 +446,7 @@ msgstr "選択:" #: code:addons/web/static/src/js/view_form.js:881 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "次のフィールドは無効:" #. module: web #: code:addons/web/controllers/main.py:890 @@ -558,7 +558,7 @@ msgstr "ログ (perm_read) のビュー" #: code:addons/web/static/src/js/view_form.js:1071 #, python-format msgid "Set Default" -msgstr "デフォルトに設定" +msgstr "デフォルト値設定" #. module: web #. openerp-web @@ -586,7 +586,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:873 #, python-format msgid "Condition:" -msgstr "状態:" +msgstr "条件:" #. module: web #. openerp-web @@ -877,6 +877,9 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" +"警告:このレコードは変更されていますが、変更した内容は破棄されます。\n" +"\n" +"このページを離れてもよろしいですか?" #. module: web #. openerp-web @@ -1723,7 +1726,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:899 #, python-format msgid "All users" -msgstr "全てのユーザ" +msgstr "全ユーザ" #. module: web #. openerp-web @@ -1830,7 +1833,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:1078 #, python-format msgid "Save default" -msgstr "デフォルトに保存" +msgstr "デフォルト値保存" #. module: web #. openerp-web @@ -1859,7 +1862,7 @@ msgstr "項目は空です。何も保存するものはありません。" #: code:addons/web/static/src/xml/base.xml:567 #, python-format msgid "Manage Views" -msgstr "ビューの管理" +msgstr "ビュー管理" #. module: web #. openerp-web @@ -1930,7 +1933,7 @@ msgstr "次の理由でインポートに失敗しました:" #: code:addons/web/static/src/xml/base.xml:561 #, python-format msgid "JS Tests" -msgstr "" +msgstr "JSテスト" #. module: web #. openerp-web @@ -2017,7 +2020,7 @@ msgstr "ドメイン:" #: code:addons/web/static/src/xml/base.xml:856 #, python-format msgid "Default:" -msgstr "デフォルト:" +msgstr "デフォルト値:" #. module: web #. openerp-web @@ -2108,7 +2111,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:559 #, python-format msgid "Set Defaults" -msgstr "" +msgstr "デフォルト値設定" #. module: web #. openerp-web @@ -2664,7 +2667,7 @@ msgstr "ID:" #: code:addons/web/static/src/xml/base.xml:892 #, python-format msgid "Only you" -msgstr "あなただけ" +msgstr "自分のみ" #. module: web #. openerp-web diff --git a/addons/web/i18n/ka.po b/addons/web/i18n/ka.po index 210c59d227b..4e2bf2bba1c 100644 --- a/addons/web/i18n/ka.po +++ b/addons/web/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ko.po b/addons/web/i18n/ko.po index eca6b8aa30c..a1a3ae13923 100644 --- a/addons/web/i18n/ko.po +++ b/addons/web/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lo.po b/addons/web/i18n/lo.po index 5c2fbccee9c..24d55e15e70 100644 --- a/addons/web/i18n/lo.po +++ b/addons/web/i18n/lo.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lt.po b/addons/web/i18n/lt.po index ee124531d93..a1c75e0ddb0 100644 --- a/addons/web/i18n/lt.po +++ b/addons/web/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lv.po b/addons/web/i18n/lv.po index dda3ca5f616..0fe49f4e1d6 100644 --- a/addons/web/i18n/lv.po +++ b/addons/web/i18n/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/mk.po b/addons/web/i18n/mk.po index 0ed45b76ea1..83cea2ef075 100644 --- a/addons/web/i18n/mk.po +++ b/addons/web/i18n/mk.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-03-29 09:35+0000\n" -"Last-Translator: Sofce Dimitrijeva \n" +"PO-Revision-Date: 2014-02-03 09:54+0000\n" +"Last-Translator: goran.cvetkovski \n" "Language-Team: Macedonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -66,6 +66,12 @@ msgid "" "created,\n" " you will be able to install your first application." msgstr "" +"Пополнете ја оваа форма за да креирате OpenERP база на податоци. Вие можете\n" +" да креирате бази на податоци за различни компании или за " +"различни\n" +" цели (тестирање, производство). Веднаш, откако базата на " +"податоци е креирана,\n" +" Вие ќе можете да ја инсталирате Вашата прва апликација." #. module: web #. openerp-web @@ -116,7 +122,7 @@ msgstr "Пристапот е одбиен" #: code:addons/web/static/src/js/view_form.js:2462 #, python-format msgid "Now" -msgstr "" +msgstr "Сега" #. module: web #. openerp-web @@ -130,7 +136,7 @@ msgstr "пред околу еден час" #: code:addons/web/static/src/js/view_form.js:2446 #, python-format msgid "Week of the year" -msgstr "" +msgstr "Седмица во годината" #. module: web #. openerp-web @@ -161,7 +167,7 @@ msgstr "'%s' не е валиден датум" #: code:addons/web/static/src/js/view_form.js:2437 #, python-format msgid "Next>" -msgstr "" +msgstr "Следно>" #. module: web #. openerp-web @@ -249,14 +255,14 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "Додаток од тип '%s' не е имплементиран" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:134 #, python-format msgid "e.g. mycompany" -msgstr "" +msgstr "пр.: мојатакомпанија" #. module: web #. openerp-web @@ -427,14 +433,14 @@ msgstr "Група" #: code:addons/web/static/src/js/view_form.js:2445 #, python-format msgid "Wk" -msgstr "" +msgstr "Нед" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:949 #, python-format msgid "Unhandled widget" -msgstr "" +msgstr "Необработен додаток" #. module: web #. openerp-web @@ -461,7 +467,7 @@ msgstr "Јазици" #: code:addons/web/static/src/js/view_form.js:2438 #, python-format msgid "Show the next month" -msgstr "" +msgstr "Покажи го следниот месец" #. module: web #. openerp-web @@ -581,7 +587,7 @@ msgstr "пред помалку од една минута" #: code:addons/web/static/src/js/view_form.js:2453 #, python-format msgid "Select a date" -msgstr "" +msgstr "Одберете датум" #. module: web #. openerp-web @@ -595,7 +601,7 @@ msgstr "Услов:" #: code:addons/web/static/src/js/view_form.js:2458 #, python-format msgid "Time" -msgstr "" +msgstr "Време" #. module: web #. openerp-web @@ -637,7 +643,7 @@ msgstr "Креирај и уреди..." #: code:addons/web/static/src/js/pyeval.js:736 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "Непознат не-литерарен тип " #. module: web #. openerp-web @@ -820,7 +826,7 @@ msgstr "Сочувај и Нов" #: code:addons/web/static/src/js/view_form.js:2432 #, python-format msgid "Erase the current date" -msgstr "" +msgstr "Избришете го тековниот датум" #. module: web #. openerp-web @@ -835,7 +841,7 @@ msgstr "Зачувај како" #: code:addons/web/static/src/xml/base.xml:109 #, python-format msgid "Create a New Database" -msgstr "" +msgstr "Креирај нова база на податоци" #. module: web #. openerp-web @@ -856,7 +862,7 @@ msgstr "пред еден ден" #: code:addons/web/static/src/xml/base.xml:138 #, python-format msgid "Load demonstration data:" -msgstr "" +msgstr "Вчитај демо податоци:" #. module: web #. openerp-web @@ -897,7 +903,7 @@ msgstr "Барај: " #: code:addons/web/static/src/xml/base.xml:141 #, python-format msgid "Check this box to evaluate OpenERP." -msgstr "" +msgstr "Одбележете ја оваа опција за евалуација на OpenERP." #. module: web #. openerp-web @@ -984,7 +990,7 @@ msgstr "Нагодувања" #: code:addons/web/static/src/xml/base.xml:1704 #, python-format msgid "Only export selection:" -msgstr "" +msgstr "Извезете го само означеното:" #. module: web #. openerp-web @@ -1075,21 +1081,21 @@ msgstr "Лозинката е успешно променета" #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "Resource Error" -msgstr "" +msgstr "Едитор на ресурси" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2459 #, python-format msgid "Hour" -msgstr "" +msgstr "Час" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Debug View#" -msgstr "" +msgstr "Види поправање#" #. module: web #. openerp-web @@ -1112,7 +1118,7 @@ msgstr "Избриши" #: code:addons/web/static/src/xml/base.xml:425 #, python-format msgid "My OpenERP.com account" -msgstr "" +msgstr "Мојата OpenERP.com сметка" #. module: web #. openerp-web @@ -1200,14 +1206,14 @@ msgstr "Пребарувај" #: code:addons/web/static/src/js/view_form.js:2435 #, python-format msgid "\n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-10-12 09:38+0000\n" -"Last-Translator: gobi \n" +"PO-Revision-Date: 2014-03-28 05:20+0000\n" +"Last-Translator: Jacara \n" "Language-Team: Mongolian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -2109,7 +2109,7 @@ msgstr "-- Шүүлтүүр --" #: code:addons/web/static/src/js/search.js:2165 #, python-format msgid "%(field)s %(operator)s" -msgstr "" +msgstr "%(field)s %(operator)s" #. module: web #. openerp-web @@ -2567,7 +2567,7 @@ msgstr "'%s' нь хөрвүүлэх боломжгүй огноо, огнооц #: code:addons/web/static/src/xml/base.xml:325 #, python-format msgid "Duplicate" -msgstr "Хувилах" +msgstr "Хуулбарлан үүсгэх" #. module: web #. openerp-web diff --git a/addons/web/i18n/nb.po b/addons/web/i18n/nb.po index 0d80052e3f5..4c3c5cee606 100644 --- a/addons/web/i18n/nb.po +++ b/addons/web/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl.po b/addons/web/i18n/nl.po index 13d4fc25312..bb1b09693ef 100644 --- a/addons/web/i18n/nl.po +++ b/addons/web/i18n/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:59+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl_BE.po b/addons/web/i18n/nl_BE.po index e9692f8465d..a357fa8524a 100644 --- a/addons/web/i18n/nl_BE.po +++ b/addons/web/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pl.po b/addons/web/i18n/pl.po index b54568e10fd..e45adbadc49 100644 --- a/addons/web/i18n/pl.po +++ b/addons/web/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt.po b/addons/web/i18n/pt.po index 68e7e9d294e..4723a586355 100644 --- a/addons/web/i18n/pt.po +++ b/addons/web/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt_BR.po b/addons/web/i18n/pt_BR.po index 8a2e5b3cc9f..85770abfe21 100644 --- a/addons/web/i18n/pt_BR.po +++ b/addons/web/i18n/pt_BR.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ro.po b/addons/web/i18n/ro.po index 1dcce32e09a..fc0e244fd20 100644 --- a/addons/web/i18n/ro.po +++ b/addons/web/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ru.po b/addons/web/i18n/ru.po index ebd018f7bd0..916e5f4f42e 100644 --- a/addons/web/i18n/ru.po +++ b/addons/web/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sk.po b/addons/web/i18n/sk.po index 62e77781f1d..9860a176b45 100644 --- a/addons/web/i18n/sk.po +++ b/addons/web/i18n/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sl.po b/addons/web/i18n/sl.po index d2a73f789b9..6deefe577d7 100644 --- a/addons/web/i18n/sl.po +++ b/addons/web/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sq.po b/addons/web/i18n/sq.po index 8439a5b2df9..656f6089be0 100644 --- a/addons/web/i18n/sq.po +++ b/addons/web/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:13+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 06:58+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sr@latin.po b/addons/web/i18n/sr@latin.po index 5a3f17939bc..74eab6749c7 100644 --- a/addons/web/i18n/sr@latin.po +++ b/addons/web/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sv.po b/addons/web/i18n/sv.po index f6b0eefe16e..e5f49ff1b83 100644 --- a/addons/web/i18n/sv.po +++ b/addons/web/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/th.po b/addons/web/i18n/th.po index 6a95e8bddea..e731c320b94 100644 --- a/addons/web/i18n/th.po +++ b/addons/web/i18n/th.po @@ -8,21 +8,21 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-09-01 08:25+0000\n" -"Last-Translator: Soranat Amsri \n" +"PO-Revision-Date: 2014-03-17 10:09+0000\n" +"Last-Translator: Sumonchai ( เหลา ) \n" "Language-Team: Thai \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:147 #, python-format msgid "Default language:" -msgstr "ภาษาหลัก:" +msgstr "ภาษาหลัก" #. module: web #. openerp-web @@ -240,7 +240,7 @@ msgstr "วันที่แก้ไขล่าสุด" #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "" +msgstr "กล่องค้นหา M2O ไม่สามารถจัดการค่าเริ่มต้นแบบหลายค่าได้" #. module: web #. openerp-web @@ -276,7 +276,7 @@ msgstr "รูปแบบ" #: code:addons/web/static/src/xml/base.xml:1352 #, python-format msgid "(no string)" -msgstr "(no string)" +msgstr "(ไม่มีข้อความ)" #. module: web #. openerp-web @@ -389,7 +389,7 @@ msgstr "เปลี่ยนรหัสผ่าน" #: code:addons/web/static/src/js/view_form.js:3528 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "" +msgstr "ประเภทมุมมองนี้ '%s' ไม่สนับสนุนในแบบ One to Many" #. module: web #. openerp-web @@ -411,7 +411,7 @@ msgstr "ดาวน์โหลด" #: code:addons/web/static/src/js/formats.js:270 #, python-format msgid "'%s' is not a correct datetime" -msgstr "'%s' ไม่ได้เป็นวันที่และเวลาที่ถูกต้อง" +msgstr "'%s' เป็นวันที่และเวลาที่ไม่ถูกต้อง" #. module: web #. openerp-web @@ -432,7 +432,7 @@ msgstr "Wk" #: code:addons/web/static/src/xml/base.xml:949 #, python-format msgid "Unhandled widget" -msgstr "วิดเจ็ต Unhandled" +msgstr "วิดเจ็ตที่ไม่ถูกควบคุม" #. module: web #. openerp-web @@ -446,7 +446,7 @@ msgstr "การเลือก:" #: code:addons/web/static/src/js/view_form.js:881 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "ฟิลด์ต่อไปนี้ไม่ถูกต้อง" #. module: web #: code:addons/web/controllers/main.py:890 @@ -530,7 +530,7 @@ msgstr "เปิดใช้งานโหมดนักพัฒนา" #: code:addons/web/static/src/js/chrome.js:341 #, python-format msgid "Loading (%d)" -msgstr "กำลังโหลด (% d)" +msgstr "กำลังโหลด (%d)" #. module: web #. openerp-web @@ -600,14 +600,14 @@ msgstr "เวลา" #: code:addons/web/static/src/js/view_form.js:1709 #, python-format msgid "Unsupported operator %s in domain %s" -msgstr "" +msgstr "ไม่สนับสนุนการทำงาน %s ในโดเมน %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:246 #, python-format msgid "'%s' is not a correct float" -msgstr "" +msgstr "'%s' เป็นเลขทศนิยมไม่ถูกต้อง" #. module: web #. openerp-web @@ -621,7 +621,7 @@ msgstr "เรียกคืน" #: code:addons/web/static/src/js/view_list.js:409 #, python-format msgid "%d-%d of %d" -msgstr "%d-%d of %d" +msgstr "%d-%d ของ %d" #. module: web #. openerp-web @@ -635,14 +635,14 @@ msgstr "สร้างและแก้ไข ..." #: code:addons/web/static/src/js/pyeval.js:736 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "ชนิดไม่ทราบอย่างแท้จริง " #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:2144 #, python-format msgid "is not" -msgstr "ไม่เท่ากับ" +msgstr "ไม่ใช่" #. module: web #. openerp-web @@ -670,35 +670,35 @@ msgstr "UTF-8" #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "For more information visit" -msgstr "สำหรับการเยี่ยมชมข้อมูลเพิ่มเติม" +msgstr "เยี่ยมชมเพื่อข้อมูลเพิ่มเติม" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1880 #, python-format msgid "Add All Info..." -msgstr "" +msgstr "เพิ่มทุกข้อมูล..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1701 #, python-format msgid "Export Formats" -msgstr "ส่งออก รูปแบบ" +msgstr "รูปแบบส่งออก" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:996 #, python-format msgid "On change:" -msgstr "การเปลี่ยนแปลง:" +msgstr "เมื่อเปลี่ยนแปลง" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:939 #, python-format msgid "Model %s fields" -msgstr "แบบ %s ฟิลด์" +msgstr "โมเดล %s ฟิลด์" #. module: web #. openerp-web @@ -716,7 +716,7 @@ msgstr "ถูกเลือกไว้" #: code:addons/web/static/src/js/view_list.js:906 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "" +msgstr "ตั้งคุณลักษณะ 'id' บนบันทึก %s" #. module: web #. openerp-web @@ -753,28 +753,28 @@ msgstr "บันทึกตัวกรอง" #: code:addons/web/static/src/xml/base.xml:1372 #, python-format msgid "Action ID:" -msgstr "รหัส การกระทำ" +msgstr "รหัสการกระทำ:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:479 #, python-format msgid "Your user's preference timezone does not match your browser timezone:" -msgstr "เขตการตั้งค่าผู้ใช้ของคุณไม่ตรงกับเขตเวลาที่เบราว์เซอร์ของคุณ:" +msgstr "การตั้งค่าผู้ใช้ของคุณไม่ตรงกับเขตเวลาที่เบราว์เซอร์ของคุณ:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1237 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "ฟิลด์ '% s' ที่ระบุไว้ในมุมมองที่ไม่พบ" +msgstr "ไม่พบฟิลด์ '%s' ที่ระบุไว้ในมุมมอง" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1777 #, python-format msgid "Saved exports:" -msgstr "การส่งออกที่บันทึกไว้:" +msgstr "บันทึกการส่งออก" #. module: web #. openerp-web @@ -788,7 +788,7 @@ msgstr "รหัสผ่านเก่า:" #: code:addons/web/static/src/js/formats.js:113 #, python-format msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" -msgstr "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" +msgstr "ไบท์,กิโลไบท์,เมกะไบท์,กิ๊กกะไบท์,เทราไบท์,เพนตะ,เอ็กซะไบท์,Zb,Yb" #. module: web #. openerp-web @@ -802,7 +802,7 @@ msgstr "ฐานข้อมูลได้รับการทำซ้ำ" #: code:addons/web/static/src/xml/base.xml:1643 #, python-format msgid "Apply" -msgstr "ปรับใช้" +msgstr "นำไปใช้" #. module: web #. openerp-web @@ -877,7 +877,7 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" -"คำเตือน, การบันทึกที่ได้รับการแก้ไข, การเปลี่ยนแปลงของคุณจะถูกละทิ้ง\n" +"คำเตือน, บันทึกที่ได้รับการแก้ไข, การเปลี่ยนแปลงของคุณจะถูกละทิ้ง\n" "\n" "คุณแน่ใจหรือว่าคุณต้องการที่จะออกจากหน้านี้?" @@ -893,7 +893,7 @@ msgstr "ค้นหา: " #: code:addons/web/static/src/xml/base.xml:141 #, python-format msgid "Check this box to evaluate OpenERP." -msgstr "ทำเครื่องหมายที่ช่องนี้เพื่อประเมิน OpenERP" +msgstr "ทำเครื่องหมายที่ช่องนี้เพื่อทดลอง OpenERP" #. module: web #. openerp-web @@ -1018,7 +1018,7 @@ msgstr "คลิกที่นี่เพื่อเปลี่ยนโซ #: code:addons/web/static/src/xml/base.xml:988 #, python-format msgid "Modifiers:" -msgstr "ปรับเปลี่ยน" +msgstr "ตัวปรับเปลี่ยน" #. module: web #. openerp-web @@ -1071,7 +1071,7 @@ msgstr "รหัสผ่านได้ถูกเปลี่ยนเรี #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "Resource Error" -msgstr "" +msgstr "ข้อผิดพลาดจากทรัพยากร" #. module: web #. openerp-web @@ -1108,7 +1108,7 @@ msgstr "ลบ" #: code:addons/web/static/src/xml/base.xml:425 #, python-format msgid "My OpenERP.com account" -msgstr "บัญชี OpenERP.com" +msgstr "บัญชี OpenERP.com ของฉัน" #. module: web #. openerp-web @@ -1120,6 +1120,10 @@ msgid "" "\n" "%s" msgstr "" +"การทดสอบแบบเฉพาะส่วนล้มเหลว\n" +"%s\n" +"\n" +"%s" #. module: web #. openerp-web @@ -1133,7 +1137,7 @@ msgstr "ชื่อฐานข้อมูลไม่ถูกต้อง" #: code:addons/web/static/src/xml/base.xml:1714 #, python-format msgid "Save fields list" -msgstr "" +msgstr "บันทึกรายการของฟิลด์" #. module: web #. openerp-web @@ -1147,7 +1151,7 @@ msgstr "เริ่ม" #: code:addons/web/static/src/js/views.js:897 #, python-format msgid "View Log (%s)" -msgstr "View Log (%s)" +msgstr "ดูบันทึกเหตุการณ์ (%s)" #. module: web #. openerp-web @@ -1168,7 +1172,7 @@ msgstr "ผิดพลาด รหัสผ่านไม่ได้เป #: code:addons/web/static/src/js/view_form.js:4981 #, python-format msgid "The selected file exceed the maximum file size of %s." -msgstr "" +msgstr "ไฟล์ที่ถูกเลือกมีขนาดใหญ่เกิน %s." #. module: web #. openerp-web @@ -1197,7 +1201,7 @@ msgstr "<ก่อนหน้า" #: code:addons/web/static/src/js/view_form.js:2450 #, python-format msgid "Set DD as first week day" -msgstr "" +msgstr "ตั้ง DD ให้เป็นวันแรกของสัปดาห์" #. module: web #. openerp-web @@ -1207,6 +1211,8 @@ msgid "" "By default, the master password is 'admin'. This password\n" " is required to created, delete dump or restore databases." msgstr "" +"โดยค่าเริ่มต้น, รหัสผ่านหลัก(Master) คือ 'admin'. รหัสผ่านนี้\n" +" จำเป็นในการสร้าง, ลบ ดั้ม หรือกู้คืนฐานข้อมูล." #. module: web #. openerp-web @@ -1222,14 +1228,14 @@ msgstr "สำรอง" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "'%s' เวลา ไม่ถูกต้อง" +msgstr "'%s' เวลาไม่ถูกต้อง" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:278 #, python-format msgid "'%s' is not a correct date" -msgstr "'%s' วันที่ ไม่ถูกต้อง" +msgstr "'%s' วันที่ไม่ถูกต้อง" #. module: web #. openerp-web @@ -1243,14 +1249,14 @@ msgstr "(ไม่มีป้าย)" #: code:addons/web/static/src/js/coresetup.js:596 #, python-format msgid "%d days ago" -msgstr "%d วันก่อน" +msgstr "%d วัน" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1500 #, python-format msgid "(Any existing filter with the same name will be replaced)" -msgstr "" +msgstr "(ตัวกรองใดก็ตามที่ชื่อเหมือนกันจะถูกแทนที่)" #. module: web #. openerp-web @@ -1283,14 +1289,14 @@ msgstr "แก้ไขล่าสุดโดย:" #: code:addons/web/static/src/xml/base.xml:492 #, python-format msgid "Timezone mismatch" -msgstr "โซนเวลา ไม่ตรงกัน" +msgstr "เขตเวลาไม่ตรงกัน" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1663 #, python-format msgid "Unknown operator %s in domain %s" -msgstr "" +msgstr "ตัวดำเนินการที่ไม่ทราบ %s ในโดเมน %s" #. module: web #. openerp-web @@ -1311,7 +1317,7 @@ msgstr "%d / %d" #: code:addons/web/static/src/xml/base.xml:1803 #, python-format msgid "2. Check your file format" -msgstr "" +msgstr "2. ตรวจสอบรูปแบบไฟล์ของคุณ" #. module: web #. openerp-web @@ -1328,6 +1334,8 @@ msgid "" "Select a .CSV file to import. If you need a sample of file to import,\n" " you should use the export tool with the \"Import Compatible\" option." msgstr "" +"เลือกไฟล์ .CSV เพื่อนำเข้า. ถ้าคุณต้องการตัวอย่างไฟล์นำเข้า,\n" +" คุณควรใช้เครื่องมือส่งออก พร้อมกับเลือก \"นำเข้าที่ใช้ด้วยกันได้\"." #. module: web #. openerp-web @@ -1406,7 +1414,7 @@ msgstr "ออกระบบ" #: code:addons/web/static/src/js/search.js:1192 #, python-format msgid "Group by: %s" -msgstr "กลุ่ม โดย: %s" +msgstr "จัดกลุ่ม โดย: %s" #. module: web #. openerp-web @@ -1442,7 +1450,7 @@ msgstr "ส่งออกเป็นไฟล์" #: code:addons/web/static/src/js/views.js:1172 #, python-format msgid "You must choose at least one record." -msgstr "คุณต้องเลือกอย่างน้อยหนึ่งเรคคอร์อด" +msgstr "คุณต้องเลือกอย่างน้อยหนึ่งบันทึก" #. module: web #. openerp-web @@ -1477,7 +1485,7 @@ msgstr "ลบทั้งหมด" #: code:addons/web/static/src/js/chrome.js:253 #, python-format msgid "Your OpenERP session expired. Please refresh the current web page." -msgstr "เซสชั่นอาร์พีของคุณหมดอายุ กรุณารีเฟรชหน้าเว็บปัจจุบัน" +msgstr "เซสชั่น OpenErP ของคุณหมดอายุ กรุณารีเฟรชหน้าเว็บปัจจุบัน" #. module: web #. openerp-web @@ -1536,6 +1544,7 @@ msgid "" "For use if CSV files have titles on multiple lines, skips more than a single " "line during import" msgstr "" +"ใช้สำหรับ CSV ไฟล์ที่มีหัวเรื่องหลายบรรทัด, ข้ามมากกว่าหนึ่งบรรทัดในขณะนำเข้า" #. module: web #. openerp-web @@ -1556,7 +1565,7 @@ msgstr "ช่วยเหลือ" #: code:addons/web/static/src/xml/base.xml:558 #, python-format msgid "Toggle Form Layout Outline" -msgstr "" +msgstr "เปิด/ปิด แบบร่างของฟอร์ม" #. module: web #. openerp-web @@ -1570,7 +1579,7 @@ msgstr "ไม่ได้เลือก ฐานข้อมูล!" #: code:addons/web/static/src/js/formats.js:184 #, python-format msgid "(%d records)" -msgstr "(%d records)" +msgstr "(%d บันทึก)" #. module: web #. openerp-web @@ -1601,7 +1610,7 @@ msgstr "เท่ากับ" #: code:addons/web/static/src/js/views.js:1581 #, python-format msgid "Could not serialize XML" -msgstr "" +msgstr "ไม่สามารถบันทึกแบบ XML ได้" #. module: web #. openerp-web @@ -1640,7 +1649,7 @@ msgstr "สร้าง" #: code:addons/web/static/src/js/search.js:2043 #, python-format msgid "doesn't contain" -msgstr "" +msgstr "ไม่มี" #. module: web #. openerp-web @@ -1732,14 +1741,14 @@ msgstr "ผู้ใช้ทั้งหมด" #: code:addons/web/static/src/js/view_form.js:1671 #, python-format msgid "Unknown field %s in domain %s" -msgstr "" +msgstr "ฟิลด์ไม่รู้จัก %s ในโดเมน %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1546 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "Node [%s] is not a JSONified XML node" +msgstr "โหนด [%s] ไม่ใช่ JSONified XML โหนต" #. module: web #. openerp-web @@ -1776,7 +1785,7 @@ msgstr "ใช่" #: code:addons/web/static/src/js/chrome.js:1350 #, python-format msgid "Timezone Mismatch" -msgstr "โซนเวลา ไม่ตรงกัน" +msgstr "เขตเวลา ไม่ตรงกัน" #. module: web #. openerp-web @@ -1811,7 +1820,7 @@ msgstr "--- ห้าม นำเข้า ---" #: code:addons/web/static/src/xml/base.xml:1697 #, python-format msgid "Import-Compatible Export" -msgstr "" +msgstr "ส่งออก แบบนำเข้าที่เข้ากันได้" #. module: web #. openerp-web @@ -1825,7 +1834,7 @@ msgstr "%d ปีที่ผ่านมา" #: code:addons/web/static/src/js/view_list.js:1050 #, python-format msgid "Unknown m2m command %s" -msgstr "" +msgstr "คำสั่ง Many2Many ที่ไม่รู้จัก %s" #. module: web #. openerp-web @@ -1854,7 +1863,7 @@ msgstr "ใส่รหัสผ่านใหม่ที่ต้องกา #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "" +msgstr "ฟิลด์ยังว่างเปล่า, ยังไม่มีอะไรที่ต้องบันทึก !" #. module: web #. openerp-web @@ -1882,7 +1891,7 @@ msgstr "ชุดรหัสภาษา:" #: code:addons/web/static/src/xml/base.xml:1829 #, python-format msgid "Lines to skip" -msgstr "" +msgstr "บรรทัดที่ข้าม" #. module: web #. openerp-web @@ -1896,35 +1905,35 @@ msgstr "สร้าง \"%s\"" #: code:addons/web/static/src/js/data_export.js:362 #, python-format msgid "Please select fields to save export list..." -msgstr "" +msgstr "โปรดเลือกฟิลเพื่อบันทึกรายการส่งออก..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." -msgstr "" +msgstr "ลิขสิทธิ์ © 2004-TODAY OpenERP SA. All Rights Reserved." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "This resource is empty" -msgstr "" +msgstr "ทรัพยากรนี้ว่างเปล่า" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1710 #, python-format msgid "Available fields" -msgstr "" +msgstr "ฟิลด์ที่ใช้ได้" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1856 #, python-format msgid "The import failed due to:" -msgstr "" +msgstr "การนำเข้าล้มเหลวเนื่องจาก:" #. module: web #. openerp-web @@ -1932,7 +1941,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:561 #, python-format msgid "JS Tests" -msgstr "JS Tests" +msgstr "ทดสอบ JS" #. module: web #. openerp-web @@ -1946,7 +1955,7 @@ msgstr "บันทึกเป็น:" #: code:addons/web/static/src/js/search.js:1024 #, python-format msgid "Filter on: %s" -msgstr "" +msgstr "กรองด้วย: %s" #. module: web #. openerp-web @@ -1969,7 +1978,7 @@ msgstr "เสร็จ" #: code:addons/web/static/src/xml/base.xml:562 #, python-format msgid "View Fields" -msgstr "" +msgstr "ดูฟิลด์" #. module: web #. openerp-web @@ -1983,14 +1992,14 @@ msgstr "ยืนยันรหัสผ่านใหม่" #: code:addons/web/static/src/js/view_list.js:587 #, python-format msgid "Do you really want to remove these records?" -msgstr "" +msgstr "คุณต้องการลบบันทึกเหล่านี้หรือไม่?" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:980 #, python-format msgid "Context:" -msgstr "" +msgstr "บริบท" #. module: web #. openerp-web @@ -2005,7 +2014,7 @@ msgstr "เป็น" #: code:addons/web/static/src/js/data_export.js:6 #, python-format msgid "Export Data" -msgstr "ส่งข้อมูล ออก" +msgstr "ส่งออกข้อมูล" #. module: web #. openerp-web @@ -2079,7 +2088,7 @@ msgstr "ค้นหาอีกครั้ง" #: code:addons/web/static/src/xml/base.xml:1481 #, python-format msgid "-- Filters --" -msgstr "-- กรอง --" +msgstr "-- ตัวกรอง --" #. module: web #. openerp-web @@ -2104,6 +2113,7 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" +"จัดกลุ่มบนฟิลด์ '%s' ไม่สามารถทำได้ เนื่องจากฟิลด์นี้ไม่ปรากฏในรายการมุมมอง." #. module: web #. openerp-web @@ -2122,6 +2132,9 @@ msgid "" " You can export all data or only the fields that can be " "reimported after modification." msgstr "" +"โปรแกรมนี้จะส่งออกข้อมูลทั้งหมดที่ตรงกับเงื่อนใขของการค้นหาไปยังไฟล์ CSV.\n" +" คุณสามารถส่งออกข้อมูลทั้งหมด " +"หรือบางฟิลด์ที่สามารถนำเข้าได้อีกครั้งหลังการแก้ใข." #. module: web #. openerp-web @@ -2142,14 +2155,14 @@ msgstr "แสดงปีที่แตกต่างกัน" #: code:addons/web/static/src/xml/base.xml:1498 #, python-format msgid "Filter Name:" -msgstr "กรองชื่อ:" +msgstr "ชื่อตัวกรอง:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:968 #, python-format msgid "Type:" -msgstr "ประเภท:" +msgstr "ชนิด:" #. module: web #. openerp-web @@ -2205,6 +2218,8 @@ msgid "" "The type of the field '%s' must be a many2many field with a relation to " "'ir.attachment' model." msgstr "" +"ชนิดของฟิลด์ '%s' ต้องเป็นฟิลด์แบบ Many to Many และมีความสัมพันธ์กับโมเดล " +"'ir.attachment'." #. module: web #. openerp-web @@ -2249,7 +2264,7 @@ msgstr "เพิ่มด่วน" #: code:addons/web/static/src/xml/base.xml:1826 #, python-format msgid "Latin 1" -msgstr "Latin 1" +msgstr "ลาติน 1" #. module: web #. openerp-web @@ -2350,7 +2365,7 @@ msgstr "ยืนยัน" #: code:addons/web/static/src/js/data_export.js:127 #, python-format msgid "Please enter save field list name" -msgstr "" +msgstr "โปรดบันทึกฟิลด์รายการชื่อ" #. module: web #. openerp-web @@ -2371,7 +2386,7 @@ msgstr "ใหม่" #: code:addons/web/static/src/js/view_list.js:1777 #, python-format msgid "Can't convert value %s to context" -msgstr "" +msgstr "ไม่สามารถเปลี่ยนค่า %s ไปยังบริบทได้" #. module: web #. openerp-web @@ -2379,7 +2394,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:563 #, python-format msgid "Fields View Get" -msgstr "" +msgstr "ดึงฟิลด์มุมมอง" #. module: web #. openerp-web @@ -2395,7 +2410,7 @@ msgstr "ยืนยันรหัสผ่าน:" #: code:addons/web/static/src/js/search.js:2123 #, python-format msgid "greater or equal than" -msgstr "" +msgstr "มากกว่าหรือเท่ากับ" #. module: web #. openerp-web @@ -2462,13 +2477,13 @@ msgstr "เกี่ยวกับ OpenERP" #: code:addons/web/static/src/js/formats.js:301 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "" +msgstr "'%s' เป็นวันที่ที่ไม่ถูกต้อง, เฉพาะวันที่ไม่ใช่เวลา" #. module: web #: code:addons/web/controllers/main.py:1307 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "" +msgstr "ไม่พบเนื้อหาสำหรับฟิลด์ '%s' บน '%s:%s'" #. module: web #. openerp-web @@ -2496,14 +2511,14 @@ msgstr "จัดการฐานข้อมูล" #: code:addons/web/static/src/js/pyeval.js:770 #, python-format msgid "Evaluation Error" -msgstr "" +msgstr "ข้อผิดพลาดในการทดสอบ" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1387 #, python-format msgid "not a valid integer" -msgstr "" +msgstr "จำนวนเต็มไม่ถูกต้อง" #. module: web #. openerp-web @@ -2529,7 +2544,7 @@ msgstr "ไม่" #: code:addons/web/static/src/js/formats.js:313 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "" +msgstr "'%s' ไม่สามารถแปลงเป็นวันที่ได้, เฉพาะวันเวลาไม่ใช่เวลา" #. module: web #. openerp-web @@ -2554,14 +2569,14 @@ msgstr "ยกเลิก" #: code:addons/web/static/src/js/view_form.js:5314 #, python-format msgid "Uploading Error" -msgstr "" +msgstr "อับโหลดมีปัญหา" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1642 #, python-format msgid "Add a condition" -msgstr "" +msgstr "เพิ่มเงื่อนใข" #. module: web #. openerp-web @@ -2575,21 +2590,21 @@ msgstr "กำลังโหลด..." #: code:addons/web/static/src/js/search.js:884 #, python-format msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" -msgstr "" +msgstr "ค่าไม่ถูกต้องสำหรับฟิลด์ %(fieldname)s: [%(value)s] is %(message)s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3926 #, python-format msgid "The o2m record must be saved before an action can be used" -msgstr "" +msgstr "บันทึก One to Many ต้องบันทึกก่อนที่การปฏิบัติจะใช้งาน" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:531 #, python-format msgid "Backed" -msgstr "" +msgstr "กลับแล้ว" #. module: web #. openerp-web @@ -2621,7 +2636,7 @@ msgstr "%s (%d)" #: code:addons/web/static/src/js/search.js:841 #, python-format msgid "triggered from search view" -msgstr "" +msgstr "ถูกกระตุ้นจากมุมมองการค้นหา" #. module: web #. openerp-web @@ -2651,6 +2666,7 @@ msgstr "แก้ไขการกระทำ" msgid "" "This filter is global and will be removed for everybody if you continue." msgstr "" +"ตัวกรองนี้เป็นแบบทั่วไป และจะเอากรองออกให้กับทุกคน ถ้าคุณดำเนินการต่อ." #. module: web #. openerp-web @@ -2671,7 +2687,7 @@ msgstr "คุณเท่านั้น" #: code:addons/web/static/src/xml/base.xml:571 #, python-format msgid "Edit Workflow" -msgstr "แก้ไข เวิร์กโฟลว์" +msgstr "แก้ไขกระบวนการทำงาน" #. module: web #. openerp-web @@ -2685,7 +2701,7 @@ msgstr "คุณต้องการที่จะลบสิ่งที่ #: code:addons/web/static/src/js/views.js:914 #, python-format msgid "Technical Translation" -msgstr "" +msgstr "การแปลศัพท์เทคนิค" #. module: web #. openerp-web @@ -2699,14 +2715,14 @@ msgstr "ฟิลด์" #: code:addons/web/static/src/xml/base.xml:642 #, python-format msgid "Modified by :" -msgstr "ดัดแปลงโดย" +msgstr "แก้ใขโดย:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:521 #, python-format msgid "The database %s has been dropped" -msgstr "ฐานข้อมูล %s ที่ต้องการทิ้ง" +msgstr "ฐานข้อมูล %s ได้ถูกทิ้งแล้ว" #. module: web #. openerp-web @@ -2742,14 +2758,14 @@ msgstr "" #, python-format msgid "" "The old password you provided is incorrect, your password was not changed." -msgstr "" +msgstr "รหัสผ่านเก่าผิด รหัสผ่านของคุณจะไม่ถูกเปลี่ยน" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:583 #, python-format msgid "Creation User:" -msgstr "" +msgstr "สร้างผู้ใช้:" #. module: web #. openerp-web @@ -2823,7 +2839,7 @@ msgstr "เลือกวัน" #: code:addons/web/static/src/js/search.js:1369 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "" +msgstr "ค้นหา %(field)s สำหรับ: %(value)s" #. module: web #. openerp-web @@ -2851,7 +2867,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1816 #, python-format msgid "Separator:" -msgstr "ตัวแยก:" +msgstr "ตัวคั้น:" #. module: web #. openerp-web diff --git a/addons/web/i18n/tr.po b/addons/web/i18n/tr.po index f396a09f0a1..43bfc5dbd86 100644 --- a/addons/web/i18n/tr.po +++ b/addons/web/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/uk.po b/addons/web/i18n/uk.po index d0e435fbf70..6a6b45577d1 100644 --- a/addons/web/i18n/uk.po +++ b/addons/web/i18n/uk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/vi.po b/addons/web/i18n/vi.po index 277736b4d3b..d8bc7ec6a5d 100644 --- a/addons/web/i18n/vi.po +++ b/addons/web/i18n/vi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:00+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_CN.po b/addons/web/i18n/zh_CN.po index 1fe86e00e18..cf9fe672739 100644 --- a/addons/web/i18n/zh_CN.po +++ b/addons/web/i18n/zh_CN.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_TW.po b/addons/web/i18n/zh_TW.po index 223e155d70a..6c24cccaa4a 100644 --- a/addons/web/i18n/zh_TW.po +++ b/addons/web/i18n/zh_TW.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2013-06-07 19:37+0000\n" -"PO-Revision-Date: 2013-02-01 16:27+0000\n" -"Last-Translator: Charles Hsu \n" +"PO-Revision-Date: 2013-12-29 15:08+0000\n" +"Last-Translator: Andy Cheng \n" "Language-Team: Chinese (Traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-12-19 06:14+0000\n" -"X-Generator: Launchpad (build 16872)\n" +"X-Launchpad-Export-Date: 2014-04-23 07:01+0000\n" +"X-Generator: Launchpad (build 16985)\n" #. module: web #. openerp-web @@ -88,7 +88,7 @@ msgstr "變更主要密碼" #: code:addons/web/static/src/js/view_form.js:2439 #, python-format msgid "Today" -msgstr "" +msgstr "今天" #. module: web #. openerp-web @@ -116,7 +116,7 @@ msgstr "拒絕存取" #: code:addons/web/static/src/js/view_form.js:2462 #, python-format msgid "Now" -msgstr "" +msgstr "現在" #. module: web #. openerp-web @@ -459,7 +459,7 @@ msgstr "語言" #: code:addons/web/static/src/js/view_form.js:2438 #, python-format msgid "Show the next month" -msgstr "" +msgstr "顯示下個月" #. module: web #. openerp-web @@ -579,7 +579,7 @@ msgstr "不到一分鐘前" #: code:addons/web/static/src/js/view_form.js:2453 #, python-format msgid "Select a date" -msgstr "" +msgstr "請選擇日期" #. module: web #. openerp-web diff --git a/addons/web/static/lib/underscore/underscore-min.js b/addons/web/static/lib/underscore/underscore-min.js index 5b55f32beac..3434d6c5902 100644 --- a/addons/web/static/lib/underscore/underscore-min.js +++ b/addons/web/static/lib/underscore/underscore-min.js @@ -1,31 +1,6 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore -(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== -c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, -h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= -b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== -null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= -function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= -e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= -function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, -c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; -b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, -1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; -b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; -b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), -function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ -u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= -function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= -true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); +// Underscore.js 1.6.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/addons/web/static/lib/underscore/underscore.js b/addons/web/static/lib/underscore/underscore.js index 208d4cd890c..ca61fdc3a4b 100644 --- a/addons/web/static/lib/underscore/underscore.js +++ b/addons/web/static/lib/underscore/underscore.js @@ -1,17 +1,14 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore +// Underscore.js 1.6.0 +// http://underscorejs.org +// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. (function() { // Baseline setup // -------------- - // Establish the root object, `window` in the browser, or `global` on the server. + // Establish the root object, `window` in the browser, or `exports` on the server. var root = this; // Save the previous value of the `_` variable. @@ -24,10 +21,12 @@ var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; // Create quick reference variables for speed access to core prototypes. - var slice = ArrayProto.slice, - unshift = ArrayProto.unshift, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; + var + push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; // All **ECMAScript 5** native function implementations that we hope to use // are declared here. @@ -46,7 +45,11 @@ nativeBind = FuncProto.bind; // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { return new wrapper(obj); }; + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; // Export the Underscore object for **Node.js**, with // backwards-compatibility for the old `require()` API. If we're in @@ -58,11 +61,11 @@ } exports._ = _; } else { - root['_'] = _; + root._ = _; } // Current version. - _.VERSION = '1.3.1'; + _.VERSION = '1.6.0'; // Collection Functions // -------------------- @@ -71,20 +74,20 @@ // Handles objects with the built-in `forEach`, arrays, and raw objects. // Delegates to **ECMAScript 5**'s native `forEach` if available. var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; + if (obj == null) return obj; if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; + for (var i = 0, length = obj.length; i < length; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; } } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; } } + return obj; }; // Return the results of applying the iterator to each element. @@ -94,12 +97,13 @@ if (obj == null) return results; if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); + results.push(iterator.call(context, value, index, list)); }); - if (obj.length === +obj.length) results.length = obj.length; return results; }; + var reduceError = 'Reduce of empty array with no initial value'; + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { @@ -117,7 +121,7 @@ memo = iterator.call(context, memo, value, index, list); } }); - if (!initial) throw new TypeError('Reduce of empty array with no initial value'); + if (!initial) throw new TypeError(reduceError); return memo; }; @@ -130,16 +134,29 @@ if (context) iterator = _.bind(iterator, context); return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); } - var reversed = _.toArray(obj).reverse(); - if (context && !initial) iterator = _.bind(iterator, context); - return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator); + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; }; // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { + _.find = _.detect = function(obj, predicate, context) { var result; any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { + if (predicate.call(context, value, index, list)) { result = value; return true; } @@ -150,179 +167,246 @@ // Return all the elements that pass a truth test. // Delegates to **ECMAScript 5**'s native `filter` if available. // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { + _.filter = _.select = function(obj, predicate, context) { var results = []; if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; + if (predicate.call(context, value, index, list)) results.push(value); }); return results; }; // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - each(obj, function(value, index, list) { - if (!iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; + _.reject = function(obj, predicate, context) { + return _.filter(obj, function(value, index, list) { + return !predicate.call(context, value, index, list); + }, context); }; // Determine whether all of the elements match a truth test. // Delegates to **ECMAScript 5**'s native `every` if available. // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { + _.every = _.all = function(obj, predicate, context) { + predicate || (predicate = _.identity); var result = true; if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context); each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; + if (!(result = result && predicate.call(context, value, index, list))) return breaker; }); - return result; + return !!result; }; // Determine if at least one element in the object matches a truth test. // Delegates to **ECMAScript 5**'s native `some` if available. // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); + var any = _.some = _.any = function(obj, predicate, context) { + predicate || (predicate = _.identity); var result = false; if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; + if (result || (result = predicate.call(context, value, index, list))) return breaker; }); return !!result; }; - // Determine if a given value is included in the array or object using `===`. - // Aliased as `contains`. - _.include = _.contains = function(obj, target) { - var found = false; - if (obj == null) return found; + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - found = any(obj, function(value) { + return any(obj, function(value) { return value === target; }); - return found; }; // Invoke a method (with arguments) on every item in a collection. _.invoke = function(obj, method) { var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); return _.map(obj, function(value) { - return (_.isFunction(method) ? method || value : value[method]).apply(value, args); + return (isFunc ? method : value[method]).apply(value, args); }); }; // Convenience version of a common use case of `map`: fetching a property. _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matches(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matches(attrs)); }; // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797) _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity}; + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + var result = -Infinity, lastComputed = -Infinity; each(obj, function(value, index, list) { var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var shuffled = [], rand; - each(obj, function(value, index, list) { - if (index == 0) { - shuffled[0] = value; - } else { - rand = Math.floor(Math.random() * (index + 1)); - shuffled[index] = shuffled[rand]; - shuffled[rand] = value; + if (computed > lastComputed) { + result = value; + lastComputed = computed; } }); - return shuffled; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, iterator, context) { - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }), 'value'); - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, val) { - var result = {}; - var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; }; - each(obj, function(value, index) { - var key = iterator(value, index); - (result[key] || (result[key] = [])).push(value); - }); return result; }; - // Use a comparator function to figure out at what index an object should - // be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator) { - iterator || (iterator = _.identity); + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + var result = Infinity, lastComputed = Infinity; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + if (computed < lastComputed) { + result = value; + lastComputed = computed; + } + }); + return result; + }; + + // Shuffle an array, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (obj.length !== +obj.length) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + if (value == null) return _.identity; + if (_.isFunction(value)) return value; + return _.property(value); + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, iterator, context) { + iterator = lookupIterator(iterator); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iterator, context) { + var result = {}; + iterator = lookupIterator(iterator); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, key, value) { + _.has(result, key) ? result[key].push(value) : result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, key, value) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, key) { + _.has(result, key) ? result[key]++ : result[key] = 1; + }); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = lookupIterator(iterator); + var value = iterator.call(context, obj); var low = 0, high = array.length; while (low < high) { - var mid = (low + high) >> 1; - iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; } return low; }; - // Safely convert anything iterable into a real, live array. - _.toArray = function(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - if (_.isArray(iterable)) return slice.call(iterable); - if (_.isArguments(iterable)) return slice.call(iterable); - return _.values(iterable); + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); }; // Return the number of elements in an object. _.size = function(obj) { - return _.toArray(obj).length; + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; }; // Array Functions // --------------- // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head`. The **guard** check allows it to work - // with `_.map`. - _.first = _.head = function(array, n, guard) { - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if ((n == null) || guard) return array[0]; + if (n < 0) return []; + return slice.call(array, 0, n); }; - // Returns everything but the last entry of the array. Especcialy useful on + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. The **guard** check allows it to work with // `_.map`. @@ -333,33 +417,42 @@ // Get the last element of an array. Passing **n** will return the last N // values in the array. The **guard** check allows it to work with `_.map`. _.last = function(array, n, guard) { - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } + if (array == null) return void 0; + if ((n == null) || guard) return array[array.length - 1]; + return slice.call(array, Math.max(array.length - n, 0)); }; - // Returns everything but the first entry of the array. Aliased as `tail`. - // Especially useful on the arguments object. Passing an **index** will return - // the rest of the values in the array from that index onward. The **guard** + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** // check allows it to work with `_.map`. - _.rest = _.tail = function(array, index, guard) { - return slice.call(array, (index == null) || guard ? 1 : index); + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); }; // Trim out all falsy values from an array. _.compact = function(array) { - return _.filter(array, function(value){ return !!value; }); + return _.filter(array, _.identity); }; - // Return a completely flattened version of an array. + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + if (shallow && _.every(input, _.isArray)) { + return concat.apply(output, input); + } + each(input, function(value) { + if (_.isArray(value) || _.isArguments(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. _.flatten = function(array, shallow) { - return _.reduce(array, function(memo, value) { - if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value)); - memo[memo.length] = value; - return memo; - }, []); + return flatten(array, shallow, []); }; // Return a version of the array that does not contain the specified value(s). @@ -367,20 +460,36 @@ return _.difference(array, slice.call(arguments, 1)); }; + // Split an array into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(array, predicate, context) { + predicate = lookupIterator(predicate); + var pass = [], fail = []; + each(array, function(elem) { + (predicate.call(context, elem) ? pass : fail).push(elem); + }); + return [pass, fail]; + }; + // Produce a duplicate-free version of the array. If the array has already // been sorted, you have the option of using a faster algorithm. // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator) { - var initial = iterator ? _.map(array, iterator) : array; - var result = []; - _.reduce(initial, function(memo, el, i) { - if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) { - memo[memo.length] = el; - result[result.length] = array[i]; + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); } - return memo; - }, []); - return result; + }); + return results; }; // Produce an array that contains the union: each distinct element from all of @@ -390,12 +499,12 @@ }; // Produce an array that contains every item shared between all the - // passed-in arrays. (Aliased as "intersect" for back-compat.) - _.intersection = _.intersect = function(array) { + // passed-in arrays. + _.intersection = function(array) { var rest = slice.call(arguments, 1); return _.filter(_.uniq(array), function(item) { return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; + return _.contains(other, item); }); }); }; @@ -403,20 +512,37 @@ // Take the difference between one array and a number of other arrays. // Only the elements present in just the first array will remain. _.difference = function(array) { - var rest = _.flatten(slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.include(rest, value); }); + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); }; // Zip together multiple lists into a single array -- elements that share // an index go together. _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); + var length = _.max(_.pluck(arguments, 'length').concat(0)); var results = new Array(length); - for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(arguments, '' + i); + } return results; }; + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, length = list.length; i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), // we need this function. Return the position of the first occurrence of an // item in an array, or -1 if the item is not included in the array. @@ -425,22 +551,29 @@ // for **isSorted** to use binary search. _.indexOf = function(array, item, isSorted) { if (array == null) return -1; - var i, l; + var i = 0, length = array.length; if (isSorted) { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); - for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i; + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < length; i++) if (array[i] === item) return i; return -1; }; // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item) { + _.lastIndexOf = function(array, item, from) { if (array == null) return -1; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); - var i = array.length; - while (i--) if (i in array && array[i] === item) return i; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; return -1; }; @@ -454,11 +587,11 @@ } step = arguments[2] || 1; - var len = Math.max(Math.ceil((stop - start) / step), 0); + var length = Math.max(Math.ceil((stop - start) / step), 0); var idx = 0; - var range = new Array(len); + var range = new Array(length); - while(idx < len) { + while(idx < length) { range[idx++] = start; start += step; } @@ -473,29 +606,46 @@ var ctor = function(){}; // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Binding with arguments is also known as `curry`. - // Delegates to **ECMAScript 5**'s native `Function.bind` if available. - // We check for `func.bind` first, to fail fast when `func` is undefined. - _.bind = function bind(func, context) { - var bound, args; - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + var args, bound; + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); if (!_.isFunction(func)) throw new TypeError; args = slice.call(arguments, 2); return bound = function() { if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); ctor.prototype = func.prototype; var self = new ctor; + ctor.prototype = null; var result = func.apply(self, args.concat(slice.call(arguments))); if (Object(result) === result) return result; return self; }; }; - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + return function() { + var position = 0; + var args = boundArgs.slice(); + for (var i = 0, length = args.length; i < length; i++) { + if (args[i] === _) args[i] = arguments[position++]; + } + while (position < arguments.length) args.push(arguments[position++]); + return func.apply(this, args); + }; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. _.bindAll = function(obj) { var funcs = slice.call(arguments, 1); - if (funcs.length == 0) funcs = _.functions(obj); + if (funcs.length === 0) throw new Error('bindAll must be passed function names'); each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); return obj; }; @@ -514,7 +664,7 @@ // it with the arguments supplied. _.delay = function(func, wait) { var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(func, args); }, wait); + return setTimeout(function(){ return func.apply(null, args); }, wait); }; // Defers a function, scheduling it to run after the current call stack has @@ -524,41 +674,74 @@ }; // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, throttling, more; - var whenDone = _.debounce(function(){ more = throttling = false; }, wait); + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; return function() { - context = this; args = arguments; - var later = function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); timeout = null; - if (more) func.apply(context, args); - whenDone(); - }; - if (!timeout) timeout = setTimeout(later, wait); - if (throttling) { - more = true; - } else { - func.apply(context, args); + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); } - whenDone(); - throttling = true; + return result; }; }; // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for - // N milliseconds. - _.debounce = function(func, wait) { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + if (last < wait) { + timeout = setTimeout(later, wait - last); + } else { timeout = null; - func.apply(context, args); - }; - clearTimeout(timeout); - timeout = setTimeout(later, wait); + if (!immediate) { + result = func.apply(context, args); + context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) { + timeout = setTimeout(later, wait); + } + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; }; }; @@ -569,7 +752,9 @@ return function() { if (ran) return memo; ran = true; - return memo = func.apply(this, arguments); + memo = func.apply(this, arguments); + func = null; + return memo; }; }; @@ -577,10 +762,7 @@ // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. _.wrap = function(func, wrapper) { - return function() { - var args = [func].concat(slice.call(arguments, 0)); - return wrapper.apply(this, args); - }; + return _.partial(wrapper, func); }; // Returns a function that is the composition of a list of functions, each @@ -598,9 +780,10 @@ // Returns a function that will only be executed after being called N times. _.after = function(times, func) { - if (times <= 0) return func(); return function() { - if (--times < 1) { return func.apply(this, arguments); } + if (--times < 1) { + return func.apply(this, arguments); + } }; }; @@ -609,16 +792,44 @@ // Retrieve the names of an object's properties. // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; + for (var key in obj) if (_.has(obj, key)) keys.push(key); return keys; }; // Retrieve the values of an object's properties. _.values = function(obj) { - return _.map(obj, _.identity); + var keys = _.keys(obj); + var length = keys.length; + var values = new Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = new Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; }; // Return a sorted list of the function names available on the object. @@ -634,18 +845,42 @@ // Extend a given object with all the properties in passed-in object(s). _.extend = function(obj) { each(slice.call(arguments, 1), function(source) { - for (var prop in source) { - obj[prop] = source[prop]; + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } } }); return obj; }; + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + // Fill in a given object with default properties. _.defaults = function(obj) { each(slice.call(arguments, 1), function(source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; + if (source) { + for (var prop in source) { + if (obj[prop] === void 0) obj[prop] = source[prop]; + } } }); return obj; @@ -665,19 +900,16 @@ return obj; }; - // Internal recursive comparison function. - function eq(a, b, stack) { + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). if (a === b) return a !== 0 || 1 / a == 1 / b; // A strict comparison is necessary because `null == undefined`. if (a == null || b == null) return a === b; // Unwrap any wrapped objects. - if (a._chain) a = a._wrapped; - if (b._chain) b = b._wrapped; - // Invoke a custom `isEqual` method if one is provided. - if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b); - if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a); + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; // Compare `[[Class]]` names. var className = toString.call(a); if (className != toString.call(b)) return false; @@ -707,14 +939,23 @@ if (typeof a != 'object' || typeof b != 'object') return false; // Assume equality for cyclic structures. The algorithm for detecting cyclic // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = stack.length; + var length = aStack.length; while (length--) { // Linear search. Performance is inversely proportional to the number of // unique nested structures. - if (stack[length] == a) return true; + if (aStack[length] == a) return bStack[length] == b; + } + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor)) + && ('constructor' in a && 'constructor' in b)) { + return false; } // Add the first object to the stack of traversed objects. - stack.push(a); + aStack.push(a); + bStack.push(b); var size = 0, result = true; // Recursively compare objects and arrays. if (className == '[object Array]') { @@ -724,20 +965,17 @@ if (result) { // Deep compare the contents, ignoring non-numeric properties. while (size--) { - // Ensure commutative equality for sparse arrays. - if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break; + if (!(result = eq(a[size], b[size], aStack, bStack))) break; } } } else { - // Objects with different constructors are not equivalent. - if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false; // Deep compare objects. for (var key in a) { if (_.has(a, key)) { // Count the expected number of properties. size++; // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break; + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; } } // Ensure that both objects contain the same number of properties. @@ -749,18 +987,20 @@ } } // Remove the first object from the stack of traversed objects. - stack.pop(); + aStack.pop(); + bStack.pop(); return result; - } + }; // Perform a deep comparison to check if two objects are equal. _.isEqual = function(a, b) { - return eq(a, b, []); + return eq(a, b, [], []); }; // Is a given array, string, or object empty? // An "empty" object has no enumerable own-properties. _.isEmpty = function(obj) { + if (obj == null) return true; if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; for (var key in obj) if (_.has(obj, key)) return false; return true; @@ -768,7 +1008,7 @@ // Is a given value a DOM element? _.isElement = function(obj) { - return !!(obj && obj.nodeType == 1); + return !!(obj && obj.nodeType === 1); }; // Is a given value an array? @@ -782,35 +1022,36 @@ return obj === Object(obj); }; - // Is a given variable an arguments object? - _.isArguments = function(obj) { - return toString.call(obj) == '[object Arguments]'; - }; + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. if (!_.isArguments(arguments)) { _.isArguments = function(obj) { return !!(obj && _.has(obj, 'callee')); }; } - // Is a given value a function? - _.isFunction = function(obj) { - return toString.call(obj) == '[object Function]'; + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); }; - // Is a given value a string? - _.isString = function(obj) { - return toString.call(obj) == '[object String]'; - }; - - // Is a given value a number? - _.isNumber = function(obj) { - return toString.call(obj) == '[object Number]'; - }; - - // Is the given value `NaN`? + // Is the given value `NaN`? (NaN is the only number which does not equal itself). _.isNaN = function(obj) { - // `NaN` is the only value for which `===` is not reflexive. - return obj !== obj; + return _.isNumber(obj) && obj != +obj; }; // Is a given value a boolean? @@ -818,16 +1059,6 @@ return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; }; - // Is a given value a date? - _.isDate = function(obj) { - return toString.call(obj) == '[object Date]'; - }; - - // Is the given value a regular expression? - _.isRegExp = function(obj) { - return toString.call(obj) == '[object RegExp]'; - }; - // Is a given value equal to null? _.isNull = function(obj) { return obj === null; @@ -838,7 +1069,8 @@ return obj === void 0; }; - // Has own property? + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). _.has = function(obj, key) { return hasOwnProperty.call(obj, key); }; @@ -858,21 +1090,94 @@ return value; }; + _.constant = function(value) { + return function () { + return value; + }; + }; + + _.property = function(key) { + return function(obj) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of `key:value` pairs. + _.matches = function(attrs) { + return function(obj) { + if (obj === attrs) return true; //avoid comparing an object to itself. + for (var key in attrs) { + if (attrs[key] !== obj[key]) + return false; + } + return true; + } + }; + // Run a function **n** times. - _.times = function (n, iterator, context) { - for (var i = 0; i < n; i++) iterator.call(context, i); + _.times = function(n, iterator, context) { + var accum = Array(Math.max(0, n)); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; }; - // Escape a string for HTML interpolation. - _.escape = function(string) { - return (''+string).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\//g,'/'); + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); }; - // Add your own custom functions to the Underscore object, ensuring that - // they're correctly added to the OOP wrapper as well. + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { return new Date().getTime(); }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property) { + if (object == null) return void 0; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. _.mixin = function(obj) { - each(_.functions(obj), function(name){ - addToWrapper(name, _[name] = obj[name]); + each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; }); }; @@ -880,7 +1185,7 @@ // Useful for temporary DOM ids. var idCounter = 0; _.uniqueId = function(prefix) { - var id = idCounter++; + var id = ++idCounter + ''; return prefix ? prefix + id : id; }; @@ -895,41 +1200,80 @@ // When customizing `templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is // guaranteed not to match. - var noMatch = /.^/; + var noMatch = /(.)^/; - // Within an interpolation, evaluation, or escaping, remove HTML escaping - // that had been previously added. - var unescape = function(code) { - return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'"); + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' }; + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + // JavaScript micro-templating, similar to John Resig's implementation. // Underscore templating handles arbitrary delimiters, preserves whitespace, // and correctly escapes quotes within interpolated code. - _.template = function(str, data) { - var c = _.templateSettings; - var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + - 'with(obj||{}){__p.push(\'' + - str.replace(/\\/g, '\\\\') - .replace(/'/g, "\\'") - .replace(c.escape || noMatch, function(match, code) { - return "',_.escape(" + unescape(code) + "),'"; - }) - .replace(c.interpolate || noMatch, function(match, code) { - return "'," + unescape(code) + ",'"; - }) - .replace(c.evaluate || noMatch, function(match, code) { - return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('"; - }) - .replace(/\r/g, '\\r') - .replace(/\n/g, '\\n') - .replace(/\t/g, '\\t') - + "');}return __p.join('');"; - var func = new Function('obj', '_', tmpl); - if (data) return func(data, _); - return function(data) { - return func.call(this, data, _); + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; }; // Add a "chain" function, which will delegate to the wrapper. @@ -937,29 +1281,15 @@ return _(obj).chain(); }; - // The OOP Wrapper + // OOP // --------------- - // If Underscore is called as a function, it returns a wrapped object that // can be used OO-style. This wrapper holds altered versions of all the // underscore functions. Wrapped objects may be chained. - var wrapper = function(obj) { this._wrapped = obj; }; - - // Expose `wrapper.prototype` as `_.prototype` - _.prototype = wrapper.prototype; // Helper function to continue chaining intermediate results. - var result = function(obj, chain) { - return chain ? _(obj).chain() : obj; - }; - - // A method to easily add functions to the OOP wrapper. - var addToWrapper = function(name, func) { - wrapper.prototype[name] = function() { - var args = slice.call(arguments); - unshift.call(args, this._wrapped); - return result(func.apply(_, args), this._chain); - }; + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; }; // Add all of the Underscore functions to the wrapper object. @@ -968,32 +1298,47 @@ // Add all mutator Array functions to the wrapper. each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { var method = ArrayProto[name]; - wrapper.prototype[name] = function() { - var wrapped = this._wrapped; - method.apply(wrapped, arguments); - var length = wrapped.length; - if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0]; - return result(wrapped, this._chain); + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); }; }); // Add all accessor Array functions to the wrapper. each(['concat', 'join', 'slice'], function(name) { var method = ArrayProto[name]; - wrapper.prototype[name] = function() { - return result(method.apply(this._wrapped, arguments), this._chain); + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); }; }); - // Start chaining a wrapped Underscore object. - wrapper.prototype.chain = function() { - this._chain = true; - return this; - }; + _.extend(_.prototype, { - // Extracts the result from a wrapped and chained object. - wrapper.prototype.value = function() { - return this._wrapped; - }; + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } }).call(this); diff --git a/addons/web/static/lib/underscore/underscore.string.js b/addons/web/static/lib/underscore/underscore.string.js index d0b6ff1ffb3..01226d91513 100644 --- a/addons/web/static/lib/underscore/underscore.string.js +++ b/addons/web/static/lib/underscore/underscore.string.js @@ -1,45 +1,53 @@ -// Underscore.string -// (c) 2010 Esa-Matti Suuronen -// Underscore.strings is freely distributable under the terms of the MIT license. -// Documentation: https://github.com/epeli/underscore.string -// Some code is borrowed from MooTools and Alexandru Marasteanu. +// Underscore.string +// (c) 2010 Esa-Matti Suuronen +// Underscore.string is freely distributable under the terms of the MIT license. +// Documentation: https://github.com/epeli/underscore.string +// Some code is borrowed from MooTools and Alexandru Marasteanu. +// Version '2.3.0' -// Version 1.2.0 - -(function(root){ +!function(root, String){ 'use strict'; // Defining helper functions. var nativeTrim = String.prototype.trim; + var nativeTrimRight = String.prototype.trimRight; + var nativeTrimLeft = String.prototype.trimLeft; var parseNumber = function(source) { return source * 1 || 0; }; - var strRepeat = function(i, m) { - for (var o = []; m > 0; o[--m] = i) {} - return o.join(''); - }; - - var slice = function(a){ - return Array.prototype.slice.call(a); - }; - - var defaultToWhiteSpace = function(characters){ - if (characters) { - return _s.escapeRegExp(characters); + var strRepeat = function(str, qty){ + if (qty < 1) return ''; + var result = ''; + while (qty > 0) { + if (qty & 1) result += str; + qty >>= 1, str += str; } - return '\\s'; + return result; }; - var sArgs = function(method){ - return function(){ - var args = slice(arguments); - for(var i=0; i', + quot: '"', + apos: "'", + amp: '&' + }; + + var reversedEscapeChars = {}; + for(var key in escapeChars){ reversedEscapeChars[escapeChars[key]] = key; } + // sprintf() for JavaScript 0.7-beta1 // http://www.diveintojavascript.com/projects/javascript-sprintf // @@ -168,213 +176,238 @@ var _s = { - VERSION: '1.2.0', + VERSION: '2.3.0', - isBlank: sArgs(function(str){ + isBlank: function(str){ + if (str == null) str = ''; return (/^\s*$/).test(str); - }), + }, - stripTags: sArgs(function(str){ - return str.replace(/<\/?[^>]+>/ig, ''); - }), + stripTags: function(str){ + if (str == null) return ''; + return String(str).replace(/<\/?[^>]+>/g, ''); + }, - capitalize : sArgs(function(str) { - return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase(); - }), + capitalize : function(str){ + str = str == null ? '' : String(str); + return str.charAt(0).toUpperCase() + str.slice(1); + }, - chop: sArgs(function(str, step){ - step = parseNumber(step) || str.length; - var arr = []; - for (var i = 0; i < str.length;) { - arr.push(str.slice(i,i + step)); - i = i + step; - } - return arr; - }), + chop: function(str, step){ + if (str == null) return []; + str = String(str); + step = ~~step; + return step > 0 ? str.match(new RegExp('.{1,' + step + '}', 'g')) : [str]; + }, - clean: sArgs(function(str){ - return _s.strip(str.replace(/\s+/g, ' ')); - }), + clean: function(str){ + return _s.strip(str).replace(/\s+/g, ' '); + }, - count: sArgs(function(str, substr){ - var count = 0, index; - for (var i=0; i < str.length;) { - index = str.indexOf(substr, i); - index >= 0 && count++; - i = i + (index >= 0 ? index : 0) + substr.length; - } - return count; - }), + count: function(str, substr){ + if (str == null || substr == null) return 0; + return String(str).split(substr).length - 1; + }, - chars: sArgs(function(str) { - return str.split(''); - }), + chars: function(str) { + if (str == null) return []; + return String(str).split(''); + }, - escapeHTML: sArgs(function(str) { - return str.replace(/&/g,'&').replace(//g,'>') - .replace(/"/g, '"').replace(/'/g, "'"); - }), - - unescapeHTML: sArgs(function(str) { - return str.replace(/</g, '<').replace(/>/g, '>') - .replace(/"/g, '"').replace(/'/g, "'").replace(/&/g, '&'); - }), - - escapeRegExp: sArgs(function(str){ - // From MooTools core 1.2.4 - return str.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1'); - }), - - insert: sArgs(function(str, i, substr){ - var arr = str.split(''); - arr.splice(parseNumber(i), 0, substr); - return arr.join(''); - }), - - include: sArgs(function(str, needle){ - return str.indexOf(needle) !== -1; - }), - - join: sArgs(function(sep) { - var args = slice(arguments); - return args.join(args.shift()); - }), - - lines: sArgs(function(str) { - return str.split("\n"); - }), - - reverse: sArgs(function(str){ - return Array.prototype.reverse.apply(String(str).split('')).join(''); - }), - - splice: sArgs(function(str, i, howmany, substr){ - var arr = str.split(''); - arr.splice(parseNumber(i), parseNumber(howmany), substr); - return arr.join(''); - }), - - startsWith: sArgs(function(str, starts){ - return str.length >= starts.length && str.substring(0, starts.length) === starts; - }), - - endsWith: sArgs(function(str, ends){ - return str.length >= ends.length && str.substring(str.length - ends.length) === ends; - }), - - succ: sArgs(function(str){ - var arr = str.split(''); - arr.splice(str.length-1, 1, String.fromCharCode(str.charCodeAt(str.length-1) + 1)); - return arr.join(''); - }), - - titleize: sArgs(function(str){ - var arr = str.split(' '), - word; - for (var i=0; i < arr.length; i++) { - word = arr[i].split(''); - if(typeof word[0] !== 'undefined') word[0] = word[0].toUpperCase(); - i+1 === arr.length ? arr[i] = word.join('') : arr[i] = word.join('') + ' '; - } - return arr.join(''); - }), - - camelize: sArgs(function(str){ - return _s.trim(str).replace(/(\-|_|\s)+(.)?/g, function(match, separator, chr) { - return chr ? chr.toUpperCase() : ''; + swapCase: function(str) { + if (str == null) return ''; + return String(str).replace(/\S/g, function(c){ + return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase(); }); - }), + }, + + escapeHTML: function(str) { + if (str == null) return ''; + return String(str).replace(/[&<>"']/g, function(m){ return '&' + reversedEscapeChars[m] + ';'; }); + }, + + unescapeHTML: function(str) { + if (str == null) return ''; + return String(str).replace(/\&([^;]+);/g, function(entity, entityCode){ + var match; + + if (entityCode in escapeChars) { + return escapeChars[entityCode]; + } else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) { + return String.fromCharCode(parseInt(match[1], 16)); + } else if (match = entityCode.match(/^#(\d+)$/)) { + return String.fromCharCode(~~match[1]); + } else { + return entity; + } + }); + }, + + escapeRegExp: function(str){ + if (str == null) return ''; + return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); + }, + + splice: function(str, i, howmany, substr){ + var arr = _s.chars(str); + arr.splice(~~i, ~~howmany, substr); + return arr.join(''); + }, + + insert: function(str, i, substr){ + return _s.splice(str, i, 0, substr); + }, + + include: function(str, needle){ + if (needle === '') return true; + if (str == null) return false; + return String(str).indexOf(needle) !== -1; + }, + + join: function() { + var args = slice.call(arguments), + separator = args.shift(); + + if (separator == null) separator = ''; + + return args.join(separator); + }, + + lines: function(str) { + if (str == null) return []; + return String(str).split("\n"); + }, + + reverse: function(str){ + return _s.chars(str).reverse().join(''); + }, + + startsWith: function(str, starts){ + if (starts === '') return true; + if (str == null || starts == null) return false; + str = String(str); starts = String(starts); + return str.length >= starts.length && str.slice(0, starts.length) === starts; + }, + + endsWith: function(str, ends){ + if (ends === '') return true; + if (str == null || ends == null) return false; + str = String(str); ends = String(ends); + return str.length >= ends.length && str.slice(str.length - ends.length) === ends; + }, + + succ: function(str){ + if (str == null) return ''; + str = String(str); + return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length-1) + 1); + }, + + titleize: function(str){ + if (str == null) return ''; + return String(str).replace(/(?:^|\s)\S/g, function(c){ return c.toUpperCase(); }); + }, + + camelize: function(str){ + return _s.trim(str).replace(/[-_\s]+(.)?/g, function(match, c){ return c.toUpperCase(); }); + }, underscored: function(str){ - return _s.trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1_$2').replace(/\-|\s+/g, '_').toLowerCase(); + return _s.trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1_$2').replace(/[-\s]+/g, '_').toLowerCase(); }, dasherize: function(str){ - return _s.trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1-$2').replace(/^([A-Z]+)/, '-$1').replace(/\_|\s+/g, '-').toLowerCase(); + return _s.trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase(); + }, + + classify: function(str){ + return _s.titleize(String(str).replace(/_/g, ' ')).replace(/\s/g, ''); }, humanize: function(str){ - return _s.capitalize(this.underscored(str).replace(/_id$/,'').replace(/_/g, ' ')); + return _s.capitalize(_s.underscored(str).replace(/_id$/,'').replace(/_/g, ' ')); }, - trim: sArgs(function(str, characters){ - if (!characters && nativeTrim) { - return nativeTrim.call(str); - } + trim: function(str, characters){ + if (str == null) return ''; + if (!characters && nativeTrim) return nativeTrim.call(str); characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('\^[' + characters + ']+|[' + characters + ']+$', 'g'), ''); - }), + return String(str).replace(new RegExp('\^' + characters + '+|' + characters + '+$', 'g'), ''); + }, - ltrim: sArgs(function(str, characters){ + ltrim: function(str, characters){ + if (str == null) return ''; + if (!characters && nativeTrimLeft) return nativeTrimLeft.call(str); characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('\^[' + characters + ']+', 'g'), ''); - }), + return String(str).replace(new RegExp('^' + characters + '+'), ''); + }, - rtrim: sArgs(function(str, characters){ + rtrim: function(str, characters){ + if (str == null) return ''; + if (!characters && nativeTrimRight) return nativeTrimRight.call(str); characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('[' + characters + ']+$', 'g'), ''); - }), + return String(str).replace(new RegExp(characters + '+$'), ''); + }, - truncate: sArgs(function(str, length, truncateStr){ - truncateStr = truncateStr || '...'; - length = parseNumber(length); - return str.length > length ? str.slice(0,length) + truncateStr : str; - }), + truncate: function(str, length, truncateStr){ + if (str == null) return ''; + str = String(str); truncateStr = truncateStr || '...'; + length = ~~length; + return str.length > length ? str.slice(0, length) + truncateStr : str; + }, /** * _s.prune: a more elegant version of truncate * prune extra chars, never leaving a half-chopped word. - * @author github.com/sergiokas + * @author github.com/rwz */ - prune: sArgs(function(str, length, pruneStr){ - pruneStr = pruneStr || '...'; - length = parseNumber(length); - var pruned = ''; + prune: function(str, length, pruneStr){ + if (str == null) return ''; - // Check if we're in the middle of a word - if( str.substring(length-1, length+1).search(/^\w\w$/) === 0 ) - pruned = _s.rtrim(str.slice(0,length).replace(/([\W][\w]*)$/,'')); + str = String(str); length = ~~length; + pruneStr = pruneStr != null ? String(pruneStr) : '...'; + + if (str.length <= length) return str; + + var tmpl = function(c){ return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' '; }, + template = str.slice(0, length+1).replace(/.(?=\W*\w*$)/g, tmpl); // 'Hello, world' -> 'HellAA AAAAA' + + if (template.slice(template.length-2).match(/\w\w/)) + template = template.replace(/\s*\S+$/, ''); else - pruned = _s.rtrim(str.slice(0,length)); + template = _s.rtrim(template.slice(0, template.length-1)); - pruned = pruned.replace(/\W+$/,''); - - return (pruned.length+pruneStr.length>str.length) ? str : pruned + pruneStr; - }), - - words: function(str, delimiter) { - return String(str).split(delimiter || " "); + return (template+pruneStr).length > str.length ? str : str.slice(0, template.length)+pruneStr; }, - pad: sArgs(function(str, length, padStr, type) { - var padding = '', - padlen = 0; + words: function(str, delimiter) { + if (_s.isBlank(str)) return []; + return _s.trim(str, delimiter).split(delimiter || /\s+/); + }, - length = parseNumber(length); + pad: function(str, length, padStr, type) { + str = str == null ? '' : String(str); + length = ~~length; + + var padlen = 0; + + if (!padStr) + padStr = ' '; + else if (padStr.length > 1) + padStr = padStr.charAt(0); - if (!padStr) { padStr = ' '; } - else if (padStr.length > 1) { padStr = padStr.charAt(0); } switch(type) { case 'right': - padlen = (length - str.length); - padding = strRepeat(padStr, padlen); - str = str+padding; - break; + padlen = length - str.length; + return str + strRepeat(padStr, padlen); case 'both': - padlen = (length - str.length); - padding = { - 'left' : strRepeat(padStr, Math.ceil(padlen/2)), - 'right': strRepeat(padStr, Math.floor(padlen/2)) - }; - str = padding.left+str+padding.right; - break; + padlen = length - str.length; + return strRepeat(padStr, Math.ceil(padlen/2)) + str + + strRepeat(padStr, Math.floor(padlen/2)); default: // 'left' - padlen = (length - str.length); - padding = strRepeat(padStr, padlen);; - str = padding+str; + padlen = length - str.length; + return strRepeat(padStr, padlen) + str; } - return str; - }), + }, lpad: function(str, length, padStr) { return _s.pad(str, length, padStr); @@ -396,41 +429,140 @@ }, toNumber: function(str, decimals) { - var num = parseNumber(parseNumber(str).toFixed(parseNumber(decimals))); - return (!(num === 0 && (str !== "0" && str !== 0))) ? num : Number.NaN; + if (str == null || str == '') return 0; + str = String(str); + var num = parseNumber(parseNumber(str).toFixed(~~decimals)); + return num === 0 && !str.match(/^0+$/) ? Number.NaN : num; }, - strRight: sArgs(function(sourceStr, sep){ - var pos = (!sep) ? -1 : sourceStr.indexOf(sep); - return (pos != -1) ? sourceStr.slice(pos+sep.length, sourceStr.length) : sourceStr; - }), + numberFormat : function(number, dec, dsep, tsep) { + if (isNaN(number) || number == null) return ''; - strRightBack: sArgs(function(sourceStr, sep){ - var pos = (!sep) ? -1 : sourceStr.lastIndexOf(sep); - return (pos != -1) ? sourceStr.slice(pos+sep.length, sourceStr.length) : sourceStr; - }), + number = number.toFixed(~~dec); + tsep = tsep || ','; - strLeft: sArgs(function(sourceStr, sep){ - var pos = (!sep) ? -1 : sourceStr.indexOf(sep); - return (pos != -1) ? sourceStr.slice(0, pos) : sourceStr; - }), + var parts = number.split('.'), fnums = parts[0], + decimals = parts[1] ? (dsep || '.') + parts[1] : ''; - strLeftBack: sArgs(function(sourceStr, sep){ - var pos = sourceStr.lastIndexOf(sep); - return (pos != -1) ? sourceStr.slice(0, pos) : sourceStr; - }), + return fnums.replace(/(\d)(?=(?:\d{3})+$)/g, '$1' + tsep) + decimals; + }, + + strRight: function(str, sep){ + if (str == null) return ''; + str = String(str); sep = sep != null ? String(sep) : sep; + var pos = !sep ? -1 : str.indexOf(sep); + return ~pos ? str.slice(pos+sep.length, str.length) : str; + }, + + strRightBack: function(str, sep){ + if (str == null) return ''; + str = String(str); sep = sep != null ? String(sep) : sep; + var pos = !sep ? -1 : str.lastIndexOf(sep); + return ~pos ? str.slice(pos+sep.length, str.length) : str; + }, + + strLeft: function(str, sep){ + if (str == null) return ''; + str = String(str); sep = sep != null ? String(sep) : sep; + var pos = !sep ? -1 : str.indexOf(sep); + return ~pos ? str.slice(0, pos) : str; + }, + + strLeftBack: function(str, sep){ + if (str == null) return ''; + str += ''; sep = sep != null ? ''+sep : sep; + var pos = str.lastIndexOf(sep); + return ~pos ? str.slice(0, pos) : str; + }, + + toSentence: function(array, separator, lastSeparator, serial) { + separator = separator || ', ' + lastSeparator = lastSeparator || ' and ' + var a = array.slice(), lastMember = a.pop(); + + if (array.length > 2 && serial) lastSeparator = _s.rtrim(separator) + lastSeparator; + + return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember; + }, + + toSentenceSerial: function() { + var args = slice.call(arguments); + args[3] = true; + return _s.toSentence.apply(_s, args); + }, + + slugify: function(str) { + if (str == null) return ''; + + var from = "ąàáäâãåæćęèéëêìíïîłńòóöôõøùúüûñçżź", + to = "aaaaaaaaceeeeeiiiilnoooooouuuunczz", + regex = new RegExp(defaultToWhiteSpace(from), 'g'); + + str = String(str).toLowerCase().replace(regex, function(c){ + var index = from.indexOf(c); + return to.charAt(index) || '-'; + }); + + return _s.dasherize(str.replace(/[^\w\s-]/g, '')); + }, + + surround: function(str, wrapper) { + return [wrapper, str, wrapper].join(''); + }, + + quote: function(str) { + return _s.surround(str, '"'); + }, exports: function() { var result = {}; for (var prop in this) { - if (!this.hasOwnProperty(prop) || prop == 'include' || prop == 'contains' || prop == 'reverse') continue; + if (!this.hasOwnProperty(prop) || prop.match(/^(?:include|contains|reverse)$/)) continue; result[prop] = this[prop]; } return result; - } + }, + repeat: function(str, qty, separator){ + if (str == null) return ''; + + qty = ~~qty; + + // using faster implementation if separator is not needed; + if (separator == null) return strRepeat(String(str), qty); + + // this one is about 300x slower in Google Chrome + for (var repeat = []; qty > 0; repeat[--qty] = str) {} + return repeat.join(separator); + }, + + levenshtein: function(str1, str2) { + if (str1 == null && str2 == null) return 0; + if (str1 == null) return String(str2).length; + if (str2 == null) return String(str1).length; + + str1 = String(str1); str2 = String(str2); + + var current = [], prev, value; + + for (var i = 0; i <= str2.length; i++) + for (var j = 0; j <= str1.length; j++) { + if (i && j) + if (str1.charAt(j - 1) === str2.charAt(i - 1)) + value = prev; + else + value = Math.min(current[j], current[j - 1], prev) + 1; + else + value = i + j; + + prev = current[j]; + current[j] = value; + } + + return current.pop(); + } }; // Aliases @@ -439,9 +571,10 @@ _s.lstrip = _s.ltrim; _s.rstrip = _s.rtrim; _s.center = _s.lrpad; - _s.ljust = _s.lpad; - _s.rjust = _s.rpad; + _s.rjust = _s.lpad; + _s.ljust = _s.rpad; _s.contains = _s.include; + _s.q = _s.quote; // CommonJS module is defined if (typeof exports !== 'undefined') { @@ -451,18 +584,17 @@ } exports._s = _s; - // Integrate with Underscore.js - } else if (typeof root._ !== 'undefined') { - // root._.mixin(_s); - root._.string = _s; - root._.str = root._.string; + } else if (typeof define === 'function' && define.amd) { + // Register as a named module with AMD. + define('underscore.string', [], function() { + return _s; + }); - // Or define it } else { - root._ = { - string: _s, - str: _s - }; + // Integrate with Underscore.js if defined + // or create our own underscore object. + root._ = root._ || {}; + root._.string = root._.str = _s; } -}(this || window)); +}(this, String); \ No newline at end of file diff --git a/addons/web/static/lib/underscore/underscore.string.min.js b/addons/web/static/lib/underscore/underscore.string.min.js index dfc1b46b082..5248a6ecd21 100644 --- a/addons/web/static/lib/underscore/underscore.string.min.js +++ b/addons/web/static/lib/underscore/underscore.string.min.js @@ -1,14 +1 @@ -(function(k){var o=String.prototype.trim,l=function(a,b){for(var c=[];b>0;c[--b]=a);return c.join("")},d=function(a){return function(){for(var b=Array.prototype.slice.call(arguments),c=0;c=0?"+"+f:f;i=g[4]?g[4]=="0"?"0":g[4].charAt(1):" ";k=g[6]-String(f).length;i=g[6]?l(i,k):"";j.push(g[5]?f+i:i+f)}return j.join("")};b.cache= -{};b.parse=function(a){for(var b=[],e=[],d=0;a;){if((b=/^[^\x25]+/.exec(a))!==null)e.push(b[0]);else if((b=/^\x25{2}/.exec(a))!==null)e.push("%");else if((b=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(a))!==null){if(b[2]){d|=1;var f=[],j=b[2],h=[];if((h=/^([a-z_][a-z_\d]*)/i.exec(j))!==null)for(f.push(h[1]);(j=j.substring(h[0].length))!=="";)if((h=/^\.([a-z_][a-z_\d]*)/i.exec(j))!==null)f.push(h[1]);else if((h=/^\[(\d+)\]/.exec(j))!==null)f.push(h[1]); -else throw"[_.sprintf] huh?";else throw"[_.sprintf] huh?";b[2]=f}else d|=2;if(d===3)throw"[_.sprintf] mixing positional and named placeholders is not (yet) supported";e.push(b)}else throw"[_.sprintf] huh?";a=a.substring(b[0].length)}return e};return b}(),e={VERSION:"1.2.0",isBlank:d(function(a){return/^\s*$/.test(a)}),stripTags:d(function(a){return a.replace(/<\/?[^>]+>/ig,"")}),capitalize:d(function(a){return a.charAt(0).toUpperCase()+a.substring(1).toLowerCase()}),chop:d(function(a,b){for(var b= -b*1||0||a.length,c=[],e=0;e=0&&c++,d=d+(e>=0?e:0)+b.length;return c}),chars:d(function(a){return a.split("")}),escapeHTML:d(function(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}),unescapeHTML:d(function(a){return a.replace(/</g,"<").replace(/>/g, -">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}),escapeRegExp:d(function(a){return a.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")}),insert:d(function(a,b,c){a=a.split("");a.splice(b*1||0,0,c);return a.join("")}),include:d(function(a,b){return a.indexOf(b)!==-1}),join:d(function(a){var b=Array.prototype.slice.call(arguments);return b.join(b.shift())}),lines:d(function(a){return a.split("\n")}),reverse:d(function(a){return Array.prototype.reverse.apply(String(a).split("")).join("")}), -splice:d(function(a,b,c,e){a=a.split("");a.splice(b*1||0,c*1||0,e);return a.join("")}),startsWith:d(function(a,b){return a.length>=b.length&&a.substring(0,b.length)===b}),endsWith:d(function(a,b){return a.length>=b.length&&a.substring(a.length-b.length)===b}),succ:d(function(a){var b=a.split("");b.splice(a.length-1,1,String.fromCharCode(a.charCodeAt(a.length-1)+1));return b.join("")}),titleize:d(function(a){for(var a=a.split(" "),b,c=0;cb?a.slice(0,b)+(c||"..."):a}),prune:d(function(a,b,c){var c=c||"...",b=b*1||0,d="",d=a.substring(b- -1,b+1).search(/^\w\w$/)===0?e.rtrim(a.slice(0,b).replace(/([\W][\w]*)$/,"")):e.rtrim(a.slice(0,b)),d=d.replace(/\W+$/,"");return d.length+c.length>a.length?a:d+c}),words:function(a,b){return String(a).split(b||" ")},pad:d(function(a,b,c,e){var d="",d=0,b=b*1||0;c?c.length>1&&(c=c.charAt(0)):c=" ";switch(e){case "right":d=b-a.length;d=l(c,d);a+=d;break;case "both":d=b-a.length;d={left:l(c,Math.ceil(d/2)),right:l(c,Math.floor(d/2))};a=d.left+a+d.right;break;default:d=b-a.length,d=l(c,d),a=d+a}return a}), -lpad:function(a,b,c){return e.pad(a,b,c)},rpad:function(a,b,c){return e.pad(a,b,c,"right")},lrpad:function(a,b,c){return e.pad(a,b,c,"both")},sprintf:m,vsprintf:function(a,b){b.unshift(a);return m.apply(null,b)},toNumber:function(a,b){var c;c=(a*1||0).toFixed(b*1||0)*1||0;return!(c===0&&a!=="0"&&a!==0)?c:Number.NaN},strRight:d(function(a,b){var c=!b?-1:a.indexOf(b);return c!=-1?a.slice(c+b.length,a.length):a}),strRightBack:d(function(a,b){var c=!b?-1:a.lastIndexOf(b);return c!=-1?a.slice(c+b.length, -a.length):a}),strLeft:d(function(a,b){var c=!b?-1:a.indexOf(b);return c!=-1?a.slice(0,c):a}),strLeftBack:d(function(a,b){var c=a.lastIndexOf(b);return c!=-1?a.slice(0,c):a}),exports:function(){var a={},b;for(b in this)if(this.hasOwnProperty(b)&&!(b=="include"||b=="contains"||b=="reverse"))a[b]=this[b];return a}};e.strip=e.trim;e.lstrip=e.ltrim;e.rstrip=e.rtrim;e.center=e.lrpad;e.ljust=e.lpad;e.rjust=e.rpad;e.contains=e.include;if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)module.exports= -e;exports._s=e}else typeof k._!=="undefined"?(k._.string=e,k._.str=k._.string):k._={string:e,str:e}})(this||window); +!function(e,t){"use strict";var n=t.prototype.trim,r=t.prototype.trimRight,i=t.prototype.trimLeft,s=function(e){return e*1||0},o=function(e,t){if(t<1)return"";var n="";while(t>0)t&1&&(n+=e),t>>=1,e+=e;return n},u=[].slice,a=function(e){return e==null?"\\s":e.source?e.source:"["+p.escapeRegExp(e)+"]"},f={lt:"<",gt:">",quot:'"',apos:"'",amp:"&"},l={};for(var c in f)l[f[c]]=c;var h=function(){function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}var n=o,r=function(){return r.cache.hasOwnProperty(arguments[0])||(r.cache[arguments[0]]=r.parse(arguments[0])),r.format.call(null,r.cache[arguments[0]],arguments)};return r.format=function(r,i){var s=1,o=r.length,u="",a,f=[],l,c,p,d,v,m;for(l=0;l=0?"+"+a:a,v=p[4]?p[4]=="0"?"0":p[4].charAt(1):" ",m=p[6]-t(a).length,d=p[6]?n(v,m):"",f.push(p[5]?a+d:d+a)}}return f.join("")},r.cache={},r.parse=function(e){var t=e,n=[],r=[],i=0;while(t){if((n=/^[^\x25]+/.exec(t))!==null)r.push(n[0]);else if((n=/^\x25{2}/.exec(t))!==null)r.push("%");else{if((n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t))===null)throw new Error("[_.sprintf] huh?");if(n[2]){i|=1;var s=[],o=n[2],u=[];if((u=/^([a-z_][a-z_\d]*)/i.exec(o))===null)throw new Error("[_.sprintf] huh?");s.push(u[1]);while((o=o.substring(u[0].length))!=="")if((u=/^\.([a-z_][a-z_\d]*)/i.exec(o))!==null)s.push(u[1]);else{if((u=/^\[(\d+)\]/.exec(o))===null)throw new Error("[_.sprintf] huh?");s.push(u[1])}n[2]=s}else i|=2;if(i===3)throw new Error("[_.sprintf] mixing positional and named placeholders is not (yet) supported");r.push(n)}t=t.substring(n[0].length)}return r},r}(),p={VERSION:"2.3.0",isBlank:function(e){return e==null&&(e=""),/^\s*$/.test(e)},stripTags:function(e){return e==null?"":t(e).replace(/<\/?[^>]+>/g,"")},capitalize:function(e){return e=e==null?"":t(e),e.charAt(0).toUpperCase()+e.slice(1)},chop:function(e,n){return e==null?[]:(e=t(e),n=~~n,n>0?e.match(new RegExp(".{1,"+n+"}","g")):[e])},clean:function(e){return p.strip(e).replace(/\s+/g," ")},count:function(e,n){return e==null||n==null?0:t(e).split(n).length-1},chars:function(e){return e==null?[]:t(e).split("")},swapCase:function(e){return e==null?"":t(e).replace(/\S/g,function(e){return e===e.toUpperCase()?e.toLowerCase():e.toUpperCase()})},escapeHTML:function(e){return e==null?"":t(e).replace(/[&<>"']/g,function(e){return"&"+l[e]+";"})},unescapeHTML:function(e){return e==null?"":t(e).replace(/\&([^;]+);/g,function(e,n){var r;return n in f?f[n]:(r=n.match(/^#x([\da-fA-F]+)$/))?t.fromCharCode(parseInt(r[1],16)):(r=n.match(/^#(\d+)$/))?t.fromCharCode(~~r[1]):e})},escapeRegExp:function(e){return e==null?"":t(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},splice:function(e,t,n,r){var i=p.chars(e);return i.splice(~~t,~~n,r),i.join("")},insert:function(e,t,n){return p.splice(e,t,0,n)},include:function(e,n){return n===""?!0:e==null?!1:t(e).indexOf(n)!==-1},join:function(){var e=u.call(arguments),t=e.shift();return t==null&&(t=""),e.join(t)},lines:function(e){return e==null?[]:t(e).split("\n")},reverse:function(e){return p.chars(e).reverse().join("")},startsWith:function(e,n){return n===""?!0:e==null||n==null?!1:(e=t(e),n=t(n),e.length>=n.length&&e.slice(0,n.length)===n)},endsWith:function(e,n){return n===""?!0:e==null||n==null?!1:(e=t(e),n=t(n),e.length>=n.length&&e.slice(e.length-n.length)===n)},succ:function(e){return e==null?"":(e=t(e),e.slice(0,-1)+t.fromCharCode(e.charCodeAt(e.length-1)+1))},titleize:function(e){return e==null?"":t(e).replace(/(?:^|\s)\S/g,function(e){return e.toUpperCase()})},camelize:function(e){return p.trim(e).replace(/[-_\s]+(.)?/g,function(e,t){return t.toUpperCase()})},underscored:function(e){return p.trim(e).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()},dasherize:function(e){return p.trim(e).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()},classify:function(e){return p.titleize(t(e).replace(/_/g," ")).replace(/\s/g,"")},humanize:function(e){return p.capitalize(p.underscored(e).replace(/_id$/,"").replace(/_/g," "))},trim:function(e,r){return e==null?"":!r&&n?n.call(e):(r=a(r),t(e).replace(new RegExp("^"+r+"+|"+r+"+$","g"),""))},ltrim:function(e,n){return e==null?"":!n&&i?i.call(e):(n=a(n),t(e).replace(new RegExp("^"+n+"+"),""))},rtrim:function(e,n){return e==null?"":!n&&r?r.call(e):(n=a(n),t(e).replace(new RegExp(n+"+$"),""))},truncate:function(e,n,r){return e==null?"":(e=t(e),r=r||"...",n=~~n,e.length>n?e.slice(0,n)+r:e)},prune:function(e,n,r){if(e==null)return"";e=t(e),n=~~n,r=r!=null?t(r):"...";if(e.length<=n)return e;var i=function(e){return e.toUpperCase()!==e.toLowerCase()?"A":" "},s=e.slice(0,n+1).replace(/.(?=\W*\w*$)/g,i);return s.slice(s.length-2).match(/\w\w/)?s=s.replace(/\s*\S+$/,""):s=p.rtrim(s.slice(0,s.length-1)),(s+r).length>e.length?e:e.slice(0,s.length)+r},words:function(e,t){return p.isBlank(e)?[]:p.trim(e,t).split(t||/\s+/)},pad:function(e,n,r,i){e=e==null?"":t(e),n=~~n;var s=0;r?r.length>1&&(r=r.charAt(0)):r=" ";switch(i){case"right":return s=n-e.length,e+o(r,s);case"both":return s=n-e.length,o(r,Math.ceil(s/2))+e+o(r,Math.floor(s/2));default:return s=n-e.length,o(r,s)+e}},lpad:function(e,t,n){return p.pad(e,t,n)},rpad:function(e,t,n){return p.pad(e,t,n,"right")},lrpad:function(e,t,n){return p.pad(e,t,n,"both")},sprintf:h,vsprintf:function(e,t){return t.unshift(e),h.apply(null,t)},toNumber:function(e,n){if(e==null||e=="")return 0;e=t(e);var r=s(s(e).toFixed(~~n));return r===0&&!e.match(/^0+$/)?Number.NaN:r},numberFormat:function(e,t,n,r){if(isNaN(e)||e==null)return"";e=e.toFixed(~~t),r=r||",";var i=e.split("."),s=i[0],o=i[1]?(n||".")+i[1]:"";return s.replace(/(\d)(?=(?:\d{3})+$)/g,"$1"+r)+o},strRight:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.indexOf(n):-1;return~r?e.slice(r+n.length,e.length):e},strRightBack:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.lastIndexOf(n):-1;return~r?e.slice(r+n.length,e.length):e},strLeft:function(e,n){if(e==null)return"";e=t(e),n=n!=null?t(n):n;var r=n?e.indexOf(n):-1;return~r?e.slice(0,r):e},strLeftBack:function(e,t){if(e==null)return"";e+="",t=t!=null?""+t:t;var n=e.lastIndexOf(t);return~n?e.slice(0,n):e},toSentence:function(e,t,n,r){t=t||", ",n=n||" and ";var i=e.slice(),s=i.pop();return e.length>2&&r&&(n=p.rtrim(t)+n),i.length?i.join(t)+n+s:s},toSentenceSerial:function(){var e=u.call(arguments);return e[3]=!0,p.toSentence.apply(p,e)},slugify:function(e){if(e==null)return"";var n="ąàáäâãåæćęèéëêìíïîłńòóöôõøùúüûñçżź",r="aaaaaaaaceeeeeiiiilnoooooouuuunczz",i=new RegExp(a(n),"g");return e=t(e).toLowerCase().replace(i,function(e){var t=n.indexOf(e);return r.charAt(t)||"-"}),p.dasherize(e.replace(/[^\w\s-]/g,""))},surround:function(e,t){return[t,e,t].join("")},quote:function(e){return p.surround(e,'"')},exports:function(){var e={};for(var t in this){if(!this.hasOwnProperty(t)||t.match(/^(?:include|contains|reverse)$/))continue;e[t]=this[t]}return e},repeat:function(e,n,r){if(e==null)return"";n=~~n;if(r==null)return o(t(e),n);for(var i=[];n>0;i[--n]=e);return i.join(r)},levenshtein:function(e,n){if(e==null&&n==null)return 0;if(e==null)return t(n).length;if(n==null)return t(e).length;e=t(e),n=t(n);var r=[],i,s;for(var o=0;o<=n.length;o++)for(var u=0;u<=e.length;u++)o&&u?e.charAt(u-1)===n.charAt(o-1)?s=i:s=Math.min(r[u],r[u-1],i)+1:s=o+u,i=r[u],r[u]=s;return r.pop()}};p.strip=p.trim,p.lstrip=p.ltrim,p.rstrip=p.rtrim,p.center=p.lrpad,p.rjust=p.lpad,p.ljust=p.rpad,p.contains=p.include,p.q=p.quote,typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(module.exports=p),exports._s=p):typeof define=="function"&&define.amd?define("underscore.string",[],function(){return p}):(e._=e._||{},e._.string=e._.str=p)}(this,String); \ No newline at end of file diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 0c77ca037c7..7c2bc81b9e3 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -79,6 +79,20 @@ .openerp td { vertical-align: top; } +.openerp .oe_title { + width: 50%; + float: left; +} +.openerp .oe_title:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.openerp .oe_form_group { + clear: both; +} .openerp .zebra tbody tr:nth-child(odd) td { background-color: #f0f0fa; background-color: #efeff8; @@ -220,6 +234,9 @@ padding: 16px; } .openerp.ui-dialog .ui-dialog-titlebar { + border-top: none; + border-left: none; + border-right: none; border-bottom: 1px solid #cacaca; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0; @@ -236,9 +253,6 @@ margin: 0; padding: 0; } -.openerp.ui-dialog .ui-widget-header { - border: none; -} .openerp.ui-dialog .ui-dialog-content { background: white; } @@ -437,17 +451,6 @@ .openerp .oe_form_dirty button.oe_highlight_on_dirty:hover { background: #ed6f6a; } -.openerp .oe_title { - width: 50%; - float: left; -} -.openerp .oe_title:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} .openerp .oe_button_box { width: 270px; text-align: right; @@ -623,10 +626,6 @@ display: block; color: gray; } -.openerp .ui-tabs .oe_notebook.ui-tabs-nav li.ui-tabs-active { - border-bottom: none; - padding-bottom: 1px; -} .openerp .oe_notebook > li.ui-tabs-active > a { color: #4c4c4c; } @@ -652,6 +651,10 @@ background-color: #eeeeee; border-color: #eeeeee #eeeeee #dddddd; } +.openerp .ui-tabs .oe_notebook.ui-tabs-nav li.ui-tabs-active { + border-bottom: none; + padding-bottom: 1px; +} .openerp .oe_notebook > li.ui-state-active > a, .openerp .oe_notebook > li.ui-state-active > a:hover { background-color: white; border: 1px solid #dddddd; @@ -1026,7 +1029,7 @@ background-image: -moz-linear-gradient(top, #fc8787, maroon); background-image: -ms-linear-gradient(top, #fc8787, maroon); background-image: -o-linear-gradient(top, #fc8787, maroon); - background-image: linear-gradient(to bottom, #fc8787, maroon); + background-image: linear-gradient(to bottom, #fc8787, #800000); } .openerp .oe_topbar .oe_topbar_anonymous_login a { display: block; @@ -1272,7 +1275,7 @@ color: white; padding: 2px 4px; margin: 1px 6px 0 0; - border: 1px solid lightgrey; + border: 1px solid lightGray; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -1304,7 +1307,7 @@ transform: scale(1.1); } .openerp .oe_secondary_submenu .oe_active { - border-top: 1px solid lightgrey; + border-top: 1px solid lightGray; border-bottom: 1px solid #dedede; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2), inset 0 -1px 3px rgba(40, 40, 40, 0.2); @@ -1770,7 +1773,6 @@ border-radius: 0 3px 3px 0; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { - height: 18px; padding: 0 4px; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category { @@ -2161,6 +2163,7 @@ } .openerp .oe_form header { position: relative; + overflow: hidden; border-bottom: 1px solid #cacaca; padding-left: 2px; background-color: #ededed; @@ -2180,7 +2183,6 @@ } .openerp .oe_form header .oe_button { margin: 3px 2px 1px; - float: left; } .openerp .oe_form header .oe_button:first-child { margin-left: 6px; @@ -2287,7 +2289,7 @@ } .openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span { font-size: 80%; - color: darkgreen; + color: darkGreen; vertical-align: top; position: relative; top: -4px; @@ -2851,6 +2853,9 @@ .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime input.oe_datepicker_master, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date input.oe_datepicker_master { width: 100% !important; } +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_reference { + display: table; +} .openerp .oe_list_group_name { white-space: nowrap; } @@ -3125,6 +3130,7 @@ } .openerp .oe_debug_view_log { font-size: 95%; + line-height: 1.2em; } .openerp .oe_debug_view_log label { display: block; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 4ddd2ca8704..1c02018da9d 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -190,6 +190,17 @@ $sheet-padding: 16px vertical-align: middle td vertical-align: top + .oe_title + width: 50% + float: left + .oe_title:after + content: "." + display: block + height: 0 + clear: both + visibility: hidden + .oe_form_group + clear: both .zebra tbody tr:nth-child(odd) td background-color: #f0f0fa @include vertical-gradient(#f0f0fa, #eeeef6) @@ -277,14 +288,15 @@ $sheet-padding: 16px .ui-dialog-titlebar, .ui-dialog-content, .ui-dialog-buttonpane padding: 16px .ui-dialog-titlebar + border-top: none + border-left: none + border-right: none border-bottom: 1px solid #cacaca @include radius(2px 2px 0 0) @include vertical-gradient(#FCFCFC, #DEDEDE) .ui-dialog-title margin: 0 padding: 0 - .ui-widget-header - border: none .ui-dialog-content background: white .ui-dialog-buttonpane @@ -412,15 +424,6 @@ $sheet-padding: 16px @include box-shadow(none) &:hover background: #ED6F6A - .oe_title - width: 50% - float: left - .oe_title:after - content: "." - display: block - height: 0 - clear: both - visibility: hidden .oe_button_box width: 270px text-align: right @@ -1405,7 +1408,6 @@ $sheet-padding: 16px background: $tag-bg-light @include radius(0 3px 3px 0) .oe_facet_category, .oe_facet_value - height: 18px padding: 0 4px .oe_facet_category color: white @@ -1709,6 +1711,7 @@ $sheet-padding: 16px // FormView.header {{{ .oe_form header position: relative + overflow: hidden border-bottom: 1px solid #cacaca padding-left: 2px @include vertical-gradient(#fcfcfc, #dedede) @@ -1719,7 +1722,6 @@ $sheet-padding: 16px float: right .oe_button margin: 3px 2px 1px - float: left &:first-child margin-left: 6px // }}} @@ -2244,6 +2246,8 @@ $sheet-padding: 16px &.oe_form_field_datetime,&.oe_form_field_date input.oe_datepicker_master width: 100% !important + &.oe_form_field_reference + display: table .oe_list_group_name white-space: nowrap // }}} @@ -2457,6 +2461,7 @@ $sheet-padding: 16px float: left .oe_debug_view_log font-size: 95% + line-height: 1.2em .oe_debug_view_log label display: block width: 49% diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index c9128683f83..8fb13aae746 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -819,7 +819,7 @@ instance.web.client_actions.add("history_back", "instance.web.HistoryBack"); */ instance.web.Home = function(parent, action) { var url = '/' + (window.location.search || ''); - instance.web.redirect(url, action.params && action.params.wait); + instance.web.redirect(url, action && action.params && action.params.wait); }; instance.web.client_actions.add("home", "instance.web.Home"); @@ -1409,10 +1409,16 @@ instance.web.WebClient = instance.web.Client.extend({ var state = $.bbq.getState(true); if (_.isEmpty(state) || state.action == "login") { self.menu.has_been_loaded.done(function() { - var first_menu_id = self.menu.$el.find("a:first").data("menu"); - if(first_menu_id) { - self.menu.menu_click(first_menu_id); - } + new instance.web.Model("res.users").call("read", [self.session.uid, ["action_id"]]).done(function(data) { + if(data.action_id) { + self.action_manager.do_action(data.action_id[0]); + self.menu.open_action(data.action_id[0]); + } else { + var first_menu_id = self.menu.$el.find("a:first").data("menu"); + if(first_menu_id) + self.menu.menu_click(first_menu_id); + } + }); }); } else { $(window).trigger('hashchange'); diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index 7d37dc2261d..1d6acf164d0 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -125,7 +125,12 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess for(var i=0; i'); - } this._super(); }, set_value: function(value_) { diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index ad48a8af1ef..6de354bfcb8 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -403,6 +403,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi if (total) { var range_start = this.page * limit + 1; var range_stop = range_start - 1 + limit; + if (this.records.length) { + range_stop = range_start - 1 + this.records.length; + } if (range_stop > total) { range_stop = total; } @@ -597,7 +600,17 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi _(ids).each(function (id) { self.records.remove(self.records.get(id)); }); - self.configure_pager(self.dataset); + if (self.records.length === 0 && self.dataset.size() > 0) { + //Trigger previous manually to navigate to previous page, + //If all records are deleted on current page. + self.$pager.find('ul li:first a').trigger('click'); + } else if (self.dataset.size() == self.limit()) { + //Reload listview to update current page with next page records + //because pager going to be hidden if dataset.size == limit + self.reload(); + } else { + self.configure_pager(self.dataset); + } self.compute_aggregates(); }); }, @@ -1022,7 +1035,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. id = parseInt(ref_match[2], 10); new instance.web.DataSet(this.view, model).name_get([id]).done(function(names) { if (!names.length) { return; } - record.set(column.id, names[0][1]); + record.set(column.id + '__display', names[0][1]); }); } } else if (column.type === 'many2one') { @@ -1623,9 +1636,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we function synchronized(fn) { var fn_mutex = new $.Mutex(); return function () { + var obj = this; var args = _.toArray(arguments); - args.unshift(this); - return fn_mutex.exec(fn.bind.apply(fn, args)); + return fn_mutex.exec(function () { + if (obj.isDestroyed()) { return $.when(); } + return fn.apply(obj, args) + }); }; } var DataGroup = instance.web.Class.extend({ @@ -2095,6 +2111,7 @@ instance.web.list.columns = new instance.web.Registry({ 'field.handle': 'instance.web.list.Handle', 'button': 'instance.web.list.Button', 'field.many2onebutton': 'instance.web.list.Many2OneButton', + 'field.reference': 'instance.web.list.Reference', 'field.many2many': 'instance.web.list.Many2Many' }); instance.web.list.columns.for_ = function (id, field, node) { @@ -2307,5 +2324,18 @@ instance.web.list.Many2Many = instance.web.list.Column.extend({ return this._super(row_data, options); } }); +instance.web.list.Reference = instance.web.list.Column.extend({ + _format: function (row_data, options) { + if (!_.isEmpty(row_data[this.id].value)) { + // If value, use __display version for printing + if (!!row_data[this.id + '__display']) { + row_data[this.id] = row_data[this.id + '__display']; + } else { + row_data[this.id] = {'value': ''}; + } + } + return this._super(row_data, options); + } +}); }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 53ea069cee6..c4aac5565ab 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -123,10 +123,19 @@ openerp.web.list_editable = function (instance) { * as an editable row at the top or bottom of the list) */ do_add_record: function () { + var self = this; if (this.editable()) { this.$el.find('table:first').show(); this.$el.find('.oe_view_nocontent').remove(); - this.start_edition(); + this.start_edition().then(function(){ + var fields = self.editor.form.fields; + self.editor.form.fields_order.some(function(field){ + if (fields[field].$el.is(':visible')){ + fields[field].$el.find("input").select(); + return true; + } + }); + }); } else { this._super(); } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 3e6bb080450..24c3d6097bb 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -1217,7 +1217,7 @@ instance.web.Sidebar = instance.web.Widget.extend({ this.dataset = dataset; this.model_id = model_id; if (args && args[0].error) { - this.do_warn( instance.web.qweb.render('message_error_uploading'), args[0].error); + this.do_warn(_t('Uploading Error'), args[0].error); } if (!model_id) { this.on_attachments_loaded([]); @@ -1301,7 +1301,7 @@ instance.web.View = instance.web.Widget.extend({ "context": this.dataset.get_context(), }); } - return view_loaded_def.then(function(r) { + return this.alive(view_loaded_def).then(function(r) { self.fields_view = r; // add css classes that reflect the (absence of) access rights self.$el.addClass('oe_view') diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 2b8d6fe5efa..10840087acc 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1240,7 +1240,7 @@ - width: 83px; + overflow-x: hidden