We're sorry. An error occurred while handling your request. Please find " "more information below:
" msgstr "" -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:1673 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:3192 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:1675 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:3194 #: modules/websubmit/lib/websubmit_templates.py:340 msgid "Notice" msgstr "" -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:1914 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2228 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2234 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2710 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2924 -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2959 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:1916 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2230 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2236 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2712 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2926 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2961 msgid "This page is not accessible directly." msgstr "" -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2308 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2310 msgid " " msgstr "" -#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2948 +#: modules/bibauthorid/lib/bibauthorid_webinterface.py:2950 msgid "Profile management" msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:35 msgid "Error: No BibCatalog system configured." msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:39 #: modules/bibedit/lib/bibedit_webinterface.py:215 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:496 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:559 #: modules/bibknowledge/lib/bibknowledgeadmin.py:278 #: modules/webalert/lib/webalert_webinterface.py:145 #: modules/webalert/lib/webalert_webinterface.py:230 #: modules/webalert/lib/webalert_webinterface.py:364 #: modules/webalert/lib/webalert_webinterface.py:441 #: modules/webalert/lib/webalert_webinterface.py:515 #: modules/webstyle/lib/webpage.py:239 #: modules/webstyle/lib/webstyle_templates.py:659 #: modules/webstyle/lib/webstyle_templates.py:696 #: modules/webstyle/lib/webstyle_templates.py:698 msgid "Error" msgstr "خطا" #: modules/bibcatalog/lib/bibcatalog_templates.py:45 #, python-format msgid "You have %i tickets." msgstr "" #: modules/bibcatalog/lib/bibcatalog_templates.py:52 #: modules/bibknowledge/lib/bibknowledge_templates.py:167 #: modules/webcomment/lib/webcomment_templates.py:901 #: modules/webcomment/lib/webcomment_templates.py:2586 #: modules/websearch/lib/websearch_templates.py:2059 msgid "Previous" msgstr "قبلی" #: modules/bibcatalog/lib/bibcatalog_templates.py:64 msgid "show" msgstr "نمایش" #: modules/bibcatalog/lib/bibcatalog_templates.py:65 msgid "close" msgstr "بستن" #: modules/bibcatalog/lib/bibcatalog_templates.py:74 #: modules/bibknowledge/lib/bibknowledge_templates.py:165 #: modules/webcomment/lib/webcomment_templates.py:917 #: modules/webcomment/lib/webcomment_templates.py:2610 msgid "Next" msgstr "بعدی" #: modules/bibcirculation/lib/bibcirculation.py:100 #: modules/bibcirculation/lib/bibcirculation.py:127 msgid "Another user is waiting for this book." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:108 #, fuzzy msgid "Your loan has been renewed with success." msgstr "حساب شما به طور موفقیت آمیزی ایجاد شد." #: modules/bibcirculation/lib/bibcirculation.py:136 msgid "All loans have been renewed with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:191 #, python-format msgid "The publication date of this book is %s." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:194 #: modules/bibcirculation/lib/bibcirculation.py:196 msgid "This book has no copies in the library. " msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:198 msgid "" "If you think this book is interesting, suggest it and tell us why you " "consider this book is important. The library will consider " "your opinion and if we decide to buy the book, we will " "issue a loan for you as soon as it arrives and send it by internal mail." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:202 msgid "" "In case we decide not to buy the book, we will offer you an interlibrary loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:268 msgid "This book was suggested for acquisition" msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:278 msgid "This item already has copies." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:552 #: modules/bibcirculation/lib/bibcirculation.py:681 msgid "You didn't accept the ILL conditions." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:666 #: modules/bibcirculation/lib/bibcirculation.py:710 #: modules/bibcirculation/lib/bibcirculation.py:778 msgid "" "Your ILL request has been registered and the document will be sent to you " "via internal mail." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:672 #: modules/bibcirculation/lib/bibcirculation.py:717 msgid "ILL request for books confirmation" msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:723 #: modules/bibcirculation/lib/bibcirculation.py:791 msgid "It is not possible to validate your request." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:724 #: modules/bibcirculation/lib/bibcirculation.py:792 msgid "Your office address is not available." msgstr "" #: modules/bibcirculation/lib/bibcirculation.py:725 #: modules/bibcirculation/lib/bibcirculation.py:793 #, python-format msgid "Please contact %(contact_email)s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:113 msgid "Main navigation links" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:114 #: modules/webstyle/lib/webstyle_templates.py:92 #: modules/webstyle/lib/webstyle_templates.py:101 msgid "Home" msgstr "خانه" #: modules/bibcirculation/lib/bibcirculation_templates.py:114 msgid "Loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:114 #: modules/bibcirculation/lib/bibcirculation_templates.py:5887 #: modules/bibcirculation/lib/bibcirculation_templates.py:8362 msgid "Return" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:115 #: modules/bibcirculation/lib/bibcirculation_templates.py:404 #: modules/bibcirculation/lib/bibcirculation_templates.py:3143 msgid "Request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:115 msgid "Borrowers" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:116 #: modules/webbasket/lib/webbasket_templates.py:1199 msgid "Items" msgstr "آیتم ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:148 #, fuzzy msgid "Loan Lists" msgstr "سیاهه ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:149 msgid "Last loans" msgstr "آخرین امانت ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:150 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2027 msgid "Overdue loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:151 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2076 msgid "Items on shelf with holds" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:152 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2125 msgid "Items on loan with holds" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:153 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2159 msgid "Overdue loans with holds" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:154 msgid "Others" msgstr "دیگران" #: modules/bibcirculation/lib/bibcirculation_templates.py:154 #: modules/bibcirculation/lib/bibcirculation_templates.py:14654 #: modules/bibcirculation/lib/bibcirculation_templates.py:15001 msgid "Libraries" msgstr "کتابخانه ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:155 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5565 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5594 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5622 msgid "Add new library" msgstr "افزودن کتابخانه جدید" #: modules/bibcirculation/lib/bibcirculation_templates.py:156 msgid "Update info" msgstr "بروز رسانی اطلاعات" #: modules/bibcirculation/lib/bibcirculation_templates.py:156 msgid "Vendors" msgstr "فروشندگان" #: modules/bibcirculation/lib/bibcirculation_templates.py:157 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5970 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5998 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6025 msgid "Add new vendor" msgstr "افزودن فروشنده جدید" #: modules/bibcirculation/lib/bibcirculation_templates.py:195 #: modules/bibcirculation/lib/bibcirculation_templates.py:8121 #: modules/bibcirculation/lib/bibcirculation_templates.py:8130 msgid "ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:196 msgid "Register Book request" msgstr "ثبت درخواست کتاب" #: modules/bibcirculation/lib/bibcirculation_templates.py:197 msgid "Register Article" msgstr "ثبت مقاله" #: modules/bibcirculation/lib/bibcirculation_templates.py:198 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:806 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4631 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4733 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4828 msgid "Register purchase request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:200 #, fuzzy msgid "ILL Lists" msgstr "سیاهه ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:201 msgid "Purchase" msgstr "خرید" #: modules/bibcirculation/lib/bibcirculation_templates.py:202 msgid "Proposal" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:211 #: modules/webstyle/lib/webstyle_templates.py:495 #: modules/webstyle/lib/webstyle_templates.py:581 msgid "Help" msgstr "راهنما" #: modules/bibcirculation/lib/bibcirculation_templates.py:212 msgid "Admin guide" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:213 msgid "Contact Support" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:269 msgid "No messages to be displayed" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:301 msgid "This record does not exist." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:305 msgid "This record has no copies." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:312 msgid "Add a new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:325 msgid "ILL services" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:329 #, python-format msgid "" "All the copies of %(strong_tag_open)s%(title)s%(strong_tag_close)s are " "missing. You can request a copy using %(strong_tag_open)s%(ill_link)s" "%(strong_tag_close)s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:336 #: modules/bibcirculation/lib/bibcirculation_templates.py:3096 msgid "This item has no holdings." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:389 #: modules/bibcirculation/lib/bibcirculation_templates.py:1359 #: modules/bibcirculation/lib/bibcirculation_templates.py:13666 #: modules/bibcirculation/lib/bibcirculation_templates.py:13785 #: modules/bibcirculation/lib/bibcirculation_templates.py:13899 msgid "Options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:389 #: modules/bibcirculation/lib/bibcirculation_templates.py:1164 #: modules/bibcirculation/lib/bibcirculation_templates.py:1354 #: modules/bibcirculation/lib/bibcirculation_templates.py:2498 #: modules/bibcirculation/lib/bibcirculation_templates.py:3117 #: modules/bibcirculation/lib/bibcirculation_templates.py:5040 #: modules/bibcirculation/lib/bibcirculation_templates.py:5351 #: modules/bibcirculation/lib/bibcirculation_templates.py:5715 #: modules/bibcirculation/lib/bibcirculation_templates.py:5980 #: modules/bibcirculation/lib/bibcirculation_templates.py:6071 #: modules/bibcirculation/lib/bibcirculation_templates.py:6340 #: modules/bibcirculation/lib/bibcirculation_templates.py:6504 #: modules/bibcirculation/lib/bibcirculation_templates.py:6712 #: modules/bibcirculation/lib/bibcirculation_templates.py:6992 #: modules/bibcirculation/lib/bibcirculation_templates.py:7110 #: modules/bibcirculation/lib/bibcirculation_templates.py:7349 #: modules/bibcirculation/lib/bibcirculation_templates.py:7564 #: modules/bibcirculation/lib/bibcirculation_templates.py:7668 #: modules/bibcirculation/lib/bibcirculation_templates.py:8188 #: modules/bibcirculation/lib/bibcirculation_templates.py:8462 #: modules/bibcirculation/lib/bibcirculation_templates.py:8555 #: modules/bibcirculation/lib/bibcirculation_templates.py:12257 #: modules/bibcirculation/lib/bibcirculation_templates.py:12400 #: modules/bibcirculation/lib/bibcirculation_templates.py:12485 #: modules/bibcirculation/lib/bibcirculation_templates.py:13068 #: modules/bibcirculation/lib/bibcirculation_templates.py:13222 #: modules/bibcirculation/lib/bibcirculation_templates.py:13310 #: modules/bibcirculation/lib/bibcirculation_utils.py:533 msgid "Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:389 #: modules/bibcirculation/lib/bibcirculation_templates.py:3117 #: modules/bibcirculation/lib/bibcirculation_templates.py:5367 #: modules/bibcirculation/lib/bibcirculation_templates.py:6344 #: modules/bibcirculation/lib/bibcirculation_templates.py:6532 #: modules/bibcirculation/lib/bibcirculation_templates.py:6714 #: modules/bibcirculation/lib/bibcirculation_templates.py:7008 #: modules/bibcirculation/lib/bibcirculation_templates.py:7159 #: modules/bibcirculation/lib/bibcirculation_templates.py:7351 #: modules/bibcirculation/lib/bibcirculation_templates.py:7580 #: modules/bibcirculation/lib/bibcirculation_templates.py:7672 #: modules/webalert/lib/webalert_templates.py:93 msgid "Collection" msgstr "مجموعه" #: modules/bibcirculation/lib/bibcirculation_templates.py:390 #: modules/bibcirculation/lib/bibcirculation_templates.py:1165 #: modules/bibcirculation/lib/bibcirculation_templates.py:1355 #: modules/bibcirculation/lib/bibcirculation_templates.py:2498 #: modules/bibcirculation/lib/bibcirculation_templates.py:3118 #: modules/bibcirculation/lib/bibcirculation_templates.py:5041 #: modules/bibcirculation/lib/bibcirculation_templates.py:5356 #: modules/bibcirculation/lib/bibcirculation_templates.py:5716 #: modules/bibcirculation/lib/bibcirculation_templates.py:5981 #: modules/bibcirculation/lib/bibcirculation_templates.py:6072 #: modules/bibcirculation/lib/bibcirculation_templates.py:6341 #: modules/bibcirculation/lib/bibcirculation_templates.py:6531 #: modules/bibcirculation/lib/bibcirculation_templates.py:6713 #: modules/bibcirculation/lib/bibcirculation_templates.py:6997 #: modules/bibcirculation/lib/bibcirculation_templates.py:7152 #: modules/bibcirculation/lib/bibcirculation_templates.py:7350 #: modules/bibcirculation/lib/bibcirculation_templates.py:7569 #: modules/bibcirculation/lib/bibcirculation_templates.py:7669 #: modules/bibcirculation/lib/bibcirculation_templates.py:8189 #: modules/bibcirculation/lib/bibcirculation_templates.py:8463 #: modules/bibcirculation/lib/bibcirculation_templates.py:8556 #: modules/bibcirculation/lib/bibcirculation_utils.py:534 msgid "Location" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:390 #: modules/bibcirculation/lib/bibcirculation_templates.py:3118 #: modules/bibcirculation/lib/bibcirculation_templates.py:5375 #: modules/bibcirculation/lib/bibcirculation_templates.py:6345 #: modules/bibcirculation/lib/bibcirculation_templates.py:6555 #: modules/bibcirculation/lib/bibcirculation_templates.py:6715 #: modules/bibcirculation/lib/bibcirculation_templates.py:7015 #: modules/bibcirculation/lib/bibcirculation_templates.py:7193 #: modules/bibcirculation/lib/bibcirculation_templates.py:7352 #: modules/bibcirculation/lib/bibcirculation_templates.py:7587 #: modules/bibcirculation/lib/bibcirculation_templates.py:7673 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:400 #: modules/bibformat/lib/bibformat_templates.py:198 #: modules/bibformat/lib/bibformat_templates.py:726 #: modules/bibformat/lib/bibformat_templates.py:851 #: modules/bibknowledge/lib/bibknowledge_templates.py:80 #: modules/webbasket/lib/webbasket_templates.py:1612 #: modules/websession/lib/websession_templates.py:1693 #: modules/websession/lib/websession_templates.py:1767 #: modules/websession/lib/websession_templates.py:1830 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:471 msgid "Description" msgstr "توصیف" #: modules/bibcirculation/lib/bibcirculation_templates.py:390 #: modules/bibcirculation/lib/bibcirculation_templates.py:3118 #: modules/bibcirculation/lib/bibcirculation_templates.py:4294 #: modules/bibcirculation/lib/bibcirculation_templates.py:5361 #: modules/bibcirculation/lib/bibcirculation_templates.py:6342 #: modules/bibcirculation/lib/bibcirculation_templates.py:6562 #: modules/bibcirculation/lib/bibcirculation_templates.py:6716 #: modules/bibcirculation/lib/bibcirculation_templates.py:7002 #: modules/bibcirculation/lib/bibcirculation_templates.py:7200 #: modules/bibcirculation/lib/bibcirculation_templates.py:7353 #: modules/bibcirculation/lib/bibcirculation_templates.py:7574 #: modules/bibcirculation/lib/bibcirculation_templates.py:7670 msgid "Loan period" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:391 #: modules/bibcirculation/lib/bibcirculation_templates.py:700 #: modules/bibcirculation/lib/bibcirculation_templates.py:3119 #: modules/bibcirculation/lib/bibcirculation_templates.py:4556 #: modules/bibcirculation/lib/bibcirculation_templates.py:5348 #: modules/bibcirculation/lib/bibcirculation_templates.py:5714 #: modules/bibcirculation/lib/bibcirculation_templates.py:6339 #: modules/bibcirculation/lib/bibcirculation_templates.py:6586 #: modules/bibcirculation/lib/bibcirculation_templates.py:6717 #: modules/bibcirculation/lib/bibcirculation_templates.py:6990 #: modules/bibcirculation/lib/bibcirculation_templates.py:7225 #: modules/bibcirculation/lib/bibcirculation_templates.py:7354 #: modules/bibcirculation/lib/bibcirculation_templates.py:7562 #: modules/bibcirculation/lib/bibcirculation_templates.py:7666 #: modules/bibcirculation/lib/bibcirculation_templates.py:9213 #: modules/bibcirculation/lib/bibcirculation_templates.py:12062 #: modules/bibcirculation/lib/bibcirculation_templates.py:12854 #: modules/bibcirculation/lib/bibcirculation_templates.py:13527 #: modules/bibcirculation/lib/bibcirculation_templates.py:13662 #: modules/bibcirculation/lib/bibcirculation_templates.py:13781 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:536 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:633 #: modules/bibformat/lib/bibformat_templates.py:728 #: modules/bibformat/lib/bibformat_templates.py:852 #: modules/bibupload/lib/batchuploader_templates.py:296 #: modules/bibupload/lib/batchuploader_templates.py:338 #: modules/bibupload/lib/batchuploader_templates.py:622 #: modules/websubmit/lib/websubmit_templates.py:1267 msgid "Status" msgstr "وضعیت" #: modules/bibcirculation/lib/bibcirculation_templates.py:391 #: modules/bibcirculation/lib/bibcirculation_templates.py:626 #: modules/bibcirculation/lib/bibcirculation_templates.py:2499 #: modules/bibcirculation/lib/bibcirculation_templates.py:3119 #: modules/bibcirculation/lib/bibcirculation_templates.py:4215 #: modules/bibcirculation/lib/bibcirculation_templates.py:4292 #: modules/bibcirculation/lib/bibcirculation_templates.py:4694 #: modules/bibcirculation/lib/bibcirculation_templates.py:4871 #: modules/bibcirculation/lib/bibcirculation_templates.py:5350 #: modules/bibcirculation/lib/bibcirculation_templates.py:5834 #: modules/bibcirculation/lib/bibcirculation_templates.py:6074 #: modules/bibcirculation/lib/bibcirculation_templates.py:6991 #: modules/bibcirculation/lib/bibcirculation_templates.py:7563 #: modules/bibcirculation/lib/bibcirculation_templates.py:7667 #: modules/bibcirculation/lib/bibcirculation_templates.py:8304 #: modules/bibcirculation/lib/bibcirculation_templates.py:8558 #: modules/bibcirculation/lib/bibcirculation_templates.py:9212 #: modules/bibcirculation/lib/bibcirculation_templates.py:12301 #: modules/bibcirculation/lib/bibcirculation_templates.py:12402 #: modules/bibcirculation/lib/bibcirculation_templates.py:13112 #: modules/bibcirculation/lib/bibcirculation_templates.py:13224 #: modules/bibcirculation/lib/bibcirculation_templates.py:13530 #: modules/bibcirculation/lib/bibcirculation_utils.py:465 msgid "Due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:391 #: modules/bibcirculation/lib/bibcirculation_templates.py:1500 #: modules/bibcirculation/lib/bibcirculation_templates.py:1739 #: modules/bibcirculation/lib/bibcirculation_templates.py:2497 #: modules/bibcirculation/lib/bibcirculation_templates.py:2829 #: modules/bibcirculation/lib/bibcirculation_templates.py:3117 #: modules/bibcirculation/lib/bibcirculation_templates.py:3389 #: modules/bibcirculation/lib/bibcirculation_templates.py:3628 #: modules/bibcirculation/lib/bibcirculation_templates.py:3864 #: modules/bibcirculation/lib/bibcirculation_templates.py:4106 #: modules/bibcirculation/lib/bibcirculation_templates.py:4290 #: modules/bibcirculation/lib/bibcirculation_templates.py:4692 #: modules/bibcirculation/lib/bibcirculation_templates.py:4869 #: modules/bibcirculation/lib/bibcirculation_templates.py:5347 #: modules/bibcirculation/lib/bibcirculation_templates.py:5717 #: modules/bibcirculation/lib/bibcirculation_templates.py:5832 #: modules/bibcirculation/lib/bibcirculation_templates.py:5979 #: modules/bibcirculation/lib/bibcirculation_templates.py:6070 #: modules/bibcirculation/lib/bibcirculation_templates.py:6338 #: modules/bibcirculation/lib/bibcirculation_templates.py:6503 #: modules/bibcirculation/lib/bibcirculation_templates.py:6711 #: modules/bibcirculation/lib/bibcirculation_templates.py:6989 #: modules/bibcirculation/lib/bibcirculation_templates.py:7109 #: modules/bibcirculation/lib/bibcirculation_templates.py:7348 #: modules/bibcirculation/lib/bibcirculation_templates.py:7561 #: modules/bibcirculation/lib/bibcirculation_templates.py:7665 #: modules/bibcirculation/lib/bibcirculation_templates.py:7821 #: modules/bibcirculation/lib/bibcirculation_templates.py:8302 #: modules/bibcirculation/lib/bibcirculation_templates.py:8462 #: modules/bibcirculation/lib/bibcirculation_templates.py:8554 #: modules/bibcirculation/lib/bibcirculation_templates.py:12214 #: modules/bibcirculation/lib/bibcirculation_templates.py:12320 #: modules/bibcirculation/lib/bibcirculation_templates.py:12418 #: modules/bibcirculation/lib/bibcirculation_templates.py:12501 msgid "Barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:434 msgid "See this book on BibCirculation" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:501 #: modules/bibcirculation/lib/bibcirculation_templates.py:886 #: modules/bibcirculation/lib/bibcirculation_templates.py:1002 #: modules/bibcirculation/lib/bibcirculation_templates.py:1138 #: modules/bibcirculation/lib/bibcirculation_templates.py:1277 #: modules/bibcirculation/lib/bibcirculation_templates.py:1330 #: modules/bibcirculation/lib/bibcirculation_templates.py:1461 #: modules/bibcirculation/lib/bibcirculation_templates.py:1876 #: modules/bibcirculation/lib/bibcirculation_templates.py:1969 #: modules/bibcirculation/lib/bibcirculation_templates.py:2038 #: modules/bibcirculation/lib/bibcirculation_templates.py:2129 #: modules/bibcirculation/lib/bibcirculation_templates.py:2365 #: modules/bibcirculation/lib/bibcirculation_templates.py:2559 #: modules/bibcirculation/lib/bibcirculation_templates.py:2624 #: modules/bibcirculation/lib/bibcirculation_templates.py:2858 #: modules/bibcirculation/lib/bibcirculation_templates.py:2978 #: modules/bibcirculation/lib/bibcirculation_templates.py:3249 #: modules/bibcirculation/lib/bibcirculation_templates.py:3734 #: modules/bibcirculation/lib/bibcirculation_templates.py:4218 #: modules/bibcirculation/lib/bibcirculation_templates.py:4338 #: modules/bibcirculation/lib/bibcirculation_templates.py:4520 #: modules/bibcirculation/lib/bibcirculation_templates.py:4612 #: modules/bibcirculation/lib/bibcirculation_templates.py:4667 #: modules/bibcirculation/lib/bibcirculation_templates.py:4786 #: modules/bibcirculation/lib/bibcirculation_templates.py:4842 #: modules/bibcirculation/lib/bibcirculation_templates.py:4966 #: modules/bibcirculation/lib/bibcirculation_templates.py:5281 #: modules/bibcirculation/lib/bibcirculation_templates.py:5661 #: modules/bibcirculation/lib/bibcirculation_templates.py:5773 #: modules/bibcirculation/lib/bibcirculation_templates.py:5928 #: modules/bibcirculation/lib/bibcirculation_templates.py:6025 #: modules/bibcirculation/lib/bibcirculation_templates.py:6118 #: modules/bibcirculation/lib/bibcirculation_templates.py:6182 #: modules/bibcirculation/lib/bibcirculation_templates.py:6239 #: modules/bibcirculation/lib/bibcirculation_templates.py:6390 #: modules/bibcirculation/lib/bibcirculation_templates.py:6629 #: modules/bibcirculation/lib/bibcirculation_templates.py:6719 #: modules/bibcirculation/lib/bibcirculation_templates.py:6793 #: modules/bibcirculation/lib/bibcirculation_templates.py:6851 #: modules/bibcirculation/lib/bibcirculation_templates.py:7264 #: modules/bibcirculation/lib/bibcirculation_templates.py:7356 #: modules/bibcirculation/lib/bibcirculation_templates.py:7705 #: modules/bibcirculation/lib/bibcirculation_templates.py:7857 #: modules/bibcirculation/lib/bibcirculation_templates.py:8134 #: modules/bibcirculation/lib/bibcirculation_templates.py:8243 #: modules/bibcirculation/lib/bibcirculation_templates.py:8413 #: modules/bibcirculation/lib/bibcirculation_templates.py:8503 #: modules/bibcirculation/lib/bibcirculation_templates.py:8615 #: modules/bibcirculation/lib/bibcirculation_templates.py:8732 #: modules/bibcirculation/lib/bibcirculation_templates.py:8834 #: modules/bibcirculation/lib/bibcirculation_templates.py:8927 #: modules/bibcirculation/lib/bibcirculation_templates.py:8994 #: modules/bibcirculation/lib/bibcirculation_templates.py:9014 #: modules/bibcirculation/lib/bibcirculation_templates.py:9148 #: modules/bibcirculation/lib/bibcirculation_templates.py:9311 #: modules/bibcirculation/lib/bibcirculation_templates.py:9465 #: modules/bibcirculation/lib/bibcirculation_templates.py:9694 #: modules/bibcirculation/lib/bibcirculation_templates.py:10202 #: modules/bibcirculation/lib/bibcirculation_templates.py:10282 #: modules/bibcirculation/lib/bibcirculation_templates.py:10388 #: modules/bibcirculation/lib/bibcirculation_templates.py:10585 #: modules/bibcirculation/lib/bibcirculation_templates.py:11139 #: modules/bibcirculation/lib/bibcirculation_templates.py:11538 #: modules/bibcirculation/lib/bibcirculation_templates.py:12541 #: modules/bibcirculation/lib/bibcirculation_templates.py:13370 #: modules/bibcirculation/lib/bibcirculation_templates.py:13472 #: modules/bibcirculation/lib/bibcirculation_templates.py:14134 #: modules/bibcirculation/lib/bibcirculation_templates.py:14342 #: modules/bibcirculation/lib/bibcirculation_templates.py:14449 #: modules/bibcirculation/lib/bibcirculation_templates.py:14525 #: modules/bibcirculation/lib/bibcirculation_templates.py:14624 #: modules/bibcirculation/lib/bibcirculation_templates.py:14684 #: modules/bibcirculation/lib/bibcirculation_templates.py:14780 #: modules/bibcirculation/lib/bibcirculation_templates.py:14850 #: modules/bibcirculation/lib/bibcirculation_templates.py:14957 #: modules/bibcirculation/lib/bibcirculation_templates.py:15033 #: modules/bibcirculation/lib/bibcirculation_templates.py:15145 #: modules/bibcirculation/lib/bibcirculation_templates.py:15249 #: modules/bibcirculation/lib/bibcirculation_templates.py:15329 #: modules/bibcirculation/lib/bibcirculation_templates.py:15402 #: modules/bibcirculation/lib/bibcirculation_templates.py:15505 #: modules/bibcirculation/lib/bibcirculation_templates.py:15572 #: modules/bibcirculation/lib/bibcirculation_templates.py:15650 #: modules/bibcirculation/lib/bibcirculation_templates.py:15721 #: modules/bibcirculation/lib/bibcirculation_templates.py:15828 #: modules/bibcirculation/lib/bibcirculation_templates.py:15894 #: modules/bibcirculation/lib/bibcirculation_templates.py:15992 #: modules/bibcirculation/lib/bibcirculation_templates.py:16075 #: modules/bibknowledge/lib/bibknowledgeadmin.py:141 msgid "Back" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:501 msgid "Suggest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:509 msgid "This item is not for loan." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:514 msgid "You already have a request on, or are in possession of this document." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:519 msgid "" "Your request has been registered and the document will be sent to you via " "internal mail." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:524 msgid "Your request has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:529 #: modules/bibcirculation/lib/bibcirculation_templates.py:537 msgid "It is not possible to validate your request. " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:531 #: modules/bibcirculation/lib/bibcirculation_templates.py:539 #, python-format msgid "Please contact %(librarian_email)s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:545 #: modules/bibcirculation/lib/bibcirculation_templates.py:550 msgid "Thank you for your suggestion. We will get back to you shortly." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:555 msgid "Your purchase request has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:560 msgid "Server busy. Please, try again in a few seconds." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:584 #: modules/bibcirculation/lib/bibcirculation_templates.py:8396 msgid "Renew all loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:589 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:174 msgid "Loans - historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:601 msgid "You don't have any book on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:624 #: modules/bibcirculation/lib/bibcirculation_templates.py:698 #: modules/bibcirculation/lib/bibcirculation_templates.py:777 #: modules/bibcirculation/lib/bibcirculation_templates.py:852 #: modules/bibcirculation/lib/bibcirculation_templates.py:1163 #: modules/bibcirculation/lib/bibcirculation_templates.py:1353 #: modules/bibcirculation/lib/bibcirculation_templates.py:1635 #: modules/bibcirculation/lib/bibcirculation_templates.py:1677 #: modules/bibcirculation/lib/bibcirculation_templates.py:2497 #: modules/bibcirculation/lib/bibcirculation_templates.py:2605 #: modules/bibcirculation/lib/bibcirculation_templates.py:4555 #: modules/bibcirculation/lib/bibcirculation_templates.py:4691 #: modules/bibcirculation/lib/bibcirculation_templates.py:4868 #: modules/bibcirculation/lib/bibcirculation_templates.py:5039 #: modules/bibcirculation/lib/bibcirculation_templates.py:7818 #: modules/bibcirculation/lib/bibcirculation_templates.py:8186 #: modules/bibcirculation/lib/bibcirculation_templates.py:8301 #: modules/bibcirculation/lib/bibcirculation_templates.py:8462 #: modules/bibcirculation/lib/bibcirculation_templates.py:8553 #: modules/bibcirculation/lib/bibcirculation_templates.py:9207 #: modules/bibcirculation/lib/bibcirculation_templates.py:13525 #: modules/bibcirculation/lib/bibcirculation_templates.py:13658 #: modules/bibcirculation/lib/bibcirculation_utils.py:532 msgid "Item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:625 #: modules/bibcirculation/lib/bibcirculation_templates.py:4693 #: modules/bibcirculation/lib/bibcirculation_templates.py:4870 #: modules/bibcirculation/lib/bibcirculation_templates.py:5833 #: modules/bibcirculation/lib/bibcirculation_templates.py:6073 #: modules/bibcirculation/lib/bibcirculation_templates.py:8557 msgid "Loaned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:627 #: modules/bibcirculation/lib/bibcirculation_templates.py:701 msgid "Action(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:639 #: modules/bibcirculation/lib/bibcirculation_templates.py:5886 #: modules/bibcirculation/lib/bibcirculation_templates.py:8361 msgid "Renew" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:673 #: modules/bibcirculation/lib/bibcirculation_templates.py:697 msgid "Your Requests" msgstr "درخواست های شما" #: modules/bibcirculation/lib/bibcirculation_templates.py:674 msgid "You don't have any request (waiting or pending)." msgstr "" "شما هیچ درخواستی (در حال انتظار یا در حال بررسی) ندارید.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟" "pending" #: modules/bibcirculation/lib/bibcirculation_templates.py:699 #: modules/bibcirculation/lib/bibcirculation_templates.py:1170 #: modules/bibcirculation/lib/bibcirculation_templates.py:1358 #: modules/bibcirculation/lib/bibcirculation_templates.py:1681 #: modules/bibcirculation/lib/bibcirculation_templates.py:4559 #: modules/bibcirculation/lib/bibcirculation_templates.py:5044 #: modules/bibcirculation/lib/bibcirculation_templates.py:5721 #: modules/bibcirculation/lib/bibcirculation_templates.py:5984 #: modules/bibcirculation/lib/bibcirculation_templates.py:8192 #: modules/bibcirculation/lib/bibcirculation_templates.py:8464 #: modules/bibcirculation/lib/bibcirculation_templates.py:9209 #: modules/bibcirculation/lib/bibcirculation_templates.py:12195 #: modules/bibcirculation/lib/bibcirculation_templates.py:12258 #: modules/bibcirculation/lib/bibcirculation_templates.py:12401 #: modules/bibcirculation/lib/bibcirculation_templates.py:12486 #: modules/bibcirculation/lib/bibcirculation_templates.py:13003 #: modules/bibcirculation/lib/bibcirculation_templates.py:13069 #: modules/bibcirculation/lib/bibcirculation_templates.py:13222 #: modules/bibcirculation/lib/bibcirculation_templates.py:13310 #: modules/bibcirculation/lib/bibcirculation_utils.py:537 msgid "Request date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:713 #: modules/bibcirculation/lib/bibcirculation_templates.py:1416 #: modules/bibcirculation/lib/bibcirculation_templates.py:8223 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:902 #: modules/bibedit/lib/bibeditmulti_templates.py:627 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:261 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:403 #: modules/bibformat/web/admin/bibformatadmin.py:414 #: modules/bibformat/web/admin/bibformatadmin.py:725 #: modules/bibknowledge/lib/bibknowledgeadmin.py:746 #: modules/webbasket/lib/webbasket_templates.py:1795 #: modules/webbasket/lib/webbasket_templates.py:1863 #: modules/webbasket/lib/webbasket_templates.py:1970 #: modules/webbasket/lib/webbasket_templates.py:2025 #: modules/webbasket/lib/webbasket_templates.py:2115 #: modules/webbasket/lib/webbasket_templates.py:3207 #: modules/webbasket/lib/webbasket_templates.py:4010 #: modules/webjournal/lib/webjournaladminlib.py:119 #: modules/webjournal/lib/webjournaladminlib.py:232 #: modules/websession/lib/websession_templates.py:1970 #: modules/websession/lib/websession_templates.py:2078 #: modules/websession/lib/websession_templates.py:2280 #: modules/websession/lib/websession_templates.py:2363 #: modules/websubmit/lib/websubmit_templates.py:2312 #: modules/websubmit/lib/websubmit_templates.py:2375 #: modules/websubmit/lib/websubmit_templates.py:2395 #: modules/websubmit/web/publiline.py:1228 msgid "Cancel" msgstr "لغو" #: modules/bibcirculation/lib/bibcirculation_templates.py:752 #, fuzzy msgid "Your Proposals" msgstr "گروه های شما" #: modules/bibcirculation/lib/bibcirculation_templates.py:753 msgid "You did not propose any acquisitions." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:755 #: modules/bibcirculation/lib/bibcirculation_templates.py:817 #: modules/bibcirculation/lib/bibcirculation_templates.py:1041 #: modules/bibcirculation/lib/bibcirculation_templates.py:1071 #: modules/bibcirculation/lib/bibcirculation_templates.py:2732 #: modules/bibcirculation/lib/bibcirculation_templates.py:3290 #: modules/bibcirculation/lib/bibcirculation_templates.py:3767 #: modules/bibcirculation/lib/bibcirculation_templates.py:4421 #: modules/bibcirculation/lib/bibcirculation_templates.py:5002 #: modules/bibcirculation/lib/bibcirculation_templates.py:7398 #: modules/bibcirculation/lib/bibcirculation_templates.py:9049 #: modules/bibcirculation/lib/bibcirculation_templates.py:9499 #: modules/bibcirculation/lib/bibcirculation_templates.py:14558 #: modules/bibcirculation/lib/bibcirculation_templates.py:14889 #: modules/bibcirculation/lib/bibcirculation_templates.py:15441 #: modules/bibcirculation/lib/bibcirculation_templates.py:15760 msgid "Back to home" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:776 msgid "Your Proposals under review" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:778 #: modules/bibcirculation/lib/bibcirculation_templates.py:13777 msgid "Proposal date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:853 msgid "Loaned" msgstr "امانت داده شده" #: modules/bibcirculation/lib/bibcirculation_templates.py:854 msgid "Returned" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:855 #: modules/bibcirculation/lib/bibcirculation_templates.py:4695 #: modules/bibcirculation/lib/bibcirculation_templates.py:4872 #: modules/bibcirculation/lib/bibcirculation_templates.py:5835 #: modules/bibcirculation/lib/bibcirculation_templates.py:6076 #: modules/bibcirculation/lib/bibcirculation_templates.py:8305 #: modules/bibcirculation/lib/bibcirculation_templates.py:8560 msgid "Renewals" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:933 msgid "Why do you suggest this book for the library?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:982 msgid "Enter your period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:983 #: modules/bibcirculation/lib/bibcirculation_templates.py:1168 #: modules/bibcirculation/lib/bibcirculation_templates.py:1356 #: modules/bibcirculation/lib/bibcirculation_templates.py:1679 #: modules/bibcirculation/lib/bibcirculation_templates.py:4557 #: modules/bibcirculation/lib/bibcirculation_templates.py:5042 #: modules/bibcirculation/lib/bibcirculation_templates.py:5719 #: modules/bibcirculation/lib/bibcirculation_templates.py:5982 #: modules/bibcirculation/lib/bibcirculation_templates.py:8190 #: modules/bibcirculation/lib/bibcirculation_templates.py:8463 #: modules/bibcirculation/lib/bibcirculation_templates.py:8653 #: modules/bibcirculation/lib/bibcirculation_templates.py:11515 #: modules/bibcirculation/lib/bibcirculation_utils.py:535 msgid "From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:983 #: modules/bibcirculation/lib/bibcirculation_templates.py:1169 #: modules/bibcirculation/lib/bibcirculation_templates.py:1357 #: modules/bibcirculation/lib/bibcirculation_templates.py:1680 #: modules/bibcirculation/lib/bibcirculation_templates.py:4558 #: modules/bibcirculation/lib/bibcirculation_templates.py:5043 #: modules/bibcirculation/lib/bibcirculation_templates.py:5720 #: modules/bibcirculation/lib/bibcirculation_templates.py:5983 #: modules/bibcirculation/lib/bibcirculation_templates.py:8191 #: modules/bibcirculation/lib/bibcirculation_templates.py:8464 #: modules/bibcirculation/lib/bibcirculation_templates.py:8655 #: modules/bibcirculation/lib/bibcirculation_templates.py:11516 #: modules/bibcirculation/lib/bibcirculation_utils.py:536 #: modules/bibknowledge/lib/bibknowledge_templates.py:363 msgid "To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1002 #: modules/bibcirculation/lib/bibcirculation_templates.py:2625 #: modules/bibcirculation/lib/bibcirculation_templates.py:2859 #: modules/bibcirculation/lib/bibcirculation_templates.py:3249 #: modules/bibcirculation/lib/bibcirculation_templates.py:4522 #: modules/bibcirculation/lib/bibcirculation_templates.py:6719 #: modules/bibcirculation/lib/bibcirculation_templates.py:7858 #: modules/bibcirculation/lib/bibcirculation_templates.py:8835 #: modules/bibcirculation/lib/bibcirculation_templates.py:13473 #: modules/bibcirculation/lib/bibcirculation_templates.py:14349 #: modules/bibcirculation/lib/bibcirculation_templates.py:14525 #: modules/bibcirculation/lib/bibcirculation_templates.py:15250 #: modules/bibcirculation/lib/bibcirculation_templates.py:15402 #: modules/bibcirculation/lib/bibcirculation_templates.py:16039 msgid "Confirm" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1037 #, python-format msgid "You can see your library account %(x_url_open)shere%(x_url_close)s." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1115 msgid "Delete this request?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1116 #: modules/bibcirculation/lib/bibcirculation_templates.py:1373 msgid "Request not deleted." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1137 #: modules/bibcirculation/lib/bibcirculation_templates.py:1329 msgid "No more requests are pending." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1162 #: modules/bibcirculation/lib/bibcirculation_templates.py:1352 #: modules/bibcirculation/lib/bibcirculation_templates.py:1676 #: modules/bibcirculation/lib/bibcirculation_templates.py:2360 #: modules/bibcirculation/lib/bibcirculation_templates.py:2490 #: modules/bibcirculation/lib/bibcirculation_templates.py:2722 #: modules/bibcirculation/lib/bibcirculation_templates.py:2812 #: modules/bibcirculation/lib/bibcirculation_templates.py:3058 #: modules/bibcirculation/lib/bibcirculation_templates.py:3384 #: modules/bibcirculation/lib/bibcirculation_templates.py:3623 #: modules/bibcirculation/lib/bibcirculation_templates.py:3668 #: modules/bibcirculation/lib/bibcirculation_templates.py:3859 #: modules/bibcirculation/lib/bibcirculation_templates.py:4101 #: modules/bibcirculation/lib/bibcirculation_templates.py:4145 #: modules/bibcirculation/lib/bibcirculation_templates.py:5038 #: modules/bibcirculation/lib/bibcirculation_templates.py:5228 #: modules/bibcirculation/lib/bibcirculation_templates.py:6313 #: modules/bibcirculation/lib/bibcirculation_templates.py:6470 #: modules/bibcirculation/lib/bibcirculation_templates.py:6966 #: modules/bibcirculation/lib/bibcirculation_templates.py:7538 #: modules/bibcirculation/lib/bibcirculation_templates.py:7787 #: modules/bibcirculation/lib/bibcirculation_templates.py:7946 #: modules/bibcirculation/lib/bibcirculation_templates.py:8921 #: modules/bibcirculation/lib/bibcirculation_templates.py:8970 #: modules/bibcirculation/lib/bibcirculation_templates.py:9142 #: modules/bibcirculation/lib/bibcirculation_templates.py:9379 #: modules/bibcirculation/lib/bibcirculation_templates.py:9817 #: modules/bibcirculation/lib/bibcirculation_templates.py:10185 #: modules/bibcirculation/lib/bibcirculation_templates.py:11694 #: modules/bibcirculation/lib/bibcirculation_templates.py:12044 #: modules/bibcirculation/lib/bibcirculation_templates.py:12668 #: modules/bibcirculation/lib/bibcirculation_templates.py:12807 #: modules/bibcirculation/lib/bibcirculation_templates.py:14031 #: modules/bibcirculation/lib/bibcirculation_templates.py:14254 #: modules/bibcirculation/lib/bibcirculation_templates.py:14315 #: modules/bibcirculation/lib/bibcirculation_templates.py:14416 #: modules/bibcirculation/lib/bibcirculation_templates.py:14519 #: modules/bibcirculation/lib/bibcirculation_templates.py:14746 #: modules/bibcirculation/lib/bibcirculation_templates.py:14845 #: modules/bibcirculation/lib/bibcirculation_templates.py:15121 #: modules/bibcirculation/lib/bibcirculation_templates.py:15327 #: modules/bibcirculation/lib/bibcirculation_templates.py:15397 #: modules/bibcirculation/lib/bibcirculation_templates.py:15646 #: modules/bibcirculation/lib/bibcirculation_templates.py:15717 #: modules/bibcirculation/lib/bibcirculation_templates.py:15970 #: modules/bibcirculation/lib/bibcirculation_utils.py:452 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:398 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:194 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:255 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:345 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:398 #: modules/bibformat/lib/bibformat_templates.py:181 #: modules/bibformat/lib/bibformat_templates.py:725 #: modules/bibformat/lib/bibformat_templates.py:850 #: modules/bibknowledge/lib/bibknowledge_templates.py:79 #: modules/bibupload/lib/batchuploader_templates.py:622 #: modules/webalert/lib/webalert_templates.py:319 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:467 msgid "Name" msgstr "نام" #: modules/bibcirculation/lib/bibcirculation_templates.py:1166 msgid "Vol." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1167 msgid "Ed." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1229 #: modules/bibcirculation/lib/bibcirculation_templates.py:5108 #: modules/bibcirculation/lib/bibcirculation_templates.py:7707 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:175 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:324 #: modules/bibformat/lib/bibformat_templates.py:786 #: modules/bibformat/web/admin/bibformatadmin.py:414 #: modules/bibformat/web/admin/bibformatadmin.py:416 #: modules/bibformat/web/admin/bibformatadmin.py:725 #: modules/bibformat/web/admin/bibformatadmin.py:727 #: modules/bibknowledge/lib/bibknowledge_templates.py:102 #: modules/bibknowledge/lib/bibknowledge_templates.py:529 #: modules/bibknowledge/lib/bibknowledgeadmin.py:746 #: modules/bibknowledge/lib/bibknowledgeadmin.py:748 #: modules/webbasket/lib/webbasket_templates.py:3262 #: modules/webjournal/lib/webjournaladminlib.py:118 #: modules/webjournal/lib/webjournaladminlib.py:121 #: modules/webmessage/lib/webmessage_templates.py:115 msgid "Delete" msgstr "حذف" #: modules/bibcirculation/lib/bibcirculation_templates.py:1231 #: modules/bibcirculation/lib/bibcirculation_templates.py:5753 #, fuzzy msgid "Create loan" msgstr "ایجاد سبد" #: modules/bibcirculation/lib/bibcirculation_templates.py:1422 #: modules/bibcirculation/lib/bibcirculation_templates.py:5115 #: modules/bibcirculation/lib/bibcirculationadminlib.py:647 #: modules/bibcirculation/lib/bibcirculationadminlib.py:657 #: modules/bibcirculation/lib/bibcirculationadminlib.py:667 #: modules/bibcirculation/lib/bibcirculationadminlib.py:758 #, fuzzy msgid "Create Loan" msgstr "ایجاد سبد" #: modules/bibcirculation/lib/bibcirculation_templates.py:1517 #: modules/bibcirculation/lib/bibcirculation_templates.py:1756 #: modules/bibcirculation/lib/bibcirculation_templates.py:8733 msgid "Reset" msgstr "بازتنطیم" #: modules/bibcirculation/lib/bibcirculation_templates.py:1518 #: modules/bibcirculation/lib/bibcirculation_templates.py:1757 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:494 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:557 #: modules/webcomment/lib/webcomment_templates.py:2061 msgid "OK" msgstr "بسیارخوب" #: modules/bibcirculation/lib/bibcirculation_templates.py:1560 #, python-format msgid "" "The item %(x_strong_tag_open)s%(x_title)s%(x_strong_tag_close)s, with " "barcode %(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s, has been " "returned with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1574 msgid "The next(pending) request on the returned book is shown below." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1633 msgid "Loan informations" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1634 #: modules/bibcirculation/lib/bibcirculation_templates.py:2593 #: modules/bibcirculation/lib/bibcirculation_templates.py:4554 #: modules/bibcirculation/lib/bibcirculation_templates.py:4690 #: modules/bibcirculation/lib/bibcirculation_templates.py:4867 #: modules/bibcirculation/lib/bibcirculation_templates.py:5713 #: modules/bibcirculation/lib/bibcirculation_templates.py:5831 #: modules/bibcirculation/lib/bibcirculation_templates.py:5978 #: modules/bibcirculation/lib/bibcirculation_templates.py:6069 #: modules/bibcirculation/lib/bibcirculation_templates.py:13524 #: modules/bibcirculation/lib/bibcirculation_templates.py:13657 #: modules/bibcirculation/lib/bibcirculation_utils.py:531 msgid "Borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1636 #: modules/bibcirculation/lib/bibcirculation_templates.py:2088 #: modules/bibcirculation/lib/bibcirculation_templates.py:10346 #: modules/bibcirculation/lib/bibcirculation_utils.py:427 msgid "Author" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1637 #: modules/bibcirculation/lib/bibcirculation_templates.py:2729 #: modules/bibcirculation/lib/bibcirculation_templates.py:3386 #: modules/bibcirculation/lib/bibcirculation_templates.py:3625 #: modules/bibcirculation/lib/bibcirculation_templates.py:3861 #: modules/bibcirculation/lib/bibcirculation_templates.py:4103 #: modules/bibcirculation/lib/bibcirculation_templates.py:5229 #: modules/bibcirculation/lib/bibcirculation_templates.py:6317 #: modules/bibcirculation/lib/bibcirculation_templates.py:6474 #: modules/bibcirculation/lib/bibcirculation_templates.py:6970 #: modules/bibcirculation/lib/bibcirculation_templates.py:7542 #: modules/bibcirculation/lib/bibcirculation_templates.py:9383 #: modules/bibcirculation/lib/bibcirculation_templates.py:9605 #: modules/bibcirculation/lib/bibcirculation_templates.py:9820 #: modules/bibcirculation/lib/bibcirculation_templates.py:10092 #: modules/bibcirculation/lib/bibcirculation_templates.py:10517 #: modules/bibcirculation/lib/bibcirculation_templates.py:10712 #: modules/bibcirculation/lib/bibcirculation_templates.py:10961 #: modules/bibcirculation/lib/bibcirculation_templates.py:11059 #: modules/bibcirculation/lib/bibcirculation_templates.py:11209 #: modules/bibcirculation/lib/bibcirculation_templates.py:11698 #: modules/bibcirculation/lib/bibcirculation_templates.py:11795 #: modules/bibcirculation/lib/bibcirculation_templates.py:11905 #: modules/bibcirculation/lib/bibcirculation_templates.py:11989 #: modules/bibcirculation/lib/bibcirculation_templates.py:12672 #: modules/bibcirculation/lib/bibcirculation_templates.py:12777 #: modules/bibcirculation/lib/bibcirculation_utils.py:430 #: modules/miscutil/lib/dateutils.py:319 msgid "Year" msgstr "سال" #: modules/bibcirculation/lib/bibcirculation_templates.py:1638 #: modules/bibcirculation/lib/bibcirculation_templates.py:2088 #: modules/bibcirculation/lib/bibcirculation_templates.py:2730 #: modules/bibcirculation/lib/bibcirculation_templates.py:3387 #: modules/bibcirculation/lib/bibcirculation_templates.py:3626 #: modules/bibcirculation/lib/bibcirculation_templates.py:3862 #: modules/bibcirculation/lib/bibcirculation_templates.py:4104 #: modules/bibcirculation/lib/bibcirculation_templates.py:5230 #: modules/bibcirculation/lib/bibcirculation_templates.py:6319 #: modules/bibcirculation/lib/bibcirculation_templates.py:6476 #: modules/bibcirculation/lib/bibcirculation_templates.py:6972 #: modules/bibcirculation/lib/bibcirculation_templates.py:7544 #: modules/bibcirculation/lib/bibcirculation_templates.py:9385 #: modules/bibcirculation/lib/bibcirculation_templates.py:9604 #: modules/bibcirculation/lib/bibcirculation_templates.py:9821 #: modules/bibcirculation/lib/bibcirculation_templates.py:10093 #: modules/bibcirculation/lib/bibcirculation_templates.py:10346 #: modules/bibcirculation/lib/bibcirculation_templates.py:10962 #: modules/bibcirculation/lib/bibcirculation_templates.py:11058 #: modules/bibcirculation/lib/bibcirculation_templates.py:11208 #: modules/bibcirculation/lib/bibcirculation_templates.py:11700 #: modules/bibcirculation/lib/bibcirculation_templates.py:11794 #: modules/bibcirculation/lib/bibcirculation_templates.py:11904 #: modules/bibcirculation/lib/bibcirculation_templates.py:11988 #: modules/bibcirculation/lib/bibcirculation_templates.py:12674 #: modules/bibcirculation/lib/bibcirculation_templates.py:12776 msgid "Publisher" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1639 #: modules/bibcirculation/lib/bibcirculation_templates.py:2731 #: modules/bibcirculation/lib/bibcirculation_templates.py:3388 #: modules/bibcirculation/lib/bibcirculation_templates.py:3627 #: modules/bibcirculation/lib/bibcirculation_templates.py:3863 #: modules/bibcirculation/lib/bibcirculation_templates.py:4105 #: modules/bibcirculation/lib/bibcirculation_templates.py:5230 #: modules/bibcirculation/lib/bibcirculation_templates.py:6321 #: modules/bibcirculation/lib/bibcirculation_templates.py:6478 #: modules/bibcirculation/lib/bibcirculation_templates.py:6974 #: modules/bibcirculation/lib/bibcirculation_templates.py:7546 #: modules/bibcirculation/lib/bibcirculation_templates.py:9387 #: modules/bibcirculation/lib/bibcirculation_templates.py:9607 #: modules/bibcirculation/lib/bibcirculation_templates.py:9823 #: modules/bibcirculation/lib/bibcirculation_templates.py:10095 #: modules/bibcirculation/lib/bibcirculation_templates.py:10963 #: modules/bibcirculation/lib/bibcirculation_templates.py:11062 #: modules/bibcirculation/lib/bibcirculation_templates.py:11207 #: modules/bibcirculation/lib/bibcirculation_templates.py:11702 #: modules/bibcirculation/lib/bibcirculation_templates.py:11797 #: modules/bibcirculation/lib/bibcirculation_templates.py:11991 #: modules/bibcirculation/lib/bibcirculation_templates.py:12676 #: modules/bibcirculation/lib/bibcirculation_templates.py:12779 #: modules/bibcirculation/lib/bibcirculation_utils.py:429 msgid "ISBN" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1640 #: modules/bibcirculation/lib/bibcirculation_templates.py:12403 #: modules/bibcirculation/lib/bibcirculation_templates.py:13224 msgid "Return date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1675 msgid "Waiting requests" msgstr "درخواست های در حال انتظار" #: modules/bibcirculation/lib/bibcirculation_templates.py:1678 #: modules/bibcirculation/lib/bibcirculation_templates.py:8187 msgid "Request status" msgstr "وضعیت درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:1682 msgid "Request options" msgstr "گزینه های درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:1705 msgid "Select request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1739 #, fuzzy msgid "Return another book" msgstr "بازگشت به سبد" #: modules/bibcirculation/lib/bibcirculation_templates.py:1777 msgid "Welcome to Invenio BibCirculation Admin" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1803 #: modules/bibcirculation/lib/bibcirculation_templates.py:2193 #: modules/bibcirculation/lib/bibcirculation_templates.py:2200 #: modules/bibcirculation/lib/bibcirculation_templates.py:2207 #: modules/bibcirculation/lib/bibcirculation_templates.py:3917 #: modules/bibcirculation/lib/bibcirculation_templates.py:3924 #: modules/bibcirculation/lib/bibcirculation_templates.py:3931 #: modules/bibcirculation/lib/bibcirculation_templates.py:9878 #: modules/bibcirculation/lib/bibcirculation_templates.py:9885 #: modules/bibcirculation/lib/bibcirculation_templates.py:9892 #: modules/bibcirculation/lib/bibcirculation_templates.py:10767 #: modules/bibcirculation/lib/bibcirculation_templates.py:10774 #: modules/bibcirculation/lib/bibcirculation_templates.py:10781 #: modules/bibcirculation/lib/bibcirculation_templates.py:11311 #: modules/bibcirculation/lib/bibcirculation_templates.py:11318 #: modules/bibcirculation/lib/bibcirculation_templates.py:11325 msgid "id" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1816 msgid "register new borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1847 #: modules/bibcirculation/lib/bibcirculation_templates.py:2186 #: modules/bibcirculation/lib/bibcirculation_templates.py:3435 #: modules/bibcirculation/lib/bibcirculation_templates.py:9871 #: modules/bibcirculation/lib/bibcirculation_templates.py:10760 #: modules/bibcirculation/lib/bibcirculation_templates.py:11304 msgid "Search borrower by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1848 #: modules/bibcirculation/lib/bibcirculation_templates.py:2166 #: modules/bibcirculation/lib/bibcirculation_templates.py:2173 #: modules/bibcirculation/lib/bibcirculation_templates.py:2180 #: modules/bibcirculation/lib/bibcirculation_templates.py:2193 #: modules/bibcirculation/lib/bibcirculation_templates.py:2200 #: modules/bibcirculation/lib/bibcirculation_templates.py:2207 #: modules/bibcirculation/lib/bibcirculation_templates.py:3415 #: modules/bibcirculation/lib/bibcirculation_templates.py:3422 #: modules/bibcirculation/lib/bibcirculation_templates.py:3429 #: modules/bibcirculation/lib/bibcirculation_templates.py:3442 #: modules/bibcirculation/lib/bibcirculation_templates.py:3449 #: modules/bibcirculation/lib/bibcirculation_templates.py:3456 #: modules/bibcirculation/lib/bibcirculation_templates.py:3890 #: modules/bibcirculation/lib/bibcirculation_templates.py:3897 #: modules/bibcirculation/lib/bibcirculation_templates.py:3904 #: modules/bibcirculation/lib/bibcirculation_templates.py:3917 #: modules/bibcirculation/lib/bibcirculation_templates.py:3924 #: modules/bibcirculation/lib/bibcirculation_templates.py:3931 #: modules/bibcirculation/lib/bibcirculation_templates.py:9851 #: modules/bibcirculation/lib/bibcirculation_templates.py:9858 #: modules/bibcirculation/lib/bibcirculation_templates.py:9865 #: modules/bibcirculation/lib/bibcirculation_templates.py:9878 #: modules/bibcirculation/lib/bibcirculation_templates.py:9885 #: modules/bibcirculation/lib/bibcirculation_templates.py:9892 #: modules/bibcirculation/lib/bibcirculation_templates.py:10740 #: modules/bibcirculation/lib/bibcirculation_templates.py:10747 #: modules/bibcirculation/lib/bibcirculation_templates.py:10754 #: modules/bibcirculation/lib/bibcirculation_templates.py:10767 #: modules/bibcirculation/lib/bibcirculation_templates.py:10774 #: modules/bibcirculation/lib/bibcirculation_templates.py:10781 #: modules/bibcirculation/lib/bibcirculation_templates.py:11284 #: modules/bibcirculation/lib/bibcirculation_templates.py:11291 #: modules/bibcirculation/lib/bibcirculation_templates.py:11298 #: modules/bibcirculation/lib/bibcirculation_templates.py:11311 #: modules/bibcirculation/lib/bibcirculation_templates.py:11318 #: modules/bibcirculation/lib/bibcirculation_templates.py:11325 #: modules/bibcirculation/lib/bibcirculation_templates.py:14076 #: modules/bibcirculation/lib/bibcirculation_templates.py:14594 #: modules/bibcirculation/lib/bibcirculation_templates.py:14928 #: modules/bibcirculation/lib/bibcirculation_templates.py:15478 #: modules/bibcirculation/lib/bibcirculation_templates.py:15797 msgid "name" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1848 #: modules/bibcirculation/lib/bibcirculation_templates.py:2166 #: modules/bibcirculation/lib/bibcirculation_templates.py:2173 #: modules/bibcirculation/lib/bibcirculation_templates.py:2180 #: modules/bibcirculation/lib/bibcirculation_templates.py:2193 #: modules/bibcirculation/lib/bibcirculation_templates.py:2200 #: modules/bibcirculation/lib/bibcirculation_templates.py:2207 #: modules/bibcirculation/lib/bibcirculation_templates.py:3415 #: modules/bibcirculation/lib/bibcirculation_templates.py:3422 #: modules/bibcirculation/lib/bibcirculation_templates.py:3429 #: modules/bibcirculation/lib/bibcirculation_templates.py:3442 #: modules/bibcirculation/lib/bibcirculation_templates.py:3449 #: modules/bibcirculation/lib/bibcirculation_templates.py:3456 #: modules/bibcirculation/lib/bibcirculation_templates.py:3890 #: modules/bibcirculation/lib/bibcirculation_templates.py:3897 #: modules/bibcirculation/lib/bibcirculation_templates.py:3904 #: modules/bibcirculation/lib/bibcirculation_templates.py:3917 #: modules/bibcirculation/lib/bibcirculation_templates.py:3924 #: modules/bibcirculation/lib/bibcirculation_templates.py:3931 #: modules/bibcirculation/lib/bibcirculation_templates.py:9851 #: modules/bibcirculation/lib/bibcirculation_templates.py:9858 #: modules/bibcirculation/lib/bibcirculation_templates.py:9865 #: modules/bibcirculation/lib/bibcirculation_templates.py:9878 #: modules/bibcirculation/lib/bibcirculation_templates.py:9885 #: modules/bibcirculation/lib/bibcirculation_templates.py:9892 #: modules/bibcirculation/lib/bibcirculation_templates.py:10740 #: modules/bibcirculation/lib/bibcirculation_templates.py:10747 #: modules/bibcirculation/lib/bibcirculation_templates.py:10754 #: modules/bibcirculation/lib/bibcirculation_templates.py:10767 #: modules/bibcirculation/lib/bibcirculation_templates.py:10774 #: modules/bibcirculation/lib/bibcirculation_templates.py:10781 #: modules/bibcirculation/lib/bibcirculation_templates.py:11284 #: modules/bibcirculation/lib/bibcirculation_templates.py:11291 #: modules/bibcirculation/lib/bibcirculation_templates.py:11298 #: modules/bibcirculation/lib/bibcirculation_templates.py:11311 #: modules/bibcirculation/lib/bibcirculation_templates.py:11318 #: modules/bibcirculation/lib/bibcirculation_templates.py:11325 #: modules/bibcirculation/lib/bibcirculation_templates.py:14076 #: modules/bibcirculation/lib/bibcirculation_templates.py:14595 #: modules/bibcirculation/lib/bibcirculation_templates.py:14928 #: modules/bibcirculation/lib/bibcirculation_templates.py:15479 #: modules/bibcirculation/lib/bibcirculation_templates.py:15798 msgid "email" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1901 #: modules/bibcirculation/lib/bibcirculation_templates.py:1906 #: modules/bibcirculation/lib/bibcirculationadminlib.py:257 #: modules/bibcirculation/lib/bibcirculationadminlib.py:262 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1116 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1121 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1428 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1433 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4164 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4490 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4495 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4714 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4719 msgid "0 borrowers found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1901 #: modules/bibcirculation/lib/bibcirculationadminlib.py:257 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1116 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1428 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4490 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4714 msgid "Search by CCID." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1905 #: modules/bibcirculation/lib/bibcirculationadminlib.py:261 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1120 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1432 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4494 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4718 msgid "Register new borrower." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:1931 msgid "Borrower(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2006 #: modules/bibcirculation/lib/bibcirculation_templates.py:2920 #: modules/bibcirculation/lib/bibcirculation_templates.py:6151 #: modules/bibcirculation/lib/bibcirculation_templates.py:6760 #: modules/bibcirculation/lib/bibcirculation_templates.py:10251 msgid "Search item by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2006 #: modules/bibcirculation/lib/bibcirculation_templates.py:3383 #: modules/bibcirculation/lib/bibcirculation_templates.py:3622 #: modules/bibcirculation/lib/bibcirculation_templates.py:3858 #: modules/bibcirculation/lib/bibcirculation_templates.py:4100 #: modules/bibcirculation/lib/bibcirculation_templates.py:5228 #: modules/bibcirculation/lib/bibcirculation_templates.py:5250 #: modules/bibcirculation/lib/bibcirculation_templates.py:6312 #: modules/bibcirculation/lib/bibcirculation_templates.py:6469 #: modules/bibcirculation/lib/bibcirculation_templates.py:6965 #: modules/bibcirculation/lib/bibcirculation_templates.py:7537 #: modules/bibcirculation/lib/bibcirculation_templates.py:9377 #: modules/bibcirculation/lib/bibcirculation_templates.py:9545 #: modules/bibcirculation/lib/bibcirculation_templates.py:9816 #: modules/bibcirculation/lib/bibcirculation_templates.py:10088 #: modules/bibcirculation/lib/bibcirculation_templates.py:10704 #: modules/bibcirculation/lib/bibcirculation_templates.py:11203 #: modules/bibcirculation/lib/bibcirculation_templates.py:11693 #: modules/bibcirculation/lib/bibcirculation_templates.py:11790 #: modules/bibcirculation/lib/bibcirculation_templates.py:11895 #: modules/bibcirculation/lib/bibcirculation_templates.py:11984 #: modules/bibcirculation/lib/bibcirculation_templates.py:12667 #: modules/bibcirculation/lib/bibcirculation_templates.py:12772 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1553 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2334 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2818 msgid "Item details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2006 #: modules/bibcirculation/lib/bibcirculation_templates.py:2928 #: modules/bibcirculation/lib/bibcirculation_templates.py:2936 #: modules/bibcirculation/lib/bibcirculation_templates.py:2944 #: modules/bibcirculation/lib/bibcirculation_templates.py:2952 #: modules/bibcirculation/lib/bibcirculation_templates.py:5251 #: modules/bibcirculation/lib/bibcirculation_templates.py:10251 msgid "barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2006 #: modules/bibcirculation/lib/bibcirculation_templates.py:5251 msgid "recid" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2062 msgid "0 item(s) found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2087 #, python-format msgid "%i items found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2087 #: modules/bibcirculation/lib/bibcirculation_templates.py:2727 #: modules/bibcirculation/lib/bibcirculation_templates.py:4289 #: modules/bibcirculation/lib/bibcirculation_templates.py:10089 #: modules/bibcirculation/lib/bibcirculation_templates.py:10345 #: modules/bibcirculation/lib/bibcirculation_templates.py:10959 #: modules/bibcirculation/lib/bibcirculation_templates.py:11055 #: modules/bibcirculation/lib/bibcirculation_templates.py:11205 #: modules/bibcirculation/lib/bibcirculation_templates.py:11791 #: modules/bibcirculation/lib/bibcirculation_templates.py:11985 #: modules/bibcirculation/lib/bibcirculation_templates.py:12773 #: modules/bibcirculation/lib/bibcirculation_templates.py:13780 #: modules/bibcirculation/lib/bibcirculation_templates.py:13897 #: modules/bibcirculation/lib/bibcirculation_utils.py:426 #: modules/webbasket/lib/webbasket_templates.py:1610 #: modules/websubmit/lib/websubmit_templates.py:2503 msgid "Title" msgstr "عنوان" #: modules/bibcirculation/lib/bibcirculation_templates.py:2089 #: modules/bibcirculation/lib/bibcirculation_templates.py:10347 msgid "# copies" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2159 #: modules/bibcirculation/lib/bibcirculation_templates.py:3408 #: modules/bibcirculation/lib/bibcirculation_templates.py:3883 #: modules/bibcirculation/lib/bibcirculation_templates.py:3910 #: modules/bibcirculation/lib/bibcirculation_templates.py:9844 #: modules/bibcirculation/lib/bibcirculation_templates.py:10733 #: modules/bibcirculation/lib/bibcirculation_templates.py:11277 msgid "Search user by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2265 #: modules/bibcirculation/lib/bibcirculation_templates.py:3514 #: modules/bibcirculation/lib/bibcirculation_templates.py:4000 #: modules/bibcirculation/lib/bibcirculation_templates.py:9965 #: modules/bibcirculation/lib/bibcirculation_templates.py:10851 #: modules/bibcirculation/lib/bibcirculation_templates.py:11406 msgid "Select user" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2286 #: modules/bibcirculation/lib/bibcirculation_templates.py:2402 #: modules/bibcirculation/lib/bibcirculation_templates.py:2644 #: modules/bibcirculation/lib/bibcirculation_templates.py:2763 #: modules/bibcirculation/lib/bibcirculation_templates.py:2897 #: modules/bibcirculation/lib/bibcirculation_templates.py:3667 #: modules/bibcirculation/lib/bibcirculation_templates.py:4144 #: modules/bibcirculation/lib/bibcirculation_templates.py:7736 #: modules/bibcirculation/lib/bibcirculation_templates.py:7882 #: modules/bibcirculation/lib/bibcirculation_templates.py:9062 #: modules/bibcirculation/lib/bibcirculation_templates.py:10012 #: modules/bibcirculation/lib/bibcirculation_templates.py:13528 #: modules/bibcirculation/lib/bibcirculation_templates.py:13663 #: modules/bibcirculation/lib/bibcirculation_templates.py:13776 #: modules/bibupload/lib/batchuploader_templates.py:622 msgid "ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2289 #: modules/bibcirculation/lib/bibcirculation_templates.py:2405 #: modules/bibcirculation/lib/bibcirculation_templates.py:2647 #: modules/bibcirculation/lib/bibcirculation_templates.py:2766 #: modules/bibcirculation/lib/bibcirculation_templates.py:2900 #: modules/bibcirculation/lib/bibcirculation_templates.py:7739 #: modules/bibcirculation/lib/bibcirculation_templates.py:7885 #: modules/bibcirculation/lib/bibcirculation_templates.py:10015 msgid "CCID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2305 #: modules/bibcirculation/lib/bibcirculation_templates.py:2488 msgid "User information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2361 #: modules/bibcirculation/lib/bibcirculation_templates.py:2491 #: modules/bibcirculation/lib/bibcirculation_templates.py:2723 #: modules/bibcirculation/lib/bibcirculation_templates.py:2813 #: modules/bibcirculation/lib/bibcirculation_templates.py:3059 #: modules/bibcirculation/lib/bibcirculation_templates.py:3669 #: modules/bibcirculation/lib/bibcirculation_templates.py:4146 #: modules/bibcirculation/lib/bibcirculation_templates.py:7788 #: modules/bibcirculation/lib/bibcirculation_templates.py:7947 #: modules/bibcirculation/lib/bibcirculation_templates.py:8924 #: modules/bibcirculation/lib/bibcirculation_templates.py:8973 #: modules/bibcirculation/lib/bibcirculation_templates.py:9143 #: modules/bibcirculation/lib/bibcirculation_templates.py:10186 #: modules/bibcirculation/lib/bibcirculation_templates.py:14032 #: modules/bibcirculation/lib/bibcirculation_templates.py:14255 #: modules/bibcirculation/lib/bibcirculation_templates.py:14316 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14522 #: modules/bibcirculation/lib/bibcirculation_templates.py:14749 #: modules/bibcirculation/lib/bibcirculation_templates.py:14848 #: modules/bibcirculation/lib/bibcirculation_templates.py:15122 #: modules/bibcirculation/lib/bibcirculation_templates.py:15328 #: modules/bibcirculation/lib/bibcirculation_templates.py:15400 #: modules/bibcirculation/lib/bibcirculation_templates.py:15649 #: modules/bibcirculation/lib/bibcirculation_templates.py:15720 #: modules/bibcirculation/lib/bibcirculation_templates.py:15971 #: modules/bibcirculation/lib/bibcirculation_utils.py:454 msgid "Address" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2362 #: modules/bibcirculation/lib/bibcirculation_templates.py:2492 #: modules/bibcirculation/lib/bibcirculation_templates.py:2724 #: modules/bibcirculation/lib/bibcirculation_templates.py:2814 #: modules/bibcirculation/lib/bibcirculation_templates.py:3060 #: modules/bibcirculation/lib/bibcirculation_templates.py:3670 #: modules/bibcirculation/lib/bibcirculation_templates.py:4147 #: modules/bibcirculation/lib/bibcirculation_templates.py:7789 #: modules/bibcirculation/lib/bibcirculation_templates.py:7948 #: modules/bibcirculation/lib/bibcirculation_templates.py:8925 #: modules/bibcirculation/lib/bibcirculation_templates.py:8974 #: modules/bibcirculation/lib/bibcirculation_templates.py:9144 #: modules/bibcirculation/lib/bibcirculation_templates.py:10187 #: modules/bibcirculation/lib/bibcirculation_templates.py:12046 #: modules/bibcirculation/lib/bibcirculation_templates.py:12809 #: modules/bibcirculation/lib/bibcirculation_utils.py:453 msgid "Mailbox" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2363 #: modules/bibcirculation/lib/bibcirculation_templates.py:2493 #: modules/bibcirculation/lib/bibcirculation_templates.py:2725 #: modules/bibcirculation/lib/bibcirculation_templates.py:2815 #: modules/bibcirculation/lib/bibcirculation_templates.py:3061 #: modules/bibcirculation/lib/bibcirculation_templates.py:3671 #: modules/bibcirculation/lib/bibcirculation_templates.py:4148 #: modules/bibcirculation/lib/bibcirculation_templates.py:7790 #: modules/bibcirculation/lib/bibcirculation_templates.py:7949 #: modules/bibcirculation/lib/bibcirculation_templates.py:8922 #: modules/bibcirculation/lib/bibcirculation_templates.py:8971 #: modules/bibcirculation/lib/bibcirculation_templates.py:9145 #: modules/bibcirculation/lib/bibcirculation_templates.py:10188 #: modules/bibcirculation/lib/bibcirculation_templates.py:12045 #: modules/bibcirculation/lib/bibcirculation_templates.py:12808 #: modules/bibcirculation/lib/bibcirculation_templates.py:14033 #: modules/bibcirculation/lib/bibcirculation_templates.py:14256 #: modules/bibcirculation/lib/bibcirculation_templates.py:14317 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14520 #: modules/bibcirculation/lib/bibcirculation_templates.py:14747 #: modules/bibcirculation/lib/bibcirculation_templates.py:14846 #: modules/bibcirculation/lib/bibcirculation_templates.py:15123 #: modules/bibcirculation/lib/bibcirculation_templates.py:15328 #: modules/bibcirculation/lib/bibcirculation_templates.py:15398 #: modules/bibcirculation/lib/bibcirculation_templates.py:15647 #: modules/bibcirculation/lib/bibcirculation_templates.py:15718 #: modules/bibcirculation/lib/bibcirculation_templates.py:15972 #: modules/bibcirculation/lib/bibcirculation_utils.py:455 #: modules/webcomment/lib/webcomment_templates.py:1738 #: modules/webcomment/lib/webcomment_templates.py:1770 msgid "Email" msgstr "ایمیل" #: modules/bibcirculation/lib/bibcirculation_templates.py:2364 #: modules/bibcirculation/lib/bibcirculation_templates.py:2494 #: modules/bibcirculation/lib/bibcirculation_templates.py:2726 #: modules/bibcirculation/lib/bibcirculation_templates.py:2816 #: modules/bibcirculation/lib/bibcirculation_templates.py:3062 #: modules/bibcirculation/lib/bibcirculation_templates.py:3672 #: modules/bibcirculation/lib/bibcirculation_templates.py:4149 #: modules/bibcirculation/lib/bibcirculation_templates.py:7791 #: modules/bibcirculation/lib/bibcirculation_templates.py:7950 #: modules/bibcirculation/lib/bibcirculation_templates.py:8923 #: modules/bibcirculation/lib/bibcirculation_templates.py:8972 #: modules/bibcirculation/lib/bibcirculation_templates.py:9146 #: modules/bibcirculation/lib/bibcirculation_templates.py:10189 #: modules/bibcirculation/lib/bibcirculation_templates.py:14034 #: modules/bibcirculation/lib/bibcirculation_templates.py:14257 #: modules/bibcirculation/lib/bibcirculation_templates.py:14318 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14521 #: modules/bibcirculation/lib/bibcirculation_templates.py:14748 #: modules/bibcirculation/lib/bibcirculation_templates.py:14847 #: modules/bibcirculation/lib/bibcirculation_templates.py:15124 #: modules/bibcirculation/lib/bibcirculation_templates.py:15328 #: modules/bibcirculation/lib/bibcirculation_templates.py:15399 #: modules/bibcirculation/lib/bibcirculation_templates.py:15648 #: modules/bibcirculation/lib/bibcirculation_templates.py:15719 #: modules/bibcirculation/lib/bibcirculation_templates.py:15973 msgid "Phone" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2365 msgid "Enter the barcode" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2366 #: modules/bibcirculation/lib/bibcirculation_templates.py:2559 #: modules/bibcirculation/lib/bibcirculation_templates.py:3734 #: modules/bibcirculation/lib/bibcirculation_templates.py:4218 #: modules/bibcirculation/lib/bibcirculation_templates.py:6629 #: modules/bibcirculation/lib/bibcirculation_templates.py:7265 #: modules/bibcirculation/lib/bibcirculation_templates.py:7356 #: modules/bibcirculation/lib/bibcirculation_templates.py:8927 #: modules/bibcirculation/lib/bibcirculation_templates.py:9014 #: modules/bibcirculation/lib/bibcirculation_templates.py:9148 #: modules/bibcirculation/lib/bibcirculation_templates.py:9465 #: modules/bibcirculation/lib/bibcirculation_templates.py:9694 #: modules/bibcirculation/lib/bibcirculation_templates.py:10202 #: modules/bibcirculation/lib/bibcirculation_templates.py:10585 #: modules/bibcirculation/lib/bibcirculation_templates.py:11139 #: modules/bibcirculation/lib/bibcirculation_templates.py:12541 #: modules/bibcirculation/lib/bibcirculation_templates.py:13370 #: modules/bibcirculation/lib/bibcirculation_templates.py:14449 #: modules/bibcirculation/lib/bibcirculation_templates.py:14780 #: modules/bibcirculation/lib/bibcirculation_templates.py:14850 #: modules/bibcirculation/lib/bibcirculation_templates.py:15329 #: modules/bibcirculation/lib/bibcirculation_templates.py:15650 #: modules/bibcirculation/lib/bibcirculation_templates.py:15721 msgid "Continue" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2370 #, fuzzy msgid "See all loans" msgstr "آخرین امانت ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:2495 msgid "List of borrowed books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2499 msgid "Write note(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2728 #: modules/bibcirculation/lib/bibcirculation_templates.py:3385 #: modules/bibcirculation/lib/bibcirculation_templates.py:3624 #: modules/bibcirculation/lib/bibcirculation_templates.py:3860 #: modules/bibcirculation/lib/bibcirculation_templates.py:4102 #: modules/bibcirculation/lib/bibcirculation_templates.py:5229 #: modules/bibcirculation/lib/bibcirculation_templates.py:6315 #: modules/bibcirculation/lib/bibcirculation_templates.py:6472 #: modules/bibcirculation/lib/bibcirculation_templates.py:6968 #: modules/bibcirculation/lib/bibcirculation_templates.py:7540 #: modules/bibcirculation/lib/bibcirculation_templates.py:9381 #: modules/bibcirculation/lib/bibcirculation_templates.py:9602 #: modules/bibcirculation/lib/bibcirculation_templates.py:9818 #: modules/bibcirculation/lib/bibcirculation_templates.py:10090 #: modules/bibcirculation/lib/bibcirculation_templates.py:10512 #: modules/bibcirculation/lib/bibcirculation_templates.py:10707 #: modules/bibcirculation/lib/bibcirculation_templates.py:10960 #: modules/bibcirculation/lib/bibcirculation_templates.py:11056 #: modules/bibcirculation/lib/bibcirculation_templates.py:11206 #: modules/bibcirculation/lib/bibcirculation_templates.py:11696 #: modules/bibcirculation/lib/bibcirculation_templates.py:11792 #: modules/bibcirculation/lib/bibcirculation_templates.py:11898 #: modules/bibcirculation/lib/bibcirculation_templates.py:11986 #: modules/bibcirculation/lib/bibcirculation_templates.py:12670 #: modules/bibcirculation/lib/bibcirculation_templates.py:12774 msgid "Author(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2734 msgid "Print loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2810 #: modules/bibcirculation/lib/bibcirculation_templates.py:7785 #: modules/bibcirculation/lib/bibcirculation_templates.py:7944 msgid "Personal details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2842 #: modules/bibcirculation/lib/bibcirculation_templates.py:4216 #: modules/bibcirculation/lib/bibcirculation_templates.py:7837 msgid "Write notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:2928 #: modules/bibcirculation/lib/bibcirculation_templates.py:2936 #: modules/bibcirculation/lib/bibcirculation_templates.py:2944 #: modules/bibcirculation/lib/bibcirculation_templates.py:2952 #, fuzzy msgid "Any field" msgstr "هر فیلد" #: modules/bibcirculation/lib/bibcirculation_templates.py:3013 msgid "Select item" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3056 #: modules/bibcirculation/lib/bibcirculation_templates.py:3666 #: modules/bibcirculation/lib/bibcirculation_templates.py:4143 #: modules/bibcirculation/lib/bibcirculation_templates.py:10183 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3230 msgid "Borrower details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3226 #: modules/bibcirculation/lib/bibcirculation_templates.py:3730 msgid "Enter the period of interest" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3227 #: modules/bibcirculation/lib/bibcirculation_templates.py:3731 msgid "From: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3229 #: modules/bibcirculation/lib/bibcirculation_templates.py:3732 msgid "To: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3289 #: modules/bibcirculation/lib/bibcirculation_templates.py:3766 msgid "A new request has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3415 #: modules/bibcirculation/lib/bibcirculation_templates.py:3422 #: modules/bibcirculation/lib/bibcirculation_templates.py:3429 #: modules/bibcirculation/lib/bibcirculation_templates.py:3442 #: modules/bibcirculation/lib/bibcirculation_templates.py:3449 #: modules/bibcirculation/lib/bibcirculation_templates.py:3456 #: modules/bibcirculation/lib/bibcirculation_templates.py:3890 #: modules/bibcirculation/lib/bibcirculation_templates.py:3897 #: modules/bibcirculation/lib/bibcirculation_templates.py:3904 msgid "ccid" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:3966 msgid "Please select one borrower to continue." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4213 #: modules/bibcirculation/lib/bibcirculation_templates.py:4288 #: modules/bibcirculation/lib/bibcirculation_utils.py:397 msgid "Loan information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4214 #: modules/bibcirculation/lib/bibcirculation_templates.py:4291 #: modules/bibcirculation/lib/bibcirculation_templates.py:8303 msgid "Loan date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4217 msgid "This note will be associated to this new loan, not to the borrower." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4293 #: modules/bibcirculation/lib/bibcirculation_templates.py:5837 msgid "Loan status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4295 msgid "Requested ?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4314 msgid "New due date: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4338 msgid "Submit new due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4384 #, python-format msgid "The due date has been updated. New due date: %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4385 msgid "Back to borrower's loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4420 msgid "Notification has been sent!" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4463 msgid "Notes about loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4472 #: modules/bibcirculation/lib/bibcirculation_templates.py:8785 #: modules/bibcirculation/lib/bibcirculation_templates.py:11621 #: modules/bibcirculation/lib/bibcirculation_templates.py:12596 #: modules/bibcirculation/lib/bibcirculation_templates.py:13425 #: modules/bibcirculation/lib/bibcirculation_templates.py:15202 msgid "[delete]" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4519 #: modules/bibcirculation/lib/bibcirculation_templates.py:8831 #: modules/bibcirculation/lib/bibcirculation_templates.py:13471 #: modules/bibcirculation/lib/bibcirculation_templates.py:15246 msgid "Write new note" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4560 #: modules/bibcirculation/lib/bibcirculation_templates.py:5722 #: modules/bibcirculation/lib/bibcirculation_templates.py:13532 msgid "Option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4596 #: modules/bibcirculation/lib/bibcirculation_templates.py:5754 msgid "Cancel hold request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4666 #: modules/bibcirculation/lib/bibcirculation_templates.py:4841 msgid "No result for your search." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4696 #: modules/bibcirculation/lib/bibcirculation_templates.py:4873 #: modules/bibcirculation/lib/bibcirculation_templates.py:6077 #: modules/bibcirculation/lib/bibcirculation_templates.py:8306 #: modules/bibcirculation/lib/bibcirculation_templates.py:8561 msgid "Overdue letters" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4697 #: modules/bibcirculation/lib/bibcirculation_templates.py:4874 msgid "Loan Notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4710 #: modules/bibcirculation/lib/bibcirculation_templates.py:4888 msgid "see notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4714 #: modules/bibcirculation/lib/bibcirculation_templates.py:4893 msgid "no notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:4746 #: modules/bibcirculation/lib/bibcirculation_templates.py:4925 #: modules/bibcirculation/lib/bibcirculation_templates.py:5904 #: modules/bibcirculation/lib/bibcirculation_templates.py:8380 msgid "Send recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5000 msgid "No more requests are pending or waiting." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5151 msgid "Printable format" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5231 msgid "Edit this record" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5232 msgid "Book Cover" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5250 msgid "Search another item by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5291 msgid "Additional details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5362 #: modules/bibcirculation/lib/bibcirculation_templates.py:6343 #: modules/bibcirculation/lib/bibcirculation_templates.py:7003 #: modules/bibcirculation/lib/bibcirculation_templates.py:7575 #: modules/bibcirculation/lib/bibcirculation_templates.py:7671 msgid "No of loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5441 #: modules/bibcirculation/lib/bibcirculation_templates.py:5462 #: modules/bibcirculation/lib/bibcirculation_templates.py:5483 #: modules/bibcirculation/lib/bibcirculation_templates.py:5504 #: modules/bibcirculation/lib/bibcirculation_templates.py:5885 #: modules/bibcirculation/lib/bibcirculation_templates.py:8360 msgid "Select an action" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5442 #: modules/bibcirculation/lib/bibcirculation_templates.py:5463 #: modules/bibcirculation/lib/bibcirculation_templates.py:5484 #: modules/bibcirculation/lib/bibcirculation_templates.py:5505 #: modules/bibcirculation/lib/bibcirculation_templates.py:6374 #: modules/bibcirculation/lib/bibcirculation_templates.py:7993 #: modules/bibcirculation/lib/bibcirculation_templates.py:8001 #: modules/bibcirculation/lib/bibcirculation_templates.py:15128 #: modules/bibcirculation/lib/bibcirculation_templates.py:15975 #: modules/webjournal/lib/webjournal_templates.py:517 #: modules/webjournal/lib/webjournaladminlib.py:391 msgid "Update" msgstr "بروز رسانی" #: modules/bibcirculation/lib/bibcirculation_templates.py:5443 #: modules/bibcirculation/lib/bibcirculation_templates.py:5464 #: modules/bibcirculation/lib/bibcirculation_templates.py:5485 #: modules/bibcirculation/lib/bibcirculation_templates.py:5506 msgid "Add similar copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5444 #: modules/bibcirculation/lib/bibcirculation_templates.py:5465 #: modules/bibcirculation/lib/bibcirculation_templates.py:5486 #: modules/bibcirculation/lib/bibcirculation_templates.py:5507 #: modules/bibcirculation/lib/bibcirculation_templates.py:7984 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1103 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1144 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1182 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1210 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1250 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1283 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1330 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1359 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1677 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1713 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1758 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1803 msgid "New request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5445 #: modules/bibcirculation/lib/bibcirculation_templates.py:5466 #: modules/bibcirculation/lib/bibcirculation_templates.py:5487 #: modules/bibcirculation/lib/bibcirculation_templates.py:5508 #: modules/bibcirculation/lib/bibcirculation_templates.py:7983 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1416 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1453 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1492 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1572 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1587 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1838 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1878 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1886 msgid "New loan" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5446 #: modules/bibcirculation/lib/bibcirculation_templates.py:5467 #: modules/bibcirculation/lib/bibcirculation_templates.py:5488 #: modules/bibcirculation/lib/bibcirculation_templates.py:5509 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2766 msgid "Delete copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5636 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2558 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2584 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2624 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2656 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2666 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2679 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2695 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2735 msgid "Add new copy" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5637 #, python-format msgid "Hold requests and loans overview on %(date)s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5639 #: modules/bibcirculation/lib/bibcirculation_templates.py:5643 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2375 msgid "Hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5639 #: modules/bibcirculation/lib/bibcirculation_templates.py:5640 #: modules/bibcirculation/lib/bibcirculation_templates.py:5641 #: modules/bibcirculation/lib/bibcirculation_templates.py:5644 #: modules/bibcirculation/lib/bibcirculation_templates.py:5645 #: modules/bibcirculation/lib/bibcirculation_templates.py:5646 #: modules/bibcirculation/lib/bibcirculation_templates.py:8118 #: modules/bibcirculation/lib/bibcirculation_templates.py:8120 #: modules/bibcirculation/lib/bibcirculation_templates.py:8122 #: modules/bibcirculation/lib/bibcirculation_templates.py:8124 #: modules/bibcirculation/lib/bibcirculation_templates.py:8127 #: modules/bibcirculation/lib/bibcirculation_templates.py:8129 #: modules/bibcirculation/lib/bibcirculation_templates.py:8131 #: modules/bibcirculation/lib/bibcirculation_templates.py:8133 msgid "More details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5640 #: modules/bibcirculation/lib/bibcirculation_templates.py:5644 #: modules/bibcirculation/lib/bibcirculation_templates.py:8119 #: modules/bibcirculation/lib/bibcirculation_templates.py:8128 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2532 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3652 msgid "Loans" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5641 #: modules/bibcirculation/lib/bibcirculation_templates.py:5645 #, fuzzy msgid "Purchases" msgstr "خرید" #: modules/bibcirculation/lib/bibcirculation_templates.py:5643 #: modules/bibcirculation/lib/bibcirculation_templates.py:8125 msgid "Historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5680 #: modules/bibcirculation/lib/bibcirculation_templates.py:5950 #: modules/bibcirculation/lib/bibcirculation_templates.py:8156 #: modules/bibcirculation/lib/bibcirculation_templates.py:8436 msgid "There are no requests." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5718 #, fuzzy msgid "Item Desc" msgstr "آیتم ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:5794 #: modules/bibcirculation/lib/bibcirculation_templates.py:8265 #: modules/bibcirculation/lib/bibcirculation_templates.py:8525 msgid "There are no loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5836 #: modules/bibcirculation/lib/bibcirculation_templates.py:8707 msgid "Overdue letter" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5838 #: modules/bibcirculation/lib/bibcirculation_templates.py:8308 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2220 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2269 msgid "Loan notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5839 #: modules/bibcirculation/lib/bibcirculation_templates.py:8310 msgid "Loan options" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5853 #: modules/bibcirculation/lib/bibcirculation_templates.py:7890 #: modules/bibcirculation/lib/bibcirculation_templates.py:8325 #: modules/bibcirculation/lib/bibcirculation_templates.py:9267 #: modules/bibcirculation/lib/bibcirculation_templates.py:13976 #: modules/bibcirculation/lib/bibcirculation_templates.py:14170 #: modules/bibcirculation/lib/bibcirculation_templates.py:14185 #: modules/bibcirculation/lib/bibcirculation_templates.py:15059 #: modules/bibcirculation/lib/bibcirculation_templates.py:15921 msgid "No notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5857 #: modules/bibcirculation/lib/bibcirculation_templates.py:8330 msgid "See notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:5892 #: modules/bibcirculation/lib/bibcirculation_templates.py:5896 #: modules/bibcirculation/lib/bibcirculation_templates.py:8367 #: modules/bibcirculation/lib/bibcirculation_templates.py:8371 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1007 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1049 msgid "Change due date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6075 #: modules/bibcirculation/lib/bibcirculation_templates.py:8559 msgid "Returned on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6151 #: modules/bibcirculation/lib/bibcirculation_templates.py:6760 #: modules/bibcirculation/lib/bibcirculation_templates.py:10251 #, fuzzy msgid "RecId/Item details" msgstr "جزئیات درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:6209 #, python-format msgid "%(nb_items_found)i items found" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6502 msgid "Update copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6628 #: modules/bibcirculation/lib/bibcirculation_templates.py:6718 #: modules/bibcirculation/lib/bibcirculation_templates.py:7264 #: modules/bibcirculation/lib/bibcirculation_templates.py:7355 msgid "Expected arrival date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6710 msgid "New copy information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:6977 #: modules/bibcirculation/lib/bibcirculation_templates.py:7549 #, python-format msgid "Copies of %s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7109 msgid "New copy details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7397 #, python-format msgid "A %(x_url_open)snew copy%(x_url_close)s has been added." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7421 msgid "Back to the record" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7895 msgid "Notes about this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7951 #: modules/bibcirculation/lib/bibcirculation_templates.py:8926 #: modules/bibcirculation/lib/bibcirculation_templates.py:8975 #: modules/bibcirculation/lib/bibcirculation_templates.py:14036 #: modules/bibcirculation/lib/bibcirculation_templates.py:14259 #: modules/bibcirculation/lib/bibcirculation_templates.py:14320 #: modules/bibcirculation/lib/bibcirculation_templates.py:14449 #: modules/bibcirculation/lib/bibcirculation_templates.py:14524 #: modules/bibcirculation/lib/bibcirculation_templates.py:15126 #: modules/bibcirculation/lib/bibcirculation_templates.py:15328 #: modules/bibcirculation/lib/bibcirculation_templates.py:15401 #: modules/bibcirculation/lib/bibcirculation_templates.py:15974 #: modules/webbasket/lib/webbasket_templates.py:747 #: modules/webbasket/lib/webbasket_templates.py:771 #: modules/webbasket/lib/webbasket_templates.py:856 #: modules/webbasket/lib/webbasket_templates.py:882 #: modules/webbasket/lib/webbasket_templates.py:961 #: modules/webbasket/lib/webbasket_templates.py:986 #: modules/webbasket/lib/webbasket_templates.py:1064 #: modules/webbasket/lib/webbasket_templates.py:1089 #: modules/webbasket/lib/webbasket_templates.py:2741 #: modules/webbasket/lib/webbasket_templates.py:3236 #: modules/webbasket/lib/webbasket_templates.py:3610 #: modules/webbasket/lib/webbasket_templates.py:4039 msgid "Notes" msgstr "یادداشت ها" #: modules/bibcirculation/lib/bibcirculation_templates.py:7985 msgid "New ILL request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:7986 msgid "Notify this borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8115 msgid "Requests, Loans and ILL overview on" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8117 #: modules/bibcirculation/lib/bibcirculation_templates.py:8126 #: modules/bibcirculation/lib/bibcirculation_templates.py:13779 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2498 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3687 msgid "Requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8123 #: modules/bibcirculation/lib/bibcirculation_templates.py:8132 msgid "Proposals" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8193 msgid "Request option(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8307 #: modules/bibcirculation/lib/bibcirculation_templates.py:11204 #: modules/bibcirculation/lib/bibcirculation_templates.py:12910 #: modules/bibcirculation/lib/bibcirculation_templates.py:12946 #: modules/bibcirculation/lib/bibcirculation_templates.py:13068 #: modules/bibcirculation/lib/bibcirculation_templates.py:13221 #: modules/bibcirculation/lib/bibcirculation_templates.py:13309 #: modules/bibcirculation/lib/bibcirculation_templates.py:13531 #: modules/bibcirculation/lib/bibcirculation_templates.py:13665 #: modules/bibcirculation/lib/bibcirculation_templates.py:13784 #: modules/bibcirculation/lib/bibcirculation_templates.py:14035 #: modules/bibcirculation/lib/bibcirculation_templates.py:14258 #: modules/bibcirculation/lib/bibcirculation_templates.py:14319 #: modules/bibcirculation/lib/bibcirculation_templates.py:14417 #: modules/bibcirculation/lib/bibcirculation_templates.py:14523 #: modules/bibcirculation/lib/bibcirculation_templates.py:14750 #: modules/bibcirculation/lib/bibcirculation_templates.py:14849 #: modules/bibcirculation/lib/bibcirculation_templates.py:15125 msgid "Type" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8309 msgid "Loans status" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8654 msgid "CERN Library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8680 #: modules/webmessage/lib/webmessage_templates.py:86 msgid "Subject" msgstr "موضوع" #: modules/bibcirculation/lib/bibcirculation_templates.py:8682 msgid "Message" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8683 msgid "Choose a template" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8706 msgid "Templates" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8708 msgid "Reminder" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8709 msgid "Notification" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8710 msgid "Loan recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8711 msgid "ILL recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8712 msgid "Proposal-accept" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8713 msgid "Proposal-refuse" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8714 msgid "Purchase-received-cash" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8715 msgid "Purchase-received-TID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8716 msgid "Load" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8734 msgid "Send" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:8776 msgid "Notes about borrower" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9048 msgid "A new borrower has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9140 msgid "Borrower information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9206 msgid "ILL ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9208 #: modules/bibcirculation/lib/bibcirculation_templates.py:13526 #: modules/bibcirculation/lib/bibcirculation_templates.py:13660 #: modules/bibcirculation/lib/bibcirculation_templates.py:13782 msgid "Supplier" msgstr "تأمین کننده" #: modules/bibcirculation/lib/bibcirculation_templates.py:9210 #: modules/bibcirculation/lib/bibcirculation_templates.py:12197 #: modules/bibcirculation/lib/bibcirculation_templates.py:12259 #: modules/bibcirculation/lib/bibcirculation_templates.py:12401 #: modules/bibcirculation/lib/bibcirculation_templates.py:12486 #: modules/bibcirculation/lib/bibcirculation_templates.py:13005 #: modules/bibcirculation/lib/bibcirculation_templates.py:13070 #: modules/bibcirculation/lib/bibcirculation_templates.py:13223 #: modules/bibcirculation/lib/bibcirculation_templates.py:13311 msgid "Expected date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9211 #: modules/bibcirculation/lib/bibcirculation_templates.py:12301 #: modules/bibcirculation/lib/bibcirculation_templates.py:12402 #: modules/bibcirculation/lib/bibcirculation_templates.py:12487 #: modules/bibcirculation/lib/bibcirculation_templates.py:13112 #: modules/bibcirculation/lib/bibcirculation_templates.py:13223 #: modules/bibcirculation/lib/bibcirculation_templates.py:13311 msgid "Arrival date" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9214 #: modules/bibcirculation/lib/bibcirculation_templates.py:12131 #: modules/bibcirculation/lib/bibcirculation_templates.py:12235 #: modules/bibcirculation/lib/bibcirculation_templates.py:12338 #: modules/bibcirculation/lib/bibcirculation_templates.py:12438 #: modules/bibcirculation/lib/bibcirculation_templates.py:12521 #: modules/bibcirculation/lib/bibcirculation_templates.py:12932 #: modules/bibcirculation/lib/bibcirculation_templates.py:13043 #: modules/bibcirculation/lib/bibcirculation_templates.py:13157 #: modules/bibcirculation/lib/bibcirculation_templates.py:13259 #: modules/bibcirculation/lib/bibcirculation_templates.py:13347 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5829 msgid "Library notes" msgstr "یادداشت های کتابخانه " #: modules/bibcirculation/lib/bibcirculation_templates.py:9271 msgid "Notes about this ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9376 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:260 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:306 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:405 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:488 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:608 msgid "Interlibrary loan request for books" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9457 #: modules/bibcirculation/lib/bibcirculation_templates.py:9638 #: modules/bibcirculation/lib/bibcirculation_templates.py:9824 #: modules/bibcirculation/lib/bibcirculation_templates.py:10136 #: modules/bibcirculation/lib/bibcirculation_templates.py:10579 #: modules/bibcirculation/lib/bibcirculation_templates.py:10715 #: modules/bibcirculation/lib/bibcirculation_templates.py:12051 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4880 msgid "ILL request details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9458 #: modules/bibcirculation/lib/bibcirculation_templates.py:9826 #: modules/bibcirculation/lib/bibcirculation_templates.py:10580 #: modules/bibcirculation/lib/bibcirculation_templates.py:10716 #: modules/bibcirculation/lib/bibcirculation_templates.py:11135 #: modules/bibcirculation/lib/bibcirculation_templates.py:11257 msgid "Period of interest - From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9460 #: modules/bibcirculation/lib/bibcirculation_templates.py:9828 #: modules/bibcirculation/lib/bibcirculation_templates.py:10582 #: modules/bibcirculation/lib/bibcirculation_templates.py:10718 #: modules/bibcirculation/lib/bibcirculation_templates.py:11137 #: modules/bibcirculation/lib/bibcirculation_templates.py:11259 msgid "Period of interest - To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9462 #: modules/bibcirculation/lib/bibcirculation_templates.py:9692 #: modules/bibcirculation/lib/bibcirculation_templates.py:9830 #: modules/bibcirculation/lib/bibcirculation_templates.py:10140 #: modules/bibcirculation/lib/bibcirculation_templates.py:10584 #: modules/bibcirculation/lib/bibcirculation_templates.py:10720 #: modules/bibcirculation/lib/bibcirculation_templates.py:11139 #: modules/bibcirculation/lib/bibcirculation_templates.py:11261 msgid "Additional comments" msgstr "نظرهای اضافی" #: modules/bibcirculation/lib/bibcirculation_templates.py:9463 #, python-format msgid "" "I accept the %(x_url_open)sconditions%(x_url_close)s of the service in " "particular the return of books in due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9464 msgid "I want this edition only." msgstr "من فقط این ویرایش را می خواهم." #: modules/bibcirculation/lib/bibcirculation_templates.py:9495 #, python-format msgid "Check your library account %(here_link)s." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9497 msgid "here" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9531 #, python-format msgid "Book does not exist in %(CFG_SITE_NAME)s" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9533 msgid "Please fill the following form." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9601 msgid "Book title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9603 #: modules/bibcirculation/lib/bibcirculation_templates.py:9819 #: modules/bibcirculation/lib/bibcirculation_templates.py:10091 #: modules/bibcirculation/lib/bibcirculation_templates.py:11057 #: modules/bibcirculation/lib/bibcirculation_templates.py:11223 #: modules/bibcirculation/lib/bibcirculation_templates.py:11793 #: modules/bibcirculation/lib/bibcirculation_templates.py:11902 #: modules/bibcirculation/lib/bibcirculation_templates.py:11987 #: modules/bibcirculation/lib/bibcirculation_templates.py:12775 msgid "Place" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9606 #: modules/bibcirculation/lib/bibcirculation_templates.py:9822 #: modules/bibcirculation/lib/bibcirculation_templates.py:10094 #: modules/bibcirculation/lib/bibcirculation_templates.py:11060 #: modules/bibcirculation/lib/bibcirculation_templates.py:11224 #: modules/bibcirculation/lib/bibcirculation_templates.py:11796 #: modules/bibcirculation/lib/bibcirculation_templates.py:11990 #: modules/bibcirculation/lib/bibcirculation_templates.py:12778 msgid "Edition" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9638 #: modules/bibcirculation/lib/bibcirculation_templates.py:9825 #: modules/bibcirculation/lib/bibcirculation_templates.py:10137 #: modules/bibcirculation/lib/bibcirculation_templates.py:10518 #: modules/bibcirculation/lib/bibcirculation_templates.py:10713 #: modules/bibcirculation/lib/bibcirculation_templates.py:11134 #: modules/bibcirculation/lib/bibcirculation_templates.py:11256 #: modules/bibcirculation/lib/bibcirculation_templates.py:12911 #: modules/bibcirculation/lib/bibcirculation_templates.py:13023 #: modules/bibcirculation/lib/bibcirculation_templates.py:13136 #: modules/bibcirculation/lib/bibcirculation_templates.py:13239 #: modules/bibcirculation/lib/bibcirculation_templates.py:13327 msgid "Budget code" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9639 #: modules/bibcirculation/lib/bibcirculation_templates.py:10138 #: modules/bibcirculation/lib/bibcirculation_templates.py:12047 #: modules/bibcirculation/lib/bibcirculation_templates.py:12823 msgid "Period of interest (From)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9690 #: modules/bibcirculation/lib/bibcirculation_templates.py:10139 #: modules/bibcirculation/lib/bibcirculation_templates.py:12048 #: modules/bibcirculation/lib/bibcirculation_templates.py:12824 msgid "Period of interest (To)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9693 #, python-format msgid "" "Borrower accepts the %(x_url_open)sconditions%(x_url_close)s of the service " "in particular the return of books in due time." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9694 msgid "Borrower wants this edition only." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:9832 msgid "Only this edition." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10141 msgid "Only this edition" msgstr "فقط این ویرایش" #: modules/bibcirculation/lib/bibcirculation_templates.py:10233 #, python-format msgid "" "Check if the book already exists on %(CFG_SITE_NAME)s, before sending your " "ILL request." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10305 msgid "0 items found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10388 msgid "Proceed anyway" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10509 msgid "Article details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10510 #: modules/bibcirculation/lib/bibcirculation_templates.py:10705 msgid "Periodical title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10511 #: modules/bibcirculation/lib/bibcirculation_templates.py:10706 msgid "Article title" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10513 #: modules/bibcirculation/lib/bibcirculation_templates.py:10708 msgid "Report number" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10514 #: modules/bibcirculation/lib/bibcirculation_templates.py:10709 #: modules/bibcirculation/lib/bibcirculation_templates.py:11899 msgid "Volume" msgstr "جلد/ دوره" #: modules/bibcirculation/lib/bibcirculation_templates.py:10515 #: modules/bibcirculation/lib/bibcirculation_templates.py:10710 #: modules/bibcirculation/lib/bibcirculation_templates.py:11900 msgid "Issue" msgstr "شماره" #: modules/bibcirculation/lib/bibcirculation_templates.py:10516 #: modules/bibcirculation/lib/bibcirculation_templates.py:10711 #: modules/bibcirculation/lib/bibcirculation_templates.py:11901 msgid "Page" msgstr "صفحه" #: modules/bibcirculation/lib/bibcirculation_templates.py:10519 #: modules/bibcirculation/lib/bibcirculation_templates.py:10714 #: modules/bibcirculation/lib/bibcirculation_templates.py:11903 msgid "ISSN" msgstr "شماره استاندارد بين المللي پيايندها (شاپا)" #: modules/bibcirculation/lib/bibcirculation_templates.py:10914 msgid "" "We will process your order immediately and contact " "you as soon as the document is " "received." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10916 msgid "" "According to a decision from the Scientific Information Policy " "Board, books purchased with budget codes other than Team " "accounts will be added to the Library catalogue, with the " "indication of the purchaser." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10934 msgid "Document details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:10970 msgid "Document type" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11061 msgid "This edition only" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11063 #: modules/bibcirculation/lib/bibcirculation_templates.py:11225 #: modules/bibcirculation/lib/bibcirculation_templates.py:12780 msgid "Standard number" msgstr "شماره استاندارد" #: modules/bibcirculation/lib/bibcirculation_templates.py:11133 #: modules/bibcirculation/lib/bibcirculation_templates.py:11255 #: modules/bibcirculation/lib/bibcirculation_templates.py:12844 msgid "Request details" msgstr "جزئیات درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:11134 msgid "Cash" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11474 msgid "Search ILL request by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11474 msgid "ILL RecId/Item details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11475 msgid "ILL request id" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11475 msgid "cost" msgstr "هزینه" #: modules/bibcirculation/lib/bibcirculation_templates.py:11475 msgid "notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11514 msgid "date restriction" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:11896 msgid "Periodical Title" msgstr "عنوان ادواری" #: modules/bibcirculation/lib/bibcirculation_templates.py:11897 msgid "Article Title" msgstr "عنوان مقاله" #: modules/bibcirculation/lib/bibcirculation_templates.py:12044 #: modules/bibcirculation/lib/bibcirculation_templates.py:12807 msgid "Borrower request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:12049 #: modules/bibcirculation/lib/bibcirculation_templates.py:12843 msgid "Borrower comments" msgstr "نظرهای امانت گیرنده" #: modules/bibcirculation/lib/bibcirculation_templates.py:12050 #: modules/bibcirculation/lib/bibcirculation_templates.py:12825 msgid "Only this edition?" msgstr "تنها این ویرایش؟" #: modules/bibcirculation/lib/bibcirculation_templates.py:12109 #: modules/bibcirculation/lib/bibcirculation_templates.py:12141 #: modules/bibcirculation/lib/bibcirculation_templates.py:12257 #: modules/bibcirculation/lib/bibcirculation_templates.py:12400 #: modules/bibcirculation/lib/bibcirculation_templates.py:12485 #: modules/bibcirculation/lib/bibcirculation_templates.py:12909 #: modules/bibcirculation/lib/bibcirculation_templates.py:12945 #: modules/bibcirculation/lib/bibcirculation_templates.py:13067 #: modules/bibcirculation/lib/bibcirculation_templates.py:13221 #: modules/bibcirculation/lib/bibcirculation_templates.py:13309 msgid "ILL request ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:12110 #: modules/bibcirculation/lib/bibcirculation_templates.py:12215 #: modules/bibcirculation/lib/bibcirculation_templates.py:12320 #: modules/bibcirculation/lib/bibcirculation_templates.py:12418 #: modules/bibcirculation/lib/bibcirculation_templates.py:12501 #: modules/bibcirculation/lib/bibcirculation_templates.py:12912 #: modules/bibcirculation/lib/bibcirculation_templates.py:13024 #: modules/bibcirculation/lib/bibcirculation_templates.py:13136 #: modules/bibcirculation/lib/bibcirculation_templates.py:13239 #: modules/bibcirculation/lib/bibcirculation_templates.py:13327 msgid "Previous notes" msgstr "یادداشت های قبلی" #: modules/bibcirculation/lib/bibcirculation_templates.py:12148 msgid "Library/Supplier" msgstr "کتابخانه/ تأمین کننده" #: modules/bibcirculation/lib/bibcirculation_templates.py:12199 #: modules/bibcirculation/lib/bibcirculation_templates.py:12308 #: modules/bibcirculation/lib/bibcirculation_templates.py:12404 #: modules/bibcirculation/lib/bibcirculation_templates.py:12488 #: modules/bibcirculation/lib/bibcirculation_templates.py:13007 #: modules/bibcirculation/lib/bibcirculation_templates.py:13121 #: modules/bibcirculation/lib/bibcirculation_templates.py:13226 #: modules/bibcirculation/lib/bibcirculation_templates.py:13313 #: modules/bibcirculation/lib/bibcirculation_templates.py:13661 #: modules/bibcirculation/lib/bibcirculation_templates.py:13783 #: modules/bibcirculation/lib/bibcirculation_templates.py:13898 msgid "Cost" msgstr "هزینه" #: modules/bibcirculation/lib/bibcirculation_templates.py:12830 #, fuzzy msgid "Date of request" msgstr "تاریخ درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:12953 msgid "Vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13416 msgid "Notes about ILL" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13529 msgid "Interest from" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13591 #: modules/bibcirculation/lib/bibcirculation_templates.py:13596 #: modules/bibcirculation/lib/bibcirculation_templates.py:13719 #: modules/bibcirculation/lib/bibcirculation_templates.py:13727 #: modules/bibcirculation/lib/bibcirculation_templates.py:13839 msgid "select" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13600 msgid "Inter library loan recall: " msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13605 msgid "Send Recall" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13659 #, fuzzy msgid "No. purchases" msgstr "خرید" #: modules/bibcirculation/lib/bibcirculation_templates.py:13664 msgid "Date requested" msgstr "تاریخ درخواست" #: modules/bibcirculation/lib/bibcirculation_templates.py:13778 msgid "Proposer" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13843 #: modules/bibcirculation/lib/bibcirculation_templates.py:13938 #, fuzzy msgid "Create ILL req" msgstr "ایجاد گروه جدید" #: modules/bibcirculation/lib/bibcirculation_templates.py:13893 msgid "Req.ID" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13894 #, fuzzy msgid "Requester" msgstr "ثبت" #: modules/bibcirculation/lib/bibcirculation_templates.py:13895 msgid "Period of Interest: From" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13896 msgid "Period of Interest: To" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13935 msgid "Go to Proposal" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:13981 #: modules/bibcirculation/lib/bibcirculation_templates.py:14175 #: modules/bibcirculation/lib/bibcirculation_templates.py:14190 #: modules/bibcirculation/lib/bibcirculation_templates.py:15064 msgid "Notes about this library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14030 #: modules/bibcirculation/lib/bibcirculation_templates.py:14253 msgid "Library to be deleted" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14037 #: modules/bibcirculation/lib/bibcirculation_templates.py:14260 #: modules/bibcirculation/lib/bibcirculation_templates.py:14321 #: modules/bibcirculation/lib/bibcirculation_templates.py:15127 msgid "No of items" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14075 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5855 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5902 msgid "Search library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14113 msgid "Select library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14206 msgid "Please, note that this action is NOT reversible" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14265 #: modules/bibcirculation/lib/bibcirculation_templates.py:14326 msgid "Library not found" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14314 msgid "Merged library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14416 #: modules/bibcirculation/lib/bibcirculation_templates.py:14518 msgid "New library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14557 msgid "A new library has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14593 #: modules/bibcirculation/lib/bibcirculation_templates.py:14927 msgid "Search library by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14745 #: modules/bibcirculation/lib/bibcirculation_templates.py:14844 msgid "Library information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14888 #: modules/bibcirculation/lib/bibcirculation_templates.py:15759 msgid "The information has been updated." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:14983 msgid "0 libraries found." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15120 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5432 msgid "Library details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15129 msgid "Duplicated library?" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15193 msgid "Notes about library" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15327 #: modules/bibcirculation/lib/bibcirculation_templates.py:15396 msgid "New vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15440 msgid "A new vendor has been registered." msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15477 #: modules/bibcirculation/lib/bibcirculation_templates.py:15796 msgid "Search vendor by" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15540 #: modules/bibcirculation/lib/bibcirculation_templates.py:15863 msgid "Vendor(s)" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15645 #: modules/bibcirculation/lib/bibcirculation_templates.py:15716 msgid "Vendor information" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15926 #: modules/bibcirculation/lib/bibcirculation_templates.py:16015 msgid "Notes about this vendor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:15969 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5946 msgid "Vendor details" msgstr "" #: modules/bibcirculation/lib/bibcirculation_templates.py:16054 msgid "Add notes" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:401 msgid "This book has been sent to you:" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:428 msgid "Editor" msgstr "" #: modules/bibcirculation/lib/bibcirculation_utils.py:511 msgid "List of pending hold requests" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:124 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:169 msgid "You are not authorized to use loans." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:133 #: modules/websession/lib/websession_templates.py:636 #: modules/websession/lib/websession_templates.py:765 msgid "Your Loans" msgstr "امانت های شما" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:242 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:297 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:382 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:466 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:525 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:577 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:676 #: modules/bibcirculation/lib/bibcirculation_webinterface.py:755 msgid "You are not authorized to use ill." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:534 msgid "Interlibrary loan request for articles" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:606 msgid "Wrong user id" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:687 msgid "Purchase request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:760 msgid "" "Payment method information is mandatory. Please, type your " "budget code or tick the 'cash' checkbox." msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:797 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4816 msgid "Your book purchase request" msgstr "" #: modules/bibcirculation/lib/bibcirculation_webinterface.py:853 #: modules/webcomment/lib/webcomment.py:1861 #: modules/webcomment/lib/webcomment_templates.py:199 #: modules/webcomment/lib/webcomment_templates.py:2511 #: modules/websearch/lib/search_engine.py:4668 #: modules/websearch/lib/search_engine.py:5037 #: modules/websearch/lib/search_engine.py:5230 #: modules/websearch/lib/search_engine.py:5253 #: modules/websearch/lib/search_engine.py:5261 #: modules/websearch/lib/search_engine.py:5269 #: modules/websearch/lib/search_engine.py:5315 msgid "The record has been deleted." msgstr "رکورد حذف شده است." #: modules/bibcirculation/lib/bibcirculation_webinterface.py:855 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3146 #: modules/bibdocfile/lib/bibdocfile_webinterface.py:102 #: modules/bibdocfile/lib/bibdocfile_webinterface.py:146 #: modules/websearch/lib/search_engine.py:2223 #: modules/websearch/lib/search_engine.py:2232 #: modules/websearch/lib/search_engine.py:5891 #: modules/websearch/lib/search_engine.py:5953 #: modules/websearch/lib/search_engine.py:6044 msgid "Requested record does not seem to exist." msgstr "رکورد درخواست شده بنظر نمی رسد وجود داشته باشد." #: modules/bibcirculation/lib/bibcirculationadminlib.py:197 msgid "BibCirculation Admin" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:236 #, fuzzy msgid "Empty string. Please, try again." msgstr "لطفا دوباره تلاش کنید." #: modules/bibcirculation/lib/bibcirculationadminlib.py:245 #: modules/bibcirculation/lib/bibcirculationadminlib.py:490 msgid "Loan on desk" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:282 #: modules/bibcirculation/lib/bibcirculationadminlib.py:318 #: modules/bibcirculation/lib/bibcirculationadminlib.py:428 #: modules/bibcirculation/lib/bibcirculationadminlib.py:516 #: modules/bibcirculation/lib/bibcirculationadminlib.py:547 msgid "Circulation management" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:367 #: modules/bibcirculation/lib/bibcirculationadminlib.py:644 #: modules/bibcirculation/lib/bibcirculationadminlib.py:882 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1876 #, python-format msgid "" "%(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s Unknown barcode." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:367 #: modules/bibcirculation/lib/bibcirculationadminlib.py:413 #: modules/bibcirculation/lib/bibcirculationadminlib.py:644 #: modules/bibcirculation/lib/bibcirculationadminlib.py:882 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1094 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1398 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1638 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1876 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3128 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3199 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3984 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4137 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4367 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4458 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4689 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5668 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5881 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6072 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6272 #, fuzzy msgid "Please, try again." msgstr "لطفا دوباره تلاش کنید." #: modules/bibcirculation/lib/bibcirculationadminlib.py:377 #, fuzzy msgid "You must select one borrower." msgstr "شما باید یک نمره را انتخاب کنید." #: modules/bibcirculation/lib/bibcirculationadminlib.py:393 #, python-format msgid "" "%(x_strong_tag_open)sWARNING:%(x_strong_tag_close)s Note that item " "%(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s status is " "%(x_strong_tag_open)s%(x_status)s%(x_strong_tag_close)s" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:401 #: modules/bibcirculation/lib/bibcirculationadminlib.py:898 #, python-format msgid "" "%(x_strong_tag_open)sWARNING:%(x_strong_tag_close)s Note that item " "%(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s location is " "%(x_strong_tag_open)s%(x_location)s%(x_strong_tag_close)s" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:405 #, python-format msgid "" "Another user is waiting for the book: %(x_strong_tag_open)s%(x_title)s" "%(x_strong_tag_close)s. \n" "\n" " If you want continue with this loan choose " "%(x_strong_tag_open)s[Continue]%(x_strong_tag_close)s." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:413 msgid "Empty barcode." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:483 #, python-format msgid "" "The items with barcode %(x_strong_tag_open)s%(x_barcode)s" "%(x_strong_tag_close)s are already on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:501 #, python-format msgid "" "The given due date %(x_strong_tag_open)s%(x_date)s%(x_strong_tag_close)s is " "not a valid date or date format" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:543 #, python-format msgid "" "A loan for the item %(x_strong_tag_open)s%(x_title)s%(x_strong_tag_close)s, " "with barcode %(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s, has " "been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:544 msgid "You could enter the barcode for this user's next loan, if any." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:587 msgid "Loan on desk confirm" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:655 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1884 #, python-format msgid "" "The item with the barcode %(x_strong_tag_open)s%(x_barcode)s" "%(x_strong_tag_close)s is on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:665 #, python-format msgid "" "The given barcode \"%(x_barcode)s\" does not correspond to requested item." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:704 #: modules/bibcirculation/lib/bibcirculationadminlib.py:799 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1902 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1976 msgid "A new loan has been registered with success." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:706 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1901 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1989 #, fuzzy msgid "Current loans" msgstr "امانت های شما" #: modules/bibcirculation/lib/bibcirculationadminlib.py:821 msgid "New Loan" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:852 #: modules/bibcirculation/lib/bibcirculationadminlib.py:925 msgid "Loan return" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:886 #, python-format msgid "" "The item the with barcode %(x_strong_tag_open)s%(x_barcode)s" "%(x_strong_tag_close)s is not on loan. Please, try again." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:971 msgid "Claim return" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1086 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1196 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1265 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2776 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2831 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3096 #, fuzzy msgid "Item search" msgstr "اجرای جستجو" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1094 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1398 #: modules/bibcirculation/lib/bibcirculationadminlib.py:1638 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3128 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3984 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4137 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4367 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4458 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4689 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5668 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6072 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6272 msgid "Empty string." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1275 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4143 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4505 #, python-format msgid "" "The period of interest %(x_strong_tag_open)sFrom: %(x_date)s" "%(x_strong_tag_close)s is not a valid date or date format" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1293 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4153 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4512 #, python-format msgid "" "The period of interest %(x_strong_tag_open)sTo: %(x_date)s" "%(x_strong_tag_close)s is not a valid date or date format" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1542 #, python-format msgid "" "Item with barcode %(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s " "is already on loan." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1634 msgid "Empty borrower ID." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1646 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3136 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4377 #, python-format msgid "" "The barcode %(x_strong_tag_open)s%(x_barcode)s%(x_strong_tag_close)s does " "not exist on BibCirculation database." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:1947 #, fuzzy msgid "List of hold requests" msgstr "ثبت درخواست کتاب" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2308 #, fuzzy msgid "Record id not valid" msgstr "رکورد یافت نشد" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2419 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2450 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3569 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3575 msgid "Loan renewed with success." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2431 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3544 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3588 #: modules/webbasket/lib/webbasket_templates.py:1862 #: modules/webcomment/lib/webcomment_templates.py:253 #: modules/webcomment/lib/webcomment_templates.py:715 #: modules/webcomment/lib/webcomment_templates.py:2114 #: modules/webcomment/lib/webcomment_templates.py:2138 #: modules/webcomment/lib/webcomment_templates.py:2164 #: modules/webmessage/lib/webmessage_templates.py:508 #: modules/websession/lib/websession_templates.py:2403 #: modules/websession/lib/websession_templates.py:2443 msgid "Yes" msgstr "بله" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2436 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3549 #: modules/webalert/lib/webalert_templates.py:318 #: modules/webcomment/lib/webcomment_templates.py:254 #: modules/webcomment/lib/webcomment_templates.py:717 #: modules/webcomment/lib/webcomment_templates.py:2114 #: modules/webcomment/lib/webcomment_templates.py:2138 #: modules/webcomment/lib/webcomment_templates.py:2164 #: modules/webmessage/lib/webmessage_templates.py:509 #: modules/websession/lib/websession_templates.py:2404 #: modules/websession/lib/websession_templates.py:2444 msgid "No" msgstr "نه" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2440 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3558 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3592 #, python-format msgid "" "Another user is waiting for this book %(x_strong_tag_open)s%(x_title)s" "%(x_strong_tag_close)s." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2442 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3560 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3594 msgid "Do you want renew this loan anyway?" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2463 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3617 #, fuzzy msgid "Loans details" msgstr "جزئیات درخواست" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2498 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2532 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3652 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3687 #, fuzzy msgid "historical overview" msgstr "نمای کلی نتایج" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2655 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2727 #, python-format msgid "The given barcode %s is already in use." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2665 msgid "The given barcode is empty." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2678 msgid "The status selected does not accept tamporary barcodes." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2762 #, fuzzy msgid "Do you really want to delete this copy of the book?" msgstr "آیا مطمئن هستند که می خواهید این گروه را حذف کنید؟" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2774 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2829 #, python-format msgid "The barcode %s was not found" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2803 #, python-format msgid "The copy with barcode %s has been deleted." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2805 #, python-format msgid "It was NOT possible to delete the copy with barcode %s" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2862 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2917 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2957 #: modules/bibcirculation/lib/bibcirculationadminlib.py:2990 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3064 #, fuzzy msgid "Update item information" msgstr "اطلاعات کلی" #: modules/bibcirculation/lib/bibcirculationadminlib.py:2948 #, python-format msgid "Barcode %s not found" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3025 #, python-format msgid "" "Item [%s] updated, but the status was not modified" "strong>." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3037 #, python-format msgid "" "Item [%s] updated, but the barcode was not " "modified because it is already in use." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3040 #, python-format msgid "" "Item [%s] updated to [%s] with success." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3042 #, python-format msgid "" "Item [%s] updated, but the barcode was not " "modified because it was not found (!?)." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3162 #, fuzzy msgid "Item search result" msgstr "بازگشت به نتایج جستجو" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3199 #, fuzzy msgid "Borrower not found." msgstr "صفحه پیدا نشد" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3254 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3303 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3362 #, fuzzy msgid "Add new borrower" msgstr "افزودن کتابخانه جدید" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3284 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3420 #, fuzzy msgid "Please, insert a name" msgstr "لطفا نام یک گروه را وارد کنید." #: modules/bibcirculation/lib/bibcirculationadminlib.py:3287 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3423 msgid "Please, insert a valid email address" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3291 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3427 #, fuzzy msgid "There is already a borrower using the following email:" msgstr "این صفحه در زبان های زیر نیز قابل دسترسی است:" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3396 #: modules/bibcirculation/lib/bibcirculationadminlib.py:3447 #, fuzzy msgid "Update borrower information" msgstr "اطلاعات کلی" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3489 #, fuzzy msgid "Hold requests details" msgstr "جزئیات درخواست" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3604 msgid "All loans renewed with success." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3727 #, fuzzy msgid "ILL details" msgstr "جزئیات درخواست" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3759 msgid "ILL historical overview" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3906 #, fuzzy msgid "Borrower notes" msgstr "نظرهای امانت گیرنده" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3948 #, fuzzy msgid "New Request" msgstr "درخواست های شما" #: modules/bibcirculation/lib/bibcirculationadminlib.py:3950 #, fuzzy msgid "Borrower Search" msgstr "جستجوهای شما" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4008 #, fuzzy msgid "Borrower search result" msgstr "بازگشت به نتایج جستجو" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4058 msgid "This ILL has been created from a proposal." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4061 msgid "An ILL has been created for the user." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4063 msgid "An active ILL already exists for this user on this record." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4065 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4067 msgid "Could not create an ILL from the proposal" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4071 #, fuzzy msgid "ILL requests" msgstr "درخواست های در حال انتظار" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4103 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4198 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4247 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4292 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4478 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4538 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4702 #, fuzzy msgid "Register ILL request" msgstr "ثبت درخواست کتاب" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4286 msgid "Request not registered: wrong borrower id" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4336 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4404 #, fuzzy msgid "Register ILL Book request" msgstr "ثبت درخواست کتاب" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4432 #, fuzzy msgid "Register ILL Article request" msgstr "ثبت مقاله" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4679 #: modules/bibcirculation/lib/bibcirculationadminlib.py:4778 msgid "" "Payment method information is mandatory. Please, " "type your budget code or tick the 'cash' checkbox." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4867 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5005 #, fuzzy msgid "Borrower request details not found." msgstr "فایل درخواستی پیدا نشد" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4871 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5009 #, fuzzy msgid "Request not found." msgstr "شماره پیدا نشد" #: modules/bibcirculation/lib/bibcirculationadminlib.py:4954 msgid "ILL received: " msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5024 #, fuzzy msgid "Purchase details" msgstr "خرید" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5088 msgid "Book suggestion accepted: " msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5092 msgid "Book suggestion refused: " msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5131 msgid "Purchase received: " msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5206 #, fuzzy msgid "ILL notes" msgstr "افزودن یادداشت ها" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5231 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5380 #, fuzzy msgid "List of ILL requests" msgstr "ثبت درخواست کتاب" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5260 #, fuzzy msgid "List of purchase requests" msgstr "سیاهه سبدهای عمومی" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5284 msgid "List of requests on put aside proposals" msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5288 #, fuzzy msgid "List of proposals" msgstr "سیاهه کتاب های سفارش شده" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5319 #, fuzzy msgid "ILL search" msgstr "جستجو" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5423 #, fuzzy msgid "Library ID not found." msgstr "یادداشت های کتابخانه " #: modules/bibcirculation/lib/bibcirculationadminlib.py:5482 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5523 #, fuzzy msgid "Merge libraries" msgstr "کتابخانه ها" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5648 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5685 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5717 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5746 #: modules/bibcirculation/lib/bibcirculationadminlib.py:5776 #, fuzzy msgid "Update library information" msgstr "اطلاعات کلی" #: modules/bibcirculation/lib/bibcirculationadminlib.py:5881 msgid "Emptry string." msgstr "" #: modules/bibcirculation/lib/bibcirculationadminlib.py:6052 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6092 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6123 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6151 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6178 #, fuzzy msgid "Update vendor information" msgstr "اطلاعات کلی" #: modules/bibcirculation/lib/bibcirculationadminlib.py:6219 #, fuzzy msgid "Vendor notes" msgstr "فروشندگان" #: modules/bibcirculation/lib/bibcirculationadminlib.py:6246 #: modules/bibcirculation/lib/bibcirculationadminlib.py:6290 #, fuzzy msgid "Search vendor" msgstr "جستجوی سبدها برای" #: modules/bibclassify/lib/bibclassify_templates.py:128 #: modules/bibclassify/lib/bibclassify_templates.py:187 msgid "" "Automatically generated single, " "composite, author, and other " "keywords." msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:233 msgid "Automated keyword extraction wasn't run for this document yet." msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:233 #, fuzzy msgid "Generate keywords" msgstr "کلیدواژه های تکراری" #: modules/bibclassify/lib/bibclassify_templates.py:245 msgid "There are no suitable keywords for display in this record." msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:289 msgid "Show more..." msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:320 #, python-format msgid "Unweighted %s keywords:" msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:326 #, python-format msgid "Weighted %s keywords:" msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:365 #: modules/websearch/lib/websearchadminlib.py:3457 msgid "Keywords" msgstr "کلیدواژه ها" #: modules/bibclassify/lib/bibclassify_templates.py:367 msgid "tag cloud" msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:368 msgid "list" msgstr "" #: modules/bibclassify/lib/bibclassify_templates.py:369 msgid "XML" msgstr "" #: modules/bibclassify/lib/bibclassify_webinterface.py:141 #, python-format msgid "Unknown type: %s" msgstr "" #: modules/bibclassify/lib/bibclassify_webinterface.py:236 msgid "The site settings do not allow automatic keyword extraction" msgstr "" #: modules/bibclassify/lib/bibclassify_webinterface.py:258 msgid "" "We have registered your request, the automatedkeyword extraction will run " "after some time. Please return back in a while." msgstr "" #: modules/bibclassify/lib/bibclassify_webinterface.py:263 msgid "" "Unfortunately, we don't have a PDF fulltext for this record in the " "storage, keywords cannot be generated using an automated " "process." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:396 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:463 msgid "Choose a file" msgstr "انتخاب یک فایل" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:402 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:347 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:401 #: modules/webcomment/lib/webcomment_templates.py:1025 #: modules/webcomment/lib/webcomment_templates.py:1343 #: modules/webcomment/lib/webcomment_templates.py:1791 #: modules/webcomment/lib/webcomment_templates.py:2028 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:475 #: modules/websubmit/lib/websubmit_templates.py:2505 msgid "Comment" msgstr "نظر" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:404 #: modules/websubmit/lib/functions/Create_Upload_Files_Interface.py:479 msgid "Access" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:558 msgid "" "The file you want to edit is protected against modifications. Your action " "has not been applied" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:577 #, python-format msgid "" "The uploaded file is too small (<%i o) and has therefore not been considered" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:582 #, python-format msgid "" "The uploaded file is too big (>%i o) and has therefore not been considered" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:589 msgid "" "The uploaded file name is too long and has therefore not been considered" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:601 msgid "" "You have already reached the maximum number of files for this type of " "document" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:624 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:635 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:747 #, python-format msgid "A file named %s already exists. Please choose another name." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:646 #, python-format msgid "A file with format '%s' already exists. Please upload another format." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:654 #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:754 msgid "" "You are not allowed to use dot '.', slash '/', or backslash '\\\\' in file " "names. Choose a different name and upload your file again. In particular, " "note that you should not include the extension in the renaming field." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:834 msgid "Choose how you want to restrict access to this file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:873 msgid "Add new file" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:898 msgid "You can decide to hide or not previous version(s) of this file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:899 msgid "" "When you revise a file, the additional formats that you might have " "previously uploaded are removed, since they no longer up-to-date with the " "new file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:900 msgid "" "Alternative formats uploaded for current version of this file will be removed" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:901 msgid "Keep previous versions" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:903 #: modules/bibknowledge/lib/bibknowledge_templates.py:207 msgid "Upload" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:904 msgid "Uploading..." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:905 #, fuzzy msgid "Please wait..." msgstr "لطفا دوباره تلاش کنید." #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:918 #: modules/bibdocfile/lib/bibdocfile_webinterface.py:465 #: modules/bibedit/lib/bibeditmulti_templates.py:362 #: modules/oaiharvest/lib/oai_harvest_admin.py:1192 msgid "Apply changes" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:923 #, python-format msgid "Need help revising or adding files to record %(recid)s" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:925 #, python-format msgid "" "Dear Support,\n" "I would need help to revise or add a file to record %(recid)s.\n" "I have attached the new version to this email.\n" "Best regards" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:930 #, python-format msgid "" "Having a problem revising a file? Send the revised version to " "%(mailto_link)s." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:933 #, python-format msgid "" "Having a problem adding or revising a file? Send the new/revised version to " "%(mailto_link)s." msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:1059 msgid "revise" msgstr "" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:1075 #: modules/oaiharvest/lib/oai_harvest_admin.py:109 #: modules/oaiharvest/lib/oai_harvest_templates.py:605 msgid "delete" msgstr "حذف" #: modules/bibdocfile/lib/bibdocfile_managedocfiles.py:1118 msgid "add format" msgstr "" #: modules/bibdocfile/lib/bibdocfile_templates.py:185 msgid "file(s)" msgstr "" #: modules/bibdocfile/lib/bibdocfile_templates.py:305 #: modules/webstyle/lib/webstyle_templates.py:807 msgid "Restricted" msgstr "" #: modules/bibdocfile/lib/bibdocfile_templates.py:310 msgid "see" msgstr "" #: modules/bibdocfile/lib/bibdocfile_templates.py:315 #: modules/bibedit/lib/bibeditmulti_templates.py:737 #: modules/websearch/lib/websearch_templates.py:2695 #: modules/websearch/lib/websearch_templates.py:2885 msgid "previous" msgstr "قبلی" #: modules/bibdocfile/lib/bibdocfile_templates.py:327 msgid "version" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:106 msgid "Requested record does not seem to have been integrated." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:140 msgid "" "The system has encountered an error in retrieving the list of files for this " "document." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:141 #: modules/websession/lib/websession_webinterface.py:1053 msgid "" "The error has been logged and will be taken in consideration as soon as " "possible." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:202 #, python-format msgid "The format %s does not exist for the given version: %s" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:216 msgid "This file is restricted: " msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:228 msgid "An error has happened in trying to stream the request file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:231 msgid "The requested file is hidden and can not be accessed." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:238 msgid "Requested file does not seem to exist." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:275 msgid "Access to Fulltext" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:324 msgid "An error has happened in trying to retrieve the requested file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:326 msgid "Not enough information to retrieve the document" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:334 msgid "An error has happened in trying to retrieving the requested file." msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:382 msgid "Manage Document Files" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:407 #, python-format msgid "Your modifications to record #%i have been submitted" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:415 #, python-format msgid "Your modifications to record #%i have been cancelled" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:424 msgid "Edit" msgstr "ویرایش" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:425 #: modules/websearch/lib/websearch_templates.py:3666 msgid "Edit record" msgstr "ویرایش رکورد" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:441 #: modules/bibdocfile/lib/bibdocfile_webinterface.py:475 msgid "Document File Manager" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:442 #: modules/bibdocfile/lib/bibdocfile_webinterface.py:475 #, python-format msgid "Record #%i" msgstr "" #: modules/bibdocfile/lib/bibdocfile_webinterface.py:466 msgid "Cancel all changes" msgstr "لغو همه تغییرات" #: modules/bibedit/lib/bibedit_templates.py:311 msgid "Comparison of:" msgstr "" #: modules/bibedit/lib/bibedit_templates.py:312 msgid "Revision" msgstr "بازنگری" #: modules/bibedit/lib/bibedit_webinterface.py:190 msgid "Comparing two record revisions" msgstr "" #: modules/bibedit/lib/bibedit_webinterface.py:214 msgid "Failed to create a ticket" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:355 msgid "Search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:356 msgid "Output tags" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:357 msgid "Filter collection" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:358 msgid "1. Choose search criteria" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:359 msgid "" "Specify the criteria you'd like to use for filtering records that will be " "changed. Use \"Search\" to see which records would have been filtered using " "these criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:361 msgid "Preview results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:613 msgid "2. Define changes" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:614 msgid "" "Specify fields and their subfields that should be changed in every record " "matching the search criteria." msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:615 msgid "Define new field action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:616 msgid "Define new subfield action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:617 msgid "Add new condition value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:618 #, fuzzy msgid "Remove this condition value" msgstr "پاک کردن این مجموعه" #: modules/bibedit/lib/bibeditmulti_templates.py:619 #: modules/webalert/lib/webalert_templates.py:77 msgid "Field" msgstr "فیلد" #: modules/bibedit/lib/bibeditmulti_templates.py:620 msgid "Select action" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:621 msgid "Add field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:622 msgid "Delete field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:623 msgid "Update field" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:624 msgid "Add subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:625 msgid "Delete subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:626 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:260 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:402 #: modules/bibknowledge/lib/bibknowledge_templates.py:280 #: modules/bibknowledge/lib/bibknowledge_templates.py:528 msgid "Save" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:628 msgid "Replace substring" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:629 msgid "Replace full content" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:631 msgid "with" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:632 msgid "when subfield $$" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:633 msgid "new value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:634 msgid "is equal to" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:635 msgid "contains" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:636 #, fuzzy msgid "does not exist" msgstr "این پیام وجود ندارد." #: modules/bibedit/lib/bibeditmulti_templates.py:637 msgid "condition" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:638 msgid "when other subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:639 msgid "when subfield" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:640 msgid "Apply only to specific field instances" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:641 msgid "value" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:670 msgid "Back to Results" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:708 msgid "" "WARNING: The following records are pending execution " "in the task queue. If you proceed with the changes, " "the modifications made with other tool (e.g. BibEdit) " "to these records will be lost" msgstr "" #: modules/bibedit/lib/bibeditmulti_templates.py:736 #: modules/websearch/lib/websearch_templates.py:2690 #: modules/websearch/lib/websearch_templates.py:2880 msgid "begin" msgstr "شروع" #: modules/bibedit/lib/bibeditmulti_templates.py:738 #: modules/websearch/lib/websearch_templates.py:2061 #: modules/websearch/lib/websearch_templates.py:2707 #: modules/websearch/lib/websearch_templates.py:2897 msgid "next" msgstr "بعدی" #: modules/bibedit/lib/bibeditmulti_templates.py:784 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:571 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:590 msgid "records found" msgstr "" #: modules/bibedit/lib/bibeditmulti_webinterface.py:102 msgid "Multi-Record Editor" msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:116 #, python-format msgid "" "We are sorry, a problem has occured during the processing of your video " "upload%(submission_title)s." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:119 #: modules/bibencode/lib/bibencode_batch_engine.py:162 #, python-format msgid "The file you uploaded was %(input_filename)s." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:121 msgid "Your video might not be fully available until intervention." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:123 #, python-format msgid "You can check the status of your video here: %(record_url)s." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:125 #, python-format msgid "" "You might want to take a look at %(guidelines_url)s and modify or redo your " "submission." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:136 #: modules/bibencode/lib/bibencode_batch_engine.py:177 msgid "the video guidelines" msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:160 #, python-format msgid "Your video submission%(submission_title)s was successfully processed." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:164 #, python-format msgid "Your video is now available here: %(record_url)s." msgstr "" #: modules/bibencode/lib/bibencode_batch_engine.py:166 #, python-format msgid "" "If the videos quality is not as expected, you might want to take a look at " "%(guidelines_url)s and modify or redo your submission." msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter.py:500 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:515 #: modules/bibexport/lib/bibexport_method_fieldexporter.py:530 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:465 msgid "You are not authorised to access this resource." msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:116 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:132 msgid "Export Job Overview" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:117 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:189 msgid "New Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:118 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:443 msgid "Export Job History" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:174 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:195 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:323 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:534 msgid "Run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:176 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:325 msgid "New" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:196 msgid "Last run" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:256 msgid "Frequency" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:257 msgid "Output Format" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:258 msgid "Start" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:259 msgid "Output Directory" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:262 msgid "Edit Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:346 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:399 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:459 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:632 #: modules/webalert/lib/webalert_templates.py:325 msgid "Query" msgstr "عبارت جستجو" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:348 msgid "Output Fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:400 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:460 msgid "Output fields" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:438 #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:605 msgid "Download" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:439 msgid "View as: " msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:533 msgid "Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:588 msgid "Total" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:652 #: modules/webcomment/lib/webcomment_templates.py:2031 msgid "Select" msgstr "انتخاب" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:653 msgid "All" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:654 msgid "None" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:672 msgid "Manually" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:674 msgid "Daily" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:676 msgid "Weekly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_templates.py:678 msgid "Monthly" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:192 msgid "Edit Export Job" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:239 msgid "Query Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:246 msgid "Export Job Queries" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:320 msgid "New Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:325 msgid "Edit Query" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:356 msgid "Export Job Results" msgstr "" #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:389 #: modules/bibexport/lib/bibexport_method_fieldexporter_webinterface.py:423 msgid "Export Job Result" msgstr "" #: modules/bibformat/lib/bibformat_engine.py:271 #, python-format msgid "No template could be found for output format %s." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:618 #: modules/bibformat/lib/bibformat_engine.py:861 #: modules/bibformat/lib/bibformatadminlib.py:1554 #, python-format msgid "Could not find format element named %s." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:722 #, python-format msgid "Error when evaluating format element %s with parameters %s." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:759 #, python-format msgid "" "Escape mode for format element %s could not be retrieved. Using default mode " "instead." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:830 #, python-format msgid "\"nbMax\" parameter for %s must be an \"int\"." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:1055 #, python-format msgid "Could not read format template named %s. %s." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:1119 #, fuzzy, python-format msgid "Format element %s could not be found." msgstr "فایل درخواستی پیدا نشد" #: modules/bibformat/lib/bibformat_engine.py:1159 #, python-format msgid "Format element %s has no function named \"format\"." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:1485 #, fuzzy, python-format msgid "Output format with code %s could not be found." msgstr "فایل درخواستی پیدا نشد" #: modules/bibformat/lib/bibformat_engine.py:1696 #, python-format msgid "Could not find output format named %s." msgstr "" #: modules/bibformat/lib/bibformat_engine.py:1775 #, fuzzy, python-format msgid "Could not find a fresh name for output format %s." msgstr "عدم توانایی ایجاد قالب خروجی" #: modules/bibformat/lib/bibformat_engine_unit_tests.py:852 #: modules/bibformat/lib/bibformat_engine_unit_tests.py:883 #: modules/webcomment/lib/webcomment_templates.py:1011 #: modules/webcomment/lib/webcomment_templates.py:1787 #: modules/websearch/lib/websearch_templates.py:579 msgid "Record" msgstr "رکورد" #: modules/bibformat/lib/bibformat_templates.py:128 #: modules/bibformat/lib/bibformat_templates.py:237 #: modules/bibformat/lib/bibformat_templates.py:390 #: modules/bibformat/lib/bibformat_templates.py:727 #: modules/bibformat/lib/bibformat_templates.py:859 #: modules/bibformat/lib/bibformat_templates.py:1154 #: modules/bibformat/lib/bibformat_templates.py:1260 #: modules/bibformat/lib/bibformat_templates.py:1319 #: modules/bibknowledge/lib/bibknowledge_templates.py:327 #: modules/bibknowledge/lib/bibknowledge_templates.py:587 #: modules/bibknowledge/lib/bibknowledge_templates.py:656 #: modules/webcomment/lib/webcomment_templates.py:1619 #: modules/webjournal/lib/webjournal_templates.py:200 #: modules/webjournal/lib/webjournal_templates.py:572 #: modules/webjournal/lib/webjournal_templates.py:713 #: modules/weblinkback/lib/weblinkback_templates.py:278 msgid "Menu" msgstr "فهرست" #: modules/bibformat/lib/bibformat_templates.py:130 #: modules/bibformat/lib/bibformat_templates.py:238 #: modules/bibformat/lib/bibformat_templates.py:391 #: modules/bibknowledge/lib/bibknowledge_templates.py:323 #: modules/bibknowledge/lib/bibknowledge_templates.py:586 #: modules/bibknowledge/lib/bibknowledge_templates.py:655 msgid "Close Editor" msgstr "بستن ویرایشگر" #: modules/bibformat/lib/bibformat_templates.py:131 #: modules/bibformat/lib/bibformat_templates.py:239 #: modules/bibformat/lib/bibformat_templates.py:403 msgid "Modify Template Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:132 #: modules/bibformat/lib/bibformat_templates.py:240 #: modules/bibformat/lib/bibformat_templates.py:392 msgid "Template Editor" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:133 #: modules/bibformat/lib/bibformat_templates.py:241 #: modules/bibformat/lib/bibformat_templates.py:404 #: modules/bibformat/lib/bibformat_templates.py:975 #: modules/bibformat/lib/bibformat_templates.py:1153 #: modules/bibformat/lib/bibformat_templates.py:1259 msgid "Check Dependencies" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:199 msgid "Update Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:395 #: modules/websubmit/lib/websubmit_templates.py:842 msgid "Your modifications will not be saved." msgstr "" #: modules/bibformat/lib/bibformat_templates.py:427 msgid "Show Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:428 #: modules/bibformat/lib/bibformat_templates.py:473 msgid "Hide Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:729 #: modules/bibformat/lib/bibformat_templates.py:853 msgid "Last Modification Date" msgstr "تاریخ آخرین اصلاح" #: modules/bibformat/lib/bibformat_templates.py:730 #: modules/bibformat/lib/bibformat_templates.py:854 #: modules/bibknowledge/lib/bibknowledge_templates.py:81 #: modules/webalert/lib/webalert_templates.py:326 #: modules/webalert/lib/webalert_templates.py:463 #: modules/webmessage/lib/webmessage_templates.py:89 #: modules/websubmit/lib/websubmit_templates.py:1266 msgid "Action" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:732 #: modules/bibformat/lib/bibformat_templates.py:856 #: modules/bibformat/lib/bibformat_templates.py:1320 #: modules/bibformat/web/admin/bibformatadmin.py:108 #: modules/bibformat/web/admin/bibformatadmin.py:171 #: modules/bibformat/web/admin/bibformatadmin.py:245 #: modules/bibformat/web/admin/bibformatadmin.py:295 #: modules/bibformat/web/admin/bibformatadmin.py:393 #: modules/bibformat/web/admin/bibformatadmin.py:1009 msgid "Manage Output Formats" msgstr "مدیریت قالب های خروجی" #: modules/bibformat/lib/bibformat_templates.py:733 #: modules/bibformat/lib/bibformat_templates.py:857 #: modules/bibformat/lib/bibformat_templates.py:1321 #: modules/bibformat/web/admin/bibformatadmin.py:474 #: modules/bibformat/web/admin/bibformatadmin.py:509 #: modules/bibformat/web/admin/bibformatadmin.py:583 #: modules/bibformat/web/admin/bibformatadmin.py:631 #: modules/bibformat/web/admin/bibformatadmin.py:705 #: modules/bibformat/web/admin/bibformatadmin.py:1031 msgid "Manage Format Templates" msgstr "مدیریت اگلوهای قالب بندی" #: modules/bibformat/lib/bibformat_templates.py:734 #: modules/bibformat/lib/bibformat_templates.py:858 #: modules/bibformat/lib/bibformat_templates.py:1322 #: modules/bibformat/web/admin/bibformatadmin.py:898 #: modules/bibformat/web/admin/bibformatadmin.py:922 #: modules/bibformat/web/admin/bibformatadmin.py:957 #: modules/bibformat/web/admin/bibformatadmin.py:1050 msgid "Format Elements Documentation" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:809 msgid "Add New Format Template" msgstr "فزودن الگوی قالب بندی جدید" #: modules/bibformat/lib/bibformat_templates.py:810 msgid "Check Format Templates Extensively" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:849 msgid "Code" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:932 msgid "Add New Output Format" msgstr "افزودن قالب خروجی جدید" #: modules/bibformat/lib/bibformat_templates.py:971 msgid "menu" msgstr "فهرست" #: modules/bibformat/lib/bibformat_templates.py:972 #: modules/bibformat/lib/bibformat_templates.py:1150 #: modules/bibformat/lib/bibformat_templates.py:1256 msgid "Close Output Format" msgstr "بستن قالب خروجی جدید" #: modules/bibformat/lib/bibformat_templates.py:973 #: modules/bibformat/lib/bibformat_templates.py:1151 #: modules/bibformat/lib/bibformat_templates.py:1257 msgid "Rules" msgstr "قوانین" #: modules/bibformat/lib/bibformat_templates.py:974 #: modules/bibformat/lib/bibformat_templates.py:1152 #: modules/bibformat/lib/bibformat_templates.py:1258 msgid "Modify Output Format Attributes" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1062 #: modules/bibformat/lib/bibformatadminlib.py:565 msgid "Remove Rule" msgstr "حذف قوانین" #: modules/bibformat/lib/bibformat_templates.py:1104 #: modules/bibformat/lib/bibformatadminlib.py:572 msgid "Add New Rule" msgstr "افزودن قانون جدید" #: modules/bibformat/lib/bibformat_templates.py:1105 #: modules/bibformat/lib/bibformatadminlib.py:569 msgid "Save Changes" msgstr "ذخیره تغییرات" #: modules/bibformat/lib/bibformat_templates.py:1679 msgid "No problem found with format" msgstr "" #: modules/bibformat/lib/bibformat_templates.py:1681 msgid "An error has been found" msgstr "یک خطا پیدا شده است" #: modules/bibformat/lib/bibformat_templates.py:1683 msgid "The following errors have been found" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:62 #: modules/bibformat/web/admin/bibformatadmin.py:77 msgid "BibFormat Admin" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:354 #: modules/bibformat/lib/bibformatadminlib.py:393 #: modules/bibformat/lib/bibformatadminlib.py:395 msgid "Test with record:" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:355 msgid "Enter a search query here." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:406 #, fuzzy, python-format msgid "No Record Found for %s." msgstr "رکورد یافت نشد" #: modules/bibformat/lib/bibformatadminlib.py:1279 #, python-format msgid "Tag specification \"%s\" must end with column \":\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1286 #, python-format msgid "Tag specification \"%s\" must start with \"tag\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1293 #, python-format msgid "\"tag\" must be lowercase in \"%s\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1303 #: modules/bibformat/lib/bibformatadminlib.py:1317 #, python-format msgid "Should be \"tag field_number:\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1311 #, python-format msgid "Invalid tag \"%s\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1326 #, python-format msgid "Condition \"%s\" is outside a tag specification at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1334 #, python-format msgid "Condition \"%s\" can only have a single separator --- at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1342 #: modules/bibformat/lib/bibformatadminlib.py:1375 #, python-format msgid "Template \"%s\" does not exist at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1353 #, python-format msgid "Missing column \":\" after \"default\" in \"%s\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1360 #, python-format msgid "" "Default template specification \"%s\" must start with \"default :\" at line " "%s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1367 #, python-format msgid "\"default\" keyword must be lowercase in \"%s\" at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1383 #, python-format msgid "Line %s could not be understood at line %s." msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1389 #: modules/bibformat/web/admin/bibformatadmin.py:187 #: modules/bibformat/web/admin/bibformatadmin.py:258 #: modules/bibformat/web/admin/bibformatadmin.py:308 #: modules/bibformat/web/admin/bibformatadmin.py:1013 #, python-format msgid "Output format %s cannot not be read. %s" msgstr "" #: modules/bibformat/lib/bibformatadminlib.py:1418 #, python-format msgid "" "Could not find a name specified in tag \"No match close to %s found in given collections. #Please try different term.
Displaying matches in any collection...""" % p_orig)
## try to get nbhits for these phrases in any collection:
for phrase in browsed_phrases:
nbhits = get_nbhits_in_bibxxx(phrase, f, coll_hitset)
if nbhits > 0:
browsed_phrases_in_colls.append([phrase, nbhits])
return browsed_phrases_in_colls
def browse_pattern(req, colls, p, f, rg, ln=CFG_SITE_LANG):
"""Displays either biliographic phrases or words indexes."""
# load the right message language
_ = gettext_set_language(ln)
browsed_phrases_in_colls = browse_pattern_phrases(req, colls, p, f, rg, ln)
if len(browsed_phrases_in_colls) == 0:
req.write(_("No values found."))
return
## display results now:
out = websearch_templates.tmpl_browse_pattern(
f=f,
fn=get_field_i18nname(get_field_name(f) or f, ln, False),
ln=ln,
browsed_phrases_in_colls=browsed_phrases_in_colls,
colls=colls,
rg=rg,
)
req.write(out)
return
def browse_in_bibwords(req, p, f, ln=CFG_SITE_LANG):
"""Browse inside words indexes."""
if not p:
return
_ = gettext_set_language(ln)
urlargd = {}
urlargd.update(req.argd)
urlargd['action'] = 'search'
nearest_box = create_nearest_terms_box(urlargd, p, f, 'w', ln=ln, intro_text_p=0)
req.write(websearch_templates.tmpl_search_in_bibwords(
p = p,
f = f,
ln = ln,
nearest_box = nearest_box
))
return
def search_pattern(req=None, p=None, f=None, m=None, ap=0, of="id", verbose=0, ln=CFG_SITE_LANG, display_nearest_terms_box=True, wl=0):
"""Search for complex pattern 'p' within field 'f' according to
matching type 'm'. Return hitset of recIDs.
The function uses multi-stage searching algorithm in case of no
exact match found. See the Search Internals document for
detailed description.
The 'ap' argument governs whether an alternative patterns are to
be used in case there is no direct hit for (p,f,m). For
example, whether to replace non-alphanumeric characters by
spaces if it would give some hits. See the Search Internals
document for detailed description. (ap=0 forbits the
alternative pattern usage, ap=1 permits it.)
'ap' is also internally used for allowing hidden tag search
(for requests coming from webcoll, for example). In this
case ap=-9
The 'of' argument governs whether to print or not some
information to the user in case of no match found. (Usually it
prints the information in case of HTML formats, otherwise it's
silent).
The 'verbose' argument controls the level of debugging information
to be printed (0=least, 9=most).
All the parameters are assumed to have been previously washed.
This function is suitable as a mid-level API.
"""
_ = gettext_set_language(ln)
hitset_empty = intbitset()
# sanity check:
if not p:
hitset_full = intbitset(trailing_bits=1)
hitset_full.discard(0)
# no pattern, so return all universe
return hitset_full
# search stage 1: break up arguments into basic search units:
if verbose and of.startswith("h"):
t1 = os.times()[4]
basic_search_units = create_basic_search_units(req, p, f, m, of)
if verbose and of.startswith("h"):
t2 = os.times()[4]
write_warning("Search stage 1: basic search units are: %s" % cgi.escape(repr(basic_search_units)), req=req)
write_warning("Search stage 1: execution took %.2f seconds." % (t2 - t1), req=req)
# search stage 2: do search for each search unit and verify hit presence:
if verbose and of.startswith("h"):
t1 = os.times()[4]
basic_search_units_hitsets = []
#prepare hiddenfield-related..
myhiddens = cfg['CFG_BIBFORMAT_HIDDEN_TAGS']
can_see_hidden = False
if req:
user_info = collect_user_info(req)
can_see_hidden = user_info.get('precached_canseehiddenmarctags', False)
if not req and ap == -9: # special request, coming from webcoll
can_see_hidden = True
if can_see_hidden:
myhiddens = []
if CFG_INSPIRE_SITE and of.startswith('h'):
# fulltext/caption search warnings for INSPIRE:
fields_to_be_searched = [f for dummy_o, p, f, m in basic_search_units]
if 'fulltext' in fields_to_be_searched:
write_warning(_("Full-text search is currently available for all arXiv papers, many theses, a few report series and some journal articles"), req=req)
elif 'caption' in fields_to_be_searched:
write_warning(_("Warning: figure caption search is only available for a subset of papers mostly from %(x_range_from_year)s-%(x_range_to_year)s.") %
{'x_range_from_year': '2008',
'x_range_to_year': '2012'}, req=req)
for idx_unit in xrange(len(basic_search_units)):
bsu_o, bsu_p, bsu_f, bsu_m = basic_search_units[idx_unit]
if bsu_f and len(bsu_f) < 2:
if of.startswith("h"):
write_warning(_("There is no index %(x_name)s. Searching for %(x_text)s in all fields.", x_name=bsu_f, x_text=bsu_p), req=req)
bsu_f = ''
bsu_m = 'w'
if of.startswith("h") and verbose:
write_warning(_('Instead searching %(x_name)s.', x_name=str([bsu_o, bsu_p, bsu_f, bsu_m])), req=req)
try:
basic_search_unit_hitset = search_unit(bsu_p, bsu_f, bsu_m, wl)
except InvenioWebSearchWildcardLimitError as excp:
basic_search_unit_hitset = excp.res
if of.startswith("h"):
write_warning(_("Search term too generic, displaying only partial results..."), req=req)
except InvenioWebSearchReferstoLimitError, excp:
basic_search_unit_hitset = excp.res
if of.startswith("h"):
write_warning(_("Search term after reference operator too generic, displaying only partial results..."), req=req)
except InvenioWebSearchCitedbyLimitError, excp:
basic_search_unit_hitset = excp.res
if of.startswith("h"):
write_warning(_("Search term after citedby operator too generic, displaying only partial results..."), req=req)
# FIXME: print warning if we use native full-text indexing
if bsu_f == 'fulltext' and bsu_m != 'w' and of.startswith('h') and not CFG_SOLR_URL:
write_warning(_("No phrase index available for fulltext yet, looking for word combination..."), req=req)
#check that the user is allowed to search with this tag
#if he/she tries it
if bsu_f and len(bsu_f) > 1 and bsu_f[0].isdigit() and bsu_f[1].isdigit():
for htag in myhiddens:
ltag = len(htag)
samelenfield = bsu_f[0:ltag]
if samelenfield == htag: #user searches by a hidden tag
#we won't show you anything..
basic_search_unit_hitset = intbitset()
if verbose >= 9 and of.startswith("h"):
write_warning("Pattern %s hitlist omitted since \
it queries in a hidden tag %s" %
(cgi.escape(repr(bsu_p)), repr(myhiddens)), req=req)
display_nearest_terms_box = False #..and stop spying, too.
if verbose >= 9 and of.startswith("h"):
write_warning("Search stage 1: pattern %s gave hitlist %s" % (cgi.escape(bsu_p), basic_search_unit_hitset), req=req)
if len(basic_search_unit_hitset) > 0 or \
ap<1 or \
bsu_o in ("|", "-") or \
((idx_unit+1) Date: %d " % yyyymmdd)
req.write("""
No results found."
if search_timed_out:
return "
The search engine did not respond in time."
return websearch_templates.tmpl_print_hosted_results(
url_and_engine=url_and_engine,
ln=ln,
of=of,
req=req,
limit=limit,
display_body = em == "" or EM_REPOSITORY["body"] in em,
display_add_to_basket = em == "" or EM_REPOSITORY["basket"] in em)
class BibSortDataCacher(DataCacher):
"""
Cache holding all structures created by bibsort
( _data, data_dict).
"""
def __init__(self, method_name):
self.method_name = method_name
self.method_id = 0
res = run_sql("""SELECT id from bsrMETHOD where name = %s""", (self.method_name,))
if res and res[0]:
self.method_id = res[0][0]
else:
self.method_id = 0
def cache_filler():
method_id = self.method_id
alldicts = {}
if self.method_id == 0:
return {}
try:
res_data = run_sql("""SELECT data_dict_ordered from bsrMETHODDATA \
where id_bsrMETHOD = %s""", (method_id,))
res_buckets = run_sql("""SELECT bucket_no, bucket_data from bsrMETHODDATABUCKET\
where id_bsrMETHOD = %s""", (method_id,))
except Exception:
# database problems, return empty cache
return {}
try:
data_dict_ordered = deserialize_via_marshal(res_data[0][0])
except IndexError:
data_dict_ordered = {}
alldicts['data_dict_ordered'] = data_dict_ordered # recid: weight
if not res_buckets:
alldicts['bucket_data'] = {}
return alldicts
for row in res_buckets:
bucket_no = row[0]
try:
bucket_data = intbitset(row[1])
except IndexError:
bucket_data = intbitset([])
alldicts.setdefault('bucket_data', {})[bucket_no] = bucket_data
return alldicts
def timestamp_verifier():
method_id = self.method_id
res = run_sql("""SELECT last_updated from bsrMETHODDATA where id_bsrMETHOD = %s""", (method_id,))
try:
update_time_methoddata = str(res[0][0])
except IndexError:
update_time_methoddata = '1970-01-01 00:00:00'
res = run_sql("""SELECT max(last_updated) from bsrMETHODDATABUCKET where id_bsrMETHOD = %s""", (method_id,))
try:
update_time_buckets = str(res[0][0])
except IndexError:
update_time_buckets = '1970-01-01 00:00:00'
return max(update_time_methoddata, update_time_buckets)
DataCacher.__init__(self, cache_filler, timestamp_verifier)
def get_sorting_methods():
res = run_sql("""SELECT m.name, m.definition
FROM bsrMETHOD m, bsrMETHODDATA md
WHERE m.id = md.id_bsrMETHOD""")
return dict(res)
SORTING_METHODS = get_sorting_methods()
CACHE_SORTED_DATA = {}
for sorting_method in SORTING_METHODS:
try:
CACHE_SORTED_DATA[sorting_method].is_ok_p
except KeyError:
CACHE_SORTED_DATA[sorting_method] = BibSortDataCacher(sorting_method)
def get_tags_from_sort_fields(sort_fields):
"""Given a list of sort_fields, return the tags associated with it and
also the name of the field that has no tags associated, to be able to
display a message to the user."""
tags = []
if not sort_fields:
return [], ''
for sort_field in sort_fields:
if sort_field and (len(sort_field) > 1 and str(sort_field[0:2]).isdigit()):
# sort_field starts by two digits, so this is probably a MARC tag already
tags.append(sort_field)
else:
# let us check the 'field' table
field_tags = get_field_tags(sort_field)
if field_tags:
tags.extend(field_tags)
else:
return [], sort_field
return tags, ''
def rank_records(req, rank_method_code, rank_limit_relevance, hitset_global, pattern=None, verbose=0, sort_order='d', of='hb', ln=CFG_SITE_LANG, rg=None, jrec=None, field='', sorting_methods=SORTING_METHODS):
"""Initial entry point for ranking records, acts like a dispatcher.
(i) rank_method_code is in bsrMETHOD, bibsort buckets can be used;
(ii)rank_method_code is not in bsrMETHOD, use bibrank;
"""
# Special case: sorting by citations is fast because we store the
# ranking dictionary in memory, so we do not use bibsort buckets.
if CFG_BIBSORT_ENABLED and sorting_methods and rank_method_code != 'citation':
for sort_method in sorting_methods:
definition = sorting_methods[sort_method]
if definition.startswith('RNK') and \
definition.replace('RNK:', '').strip().lower() == rank_method_code.lower():
solution_recs, solution_scores = \
sort_records_bibsort(req, hitset_global, sort_method,
'', sort_order, verbose, of, ln,
rg, jrec, 'r')
comment = ''
if verbose > 0:
comment = 'find_citations retlist %s' % [[solution_recs[i], solution_scores[i]] for i in range(len(solution_recs))]
return solution_recs, solution_scores, '(', ')', comment
if rank_method_code.lower() == 'citation':
related_to = []
else:
related_to = pattern
solution_recs, solution_scores, prefix, suffix, comment = \
rank_records_bibrank(rank_method_code=rank_method_code,
rank_limit_relevance=rank_limit_relevance,
hitset=hitset_global,
verbose=verbose,
field=field,
related_to=related_to,
rg=rg,
jrec=jrec)
# Solution recs can be None, in case of error or other cases
# which should be all be changed to return an empty list.
if solution_recs and sort_order == 'd':
solution_recs.reverse()
solution_scores.reverse()
return solution_recs, solution_scores, prefix, suffix, comment
def sort_records_latest(recIDs, jrec, rg, sort_order):
if sort_order == 'd':
recIDs.reverse()
return slice_records(recIDs, jrec, rg)
def sort_or_rank_records(req, recIDs, rm, sf, so, sp, p, verbose=0, of='hb',
ln=CFG_SITE_LANG, rg=None, jrec=None, field='',
sorting_methods=SORTING_METHODS):
"""Sort or rank records.
Entry point for deciding to either sort or rank records."""
if rm:
ranking_result = rank_records(req, rm, 0, recIDs, p, verbose, so,
of, ln, rg, jrec, field,
sorting_methods=sorting_methods)
if ranking_result[0]:
return ranking_result[0] # ranked recids
elif sf or (CFG_BIBSORT_ENABLED and SORTING_METHODS):
return sort_records(req, recIDs, sf, so, sp, verbose, of, ln, rg, jrec)
return recIDs.tolist()
def sort_records(req, recIDs, sort_field='', sort_order='a', sort_pattern='', verbose=0, of='hb', ln=CFG_SITE_LANG, rg=None, jrec=None, sorting_methods=SORTING_METHODS):
"""Initial entry point for sorting records, acts like a dispatcher.
(i) sort_field is in the bsrMETHOD, and thus, the BibSort has sorted the data for this field, so we can use the cache;
(ii)sort_field is not in bsrMETHOD, and thus, the cache does not contain any information regarding this sorting method"""
_ = gettext_set_language(ln)
# bibsort does not handle sort_pattern for now, use bibxxx
if sort_pattern:
return sort_records_bibxxx(req, recIDs, None, sort_field, sort_order,
sort_pattern, verbose, of, ln, rg, jrec)
# ignore the use of buckets, use old fashion sorting
use_sorting_buckets = CFG_BIBSORT_ENABLED and sorting_methods
# Default sorting
if not sort_field:
if use_sorting_buckets:
return sort_records_bibsort(req, recIDs, CFG_BIBSORT_DEFAULT_FIELD, sort_field, CFG_BIBSORT_DEFAULT_FIELD_ORDER, verbose, of, ln, rg, jrec)
else:
return sort_records_latest(recIDs, jrec, rg, sort_order)
sort_fields = sort_field.split(",")
if len(sort_fields) == 1:
# we have only one sorting_field, check if it is treated by BibSort
for sort_method in sorting_methods:
definition = sorting_methods[sort_method]
if use_sorting_buckets and \
((definition.startswith('FIELD') and
definition.replace('FIELD:', '').strip().lower() == sort_fields[0].lower()) or
sort_method == sort_fields[0]):
#use BibSort
return sort_records_bibsort(req, recIDs, sort_method, sort_field, sort_order, verbose, of, ln, rg, jrec)
#deduce sorting MARC tag out of the 'sort_field' argument:
tags, error_field = get_tags_from_sort_fields(sort_fields)
if error_field:
if use_sorting_buckets:
return sort_records_bibsort(req, recIDs, CFG_BIBSORT_DEFAULT_FIELD, sort_field, sort_order, verbose, of, ln, rg, jrec)
else:
if of.startswith('h'):
write_warning(_("Sorry, %(x_option)s does not seem to be a valid sort option. The records will not be sorted.", x_option=cgi.escape(error_field)), "Error", req=req)
return slice_records(recIDs, jrec, rg)
elif tags:
for sort_method in sorting_methods:
definition = sorting_methods[sort_method]
if definition.startswith('MARC') \
and definition.replace('MARC:', '').strip().split(',') == tags \
and use_sorting_buckets:
#this list of tags have a designated method in BibSort, so use it
return sort_records_bibsort(req, recIDs, sort_method, sort_field, sort_order, verbose, of, ln, rg, jrec)
#we do not have this sort_field in BibSort tables -> do the old fashion sorting
return sort_records_bibxxx(req, recIDs, tags, sort_field, sort_order, sort_pattern, verbose, of, ln, rg, jrec)
else:
return slice_records(recIDs, jrec, rg)
def sort_records_bibsort(req, recIDs, sort_method, sort_field='', sort_order='d', verbose=0, of='hb', ln=CFG_SITE_LANG, rg=None, jrec=1, sort_or_rank='s', sorting_methods=SORTING_METHODS):
"""This function orders the recIDs list, based on a sorting method(sort_field) using the BibSortDataCacher for speed"""
_ = gettext_set_language(ln)
if not jrec:
jrec = 1
#sanity check
if sort_method not in sorting_methods:
if sort_or_rank == 'r':
return rank_records_bibrank(rank_method_code=sort_method,
rank_limit_relevance=0,
hitset=recIDs,
verbose=verbose)
else:
return sort_records_bibxxx(req, recIDs, None, sort_field, sort_order, '', verbose, of, ln, rg, jrec)
if verbose >= 3 and of.startswith('h'):
write_warning("Sorting (using BibSort cache) by method %s (definition %s)."
% (cgi.escape(repr(sort_method)), cgi.escape(repr(sorting_methods[sort_method]))), req=req)
#we should return sorted records up to irec_max(exclusive)
dummy, irec_max = get_interval_for_records_to_sort(len(recIDs), jrec, rg)
solution = intbitset()
input_recids = intbitset(recIDs)
CACHE_SORTED_DATA[sort_method].recreate_cache_if_needed()
sort_cache = CACHE_SORTED_DATA[sort_method].cache
bucket_numbers = sort_cache['bucket_data'].keys()
#check if all buckets have been constructed
if len(bucket_numbers) != CFG_BIBSORT_BUCKETS:
if verbose > 3 and of.startswith('h'):
write_warning("Not all buckets have been constructed.. switching to old fashion sorting.", req=req)
if sort_or_rank == 'r':
return rank_records_bibrank(rank_method_code=sort_method,
rank_limit_relevance=0,
hitset=recIDs,
verbose=verbose)
else:
return sort_records_bibxxx(req, recIDs, None, sort_field,
sort_order, '', verbose, of, ln, rg,
jrec)
if sort_order == 'd':
bucket_numbers.reverse()
for bucket_no in bucket_numbers:
solution.union_update(
input_recids & sort_cache['bucket_data'][bucket_no]
)
if len(solution) >= irec_max:
break
dict_solution = {}
missing_records = intbitset()
for recid in solution:
try:
dict_solution[recid] = sort_cache['data_dict_ordered'][recid]
except KeyError:
# recid is in buckets, but not in the bsrMETHODDATA,
# maybe because the value has been deleted, but the change has not
# yet been propagated to the buckets
missing_records.add(recid)
# check if there are recids that are not in any bucket -> to be added at
# the end/top, ordered by insertion date
if len(solution) < irec_max:
#some records have not been yet inserted in the bibsort structures
#or, some records have no value for the sort_method
missing_records += input_recids - solution
reverse = sort_order == 'd'
if sort_method.strip().lower() == CFG_BIBSORT_DEFAULT_FIELD and reverse:
# If we want to sort the records on their insertion date, add the
# missing records at the top.
solution = sorted(missing_records, reverse=True) + \
sorted(dict_solution, key=dict_solution.__getitem__, reverse=True)
else:
solution = sorted(dict_solution, key=dict_solution.__getitem__,
reverse=reverse) + sorted(missing_records)
# Only keep records, we are going to display
solution = slice_records(solution, jrec, rg)
if sort_or_rank == 'r':
# We need the recids, with their ranking score
return solution, [dict_solution.get(record, 0) for record in solution]
else:
return solution
def slice_records(recIDs, jrec, rg):
if not jrec:
jrec = 1
if rg:
recIDs = recIDs[jrec-1:jrec-1+rg]
else:
recIDs = recIDs[jrec-1:]
return recIDs
def sort_records_bibxxx(req, recIDs, tags, sort_field='', sort_order='d', sort_pattern='', verbose=0, of='hb', ln=CFG_SITE_LANG, rg=None, jrec=None):
"""OLD FASHION SORTING WITH NO CACHE, for sort fields that are not run in BibSort
Sort records in 'recIDs' list according sort field 'sort_field' in order 'sort_order'.
If more than one instance of 'sort_field' is found for a given record, try to choose that that is given by
'sort pattern', for example "sort by report number that starts by CERN-PS".
Note that 'sort_field' can be field code like 'author' or MARC tag like '100__a' directly."""
_ = gettext_set_language(ln)
## check arguments:
if not sort_field:
return slice_records(recIDs, jrec, rg)
if len(recIDs) > CFG_WEBSEARCH_NB_RECORDS_TO_SORT:
if of.startswith('h'):
write_warning(_("Sorry, sorting is allowed on sets of up to %(x_name)d records only. Using default sort order.", x_name=CFG_WEBSEARCH_NB_RECORDS_TO_SORT), "Warning", req=req)
return slice_records(recIDs, jrec, rg)
recIDs_dict = {}
recIDs_out = []
if not tags:
# tags have not been camputed yet
sort_fields = sort_field.split(',')
tags, error_field = get_tags_from_sort_fields(sort_fields)
if error_field:
if of.startswith('h'):
write_warning(_("Sorry, %(x_name)s does not seem to be a valid sort option. The records will not be sorted.", x_name=cgi.escape(error_field)), "Error", req=req)
return slice_records(recIDs, jrec, rg)
if verbose >= 3 and of.startswith('h'):
write_warning("Sorting by tags %s." % cgi.escape(repr(tags)), req=req)
if sort_pattern:
write_warning("Sorting preferentially by %s." % cgi.escape(sort_pattern), req=req)
## check if we have sorting tag defined:
if tags:
# fetch the necessary field values:
for recID in recIDs:
val = "" # will hold value for recID according to which sort
vals = [] # will hold all values found in sorting tag for recID
for tag in tags:
if CFG_CERN_SITE and tag == '773__c':
# CERN hack: journal sorting
# 773__c contains page numbers, e.g. 3-13, and we want to sort by 3, and numerically:
vals.extend(["%050s" % x.split("-", 1)[0] for x in get_fieldvalues(recID, tag)])
else:
vals.extend(get_fieldvalues(recID, tag))
if sort_pattern:
# try to pick that tag value that corresponds to sort pattern
bingo = 0
for v in vals:
if v.lower().startswith(sort_pattern.lower()): # bingo!
bingo = 1
val = v
break
if not bingo: # sort_pattern not present, so add other vals after spaces
val = sort_pattern + " " + ''.join(vals)
else:
# no sort pattern defined, so join them all together
val = ''.join(vals)
val = strip_accents(val.lower()) # sort values regardless of accents and case
if val in recIDs_dict:
recIDs_dict[val].append(recID)
else:
recIDs_dict[val] = [recID]
# create output array:
for k in sorted(recIDs_dict.keys()):
recIDs_out.extend(recIDs_dict[k])
# ascending or descending?
if sort_order == 'd':
recIDs_out.reverse()
recIDs = recIDs_out
# return only up to the maximum that we need
return slice_records(recIDs, jrec, rg)
def get_interval_for_records_to_sort(nb_found, jrec=None, rg=None):
"""calculates in which interval should the sorted records be
a value of 'rg=-9999' means to print all records: to be used with care."""
if not jrec:
jrec = 1
if not rg:
#return all
return jrec-1, nb_found
if rg == -9999: # print all records
rg = nb_found
else:
rg = abs(rg)
if jrec < 1: # sanity checks
jrec = 1
if jrec > nb_found:
jrec = max(nb_found-rg+1, 1)
# will sort records from irec_min to irec_max excluded
irec_min = jrec - 1
irec_max = irec_min + rg
if irec_min < 0:
irec_min = 0
if irec_max > nb_found:
irec_max = nb_found
return irec_min, irec_max
def print_records(req, recIDs, jrec=1, rg=CFG_WEBSEARCH_DEF_RECORDS_IN_GROUPS, format='hb', ot='', ln=CFG_SITE_LANG,
relevances=[], relevances_prologue="(", relevances_epilogue="%%)",
decompress=zlib.decompress, search_pattern='', print_records_prologue_p=True,
print_records_epilogue_p=True, verbose=0, tab='', sf='', so='d', sp='',
rm='', em='', nb_found=-1):
"""
Prints list of records 'recIDs' formatted according to 'format' in
groups of 'rg' starting from 'jrec'.
Assumes that the input list 'recIDs' is sorted in reverse order,
so it counts records from tail to head.
A value of 'rg=-9999' means to print all records: to be used with care.
Print also list of RELEVANCES for each record (if defined), in
between RELEVANCE_PROLOGUE and RELEVANCE_EPILOGUE.
Print prologue and/or epilogue specific to 'format' if
'print_records_prologue_p' and/or print_records_epilogue_p' are
True.
'sf' is sort field and 'rm' is ranking method that are passed here
only for proper linking purposes: e.g. when a certain ranking
method or a certain sort field was selected, keep it selected in
any dynamic search links that may be printed.
"""
if em != "" and EM_REPOSITORY["body"] not in em:
return
# load the right message language
_ = gettext_set_language(ln)
# sanity checking:
if req is None:
return
# get user_info (for formatting based on user)
if isinstance(req, cStringIO.OutputType):
user_info = {}
else:
user_info = collect_user_info(req)
if nb_found == -1:
nb_found = len(recIDs)
if nb_found:
if not rg or rg == -9999: # print all records
rg = nb_found
else:
rg = abs(rg)
if jrec < 1: # sanity checks
jrec = 1
if jrec > nb_found:
jrec = max(nb_found-rg+1, 1)
# will print records from irec_max to irec_min excluded:
irec_max = nb_found - jrec
irec_min = nb_found - jrec - rg
if irec_min < 0:
irec_min = -1
if irec_max >= nb_found:
irec_max = nb_found - 1
#req.write("%s:%d-%d" % (recIDs, irec_min, irec_max))
if len(recIDs) > rg and rg != -9999:
recIDs = slice_records(recIDs, jrec, rg)
if format.startswith('x'):
# print header if needed
if print_records_prologue_p:
print_records_prologue(req, format)
if ot:
# asked to print some filtered fields only, so call print_record() on the fly:
for recid in recIDs:
x = print_record(recid,
format,
ot=ot,
ln=ln,
search_pattern=search_pattern,
user_info=user_info,
verbose=verbose,
sf=sf,
so=so,
sp=sp,
rm=rm)
req.write(x)
if x:
req.write('\n')
else:
format_records(recIDs,
format,
ln=ln,
search_pattern=search_pattern,
record_separator="\n",
user_info=user_info,
req=req)
# print footer if needed
if print_records_epilogue_p:
print_records_epilogue(req, format)
elif format.startswith('t') or str(format[0:3]).isdigit():
# we are doing plain text output:
for recid in recIDs:
x = print_record(recid, format, ot, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose, sf=sf, so=so, sp=sp, rm=rm)
req.write(x)
if x:
req.write('\n')
elif format.startswith('recjson'):
# we are doing recjson output:
req.write('[')
for idx, recid in enumerate(recIDs):
if idx > 0:
req.write(',')
req.write(print_record(recid, format, ot, ln,
search_pattern=search_pattern,
user_info=user_info, verbose=verbose,
sf=sf, so=so, sp=sp, rm=rm))
req.write(']')
elif format == 'excel':
create_excel(recIDs=recIDs, req=req, ot=ot, user_info=user_info)
else:
# we are doing HTML output:
if format == 'hp' or format.startswith("hb_") or format.startswith("hd_"):
# portfolio and on-the-fly formats:
for recid in recIDs:
req.write(print_record(recid,
format,
ot=ot,
ln=ln,
search_pattern=search_pattern,
user_info=user_info,
verbose=verbose,
sf=sf,
so=so,
sp=sp,
rm=rm))
elif format.startswith("hb"):
# HTML brief format:
display_add_to_basket = True
if user_info:
if user_info['email'] == 'guest':
if CFG_ACCESS_CONTROL_LEVEL_ACCOUNTS > 4:
display_add_to_basket = False
else:
if not user_info['precached_usebaskets']:
display_add_to_basket = False
if em != "" and EM_REPOSITORY["basket"] not in em:
display_add_to_basket = False
req.write(websearch_templates.tmpl_record_format_htmlbrief_header(ln=ln))
for irec, recid in enumerate(recIDs):
row_number = jrec+irec
if relevances and relevances[irec]:
relevance = relevances[irec]
else:
relevance = ''
record = print_record(recid,
format,
ot=ot,
ln=ln,
search_pattern=search_pattern,
user_info=user_info,
verbose=verbose,
sf=sf,
so=so,
sp=sp,
rm=rm)
req.write(websearch_templates.tmpl_record_format_htmlbrief_body(
ln=ln,
recid=recid,
row_number=row_number,
relevance=relevance,
record=record,
relevances_prologue=relevances_prologue,
relevances_epilogue=relevances_epilogue,
display_add_to_basket=display_add_to_basket
))
req.write(websearch_templates.tmpl_record_format_htmlbrief_footer(
ln=ln,
display_add_to_basket=display_add_to_basket))
elif format.startswith("hd"):
# HTML detailed format:
referer = user_info.get('referer', '')
for recid in recIDs:
if record_exists(recid) == -1:
write_warning(_("The record has been deleted."), req=req)
merged_recid = get_merged_recid(recid)
if merged_recid:
write_warning(_("The record %(x_rec)d replaces it.", x_rec=merged_recid), req=req)
continue
unordered_tabs = get_detailed_page_tabs(get_colID(guess_collection_of_a_record(recid, referer, False)),
recid, ln=ln)
ordered_tabs_id = [(tab_id, values['order']) for (tab_id, values) in iteritems(unordered_tabs)]
ordered_tabs_id.sort(lambda x, y: cmp(x[1], y[1]))
link_ln = ''
if ln != CFG_SITE_LANG:
link_ln = '?ln=%s' % ln
recid_to_display = recid # Record ID used to build the URL.
if CFG_WEBSEARCH_USE_ALEPH_SYSNOS:
try:
recid_to_display = get_fieldvalues(recid,
CFG_BIBUPLOAD_EXTERNAL_SYSNO_TAG)[0]
except IndexError:
# No external sysno is available, keep using
# internal recid.
pass
tabs = [(unordered_tabs[tab_id]['label'],
'%s/%s/%s/%s%s' % (CFG_BASE_URL, CFG_SITE_RECORD, recid_to_display, tab_id, link_ln),
tab_id == tab,
unordered_tabs[tab_id]['enabled'])
for (tab_id, dummy_order) in ordered_tabs_id
if unordered_tabs[tab_id]['visible'] is True]
tabs_counts = get_detailed_page_tabs_counts(recid)
citedbynum = tabs_counts['Citations']
references = tabs_counts['References']
discussions = tabs_counts['Discussions']
# load content
if tab == 'usage':
req.write(webstyle_templates.detailed_record_container_top(recid,
tabs,
ln,
citationnum=citedbynum,
referencenum=references,
discussionnum=discussions))
r = calculate_reading_similarity_list(recid, "downloads")
downloadsimilarity = None
downloadhistory = None
#if r:
# downloadsimilarity = r
if CFG_BIBRANK_SHOW_DOWNLOAD_GRAPHS:
downloadhistory = create_download_history_graph_and_box(recid, ln)
r = calculate_reading_similarity_list(recid, "pageviews")
viewsimilarity = None
if r:
viewsimilarity = r
content = websearch_templates.tmpl_detailed_record_statistics(recid,
ln,
downloadsimilarity=downloadsimilarity,
downloadhistory=downloadhistory,
viewsimilarity=viewsimilarity)
req.write(content)
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln))
elif tab == 'citations':
req.write(webstyle_templates.detailed_record_container_top(recid,
tabs,
ln,
citationnum=citedbynum,
referencenum=references,
discussionnum=discussions))
req.write(websearch_templates.tmpl_detailed_record_citations_prologue(recid, ln))
# Citing
citinglist = calculate_cited_by_list(recid)
req.write(websearch_templates.tmpl_detailed_record_citations_citing_list(recid,
ln,
citinglist,
sf=sf,
so=so,
sp=sp,
rm=rm))
# Self-cited
selfcited = get_self_cited_by(recid)
selfcited = rank_by_citations(get_self_cited_by(recid), verbose=verbose)
selfcited = reversed(selfcited[0])
selfcited = [recid for recid, dummy in selfcited]
req.write(websearch_templates.tmpl_detailed_record_citations_self_cited(recid,
ln, selfcited=selfcited, citinglist=citinglist))
# Co-cited
s = calculate_co_cited_with_list(recid)
cociting = None
if s:
cociting = s
req.write(websearch_templates.tmpl_detailed_record_citations_co_citing(recid,
ln,
cociting=cociting))
# Citation history, if needed
citationhistory = None
if citinglist:
citationhistory = create_citation_history_graph_and_box(recid, ln)
#debug
if verbose > 3:
write_warning("Citation graph debug: " +
str(len(citationhistory)), req=req)
req.write(websearch_templates.tmpl_detailed_record_citations_citation_history(ln, citationhistory))
# Citation log
entries = get_citers_log(recid)
req.write(websearch_templates.tmpl_detailed_record_citations_citation_log(ln, entries))
req.write(websearch_templates.tmpl_detailed_record_citations_epilogue(recid, ln))
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln))
elif tab == 'references':
req.write(webstyle_templates.detailed_record_container_top(recid,
tabs,
ln,
citationnum=citedbynum,
referencenum=references,
discussionnum=discussions))
req.write(format_record(recid, 'HDREF', ln=ln, user_info=user_info, verbose=verbose, force_2nd_pass=True))
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln))
elif tab == 'keywords':
from invenio.legacy.bibclassify.webinterface import main_page
main_page(req, recid, tabs, ln,
webstyle_templates)
elif tab == 'plots':
req.write(webstyle_templates.detailed_record_container_top(recid,
tabs,
ln))
content = websearch_templates.tmpl_record_plots(recID=recid,
ln=ln)
req.write(content)
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln))
elif tab == 'hepdata':
req.write(webstyle_templates.detailed_record_container_top(recid,
tabs,
ln,
include_jquery=True,
include_mathjax=True))
from invenio.utils import hepdata as hepdatautils
from invenio.utils.hepdata import display as hepdatadisplayutils
data = hepdatautils.retrieve_data_for_record(recid)
if data:
content = websearch_templates.tmpl_record_hepdata(data, recid, True)
else:
content = websearch_templates.tmpl_record_no_hepdata()
req.write(content)
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln))
else:
# Metadata tab
req.write(webstyle_templates.detailed_record_container_top(
recid,
tabs,
ln,
show_short_rec_p=False,
citationnum=citedbynum,
referencenum=references,
discussionnum=discussions))
creationdate = None
modificationdate = None
if record_exists(recid) == 1:
creationdate = get_creation_date(recid)
modificationdate = get_modification_date(recid)
content = print_record(recid, format, ot, ln,
search_pattern=search_pattern,
user_info=user_info, verbose=verbose,
sf=sf, so=so, sp=sp, rm=rm)
content = websearch_templates.tmpl_detailed_record_metadata(
recID=recid,
ln=ln,
format=format,
creationdate=creationdate,
modificationdate=modificationdate,
content=content)
# display of the next-hit/previous-hit/back-to-search links
# on the detailed record pages
content += websearch_templates.tmpl_display_back_to_search(req,
recid,
ln)
req.write(content)
req.write(webstyle_templates.detailed_record_container_bottom(recid,
tabs,
ln,
creationdate=creationdate,
modificationdate=modificationdate,
show_short_rec_p=False))
if len(tabs) > 0:
# Add the mini box at bottom of the page
if CFG_WEBCOMMENT_ALLOW_REVIEWS:
from invenio.modules.comments.api import get_mini_reviews
reviews = get_mini_reviews(recid=recid, ln=ln)
else:
reviews = ''
actions = format_record(recid, 'HDACT', ln=ln, user_info=user_info, verbose=verbose)
files = format_record(recid, 'HDFILE', ln=ln, user_info=user_info, verbose=verbose)
req.write(webstyle_templates.detailed_record_mini_panel(recid,
ln,
format,
files=files,
reviews=reviews,
actions=actions))
else:
# Other formats
for recid in recIDs:
req.write(print_record(recid, format, ot, ln,
search_pattern=search_pattern,
user_info=user_info, verbose=verbose,
sf=sf, so=so, sp=sp, rm=rm))
else:
write_warning(_("Use different search terms."), req=req)
def print_records_prologue(req, format, cc=None):
"""
Print the appropriate prologue for list of records in the given
format.
"""
prologue = "" # no prologue needed for HTML or Text formats
if format.startswith('xm'):
prologue = websearch_templates.tmpl_xml_marc_prologue()
elif format.startswith('xn'):
prologue = websearch_templates.tmpl_xml_nlm_prologue()
elif format.startswith('xw'):
prologue = websearch_templates.tmpl_xml_refworks_prologue()
elif format.startswith('xr'):
prologue = websearch_templates.tmpl_xml_rss_prologue(cc=cc)
elif format.startswith('xe8x'):
prologue = websearch_templates.tmpl_xml_endnote_8x_prologue()
elif format.startswith('xe'):
prologue = websearch_templates.tmpl_xml_endnote_prologue()
elif format.startswith('xo'):
prologue = websearch_templates.tmpl_xml_mods_prologue()
elif format.startswith('xp'):
prologue = websearch_templates.tmpl_xml_podcast_prologue(cc=cc)
elif format.startswith('x'):
prologue = websearch_templates.tmpl_xml_default_prologue()
req.write(prologue)
def print_records_epilogue(req, format):
"""
Print the appropriate epilogue for list of records in the given
format.
"""
epilogue = "" # no epilogue needed for HTML or Text formats
if format.startswith('xm'):
epilogue = websearch_templates.tmpl_xml_marc_epilogue()
elif format.startswith('xn'):
epilogue = websearch_templates.tmpl_xml_nlm_epilogue()
elif format.startswith('xw'):
epilogue = websearch_templates.tmpl_xml_refworks_epilogue()
elif format.startswith('xr'):
epilogue = websearch_templates.tmpl_xml_rss_epilogue()
elif format.startswith('xe8x'):
epilogue = websearch_templates.tmpl_xml_endnote_8x_epilogue()
elif format.startswith('xe'):
epilogue = websearch_templates.tmpl_xml_endnote_epilogue()
elif format.startswith('xo'):
epilogue = websearch_templates.tmpl_xml_mods_epilogue()
elif format.startswith('xp'):
epilogue = websearch_templates.tmpl_xml_podcast_epilogue()
elif format.startswith('x'):
epilogue = websearch_templates.tmpl_xml_default_epilogue()
req.write(epilogue)
def get_record(recid):
"""Directly the record object corresponding to the recid."""
if CFG_BIBUPLOAD_SERIALIZE_RECORD_STRUCTURE:
value = run_sql("SELECT value FROM bibfmt WHERE id_bibrec=%s AND FORMAT='recstruct'", (recid, ))
if value:
try:
val = value[0][0]
except IndexError:
### In case it does not exist, let's build it!
pass
else:
return deserialize_via_marshal(val)
return create_record(print_record(recid, 'xm'))[0]
def print_record(recID, format='hb', ot='', ln=CFG_SITE_LANG, decompress=zlib.decompress,
search_pattern=None, user_info=None, verbose=0, sf='', so='d',
sp='', rm='', brief_links=True):
"""
Prints record 'recID' formatted according to 'format'.
'sf' is sort field and 'rm' is ranking method that are passed here
only for proper linking purposes: e.g. when a certain ranking
method or a certain sort field was selected, keep it selected in
any dynamic search links that may be printed.
"""
if format == 'recstruct':
return get_record(recID)
#check from user information if the user has the right to see hidden fields/tags in the
#records as well
can_see_hidden = False
if user_info:
can_see_hidden = user_info.get('precached_canseehiddenmarctags', False)
if format == 'recjson':
import json
from invenio.modules.records.api import get_record as get_recjson
ot = ot if ot and len(ot) else None
return json.dumps(get_recjson(recID).dumps(
keywords=ot, filter_hidden=not can_see_hidden))
_ = gettext_set_language(ln)
# The 'attribute this paper' link is shown only if the session states it should and
# the record is included in the collections to which bibauthorid is limited.
if user_info:
display_claim_this_paper = (user_info.get("precached_viewclaimlink", False) and
recID in intbitset.union(*[get_collection_reclist(x)
for x in BIBAUTHORID_LIMIT_TO_COLLECTIONS]))
else:
display_claim_this_paper = False
can_edit_record = False
if check_user_can_edit_record(user_info, recID):
can_edit_record = True
out = ""
# sanity check:
record_exist_p = record_exists(recID)
if record_exist_p == 0: # doesn't exist
return out
# We must still check some special formats, but these
# should disappear when BibFormat improves.
if not (format.lower().startswith('t')
or format.lower().startswith('hm')
or str(format[0:3]).isdigit()
or ot):
# Unspecified format is hd
if format == '':
format = 'hd'
if record_exist_p == -1 and get_output_format_content_type(format) == 'text/html':
# HTML output displays a default value for deleted records.
# Other format have to deal with it.
out += _("The record has been deleted.")
# was record deleted-but-merged ?
merged_recid = get_merged_recid(recID)
if merged_recid:
out += ' ' + _("The record %(x_rec)d replaces it.", x_rec=merged_recid)
else:
out += call_bibformat(recID, format, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose)
# at the end of HTML brief mode, print the "Detailed record" functionality:
if brief_links and format.lower().startswith('hb') and \
format.lower() != 'hb_p':
out += websearch_templates.tmpl_print_record_brief_links(ln=ln,
recID=recID,
sf=sf,
so=so,
sp=sp,
rm=rm,
display_claim_link=display_claim_this_paper,
display_edit_link=can_edit_record)
return out
if format == "marcxml" or format == "oai_dc":
out += " " + cgi.escape(get_fieldvalues_alephseq_like(recID, ["001", CFG_OAI_ID_FIELD, "980"], can_see_hidden)) + "
"
else:
out += "\n" + cgi.escape(get_fieldvalues_alephseq_like(recID, ot, can_see_hidden)) + "
"
elif format.startswith("h") and ot:
## user directly asked for some tags to be displayed only
if record_exist_p == -1:
out += "\n" + get_fieldvalues_alephseq_like(recID, ["001", CFG_OAI_ID_FIELD, "980"], can_see_hidden) + "
"
else:
out += "\n" + get_fieldvalues_alephseq_like(recID, ot, can_see_hidden) + "
"
elif format == "hd":
# HTML detailed format
if record_exist_p == -1:
out += _("The record has been deleted.")
else:
# look for detailed format existence:
query = "SELECT value FROM bibfmt WHERE id_bibrec=%s AND format=%s"
res = run_sql(query, (recID, format), 1)
if res:
# record 'recID' is formatted in 'format', so print it
out += "%s" % decompress(res[0][0])
else:
# record 'recID' is not formatted in 'format', so try to call BibFormat on the fly or use default format:
out_record_in_format = call_bibformat(recID, format, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose)
if out_record_in_format:
out += out_record_in_format
else:
out += websearch_templates.tmpl_print_record_detailed(
ln = ln,
recID = recID,
)
elif format.startswith("hb_") or format.startswith("hd_"):
# underscore means that HTML brief/detailed formats should be called on-the-fly; suitable for testing formats
if record_exist_p == -1:
out += _("The record has been deleted.")
else:
out += call_bibformat(recID, format, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose)
elif format.startswith("hx"):
# BibTeX format, called on the fly:
if record_exist_p == -1:
out += _("The record has been deleted.")
else:
out += call_bibformat(recID, format, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose)
elif format.startswith("hs"):
# for citation/download similarity navigation links:
if record_exist_p == -1:
out += _("The record has been deleted.")
else:
out += '' % websearch_templates.build_search_url(recid=recID, ln=ln)
# firstly, title:
titles = get_fieldvalues(recID, "245__a")
if titles:
for title in titles:
out += "%s" % title
else:
# usual title not found, try conference title:
titles = get_fieldvalues(recID, "111__a")
if titles:
for title in titles:
out += "%s" % title
else:
# just print record ID:
out += "%s %d" % (get_field_i18nname("record ID", ln, False), recID)
out += ""
# secondly, authors:
authors = get_fieldvalues(recID, "100__a") + get_fieldvalues(recID, "700__a")
if authors:
out += " - %s" % authors[0]
if len(authors) > 1:
out += " et al"
# thirdly publication info:
publinfos = get_fieldvalues(recID, "773__s")
if not publinfos:
publinfos = get_fieldvalues(recID, "909C4s")
if not publinfos:
publinfos = get_fieldvalues(recID, "037__a")
if not publinfos:
publinfos = get_fieldvalues(recID, "088__a")
if publinfos:
out += " - %s" % publinfos[0]
else:
# fourthly publication year (if not publication info):
years = get_fieldvalues(recID, "773__y")
if not years:
years = get_fieldvalues(recID, "909C4y")
if not years:
years = get_fieldvalues(recID, "260__c")
if years:
out += " (%s)" % years[0]
else:
# HTML brief format by default
if record_exist_p == -1:
out += _("The record has been deleted.")
else:
query = "SELECT value FROM bibfmt WHERE id_bibrec=%s AND format=%s"
res = run_sql(query, (recID, format))
if res:
# record 'recID' is formatted in 'format', so print it
out += "%s" % decompress(res[0][0])
else:
# record 'recID' is not formatted in 'format', so try to call BibFormat on the fly: or use default format:
if CFG_WEBSEARCH_CALL_BIBFORMAT:
out_record_in_format = call_bibformat(recID, format, ln, search_pattern=search_pattern,
user_info=user_info, verbose=verbose)
if out_record_in_format:
out += out_record_in_format
else:
out += websearch_templates.tmpl_print_record_brief(
ln = ln,
recID = recID,
)
else:
out += websearch_templates.tmpl_print_record_brief(
ln = ln,
recID = recID,
)
# at the end of HTML brief mode, print the "Detailed record" functionality:
if format == 'hp' or format.startswith("hb_") or format.startswith("hd_"):
pass # do nothing for portfolio and on-the-fly formats
else:
out += websearch_templates.tmpl_print_record_brief_links(ln=ln,
recID=recID,
sf=sf,
so=so,
sp=sp,
rm=rm,
display_claim_link=display_claim_this_paper,
display_edit_link=can_edit_record)
# print record closing tags, if needed:
if format == "marcxml" or format == "oai_dc":
out += " Search Cache
"
req.write(out)
# show collection reclist cache:
out = "Collection reclist cache
"
out += "- collection table last updated: %s" % get_table_update_time('collection')
out += "
- reclist cache timestamp: %s" % collection_reclist_cache.timestamp
out += "
- reclist cache contents:"
out += ""
for coll in collection_reclist_cache.cache.keys():
if collection_reclist_cache.cache[coll]:
out += "%s (%d)
"
req.write(out)
# show field i18nname cache:
out = "
" % (coll, len(collection_reclist_cache.cache[coll]))
out += "Field I18N names cache
"
out += "- fieldname table last updated: %s" % get_table_update_time('fieldname')
out += "
- i18nname cache timestamp: %s" % field_i18nname_cache.timestamp
out += "
- i18nname cache contents:"
out += ""
for field in field_i18nname_cache.cache.keys():
for ln in field_i18nname_cache.cache[field].keys():
out += "%s, %s = %s
"
req.write(out)
# show collection i18nname cache:
out = "
" % (field, ln, field_i18nname_cache.cache[field][ln])
out += "Collection I18N names cache
"
out += "- collectionname table last updated: %s" % get_table_update_time('collectionname')
out += "
- i18nname cache timestamp: %s" % collection_i18nname_cache.timestamp
out += "
- i18nname cache contents:"
out += ""
for coll in collection_i18nname_cache.cache.keys():
for ln in collection_i18nname_cache.cache[coll].keys():
out += "%s, %s = %s
"
req.write(out)
req.write("")
return "\n"
def perform_request_log(req, date=""):
"""Display search log information for given date."""
req.content_type = "text/html"
req.send_http_header()
req.write("")
req.write("
" % (coll, ln, collection_i18nname_cache.cache[coll][ln])
out += "Search Log
")
if date: # case A: display stats for a day
yyyymmdd = string.atoi(date)
req.write("""")
req.write("
")
else: # case B: display summary stats per day
yyyymm01 = int(time.strftime("%Y%m01", time.localtime()))
yyyymmdd = int(time.strftime("%Y%m%d", time.localtime()))
req.write(""" " % ("No.", "Time", "Pattern", "Field", "Collection", "Number of Hits"))
# read file:
p = os.popen("grep ^%d %s/search.log" % (yyyymmdd, CFG_LOGDIR), 'r')
lines = p.readlines()
p.close()
# process lines:
i = 0
for line in lines:
try:
datetime, dummy_aas, p, f, c, nbhits = line.split("#")
i += 1
req.write("%s %s %s %s %s %s "
% (i, datetime[8:10], datetime[10:12], datetime[12:], p, f, c, nbhits))
except:
pass # ignore eventual wrong log lines
req.write("#%d %s:%s:%s %s %s %s %s """)
req.write("
")
req.write("")
return "\n"
def get_all_field_values(tag):
"""
Return all existing values stored for a given tag.
@param tag: the full tag, e.g. 909C0b
@type tag: string
@return: the list of values
@rtype: list of strings
"""
table = 'bib%02dx' % int(tag[:2])
return [row[0] for row in run_sql("SELECT DISTINCT(value) FROM %s WHERE tag=%%s" % table, (tag, ))]
def get_most_popular_field_values(recids, tags, exclude_values=None, count_repetitive_values=True, split_by=0):
"""
Analyze RECIDS and look for TAGS and return most popular values
and the frequency with which they occur sorted according to
descending frequency.
If a value is found in EXCLUDE_VALUES, then do not count it.
If COUNT_REPETITIVE_VALUES is True, then we count every occurrence
of value in the tags. If False, then we count the value only once
regardless of the number of times it may appear in a record.
(But, if the same value occurs in another record, we count it, of
course.)
@return: list of tuples containing tag and its frequency
Example:
>>> get_most_popular_field_values(range(11,20), '980__a')
[('PREPRINT', 10), ('THESIS', 7), ...]
>>> get_most_popular_field_values(range(11,20), ('100__a', '700__a'))
[('Ellis, J', 10), ('Ellis, N', 7), ...]
>>> get_most_popular_field_values(range(11,20), ('100__a', '700__a'), ('Ellis, J'))
[('Ellis, N', 7), ...]
"""
def _get_most_popular_field_values_helper_sorter(val1, val2):
"""Compare VAL1 and VAL2 according to, firstly, frequency, then
secondly, alphabetically."""
compared_via_frequencies = cmp(valuefreqdict[val2],
valuefreqdict[val1])
if compared_via_frequencies == 0:
return cmp(val1.lower(), val2.lower())
else:
return compared_via_frequencies
valuefreqdict = {}
## sanity check:
if not exclude_values:
exclude_values = []
if isinstance(tags, string_types):
tags = (tags,)
## find values to count:
vals_to_count = []
displaytmp = {}
if count_repetitive_values:
# counting technique A: can look up many records at once: (very fast)
for tag in tags:
vals_to_count.extend(get_fieldvalues(recids, tag, sort=False,
split_by=split_by))
else:
# counting technique B: must count record-by-record: (slow)
for recid in recids:
vals_in_rec = []
for tag in tags:
for val in get_fieldvalues(recid, tag, False):
vals_in_rec.append(val)
# do not count repetitive values within this record
# (even across various tags, so need to unify again):
dtmp = {}
for val in vals_in_rec:
dtmp[val.lower()] = 1
displaytmp[val.lower()] = val
vals_in_rec = dtmp.keys()
vals_to_count.extend(vals_in_rec)
## are we to exclude some of found values?
for val in vals_to_count:
if val not in exclude_values:
if val in valuefreqdict:
valuefreqdict[val] += 1
else:
valuefreqdict[val] = 1
## sort by descending frequency of values:
if not CFG_NUMPY_IMPORTABLE:
## original version
out = []
vals = valuefreqdict.keys()
vals.sort(_get_most_popular_field_values_helper_sorter)
for val in vals:
tmpdisplv = ''
if val in displaytmp:
tmpdisplv = displaytmp[val]
else:
tmpdisplv = val
out.append((tmpdisplv, valuefreqdict[val]))
return out
else:
f = [] # frequencies
n = [] # original names
ln = [] # lowercased names
## build lists within one iteration
for (val, freq) in iteritems(valuefreqdict):
f.append(-1 * freq)
if val in displaytmp:
n.append(displaytmp[val])
else:
n.append(val)
ln.append(val.lower())
## sort by frequency (desc) and then by lowercased name.
return [(n[i], -1 * f[i]) for i in numpy.lexsort([ln, f])]
def profile(p="", f="", c=CFG_SITE_NAME):
"""Profile search time."""
import profile as pyprofile
import pstats
pyprofile.run("perform_request_search(p='%s',f='%s', c='%s')" % (p, f, c), "perform_request_search_profile")
p = pstats.Stats("perform_request_search_profile")
p.strip_dirs().sort_stats("cumulative").print_stats()
return 0
def perform_external_collection_search_with_em(req, current_collection, pattern_list, field,
external_collection, verbosity_level=0, lang=CFG_SITE_LANG,
selected_external_collections_infos=None, em=""):
perform_external_collection_search(req, current_collection, pattern_list, field, external_collection,
verbosity_level, lang, selected_external_collections_infos,
print_overview=em == "" or EM_REPOSITORY["overview"] in em,
print_search_info=em == "" or EM_REPOSITORY["search_info"] in em,
print_see_also_box=em == "" or EM_REPOSITORY["see_also_box"] in em,
print_body=em == "" or EM_REPOSITORY["body"] in em)
@cache.memoize(timeout=5)
def get_fulltext_terms_from_search_pattern(search_pattern):
keywords = []
if search_pattern is not None:
for unit in create_basic_search_units(None, search_pattern.encode('utf-8'), None):
bsu_o, bsu_p, bsu_f, bsu_m = unit[0], unit[1], unit[2], unit[3]
if (bsu_o != '-' and bsu_f in [None, 'fulltext']):
if bsu_m == 'a' and bsu_p.startswith('%') and bsu_p.endswith('%'):
# remove leading and training `%' representing partial phrase search
keywords.append(bsu_p[1:-1])
else:
keywords.append(bsu_p)
return keywords
def check_user_can_edit_record(req, recid):
""" Check if user has authorization to modify a collection
the recid belongs to
"""
record_collections = get_all_collections_of_a_record(recid)
if not record_collections:
# Check if user has access to all collections
auth_code, auth_message = acc_authorize_action(req, 'runbibedit',
collection='')
if auth_code == 0:
return True
else:
for collection in record_collections:
auth_code, auth_message = acc_authorize_action(req, 'runbibedit',
collection=collection)
if auth_code == 0:
return True
return False
diff --git a/invenio/legacy/websession/session.py b/invenio/legacy/websession/session.py
index 90497dbf7..ccc42b201 100644
--- a/invenio/legacy/websession/session.py
+++ b/invenio/legacy/websession/session.py
@@ -1,552 +1,551 @@
# -*- coding: utf-8 -*-
# This file is part of Invenio.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 CERN.
+# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014, 2015 CERN.
#
# Invenio is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# Invenio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Invenio; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
"""
Session management adapted from mod_python Session class.
Just use L{get_session} to obtain a session object (with a dictionary
interface, which will let you store permanent information).
"""
from invenio.legacy.wsgi.utils import add_cookies, Cookie, get_cookie
import random
import zlib
from six.moves import cPickle
import re
import sys
import os
import time
from datetime import datetime, timedelta
from uuid import uuid4
from invenio.utils.date import convert_datestruct_to_datetext
from invenio.legacy.dbquery import run_sql, blob_to_string
from invenio.config import (CFG_WEBSESSION_EXPIRY_LIMIT_REMEMBER,
CFG_WEBSESSION_EXPIRY_LIMIT_DEFAULT,
CFG_SITE_URL,
CFG_SITE_SECURE_URL,
CFG_WEBSESSION_IPADDR_CHECK_SKIP_BITS,
CFG_WEBSEARCH_PREV_NEXT_HIT_FOR_GUESTS,
CFG_WEBSESSION_STORAGE)
from invenio.legacy.websession.websession_config import (CFG_WEBSESSION_COOKIE_NAME,
CFG_WEBSESSION_ONE_DAY,
CFG_WEBSESSION_CLEANUP_CHANCE)
from invenio.utils.redis import get_redis
from invenio.utils.hash import md5
CFG_FULL_HTTPS = CFG_SITE_URL.lower().startswith("https://")
if CFG_WEBSEARCH_PREV_NEXT_HIT_FOR_GUESTS:
_CFG_SESSION_NON_USEFUL_KEYS = ('uid', 'user_info')
else:
_CFG_SESSION_NON_USEFUL_KEYS = ('uid', 'user_info', 'websearch-last-query', 'websearch-last-query-hits')
def get_session(req, sid=None):
"""
Obtain a session.
If the session has already been created for the current request,
returns the already existing session.
@param req: the mod_python request object.
@type req: mod_python request object
@param sid: the session identifier of an already existing session.
@type sid: 32 hexadecimal string
@return: the session.
@rtype: InvenioSession
@raise ValueError: if C{sid} is provided and it doesn't correspond to a
valid session.
"""
from flask import session
if sid is not None:
req._session = session
return req._session
if not hasattr(req, '_session'):
req._session = session
return req._session
class InvenioSessionBase(dict):
"""
This class implements a Session handling based on MySQL.
@param req: the mod_python request object.
@type req: mod_python request object
@param sid: the session identifier if already known
@type sid: 32 hexadecimal string
@ivar _remember_me: if the session cookie should last one day or until
the browser is closed.
@type _remember_me: bool
@note: The code is heavily based on ModPython 3.3.1 DBMSession
implementation.
@note: This class implements IP verification to prevent basic cookie
stealing.
@raise ValueError: if C{sid} is provided and correspond to a broken
session.
"""
def __init__(self, req, sid=None):
self._remember_me = False
self._req, self._sid, self._secret = req, sid, None
self._lock = CFG_WEBSESSION_ENABLE_LOCKING
self._new = 1
self._locked = 0
self._invalid = 0
self._dirty = False
self._http_ip = None
self._https_ip = None
self.__need_https = False
self._cleanup_function = None
dict.__init__(self)
if not self._sid:
# check to see if cookie exists
cookie = get_cookie(req, CFG_WEBSESSION_COOKIE_NAME)
if cookie:
self._sid = cookie.value
else:
stub_cookie = get_cookie(req, CFG_WEBSESSION_COOKIE_NAME + 'stub')
self.__need_https = stub_cookie and stub_cookie.value == 'HTTPS'
if self._sid:
if not _check_sid(self._sid):
if sid:
# Supplied explicitly by user of the class,
# raise an exception and make the user code
# deal with it.
raise ValueError("Invalid Session ID: sid=%s" % sid)
else:
# Derived from the cookie sent by browser,
# wipe it out so it gets replaced with a
# correct value.
self._sid = None
if self._sid:
# attempt to load ourselves
self.lock()
if self.load():
self._new = 0
if self._new:
# make a new session
if self._sid:
self.unlock() # unlock old sid
self._sid = _new_sid(self._req)
self.lock() # lock new sid
remote_ip = self._req.remote_ip
if self._req.is_https():
self._https_ip = remote_ip
else:
self._http_ip = remote_ip
# need cleanup?
if random.randint(1, CFG_WEBSESSION_CLEANUP_CHANCE) == 1:
self.cleanup()
def get_dirty(self):
"""
Is this session dirty?
"""
return self._dirty
def set_dirty(self, dummy=True):
"""
Flag this session as dirty. It takes a parameter, just in order
to be used within a property
"""
self._dirty = True
dirty = property(get_dirty, set_dirty)
def __setitem__(self, key, value):
if self.get(key) != value:
dict.__setitem__(self, key, value)
self._dirty = True
def __delitem__(self, key):
if key in self:
dict.__delitem__(self, key)
self._dirty = True
def set_remember_me(self, remember_me=True):
"""
Set/Unset the L{_remember_me} flag.
@param remember_me: True if the session cookie should last one day or
until the browser is closed.
@type remember_me: bool
"""
self._remember_me = remember_me
self['_permanent'] = remember_me
add_cookies(self._req, self.make_cookies())
def load(self):
"""
Load the session from the database.
@return: 1 in case of success, 0 otherwise.
@rtype: integer
"""
session_dict = None
invalid = False
res = self.load_from_storage(self._sid)
if res:
session_dict = cPickle.loads(blob_to_string(res))
remote_ip = self._req.remote_ip
if self._req.is_https():
if session_dict['_https_ip'] is not None:
if ':' in remote_ip:
## IPV6 address, we don't skip bits
if session_dict['_https_ip'] != remote_ip:
invalid = True
else:
if _mkip(session_dict['_https_ip']) >> \
CFG_WEBSESSION_IPADDR_CHECK_SKIP_BITS != \
_mkip(remote_ip) >> \
CFG_WEBSESSION_IPADDR_CHECK_SKIP_BITS:
invalid = True
else:
session_dict['_https_ip'] = remote_ip
else:
if session_dict['_http_ip'] is not None:
if ':' in remote_ip:
## IPV6 address, we don't skip bits
if session_dict['_http_ip'] != remote_ip:
invalid = True
else:
if _mkip(session_dict['_http_ip']) >> \
CFG_WEBSESSION_IPADDR_CHECK_SKIP_BITS != \
_mkip(remote_ip) >> \
CFG_WEBSESSION_IPADDR_CHECK_SKIP_BITS:
invalid = True
else:
session_dict['_http_ip'] = remote_ip
if session_dict is None:
return 0
if invalid:
return 0
self.update(session_dict)
self._remember_me = session_dict.get("_permanent", False)
return 1
def is_useful(self):
"""
Return True if the session contains some key considered
useful (i.e. that deserve being preserved)
"""
for key in self:
if key not in _CFG_SESSION_NON_USEFUL_KEYS:
return True
return False
def save(self):
"""
Save the session to the database.
"""
uid = self.get('uid', -1)
if not self._invalid and self._sid and self._dirty and (uid > 0 or self.is_useful()):
## We store something only for real users or useful sessions.
session_dict = {"_data" : self.copy(),
"_created" : self._created,
"_accessed": self._accessed,
"_timeout" : self._timeout,
"_http_ip" : self._http_ip,
"_https_ip" : self._https_ip,
"_remember_me" : self._remember_me
}
session_object = cPickle.dumps(session_dict, -1)
self.save_in_storage(self._sid,
session_object,
self._timeout,
uid)
for cookie in self.make_cookies():
self._req.set_cookie(cookie)
## No more dirty :-)
self._dirty = False
def delete(self):
"""
Delete the session.
"""
self.delete_from_storage(self._sid)
self.clear()
def invalidate(self):
"""
Declare the session as invalid.
"""
cookies = self.make_cookies()
for cookie in cookies:
cookie.expires = 0
add_cookies(self._req, cookies)
self.delete()
self._invalid = 1
if hasattr(self._req, '_session'):
delattr(self._req, '_session')
def make_cookies(self):
"""
Create the necessary cookies to implement secure session handling
(possibly over HTTPS).
@return: a list of cookies.
"""
cookies = []
uid = self.get('_uid', -1)
if uid > 0 and CFG_SITE_SECURE_URL.startswith("https://"):
- stub_cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME + 'stub', 'HTTPS')
+ stub_cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME + 'stub', 'HTTPS', HttpOnly=True)
else:
- stub_cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME + 'stub', 'NO')
+ stub_cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME + 'stub', 'NO', HttpOnly=True)
cookies.append(stub_cookie)
if self._req.is_https() or not CFG_SITE_SECURE_URL.startswith("https://") or uid <= 0:
- cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME, self._sid)
+ cookie = Cookie(CFG_WEBSESSION_COOKIE_NAME, self._sid, HttpOnly=True)
if CFG_SITE_SECURE_URL.startswith("https://") and uid > 0:
cookie.secure = True
- cookie.httponly = True
cookies.append(cookie)
for cookie in cookies:
cookie.path = '/'
if self._remember_me:
cookie.expires = time.time() + CFG_WEBSESSION_ONE_DAY * CFG_WEBSESSION_EXPIRY_LIMIT_REMEMBER
cookie.max_age = CFG_WEBSESSION_ONE_DAY * CFG_WEBSESSION_EXPIRY_LIMIT_REMEMBER
return cookies
def initial_http_ip(self):
"""
@return: the initial ip addressed for the HTTP protocol for which this
session was issued.
@rtype: string
@note: it returns None if this session has always been used through
HTTPS requests.
"""
return self._http_ip
def initial_https_ip(self):
"""
@return: the initial ip addressed for the HTTPS protocol for which this
session was issued.
@rtype: string
@note: it returns None if this session has always been used through
HTTP requests.
"""
return self._https_ip
def lock(self):
"""
Lock the session.
"""
if self._lock:
self._locked = 1
def unlock(self):
"""
Unlock the session.
"""
if self._lock and self._locked:
self._locked = 0
def is_new(self):
"""
@return: True if the session has just been created.
@rtype: bool
"""
return not not self._new
def sid(self):
"""
@return: the session identifier.
@rtype: 32 hexadecimal string
"""
return self._sid
def cleanup(self):
"""
Perform the database session cleanup.
"""
if self._cleanup_function:
self._req.register_cleanup(self._cleanup_function)
self._req.log_error("InvenioSession: registered database cleanup.")
def __del__(self):
self.save()
self.unlock()
def get_need_https(self):
return self.__need_https
## This property will be True if the connection need to be set to HTTPS
## in order for the session to be successfully read. This can actually
## be checked by not having a cookie, but just having the stub_cookie.
## The default cookie is only sent via HTTPS, while the stub_cookie
## is also sent via HTTP and contains the uid, of the user. So if there
## is actually a stub cookie and its value is different than -1 this
## property will be True, meaning the server should redirect the client
## to an HTTPS connection if she really wants to access authenticated
## resources.
need_https = property(get_need_https)
def _unlock_session_cleanup(session):
"""
Auxliary function to unlock a session.
"""
session.unlock()
_RE_VALIDATE_SID = re.compile('[0-9a-f]{32}$')
def _check_sid(sid):
"""
Check the validity of the session identifier.
The sid must be 32 characters long, and consisting of the characters
0-9 and a-f.
The sid may be passed in a cookie from the client and as such
should not be trusted. This is particularly important in
FileSession, where the session filename is derived from the sid.
A sid containing '/' or '.' characters could result in a directory
traversal attack
@param sid: the session identifier.
@type sid: string
@return: True if the session identifier is valid.
@rtype: bool
"""
return not not _RE_VALIDATE_SID.match(sid)
def _new_sid(req):
"""
Make a number based on current time, pid, remote ip
and two random ints, then hash with md5. This should
be fairly unique and very difficult to guess.
@param req: the mod_python request object.
@type req: mod_python request object.
@return: the session identifier.
@rtype: 32 hexadecimal string
@warning: The current implementation of _new_sid returns an
md5 hexdigest string. To avoid a possible directory traversal
attack in FileSession the sid is validated using
the _check_sid() method and the compiled regex
validate_sid_re. The sid will be accepted only if len(sid) == 32
and it only contains the characters 0-9 and a-f.
If you change this implementation of _new_sid, make sure to also
change the validation scheme, as well as the test_Session_illegal_sid()
unit test in test/test.py.
"""
return uuid4().hex
the_time = long(time.time()*10000)
pid = os.getpid()
random_generator = _get_generator()
rnd1 = random_generator.randint(0, 999999999)
rnd2 = random_generator.randint(0, 999999999)
remote_ip = req.remote_ip
return md5("%d%d%d%d%s" % (
the_time,
pid,
rnd1,
rnd2,
remote_ip)
).hexdigest()
def _mkip(ip):
"""
Compute a numerical value for a dotted IP
"""
num = 0L
for i in ip.split('.'):
num = (num << 8) + int(i)
return num
class InvenioSessionMySQL(InvenioSessionBase):
def __init__(self, req, sid=None):
def cb_session_cleanup(data=None):
"""
Session cleanup procedure which to be executed at the end
of the request handling.
"""
run_sql("""DELETE LOW_PRIORITY FROM session
WHERE session_expiry <= UTC_TIMESTAMP()""")
self.cleanup_function = cb_session_cleanup
super(InvenioSessionMySQL, self).__init__(req, sid)
def load_from_storage(self, sid):
ret = run_sql("""SELECT session_object FROM session
WHERE session_key = %s""", [sid])
if ret:
return ret[0][0]
def delete_from_storage(self, sid):
return run_sql("""DELETE LOW_PRIORITY FROM session
WHERE session_key=%s""", [sid])
def save_in_storage(self, sid, session_object, timeout, uid):
session_key = sid
session_expiry = time.time() + timeout + CFG_WEBSESSION_ONE_DAY
session_expiry = convert_datestruct_to_datetext(time.gmtime(session_expiry))
run_sql("""INSERT INTO session(
session_key,
session_expiry,
session_object,
uid
) VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
session_expiry=%s,
session_object=%s,
uid=%s
""", (session_key, session_expiry, session_object, uid,
session_expiry, session_object, uid))
class InvenioSessionRedis(InvenioSessionBase):
def generate_key(self, sid):
return 'session_%s' % sid
def load_from_storage(self, sid):
return get_redis().get(self.generate_key(sid))
def delete_from_storage(self, sid):
return get_redis().delete(self.generate_key(sid))
def save_in_storage(self, sid, session_object, timeout, uid): # pylint: disable=W0613
return get_redis().setex(self.generate_key(sid),
session_object,
timeout)
if CFG_WEBSESSION_STORAGE == 'mysql':
InvenioSession = InvenioSessionMySQL
elif CFG_WEBSESSION_STORAGE == 'redis':
InvenioSession = InvenioSessionRedis
diff --git a/invenio/legacy/wsgi/utils.py b/invenio/legacy/wsgi/utils.py
index fec098bc3..9392fffbc 100644
--- a/invenio/legacy/wsgi/utils.py
+++ b/invenio/legacy/wsgi/utils.py
@@ -1,881 +1,883 @@
# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
-# Copyright (C) 2009, 2010, 2011, 2014 CERN.
+# Copyright (C) 2009, 2010, 2011, 2014, 2015 CERN.
#
# Invenio is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# Invenio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Invenio; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
"""
mod_python->WSGI Framework utilities
This code has been taken from mod_python original source code and rearranged
here to easying the migration from mod_python to wsgi.
The code taken from mod_python is under the following License.
"""
# Copyright 2004 Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you
# may not use this file except in compliance with the License. You
# may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied. See the License for the specific language governing
# permissions and limitations under the License.
#
# Originally developed by Gregory Trubetskoy.
#
# $Id: apache.py 468216 2006-10-27 00:54:12Z grahamd $
from wsgiref.headers import Headers
import time
import re
import os
import cgi
import cStringIO
import tempfile
from types import TypeType, ClassType, BuiltinFunctionType, MethodType, ListType
from invenio.config import CFG_TMPDIR, CFG_TMPSHAREDDIR
from invenio.utils.apache import \
SERVER_RETURN, \
HTTP_LENGTH_REQUIRED, \
HTTP_BAD_REQUEST, \
InvenioWebInterfaceWSGIContentLenghtError, \
InvenioWebInterfaceWSGIContentTypeError, \
InvenioWebInterfaceWSGIContentMD5Error
class table(Headers):
add = Headers.add_header
iteritems = Headers.items
def __getitem__(self, name):
ret = Headers.__getitem__(self, name)
if ret is None:
return ''
else:
return str(ret)
# Some functions made public
exists_config_define = lambda dummy: True
# Some constants
class metaCookie(type):
def __new__(cls, clsname, bases, clsdict):
_valid_attr = (
"version", "path", "domain", "secure",
"comment", "expires", "max_age",
# RFC 2965
"commentURL", "discard", "port",
# Microsoft Extension
"httponly" )
# _valid_attr + property values
# (note __slots__ is a new Python feature, it
# prevents any other attribute from being set)
__slots__ = _valid_attr + ("name", "value", "_value",
"_expires", "__data__")
clsdict["_valid_attr"] = _valid_attr
clsdict["__slots__"] = __slots__
def set_expires(self, value):
if type(value) == type(""):
# if it's a string, it should be
# valid format as per Netscape spec
try:
t = time.strptime(value, "%a, %d-%b-%Y %H:%M:%S GMT")
except ValueError:
raise ValueError, "Invalid expires time: %s" % value
t = time.mktime(t)
else:
# otherwise assume it's a number
# representing time as from time.time()
t = value
value = time.strftime("%a, %d-%b-%Y %H:%M:%S GMT",
time.gmtime(t))
self._expires = "%s" % value
def get_expires(self):
return self._expires
clsdict["expires"] = property(fget=get_expires, fset=set_expires)
return type.__new__(cls, clsname, bases, clsdict)
class Cookie(object):
"""
This class implements the basic Cookie functionality. Note that
unlike the Python Standard Library Cookie class, this class represents
a single cookie (not a list of Morsels).
"""
__metaclass__ = metaCookie
DOWNGRADE = 0
IGNORE = 1
EXCEPTION = 3
def parse(Class, str, **kw):
"""
Parse a Cookie or Set-Cookie header value, and return
a dict of Cookies. Note: the string should NOT include the
header name, only the value.
"""
dict = _parse_cookie(str, Class, **kw)
return dict
parse = classmethod(parse)
def __init__(self, name, value, **kw):
"""
This constructor takes at least a name and value as the
arguments, as well as optionally any of allowed cookie attributes
as defined in the existing cookie standards.
"""
self.name, self.value = name, value
for k in kw:
setattr(self, k.lower(), kw[k])
# subclasses can use this for internal stuff
self.__data__ = {}
def __str__(self):
"""
Provides the string representation of the Cookie suitable for
sending to the browser. Note that the actual header name will
not be part of the string.
This method makes no attempt to automatically double-quote
strings that contain special characters, even though the RFC's
dictate this. This is because doing so seems to confuse most
browsers out there.
"""
result = ["%s=%s" % (self.name, self.value)]
# pylint: disable=E1101
# The attribute _valid_attr is provided by the metaclass 'metaCookie'.
for name in self._valid_attr:
if hasattr(self, name):
- if name in ("secure", "discard", "httponly"):
+ if name in ("secure", "discard"):
result.append(name)
+ elif name == "httponly":
+ result.append("HttpOnly")
else:
result.append("%s=%s" % (name, getattr(self, name)))
# pylint: enable=E1101
return "; ".join(result)
def __repr__(self):
return '<%s: %s>' % (self.__class__.__name__,
str(self))
# This is a simplified and in some places corrected
# (at least I think it is) pattern from standard lib Cookie.py
_cookiePattern = re.compile(
r"(?x)" # Verbose pattern
r"[,\ ]*" # space/comma (RFC2616 4.2) before attr-val is eaten
r"(?P " % ("Day", "Number of Queries"))
for day in range(yyyymm01, yyyymmdd + 1):
p = os.popen("grep -c ^%d %s/search.log" % (day, CFG_LOGDIR), 'r')
for line in p.readlines():
req.write("""%s %s """ %
(day, CFG_SITE_URL, day, line))
p.close()
req.write("%s %s