From 7b515331cda27d714d2c503635c8eeac3ea3b147 Mon Sep 17 00:00:00 2001 From: Sepehr Rasouli Date: Tue, 18 Aug 2026 20:22:48 +0330 Subject: [PATCH] Fix translation issues --- c-api/bool.po | 2 +- c-api/bytearray.po | 4 ++-- copyright.po | 12 ++++++------ improve-page-nojs.po | 2 +- improve-page.po | 2 +- sphinx.po | 6 +++--- tutorial/classes.po | 42 +++++++++++++++++++++--------------------- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/c-api/bool.po b/c-api/bool.po index e944a5fc5..ccddc5deb 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -32,7 +32,7 @@ msgid "This instance of :c:type:`PyTypeObject` represents the Python boolean typ msgstr "این نمونه از :c:type:`PyTypeObject` نوع داده‌ی بولین پایتون را نشان می‌دهد؛ این همان شیء‌ای است که در لایه‌ی پایتون با نام :class:`bool` شناخته می‌شود." msgid "Return true if *o* is of type :c:data:`PyBool_Type`. This function always succeeds." -msgstr "اگر *o* از نوع :c:data:`PyBool_Type` باشد، مقدار true را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." +msgstr "اگر *o* از نوع :c:data:`PyBool_Type` باشد، مقدار True را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." msgid "The Python ``False`` object. This object has no methods and is :term:`immortal`." msgstr "شیء ``False`` در پایتون. این شیء هیچ متدی ندارد و :term:`immortal` است." diff --git a/c-api/bytearray.po b/c-api/bytearray.po index f86dc4690..6ef87c5e7 100644 --- a/c-api/bytearray.po +++ b/c-api/bytearray.po @@ -38,10 +38,10 @@ msgid "Type check macros" msgstr "ماکروهای بررسی نوع" msgid "Return true if the object *o* is a bytearray object or an instance of a subtype of the bytearray type. This function always succeeds." -msgstr "اگر شیء *o* یک شیء bytearray یا نمونه‌ای از زیرنوعی از نوع bytearray باشد، مقدار true را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." +msgstr "اگر شیء *o* یک شیء bytearray یا نمونه‌ای از زیرنوعی از نوع bytearray باشد، مقدار True را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." msgid "Return true if the object *o* is a bytearray object, but not an instance of a subtype of the bytearray type. This function always succeeds." -msgstr "اگر شیء *o* یک شیء bytearray باشد، اما نمونه‌ای از زیرنوعی از نوع bytearray نباشد، مقدار true را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." +msgstr "اگر شیء *o* یک شیء bytearray باشد، اما نمونه‌ای از زیرنوعی از نوع bytearray نباشد، مقدار True را برمی‌گرداند. این تابع همیشه با موفقیت اجرا می‌شود." msgid "Direct API functions" msgstr "توابع مستقیم API" diff --git a/copyright.po b/copyright.po index 3c02a1ba1..8381c9346 100644 --- a/copyright.po +++ b/copyright.po @@ -26,22 +26,22 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "Copyright" -msgstr "حق چاپ" +msgstr "حق نشر" msgid "Python and this documentation is:" -msgstr "پایتون و سند آن:" +msgstr "پایتون و این مستندات:" msgid "Copyright © 2001 Python Software Foundation. All rights reserved." -msgstr "حق چاپ © 2001 بنیاد نرم افزار پایتون. تمامی حقوق محفوظ است." +msgstr "حق نشر © 2001 بنیاد نرم‌افزار پایتون. تمامی حقوق محفوظ است." msgid "Copyright © 2000 BeOpen.com. All rights reserved." -msgstr "حق چاپ © 2000 BeOpen.com. تمامی حقوق محفوظ است." +msgstr "حق نشر © 2000 BeOpen.com. تمامی حقوق محفوظ است." msgid "Copyright © 1995-2000 Corporation for National Research Initiatives. All rights reserved." -msgstr "حق چاپ © 1995-2000 متعلق به Corporation for National Research Initiatives. تمامی حقوق محفوظ است." +msgstr "حق نشر © 1995-2000 متعلق به Corporation for National Research Initiatives. تمامی حقوق محفوظ است." msgid "Copyright © 1991-1995 Stichting Mathematisch Centrum. All rights reserved." -msgstr "حق چاپ © 1991-1995 Stichting Mathematisch Centrum. تمامی حقوق محفوظ است." +msgstr "حق نشر © 1991-1995 Stichting Mathematisch Centrum. تمامی حقوق محفوظ است." msgid "See :ref:`history-and-license` for complete license and permissions information." msgstr "مراجعه کنید به :ref:`history-and-license` برای اطلاعات کامل مجوز و مجوز‌های استفاده." diff --git a/improve-page-nojs.po b/improve-page-nojs.po index 380e06ea2..26e55fc50 100644 --- a/improve-page-nojs.po +++ b/improve-page-nojs.po @@ -28,7 +28,7 @@ msgid "We are always interested to hear ideas about improvements to the document msgstr "ما همیشه علاقه‌مند به شنیدن ایده‌ها درباره‌ی بهبود سند هستیم." msgid "If the bug or suggested improvement concerns the translation of this documentation, open an issue or edit the page in `translation's repository `_ instead." -msgstr "اگر مشکل یا پیشنهاد بهبود مربوط به ترجمه‌ی این مستندات است، یک issue باز کنید یا صفحه را در `مخزن ترجمه `_ ویرایش کنید." +msgstr "اگر مشکل یا پیشنهاد بهبود مربوط به ترجمه‌ی این مستندات است، یک گزارش مشکل باز کنید یا صفحه را در `مخزن ترجمه `_ ویرایش کنید." msgid "You have a few ways to ask questions or suggest changes:" msgstr "شما چند راه برای پرسیدن سؤال یا پیشنهاد تغییرات دارید." diff --git a/improve-page.po b/improve-page.po index bc29ba23b..53df85a60 100644 --- a/improve-page.po +++ b/improve-page.po @@ -31,7 +31,7 @@ msgid "You were reading \"PAGETITLE\" at ``_. The source for that page msgstr "شما در حال خواندن «PAGETITLE» در ``_ بودید. منبع آن صفحه در `GitHub `_ است." msgid "If the bug or suggested improvement concerns the translation of this documentation, open an issue or edit the page in `translation's repository `_ instead." -msgstr "اگر مشکل یا پیشنهاد بهبود مربوط به ترجمه‌ی این مستندات است، یک issue باز کنید یا صفحه را در `مخزن ترجمه `_ ویرایش کنید." +msgstr "اگر مشکل یا پیشنهاد بهبود مربوط به ترجمه‌ی این مستندات است، یک گزارش مشکل باز کنید یا صفحه را در `مخزن ترجمه `_ ویرایش کنید." msgid "You have a few ways to ask questions or suggest changes:" msgstr "شما چند راه برای پرسیدن سؤال یا پیشنهاد تغییرات دارید." diff --git a/sphinx.po b/sphinx.po index ec69fe4d7..097e87974 100644 --- a/sphinx.po +++ b/sphinx.po @@ -129,7 +129,7 @@ msgid "" "if you have comments or suggestions for the Python documentation." msgstr "" "اگر نظر یا پیشنهادی برای مستندات پایتون دارید،\n" -"یک issue باز کنید." +"یک گزارش مشکل باز کنید." msgid "Availability" msgstr "در دسترس بودن" @@ -282,7 +282,7 @@ msgid "Resources relating to Python packaging" msgstr "منابع مربوط به بسته‌بندی پایتون" msgid "Static Typing with Python" -msgstr "تایپ‌ایستا (Static Typing) در پایتون" +msgstr "تایپ‌گذاری ایستا (Static Typing) در پایتون" msgid "Information and guides about Python type safety" msgstr "اطلاعات و راهنماهایی درباره‌ی ایمنی تایپ در پایتون" @@ -336,7 +336,7 @@ msgid "History and license of Python" msgstr "تاریخچه و مجوز پایتون" msgid "Copyright" -msgstr "حق چاپ" +msgstr "حق نشر" msgid "About the documentation" msgstr "درباره‌ی مستندات" diff --git a/tutorial/classes.po b/tutorial/classes.po index 9a2e7655c..950a471e0 100644 --- a/tutorial/classes.po +++ b/tutorial/classes.po @@ -28,19 +28,19 @@ msgstr "" "X-Generator: Poedit 3.6\n" msgid "Classes" -msgstr "کلاسها" +msgstr "کلاس‌ها" msgid "Classes provide a means of bundling data and functionality together. Creating a new class creates a new *type* of object, allowing new *instances* of that type to be made. Each class instance can have attributes attached to it for maintaining its state. Class instances can also have methods (defined by its class) for modifying its state." -msgstr "کلاسها وسیله‌ای را برای بسته‌بندی کردن داده و عملکرد با هم فراهم می‌کنند. ایجاد یک کلاس جدید، نوع جدیدی ایجاد می‌کند که اجازه می‌دهد موارد جدیدی از آن نوع ساخته شود. هر نمونه از کلاس می‌تواند صفاتی داشته باشد که به آن متصل شده‌اند تا وضعیت آن را حفظ کنند. نمونه‌های کلاس می‌توانند همچنین متد‌هایی (که توسط کلاس تعریف شده‌اند) داشته باشند تا وضعیت آن را تغییر دهند." +msgstr "کلاس‌ها وسیله‌ای را برای بسته‌بندی کردن داده و عملکرد با هم فراهم می‌کنند. ایجاد یک کلاس جدید، نوع جدیدی ایجاد می‌کند که اجازه می‌دهد موارد جدیدی از آن نوع ساخته شود. هر نمونه از کلاس می‌تواند صفاتی داشته باشد که به آن متصل شده‌اند تا وضعیت آن را حفظ کنند. نمونه‌های کلاس می‌توانند همچنین متد‌هایی (که توسط کلاس تعریف شده‌اند) داشته باشند تا وضعیت آن را تغییر دهند." msgid "Compared with other programming languages, Python's class mechanism adds classes with a minimum of new syntax and semantics. It is a mixture of the class mechanisms found in C++ and Modula-3. Python classes provide all the standard features of Object Oriented Programming: the class inheritance mechanism allows multiple base classes, a derived class can override any methods of its base class or classes, and a method can call the method of a base class with the same name. Objects can contain arbitrary amounts and kinds of data. As is true for modules, classes partake of the dynamic nature of Python: they are created at runtime, and can be modified further after creation." -msgstr "در مقایسه با دیگر زبانهای برنامه‌نویسی، مکانیزم کلاس در پایتون کلاسها را با حداقل قواعد و معناشناسی جدید اضافه می‌کند. این مکانیزم ترکیبی از مکانیزم‌های کلاسی است که در C++ و Modula-3 یافت می‌شود. کلاسهای پایتون تمام ویژگیهای استاندارد برنامه‌نویسی شیءگرا را فراهم می‌کنند: مکانیزم ارث بری کلاسها اجازه می‌دهد کلاسهای پایه‌ی متعددی داشته باشید، یک کلاس مشتق می‌تواند هر یک از متد‌های کلاسهای پایه‌ی خود را بازنویسی کند و یک متد می‌تواند متدی از کلاس پایه با همان نام را فراخوانی کند. اشیاء می‌توانند حاوی مقادیر و انواع داده‌ای دلخواه باشند. همان‌طور که برای ماژول‌ها صادق است، کلاسها نیز از طبیعت پویا در پایتون برخوردارند: آن‌ها در زمان اجرا ایجاد می‌شوند و می‌توانند پس از ایجاد بیشتر تغییر داده شوند." +msgstr "در مقایسه با دیگر زبانهای برنامه‌نویسی، مکانیزم کلاس در پایتون کلاس‌ها را با حداقل قواعد و معناشناسی جدید اضافه می‌کند. این مکانیزم ترکیبی از مکانیزم‌های کلاسی است که در C++ و Modula-3 یافت می‌شود. کلاس‌های پایتون تمام ویژگیهای استاندارد برنامه‌نویسی شیءگرا را فراهم می‌کنند: مکانیزم ارث بری کلاس‌ها اجازه می‌دهد کلاس‌های پایه‌ی متعددی داشته باشید، یک کلاس مشتق می‌تواند هر یک از متد‌های کلاس‌های پایه‌ی خود را بازنویسی کند و یک متد می‌تواند متدی از کلاس پایه با همان نام را فراخوانی کند. اشیاء می‌توانند حاوی مقادیر و انواع داده‌ای دلخواه باشند. همان‌طور که برای ماژول‌ها صادق است، کلاس‌ها نیز از طبیعت پویا در پایتون برخوردارند: آن‌ها در زمان اجرا ایجاد می‌شوند و می‌توانند پس از ایجاد بیشتر تغییر داده شوند." msgid "In C++ terminology, normally class members (including the data members) are *public* (except see below :ref:`tut-private`), and all member functions are *virtual*. As in Modula-3, there are no shorthands for referencing the object's members from its methods: the method function is declared with an explicit first argument representing the object, which is provided implicitly by the call. As in Smalltalk, classes themselves are objects. This provides semantics for importing and renaming. Unlike C++ and Modula-3, built-in types can be used as base classes for extension by the user. Also, like in C++, most built-in operators with special syntax (arithmetic operators, subscripting etc.) can be redefined for class instances." -msgstr "در اصطلاحات C++، معمولاً اعضای کلاس (از جمله اعضای داده) *public* هستند (به جز موردی که در پایین :ref:`tut-private` ذکر شده است)، و تمامی توابع عضو مجازی هستند. همان‌طور که در Modula-3، هیچ میانبر‌هایی برای ارجاع به اعضای شیء از متد‌های آن وجود ندارد: تابع متد با یک آرگومان اول صریح که نمایانگر شیء است، اعلام می‌شود که این آرگومان به صورت ضمنی توسط فراخوانی فراهم می‌شود. همان‌طور که در Smalltalk، خود کلاسها اشیاء هستند. این ویژگی معناشناسی برای وارد کردن و تغییر نام را فراهم می‌آورد. برخلاف C++ و Modula-3، نوع‌های داخلی می‌توانند به‌عنوان کلاسهای پایه برای توسعه توسط کاربر استفاده شوند. همچنین، مانند C++، بیشتر عملگر‌های داخلی با نحوی خاص (عملگر‌های ریاضی، زیرنویسی و غیره) می‌توانند برای نمونه‌های کلاس بازتعریف شوند." +msgstr "در اصطلاحات C++، معمولاً اعضای کلاس (از جمله اعضای داده) *public* هستند (به جز موردی که در پایین :ref:`tut-private` ذکر شده است)، و تمامی توابع عضو مجازی هستند. همان‌طور که در Modula-3، هیچ میانبر‌هایی برای ارجاع به اعضای شیء از متد‌های آن وجود ندارد: تابع متد با یک آرگومان اول صریح که نمایانگر شیء است، اعلام می‌شود که این آرگومان به صورت ضمنی توسط فراخوانی فراهم می‌شود. همان‌طور که در Smalltalk، خود کلاس‌ها اشیاء هستند. این ویژگی معناشناسی برای وارد کردن و تغییر نام را فراهم می‌آورد. برخلاف C++ و Modula-3، نوع‌های داخلی می‌توانند به‌عنوان کلاس‌های پایه برای توسعه توسط کاربر استفاده شوند. همچنین، مانند C++، بیشتر عملگر‌های داخلی با نحوی خاص (عملگر‌های ریاضی، زیرنویسی و غیره) می‌توانند برای نمونه‌های کلاس بازتعریف شوند." msgid "(Lacking universally accepted terminology to talk about classes, I will make occasional use of Smalltalk and C++ terms. I would use Modula-3 terms, since its object-oriented semantics are closer to those of Python than C++, but I expect that few readers have heard of it.)" -msgstr "(با نبود اصطلاحات پذیرفته شده جهانی برای صحبت درباره‌ی کلاسها، گاهی از اصطلاحات Smalltalk و C++ استفاده خواهم کرد. من از اصطلاحات Modula-3 استفاده می‌کردم، چون معنای شیء‌گرای آن به پایتون نزدیک‌تر از C++ است، اما انتظار دارم که تعداد کمی از خوانندگان با آن آشنا باشند.)" +msgstr "(با نبود اصطلاحات پذیرفته شده جهانی برای صحبت درباره‌ی کلاس‌ها، گاهی از اصطلاحات Smalltalk و C++ استفاده خواهم کرد. من از اصطلاحات Modula-3 استفاده می‌کردم، چون معنای شیء‌گرای آن به پایتون نزدیک‌تر از C++ است، اما انتظار دارم که تعداد کمی از خوانندگان با آن آشنا باشند.)" msgid "A Word About Names and Objects" msgstr "سخنی درباره‌ی نام‌ها و اشیاء" @@ -52,7 +52,7 @@ msgid "Python Scopes and Namespaces" msgstr "محدوده‌ها و فضای نام‌ها در پایتون" msgid "Before introducing classes, I first have to tell you something about Python's scope rules. Class definitions play some neat tricks with namespaces, and you need to know how scopes and namespaces work to fully understand what's going on. Incidentally, knowledge about this subject is useful for any advanced Python programmer." -msgstr "قبل از معرفی کلاسها، ابتدا باید چیزی درباره‌ی قوانین محدوده در پایتون به شما بگویم. تعریف کلاسها چند ترفند جالب با فضا‌های نام انجام می‌دهد و برای اینکه به‌طور کامل متوجه شوید چه می‌گذرد، باید بدانید که محدوده‌ها و فضا‌های نام چگونه کار می‌کنند. ضمناً، آگاهی از این موضوع برای هر برنامه‌نویس پیشرفته‌ی پایتون مفید است." +msgstr "قبل از معرفی کلاس‌ها، ابتدا باید چیزی درباره‌ی قوانین محدوده در پایتون به شما بگویم. تعریف کلاس‌ها چند ترفند جالب با فضا‌های نام انجام می‌دهد و برای اینکه به‌طور کامل متوجه شوید چه می‌گذرد، باید بدانید که محدوده‌ها و فضا‌های نام چگونه کار می‌کنند. ضمناً، آگاهی از این موضوع برای هر برنامه‌نویس پیشرفته‌ی پایتون مفید است." msgid "Let's begin with some definitions." msgstr "بیایید با چند تعریف شروع کنیم." @@ -94,7 +94,7 @@ msgid "If a name is declared global, then all references and assignments go dire msgstr "اگر یک نام به‌عنوان سراسری اعلام شود، تمام ارجاعها و تخصیص‌ها مستقیماً به محدوده‌ی یکی‌مانده‌به‌آخر که شامل نام‌های سراسری ماژول است، می‌روند. برای اتصال مجدد متغیرهایی که در خارج از درونی‌ترین محدوده یافت می‌شوند، می‌توان از دستور :keyword:`nonlocal` استفاده کرد؛ اگر به‌عنوان nonlocal اعلام نشوند، آن متغیرها فقط‌خواندنی هستند (تلاش برای نوشتن در چنین متغیری، صرفاً یک متغیر محلی *جدید* در درونی‌ترین محدوده ایجاد می‌کند و متغیر بیرونی با همان نام را بدون تغییر باقی می‌گذارد)." msgid "Usually, the local scope references the local names of the (textually) current function. Outside functions, the local scope references the same namespace as the global scope: the module's namespace. Class definitions place yet another namespace in the local scope." -msgstr "معمولاً، محدوده‌ی محلی به نام‌های محلی تابع جاری (از نظر متنی) ارجاع می‌دهد. در خارج از توابع، محدوده‌ی محلی به همان فضای نامی ارجاع می‌دهد که محدوده‌ی سراسری به آن ارجاع می‌دهد: فضای نام ماژول. تعاریف کلاسها، فضای نام دیگری را در محدوده‌ی محلی قرار می‌دهند." +msgstr "معمولاً، محدوده‌ی محلی به نام‌های محلی تابع جاری (از نظر متنی) ارجاع می‌دهد. در خارج از توابع، محدوده‌ی محلی به همان فضای نامی ارجاع می‌دهد که محدوده‌ی سراسری به آن ارجاع می‌دهد: فضای نام ماژول. تعاریف کلاس‌ها، فضای نام دیگری را در محدوده‌ی محلی قرار می‌دهند." msgid "It is important to realize that scopes are determined textually: the global scope of a function defined in a module is that module's namespace, no matter from where or by what alias the function is called. On the other hand, the actual search for names is done dynamically, at run time --- however, the language definition is evolving towards static name resolution, at \"compile\" time, so don't rely on dynamic name resolution! (In fact, local variables are already determined statically.)" msgstr "درک این نکته مهم است که محدوده‌ها به‌صورت متنی (بر اساس جایگاه در کد) تعیین می‌شوند: محدوده‌ی سراسری تابعی که در یک ماژول تعریف شده است، همان فضای نام آن ماژول است، فرقی نمی‌کند که تابع از کجا یا با چه نام مستعاری فراخوانی شود. از سوی دیگر، جست‌وجوی واقعی برای نام‌ها به‌صورت پویا (داینامیک) و در زمان اجرا انجام می‌شود --- با این حال، تعریف زبان به سمت و سوی حلِ ایستا (استاتیک) نام‌ها در زمان «کامپایل» پیش می‌رود، پس به حلِ پویای نام‌ها اعتماد نکنید! (در واقع، متغیرهای محلی از قبل به‌صورت ایستا تعیین می‌شوند.)" @@ -179,10 +179,10 @@ msgid "You can also see that there was no previous binding for *spam* before the msgstr "همچنین می‌توانید ببینید که قبل از تخصیص :keyword:`global`، هیچ اتصال قبلی برای *spam* وجود نداشت." msgid "A First Look at Classes" -msgstr "در نگاه اول به کلاسها" +msgstr "در نگاه اول به کلاس‌ها" msgid "Classes introduce a little bit of new syntax, three new object types, and some new semantics." -msgstr "کلاسها کمی نحو جدید، سه نوع شیء جدید، و مفاهیم معنایی جدیدی را معرفی می‌کنند." +msgstr "کلاس‌ها کمی نحو جدید، سه نوع شیء جدید، و مفاهیم معنایی جدیدی را معرفی می‌کنند." msgid "Class Definition Syntax" msgstr "قواعد تعریف کلاس" @@ -206,7 +206,7 @@ msgstr "" " " msgid "Class definitions, like function definitions (:keyword:`def` statements) must be executed before they have any effect. (You could conceivably place a class definition in a branch of an :keyword:`if` statement, or inside a function.)" -msgstr "تعاریف کلاسها، مانند تعاریف توابع (دستورات :keyword:`def`)، باید قبل از اینکه تأثیری داشته باشند، اجرا شوند. (به‌طور تئوری می‌توانید یک تعریف کلاس را در یک شاخه از دستور :keyword:`if` یا داخل یک تابع قرار دهید.)" +msgstr "تعاریف کلاس‌ها، مانند تعاریف توابع (دستورات :keyword:`def`)، باید قبل از اینکه تأثیری داشته باشند، اجرا شوند. (به‌طور تئوری می‌توانید یک تعریف کلاس را در یک شاخه از دستور :keyword:`if` یا داخل یک تابع قرار دهید.)" msgid "In practice, the statements inside a class definition will usually be function definitions, but other statements are allowed, and sometimes useful --- we'll come back to this later. The function definitions inside a class normally have a peculiar form of argument list, dictated by the calling conventions for methods --- again, this is explained later." msgstr "در عمل، دستورات داخل یک تعریف کلاس معمولاً تعاریف توابع هستند، اما دستورات دیگری نیز مجاز هستند و گاهی مفیدند --- بعداً به این موضوع بازخواهیم گشت. تعاریف توابع داخل یک کلاس معمولاً دارای شکل خاصی از فهرست آرگومان‌ها هستند که توسط قراردادهای فراخوانی برای متدها تعیین می‌شود --- باز هم، این موضوع بعداً توضیح داده می‌شود." @@ -254,7 +254,7 @@ msgid "creates a new *instance* of the class and assigns this object to the loca msgstr "یک *نمونه* جدید از کلاس ایجاد می‌کند و این شیء را به متغیر محلی ``x`` تخصیص می‌دهد." msgid "The instantiation operation (\"calling\" a class object) creates an empty object. Many classes like to create objects with instances customized to a specific initial state. Therefore a class may define a special method named :meth:`~object.__init__`, like this::" -msgstr "عملیات نمونه‌سازی (که «فراخوانی» یک شیء کلاس است) یک شیء خالی ایجاد می‌کند. بسیاری از کلاسها ترجیح می‌دهند اشیایی با نمونه‌هایی ایجاد کنند که به یک حالت اولیه‌ی خاص سفارشی‌سازی شده‌اند. بنابراین، یک کلاس ممکن است یک متد ویژه به نام :meth:`~object.__init__` تعریف کند، مانند این::" +msgstr "عملیات نمونه‌سازی (که «فراخوانی» یک شیء کلاس است) یک شیء خالی ایجاد می‌کند. بسیاری از کلاس‌ها ترجیح می‌دهند اشیایی با نمونه‌هایی ایجاد کنند که به یک حالت اولیه‌ی خاص سفارشی‌سازی شده‌اند. بنابراین، یک کلاس ممکن است یک متد ویژه به نام :meth:`~object.__init__` تعریف کند، مانند این::" msgid "" "def __init__(self):\n" @@ -502,7 +502,7 @@ msgstr "" "storage east" msgid "Data attributes may be referenced by methods as well as by ordinary users (\"clients\") of an object. In other words, classes are not usable to implement pure abstract data types. In fact, nothing in Python makes it possible to enforce data hiding --- it is all based upon convention. (On the other hand, the Python implementation, written in C, can completely hide implementation details and control access to an object if necessary; this can be used by extensions to Python written in C.)" -msgstr "ویژگیهای داده ممکن است هم توسط متدها و هم توسط کاربران عادی (\"clients\") یک شیء ارجاع داده شوند. به عبارت دیگر، کلاسها برای پیاده‌سازی انواع داده‌ی انتزاعی خالص قابل استفاده نیستند. در واقع، هیچ چیزی در پایتون امکان اعمال پنهان‌سازی داده را فراهم نمی‌کند --- همه‌چیز بر اساس قرارداد است. (از سوی دیگر، پیاده‌سازی پایتون که به زبان C نوشته شده است، می‌تواند جزئیات پیاده‌سازی را کاملاً پنهان کند و در صورت نیاز دسترسی به یک شیء را کنترل کند؛ این قابلیت می‌تواند توسط افزونه‌های پایتون که به زبان C نوشته می‌شوند، استفاده شود.)" +msgstr "ویژگیهای داده ممکن است هم توسط متدها و هم توسط کاربران عادی (\"clients\") یک شیء ارجاع داده شوند. به عبارت دیگر، کلاس‌ها برای پیاده‌سازی انواع داده‌ی انتزاعی خالص قابل استفاده نیستند. در واقع، هیچ چیزی در پایتون امکان اعمال پنهان‌سازی داده را فراهم نمی‌کند --- همه‌چیز بر اساس قرارداد است. (از سوی دیگر، پیاده‌سازی پایتون که به زبان C نوشته شده است، می‌تواند جزئیات پیاده‌سازی را کاملاً پنهان کند و در صورت نیاز دسترسی به یک شیء را کنترل کند؛ این قابلیت می‌تواند توسط افزونه‌های پایتون که به زبان C نوشته می‌شوند، استفاده شود.)" msgid "Clients should use data attributes with care --- clients may mess up invariants maintained by the methods by stamping on their data attributes. Note that clients may add data attributes of their own to an instance object without affecting the validity of the methods, as long as name conflicts are avoided --- again, a naming convention can save a lot of headaches here." msgstr "کاربران (clients) باید با احتیاط از ویژگیهای داده استفاده کنند --- کاربران ممکن است ناورداهای حفظ‌شده توسط متدها را با دستکاری در ویژگیهای داده‌شان به هم بریزند. توجه داشته باشید که کاربران ممکن است ویژگیهای داده‌ی خود را به یک شیء نمونه اضافه کنند بدون اینکه بر صحت متدها تأثیر بگذارند، تا زمانی که تداخل نام‌ها اجتناب شود --- باز هم، یک قرارداد نام‌گذاری می‌تواند از بسیاری از سردرگمی‌ها در اینجا جلوگیری کند." @@ -571,7 +571,7 @@ msgstr "" " self.add(x)" msgid "Methods may reference global names in the same way as ordinary functions. The global scope associated with a method is the module containing its definition. (A class is never used as a global scope.) While one rarely encounters a good reason for using global data in a method, there are many legitimate uses of the global scope: for one thing, functions and modules imported into the global scope can be used by methods, as well as functions and classes defined in it. Usually, the class containing the method is itself defined in this global scope, and in the next section we'll find some good reasons why a method would want to reference its own class." -msgstr "متدها ممکن است به نام‌های سراسری به همان روشی که توابع معمولی اشاره می‌کنند، ارجاع دهند. محدوده‌ی سراسری مرتبط با یک متد، ماژولی است که شامل تعریف آن است. (یک کلاس هرگز به‌عنوان محدوده‌ی سراسری استفاده نمی‌شود.) اگرچه به ندرت دلیل خوبی برای استفاده از داده‌های سراسری در یک متد یافت می‌شود، اما کاربردهای مشروع زیادی برای محدوده‌ی سراسری وجود دارد: برای یک چیز، توابع و ماژول‌هایی که به محدوده‌ی سراسری ایمپورت شده‌اند، می‌توانند توسط متدها استفاده شوند، همچنین توابع و کلاسهای تعریف‌شده در آن. معمولاً، کلاسی که شامل متد است، خود در این محدوده‌ی سراسری تعریف می‌شود، و در بخش بعدی دلایل خوبی خواهیم یافت که چرا یک متد ممکن است بخواهد به کلاس خودش ارجاع دهد." +msgstr "متدها ممکن است به نام‌های سراسری به همان روشی که توابع معمولی اشاره می‌کنند، ارجاع دهند. محدوده‌ی سراسری مرتبط با یک متد، ماژولی است که شامل تعریف آن است. (یک کلاس هرگز به‌عنوان محدوده‌ی سراسری استفاده نمی‌شود.) اگرچه به ندرت دلیل خوبی برای استفاده از داده‌های سراسری در یک متد یافت می‌شود، اما کاربردهای مشروع زیادی برای محدوده‌ی سراسری وجود دارد: برای یک چیز، توابع و ماژول‌هایی که به محدوده‌ی سراسری ایمپورت شده‌اند، می‌توانند توسط متدها استفاده شوند، همچنین توابع و کلاس‌های تعریف‌شده در آن. معمولاً، کلاسی که شامل متد است، خود در این محدوده‌ی سراسری تعریف می‌شود، و در بخش بعدی دلایل خوبی خواهیم یافت که چرا یک متد ممکن است بخواهد به کلاس خودش ارجاع دهد." msgid "Each value is an object, and therefore has a *class* (also called its *type*). It is stored as ``object.__class__``." msgstr "هر مقدار یک شیء است، و بنابراین دارای یک *کلاس* (که به آن *تایپ* نیز گفته می‌شود) می‌باشد. این مقدار به‌صورت ``object.__class__`` ذخیره می‌شود." @@ -607,10 +607,10 @@ msgid "Execution of a derived class definition proceeds the same as for a base c msgstr "اجرای تعریف یک کلاس مشتق‌شده به همان شیوه‌ای است که برای یک کلاس پایه انجام می‌شود. هنگامی که شیء کلاس ساخته می‌شود، کلاس پایه به خاطر سپرده می‌شود. این (اطلاعات) برای حل کردن ارجاعات به ویژگیها استفاده می‌شود: اگر ویژگی درخواستی در کلاس یافت نشود، جست‌وجو در کلاس پایه ادامه می‌یابد. این قاعده به‌صورت بازگشتی اعمال می‌شود اگر خود کلاس پایه از کلاس دیگری مشتق شده باشد." msgid "There's nothing special about instantiation of derived classes: ``DerivedClassName()`` creates a new instance of the class. Method references are resolved as follows: the corresponding class attribute is searched, descending down the chain of base classes if necessary, and the method reference is valid if this yields a function object." -msgstr "هیچ نکته‌ی خاصی درباره‌ی نمونه‌سازی کلاسهای مشتق‌شده وجود ندارد: ``DerivedClassName()`` یک نمونه‌ی جدید از کلاس ایجاد می‌کند. ارجاعهای متد به‌صورت زیر حل می‌شوند: ویژگی کلاس متناظر جست‌وجو می‌شود، در صورت لزوم در زنجیره‌ی کلاسهای پایه به پایین می‌رود، و ارجاع متد در صورتی معتبر است که این جست‌وجو به یک شیء تابع منجر شود." +msgstr "هیچ نکته‌ی خاصی درباره‌ی نمونه‌سازی کلاس‌های مشتق‌شده وجود ندارد: ``DerivedClassName()`` یک نمونه‌ی جدید از کلاس ایجاد می‌کند. ارجاعهای متد به‌صورت زیر حل می‌شوند: ویژگی کلاس متناظر جست‌وجو می‌شود، در صورت لزوم در زنجیره‌ی کلاس‌های پایه به پایین می‌رود، و ارجاع متد در صورتی معتبر است که این جست‌وجو به یک شیء تابع منجر شود." msgid "Derived classes may override methods of their base classes. Because methods have no special privileges when calling other methods of the same object, a method of a base class that calls another method defined in the same base class may end up calling a method of a derived class that overrides it. (For C++ programmers: all methods in Python are effectively ``virtual``.)" -msgstr "کلاسهای مشتق‌شده ممکن است متدهای کلاسهای پایه‌ی خود را بازنویسی کنند. از آنجایی که متدها هنگام فراخوانی سایر متدهای همان شیء، امتیاز ویژه‌ای ندارند، یک متد از یک کلاس پایه که متد دیگری را که در همان کلاس پایه تعریف شده فراخوانی می‌کند، ممکن است در نهایت متدی از یک کلاس مشتق‌شده را فراخوانی کند که آن را بازنویسی کرده است. (برای برنامه‌نویسان C++: تمام متدها در پایتون به‌طور مؤثر ``virtual`` هستند.)" +msgstr "کلاس‌های مشتق‌شده ممکن است متدهای کلاس‌های پایه‌ی خود را بازنویسی کنند. از آنجایی که متدها هنگام فراخوانی سایر متدهای همان شیء، امتیاز ویژه‌ای ندارند، یک متد از یک کلاس پایه که متد دیگری را که در همان کلاس پایه تعریف شده فراخوانی می‌کند، ممکن است در نهایت متدی از یک کلاس مشتق‌شده را فراخوانی کند که آن را بازنویسی کرده است. (برای برنامه‌نویسان C++: تمام متدها در پایتون به‌طور مؤثر ``virtual`` هستند.)" msgid "An overriding method in a derived class may in fact want to extend rather than simply replace the base class method of the same name. There is a simple way to call the base class method directly: just call ``BaseClassName.methodname(self, arguments)``. This is occasionally useful to clients as well. (Note that this only works if the base class is accessible as ``BaseClassName`` in the global scope.)" msgstr "یک متد بازنویسی‌شده در یک کلاس مشتق‌شده ممکن است در واقع بخواهد به جای اینکه صرفاً متد کلاس پایه را با همین نام جایگزین کند، آن را گسترش دهد. یک راه ساده برای فراخوانی مستقیم متد کلاس پایه وجود دارد: فقط ``BaseClassName.methodname(self, arguments)`` را فراخوانی کنید. این روش گاهی برای کاربران (clients) نیز مفید است. (توجه داشته باشید که این روش تنها زمانی کار می‌کند که کلاس پایه به‌عنوان ``BaseClassName`` در محدوده‌ی سراسری (global scope) قابل دسترسی باشد.)" @@ -622,7 +622,7 @@ msgid "Use :func:`isinstance` to check an instance's type: ``isinstance(obj, int msgstr "برای بررسی نوع یک نمونه (instance) از :func:`isinstance` استفاده کنید: ``isinstance(obj, int)`` تنها زمانی ``True`` خواهد بود که ``obj.__class__`` از نوع :class:`int` باشد یا کلاسی که از :class:`int` مشتق شده باشد." msgid "Use :func:`issubclass` to check class inheritance: ``issubclass(bool, int)`` is ``True`` since :class:`bool` is a subclass of :class:`int`. However, ``issubclass(float, int)`` is ``False`` since :class:`float` is not a subclass of :class:`int`." -msgstr "برای بررسی ارث‌بری کلاسها از :func:`issubclass` استفاده کنید: ``issubclass(bool, int)`` مقدار ``True`` است چون :class:`bool` زیرکلاسی از :class:`int` است. با این حال، ``issubclass(float, int)`` مقدار ``False`` است چون :class:`float` زیرکلاسی از :class:`int` نیست." +msgstr "برای بررسی ارث‌بری کلاس‌ها از :func:`issubclass` استفاده کنید: ``issubclass(bool, int)`` مقدار ``True`` است چون :class:`bool` زیرکلاسی از :class:`int` است. با این حال، ``issubclass(float, int)`` مقدار ``False`` است چون :class:`float` زیرکلاسی از :class:`int` نیست." msgid "Multiple Inheritance" msgstr "ارث‌بری چندگانه" @@ -646,13 +646,13 @@ msgstr "" " " msgid "For most purposes, in the simplest cases, you can think of the search for attributes inherited from a parent class as depth-first, left-to-right, not searching twice in the same class where there is an overlap in the hierarchy. Thus, if an attribute is not found in :class:`!DerivedClassName`, it is searched for in :class:`!Base1`, then (recursively) in the base classes of :class:`!Base1`, and if it was not found there, it was searched for in :class:`!Base2`, and so on." -msgstr "برای بیشتر کاربردها، در ساده‌ترین موارد، می‌توانید جست‌وجو برای ویژگیهای به‌ارث‌برده‌شده از یک کلاس والد را به‌صورت عمق‌اول، چپ‌به‌راست، بدون جست‌وجوی دوباره در همان کلاس در جایی که همپوشانی در سلسله‌مراتب وجود دارد، در نظر بگیرید. بنابراین، اگر ویژگی‌ای در :class:`!DerivedClassName` یافت نشد، در :class:`!Base1` جست‌وجو می‌شود، سپس (به‌صورت بازگشتی) در کلاسهای پایه‌ی :class:`!Base1`، و اگر در آنجا یافت نشد، در :class:`!Base2` جست‌وجو می‌شود، و به همین ترتیب." +msgstr "برای بیشتر کاربردها، در ساده‌ترین موارد، می‌توانید جست‌وجو برای ویژگیهای به‌ارث‌برده‌شده از یک کلاس والد را به‌صورت عمق‌اول، چپ‌به‌راست، بدون جست‌وجوی دوباره در همان کلاس در جایی که همپوشانی در سلسله‌مراتب وجود دارد، در نظر بگیرید. بنابراین، اگر ویژگی‌ای در :class:`!DerivedClassName` یافت نشد، در :class:`!Base1` جست‌وجو می‌شود، سپس (به‌صورت بازگشتی) در کلاس‌های پایه‌ی :class:`!Base1`، و اگر در آنجا یافت نشد، در :class:`!Base2` جست‌وجو می‌شود، و به همین ترتیب." msgid "In fact, it is slightly more complex than that; the method resolution order changes dynamically to support cooperative calls to :func:`super`. This approach is known in some other multiple-inheritance languages as call-next-method and is more powerful than the super call found in single-inheritance languages." msgstr "در واقع، این موضوع کمی پیچیده‌تر از این است؛ ترتیب حل متد به‌صورت پویا تغییر می‌کند تا از فراخوانی‌های مشارکتی به :func:`super` پشتیبانی کند. این رویکرد در برخی دیگر از زبانهای دارای ارث‌بری چندگانه با نام call-next-method شناخته می‌شود و از فراخوانی super موجود در زبانهای دارای ارث‌بری تکی قدرتمندتر است." msgid "Dynamic ordering is necessary because all cases of multiple inheritance exhibit one or more diamond relationships (where at least one of the parent classes can be accessed through multiple paths from the bottommost class). For example, all classes inherit from :class:`object`, so any case of multiple inheritance provides more than one path to reach :class:`object`. To keep the base classes from being accessed more than once, the dynamic algorithm linearizes the search order in a way that preserves the left-to-right ordering specified in each class, that calls each parent only once, and that is monotonic (meaning that a class can be subclassed without affecting the precedence order of its parents). Taken together, these properties make it possible to design reliable and extensible classes with multiple inheritance. For more detail, see :ref:`python_2.3_mro`." -msgstr "ترتیب‌دهی پویا ضروری است زیرا همه‌ی موارد ارث‌بری چندگانه دارای یک یا چند رابطه‌ی الماسی هستند (جایی که حداقل یکی از کلاسهای والد از طریق چندین مسیر از پایین‌ترین کلاس قابل دسترسی است). برای مثال، همه‌ی کلاسها از :class:`object` ارث‌بری می‌کنند، بنابراین هر موردی از ارث‌بری چندگانه بیش از یک مسیر برای رسیدن به :class:`object` فراهم می‌کند. برای جلوگیری از دسترسی بیش از یک بار به کلاسهای پایه، الگوریتم پویا ترتیب جست‌وجو را به‌گونه‌ای خطی‌سازی می‌کند که ترتیب چپ‌به‌راست مشخص‌شده در هر کلاس را حفظ کند، که هر والد را فقط یک بار فراخوانی می‌کند، و یکنواخت است (به این معنی که یک کلاس می‌تواند زیرکلاس‌ داشته باشد بدون اینکه بر ترتیب اولویت والدین آن تأثیر بگذارد). این ویژگیها در کنار هم، طراحی کلاسهای قابل اعتماد و قابل توسعه با ارث‌بری چندگانه را ممکن می‌سازند. برای جزئیات بیشتر، به :ref:`python_2.3_mro` مراجعه کنید." +msgstr "ترتیب‌دهی پویا ضروری است زیرا همه‌ی موارد ارث‌بری چندگانه دارای یک یا چند رابطه‌ی الماسی هستند (جایی که حداقل یکی از کلاس‌های والد از طریق چندین مسیر از پایین‌ترین کلاس قابل دسترسی است). برای مثال، همه‌ی کلاس‌ها از :class:`object` ارث‌بری می‌کنند، بنابراین هر موردی از ارث‌بری چندگانه بیش از یک مسیر برای رسیدن به :class:`object` فراهم می‌کند. برای جلوگیری از دسترسی بیش از یک بار به کلاس‌های پایه، الگوریتم پویا ترتیب جست‌وجو را به‌گونه‌ای خطی‌سازی می‌کند که ترتیب چپ‌به‌راست مشخص‌شده در هر کلاس را حفظ کند، که هر والد را فقط یک بار فراخوانی می‌کند، و یکنواخت است (به این معنی که یک کلاس می‌تواند زیرکلاس‌ داشته باشد بدون اینکه بر ترتیب اولویت والدین آن تأثیر بگذارد). این ویژگیها در کنار هم، طراحی کلاس‌های قابل اعتماد و قابل توسعه با ارث‌بری چندگانه را ممکن می‌سازند. برای جزئیات بیشتر، به :ref:`python_2.3_mro` مراجعه کنید." msgid "Private Variables" msgstr "متغیر‌های خصوصی" @@ -661,13 +661,13 @@ msgid "\"Private\" instance variables that cannot be accessed except from inside msgstr "متغیرهای نمونه‌ای «خصوصی» که جز از درون یک شیء قابل دسترسی نیستند، در پایتون وجود ندارند. با این حال، یک قرارداد وجود دارد که توسط بیشتر کدهای پایتون دنبال می‌شود: یک نام که با زیرخط آغاز می‌شود (مثلاً ``_spam``) باید به‌عنوان بخشی غیرعمومی از API در نظر گرفته شود (خواه یک تابع، یک متد یا یک عضو داده باشد). باید به‌عنوان یک جزئیات پیاده‌سازی در نظر گرفته شود و ممکن است بدون اطلاع‌رسانی تغییر کند." msgid "Since there is a valid use-case for class-private members (namely to avoid name clashes of names with names defined by subclasses), there is limited support for such a mechanism, called :dfn:`name mangling`. Any identifier of the form ``__spam`` (at least two leading underscores, at most one trailing underscore) is textually replaced with ``_classname__spam``, where ``classname`` is the current class name with leading underscore(s) stripped. This mangling is done without regard to the syntactic position of the identifier, as long as it occurs within the definition of a class." -msgstr "از آنجا که یک مورد استفاده‌ی معتبر برای اعضای خصوصی کلاس وجود دارد (به‌ویژه برای جلوگیری از برخورد نام‌ها با نام‌های تعریف‌شده توسط زیرکلاسها)، پشتیبانی محدودی برای چنین مکانیزمی، به نام :dfn:`name mangling` (دستکاری نام) وجود دارد. هر شناسه‌ای به شکل ``__spam`` (حداقل دو زیرخط در ابتدا، حداکثر یک زیرخط در انتها) به‌صورت متنی با ``_classname__spam`` جایگزین می‌شود، که در آن ``classname`` نام کلاس جاری است با زیرخط‌های ابتدایی حذف‌شده. این دستکاری بدون در نظر گرفتن جایگاه نحوی شناسه انجام می‌شود، تا زمانی که درون تعریف یک کلاس رخ دهد." +msgstr "از آنجا که یک مورد استفاده‌ی معتبر برای اعضای خصوصی کلاس وجود دارد (به‌ویژه برای جلوگیری از برخورد نام‌ها با نام‌های تعریف‌شده توسط زیرکلاس‌ها)، پشتیبانی محدودی برای چنین مکانیزمی، به نام :dfn:`name mangling` (دستکاری نام) وجود دارد. هر شناسه‌ای به شکل ``__spam`` (حداقل دو زیرخط در ابتدا، حداکثر یک زیرخط در انتها) به‌صورت متنی با ``_classname__spam`` جایگزین می‌شود، که در آن ``classname`` نام کلاس جاری است با زیرخط‌های ابتدایی حذف‌شده. این دستکاری بدون در نظر گرفتن جایگاه نحوی شناسه انجام می‌شود، تا زمانی که درون تعریف یک کلاس رخ دهد." msgid "The :ref:`private name mangling specifications ` for details and special cases." msgstr "برای جزئیات و موارد خاص، به :ref:`مشخصات دستکاری نام‌های خصوصی ` مراجعه کنید." msgid "Name mangling is helpful for letting subclasses override methods without breaking intraclass method calls. For example::" -msgstr "دستکاری نام برای این مفید است که به زیرکلاسها اجازه دهد متدها را بدون شکستن فراخوانی‌های متد درون‌کلاسی بازنویسی کنند. برای مثال::" +msgstr "دستکاری نام برای این مفید است که به زیرکلاس‌ها اجازه دهد متدها را بدون شکستن فراخوانی‌های متد درون‌کلاسی بازنویسی کنند. برای مثال::" msgid "" "class Mapping:\n" @@ -825,7 +825,7 @@ msgstr "" "StopIteration" msgid "Having seen the mechanics behind the iterator protocol, it is easy to add iterator behavior to your classes. Define an :meth:`~container.__iter__` method which returns an object with a :meth:`~iterator.__next__` method. If the class defines :meth:`!__next__`, then :meth:`!__iter__` can just return ``self``::" -msgstr "حالا که با سازوکار پشت پروتکل تکرارگر آشنا شدید، اضافه کردن رفتار تکرارگر به کلاسهایتان آسان است. یک متد :meth:`~container.__iter__` تعریف کنید که یک شیء با متد :meth:`~iterator.__next__` برمی‌گرداند. اگر کلاس :meth:`!__next__` را تعریف کرده باشد، آنگاه :meth:`!__iter__` می‌تواند فقط ``self`` را برگرداند::" +msgstr "حالا که با سازوکار پشت پروتکل تکرارگر آشنا شدید، اضافه کردن رفتار تکرارگر به کلاس‌هایتان آسان است. یک متد :meth:`~container.__iter__` تعریف کنید که یک شیء با متد :meth:`~iterator.__next__` برمی‌گرداند. اگر کلاس :meth:`!__next__` را تعریف کرده باشد، آنگاه :meth:`!__iter__` می‌تواند فقط ``self`` را برگرداند::" msgid "" "class Reverse:\n"