# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001 Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # # Translators: # Alireza Shabani (Revisto) , 2025 # Sepehr Rasouli , 2026 # msgid "" msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-09-16 12:56+0000\n" "PO-Revision-Date: 2026-09-11 16:21+0330\n" "Last-Translator: Sepehr Rasouli , 2026\n" "Language-Team: Persian (https://github.com/python/python-docs-fa/)\n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 3.6\n" msgid "An Informal Introduction to Python" msgstr "معرفی غیررسمی پایتون" msgid "In the following examples, input and output are distinguished by the presence or absence of prompts (:term:`>>>` and :term:`...`): to repeat the example, you must type everything after the prompt, when the prompt appears; lines that do not begin with a prompt are output from the interpreter. Note that a secondary prompt on a line by itself in an example means you must type a blank line; this is used to end a multi-line command." msgstr "در مثال‌های زیر، ورودی و خروجی با وجود یا نبود اعلان‌ها (:term:`>>>` و :term:`...`) از یکدیگر متمایز می‌شوند: برای تکرار مثال، باید هر چیزی را که پس از اعلان ظاهر می‌شود، زمانی که اعلان نمایش داده می‌شود، تایپ کنید؛ سطرهایی که با اعلان شروع نمی‌شوند، خروجی مفسر هستند. توجه کنید که یک اعلان ثانویه که در یک مثال به‌تنهایی در یک خط قرار دارد، به این معنی است که باید یک خط خالی تایپ کنید؛ این مورد برای پایان دادن به یک دستور چندخطی استفاده می‌شود." msgid "You can use the \"Copy\" button (it appears in the upper-right corner when hovering over or tapping a code example), which strips prompts and omits output, to copy and paste the input lines into your interpreter." msgstr "می‌توانید از دکمه‌ی \"Copy\" استفاده کنید (این دکمه هنگام قرار گرفتن نشانگر روی یک مثال کد یا لمس کردن آن، در گوشه‌ی بالا-راست ظاهر می‌شود) که اعلان‌ها را حذف می‌کند و خروجی را کنار می‌گذارد، تا سطرهای ورودی را کپی کرده و در مفسر خود جای‌گذاری کنید." msgid "Many of the examples in this manual, even those entered at the interactive prompt, include comments. Comments in Python start with the hash character, ``#``, and extend to the end of the physical line. A comment may appear at the start of a line or following whitespace or code, but not within a string literal. A hash character within a string literal is just a hash character. Since comments are to clarify code and are not interpreted by Python, they may be omitted when typing in examples." msgstr "بسیاری از مثال‌های موجود در این راهنما، حتی آن‌هایی که در اعلان تعاملی وارد شده‌اند، شامل کامنت‌ها هستند. کامنت‌ها در پایتون با نویسه‌ی علامت هش، یعنی ``#``، شروع می‌شوند و تا انتهای خط فیزیکی ادامه دارند. یک کامنت می‌تواند در ابتدای یک خط یا پس از فاصله‌های سفید یا کد ظاهر شود، اما نمی‌تواند درون یک رشته‌ی لفظی قرار بگیرد. یک نویسه‌ی هش درون یک رشته‌ی لفظی فقط همان نویسه‌ی هش است. از آنجا که کامنت‌ها برای روشن کردن کد هستند و توسط پایتون تفسیر نمی‌شوند، هنگام تایپ مثال‌ها می‌توان آن‌ها را حذف کرد." msgid "Some examples::" msgstr "چند مثال::" msgid "" "# this is the first comment\n" "spam = 1 # and this is the second comment\n" " # ... and now a third!\n" "text = \"# This is not a comment because it's inside quotes.\"" msgstr "" "# this is the first comment\n" "spam = 1 # and this is the second comment\n" " # ... and now a third!\n" "text = \"# This is not a comment because it's inside quotes.\"" msgid "Using Python as a Calculator" msgstr "استفاده از پایتون به‌عنوان ماشین‌حساب" msgid "Let's try some simple Python commands. Start the interpreter and wait for the primary prompt, ``>>>``. (It shouldn't take long.)" msgstr "بیایید چند دستور ساده‌ی پایتون را امتحان کنیم. مفسر را اجرا کنید و منتظر اعلان اصلی، یعنی ``>>>``، بمانید. (نباید زمان زیادی طول بکشد.)" msgid "Numbers" msgstr "اعداد" msgid "The interpreter acts as a simple calculator: you can type an expression into it and it will write the value. Expression syntax is straightforward: the operators ``+``, ``-``, ``*`` and ``/`` can be used to perform arithmetic; parentheses (``()``) can be used for grouping. For example::" msgstr "مفسر مانند یک ماشین‌حساب ساده عمل می‌کند: می‌توانید یک عبارت را در آن تایپ کنید و مقدار آن را نمایش خواهد داد. سینتکس عبارت‌ها ساده است: عملگرهای ``+``، ``-``، ``*`` و ``/`` را می‌توان برای انجام محاسبات استفاده کرد؛ پرانتزها (``()``) نیز برای گروه‌بندی استفاده می‌شوند. برای مثال::" msgid "" ">>> 2 + 2\n" "4\n" ">>> 50 - 5*6\n" "20\n" ">>> (50 - 5*6) / 4\n" "5.0\n" ">>> 8 / 5 # division always returns a floating-point number\n" "1.6" msgstr "" ">>> 2 + 2\n" "4\n" ">>> 50 - 5*6\n" "20\n" ">>> (50 - 5*6) / 4\n" "5.0\n" ">>> 8 / 5 # division always returns a floating-point number\n" "1.6" msgid "The integer numbers (e.g. ``2``, ``4``, ``20``) have type :class:`int`, the ones with a fractional part (e.g. ``5.0``, ``1.6``) have type :class:`float`. We will see more about numeric types later in the tutorial." msgstr "اعداد صحیح (برای مثال ``2``، ``4``، ``20``) دارای نوع :class:`int` هستند و اعدادی که بخش اعشاری دارند (برای مثال ``5.0``، ``1.6``) دارای نوع :class:`float` هستند. در ادامه‌ی این آموزش درباره‌ی انواع عددی بیشتر خواهیم دید." msgid "Division (``/``) always returns a float. To do :term:`floor division` and get an integer result you can use the ``//`` operator; to calculate the remainder you can use ``%``::" msgstr "تقسیم (``/``) همیشه یک مقدار اعشاری برمی‌گرداند. برای انجام :term:`تقسیم کف ` و دریافت یک نتیجه‌ی صحیح می‌توانید از عملگر ``//`` استفاده کنید؛ برای محاسبه‌ی باقی‌مانده می‌توانید از ``%`` استفاده کنید::" msgid "" ">>> 17 / 3 # classic division returns a float\n" "5.666666666666667\n" ">>>\n" ">>> 17 // 3 # floor division discards the fractional part\n" "5\n" ">>> 17 % 3 # the % operator returns the remainder of the division\n" "2\n" ">>> 5 * 3 + 2 # floored quotient * divisor + remainder\n" "17" msgstr "" ">>> 17 / 3 # classic division returns a float\n" "5.666666666666667\n" ">>>\n" ">>> 17 // 3 # floor division discards the fractional part\n" "5\n" ">>> 17 % 3 # the % operator returns the remainder of the division\n" "2\n" ">>> 5 * 3 + 2 # floored quotient * divisor + remainder\n" "17" msgid "With Python, it is possible to use the ``**`` operator to calculate powers [#]_::" msgstr "در پایتون، امکان استفاده از عملگر ``**`` برای محاسبه‌ی توان‌ها وجود دارد [#]_::" msgid "" ">>> 5 ** 2 # 5 squared\n" "25\n" ">>> 2 ** 7 # 2 to the power of 7\n" "128" msgstr "" ">>> 5 ** 2 # 5 squared\n" "25\n" ">>> 2 ** 7 # 2 to the power of 7\n" "128" msgid "The equal sign (``=``) is used to assign a value to a variable. Afterwards, no result is displayed before the next interactive prompt::" msgstr "علامت مساوی (``=``) برای اختصاص دادن یک مقدار به یک متغیر استفاده می‌شود. پس از آن، پیش از اعلان تعاملی بعدی هیچ نتیجه‌ای نمایش داده نمی‌شود::" msgid "" ">>> width = 20\n" ">>> height = 5 * 9\n" ">>> width * height\n" "900" msgstr "" ">>> width = 20\n" ">>> height = 5 * 9\n" ">>> width * height\n" "900" msgid "If a variable is not \"defined\" (assigned a value), trying to use it will give you an error::" msgstr "اگر یک متغیر «تعریف» نشده باشد (مقداری به آن اختصاص داده نشده باشد)، تلاش برای استفاده از آن باعث ایجاد خطا خواهد شد::" msgid "" ">>> n # try to access an undefined variable\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "NameError: name 'n' is not defined" msgstr "" ">>> n # try to access an undefined variable\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "NameError: name 'n' is not defined" msgid "There is full support for floating point; operators with mixed type operands convert the integer operand to floating point::" msgstr "پشتیبانی کامل از اعداد اعشاری وجود دارد؛ عملگرهایی که عملوندهایی با نوع‌های مختلف دارند، عملوند صحیح را به عدد اعشاری تبدیل می‌کنند::" msgid "" ">>> 4 * 3.75 - 1\n" "14.0" msgstr "" ">>> 4 * 3.75 - 1\n" "14.0" msgid "In interactive mode, the last printed expression is assigned to the variable ``_``. This means that when you are using Python as a desk calculator, it is somewhat easier to continue calculations, for example::" msgstr "در حالت تعاملی، آخرین عبارتی که چاپ شده است به متغیر ``_`` اختصاص داده می‌شود. این یعنی هنگامی که از پایتون به‌عنوان یک ماشین‌حساب رومیزی استفاده می‌کنید، ادامه دادن محاسبات تا حدی آسان‌تر می‌شود، برای مثال::" msgid "" ">>> tax = 12.5 / 100\n" ">>> price = 100.50\n" ">>> price * tax\n" "12.5625\n" ">>> price + _\n" "113.0625\n" ">>> round(_, 2)\n" "113.06" msgstr "" ">>> tax = 12.5 / 100\n" ">>> price = 100.50\n" ">>> price * tax\n" "12.5625\n" ">>> price + _\n" "113.0625\n" ">>> round(_, 2)\n" "113.06" msgid "This variable should be treated as read-only by the user. Don't explicitly assign a value to it --- you would create an independent local variable with the same name masking the built-in variable with its magic behavior." msgstr "این متغیر باید توسط کاربر فقط برای خواندن در نظر گرفته شود. به‌صورت صریح مقداری به آن اختصاص ندهید --- با این کار یک متغیر محلی مستقل با همان نام ایجاد می‌کنید که متغیر توکار را با رفتار ویژه‌ی آن پنهان می‌کند." msgid "In addition to :class:`int` and :class:`float`, Python supports other types of numbers, such as :class:`~decimal.Decimal` and :class:`~fractions.Fraction`. Python also has built-in support for :ref:`complex numbers `, and uses the ``j`` or ``J`` suffix to indicate the imaginary part (e.g. ``3+5j``)." msgstr "علاوه بر :class:`int` و :class:`float`، پایتون از انواع دیگر اعداد نیز پشتیبانی می‌کند، مانند :class:`~decimal.Decimal` و :class:`~fractions.Fraction`. پایتون همچنین پشتیبانی توکار از :ref:`اعداد مختلط ` دارد و از پسوند ``j`` یا ``J`` برای مشخص کردن بخش موهومی استفاده می‌کند (برای مثال ``3+5j``)." msgid "Text" msgstr "متن" msgid "Python can manipulate text (represented by type :class:`str`, so-called \"strings\") as well as numbers. This includes characters \"``!``\", words \"``rabbit``\", names \"``Paris``\", sentences \"``Got your back.``\", etc. \"``Yay! :)``\". They can be enclosed in single quotes (``'...'``) or double quotes (``\"...\"``) with the same result [#]_." msgstr "پایتون می‌تواند متن (که توسط نوع :class:`str` نمایش داده می‌شود و به آن «رشته» گفته می‌شود) را نیز مانند اعداد پردازش کند. این شامل نویسه‌های \"``!``\"، واژه‌های \"``rabbit``\"، نام‌ها \"``Paris``\"، جمله‌های \"``Got your back.``\"، و مواردی مانند \"``Yay! :)``\" است. این موارد را می‌توان درون نقل‌قول تکی (``'...'``) یا نقل‌قول دوتایی (``\"...\"``) قرار داد و نتیجه یکسان خواهد بود [#]_." msgid "" ">>> 'spam eggs' # single quotes\n" "'spam eggs'\n" ">>> \"Paris rabbit got your back :)! Yay!\" # double quotes\n" "'Paris rabbit got your back :)! Yay!'\n" ">>> '1975' # digits and numerals enclosed in quotes are also strings\n" "'1975'" msgstr "" ">>> 'spam eggs' # single quotes\n" "'spam eggs'\n" ">>> \"Paris rabbit got your back :)! Yay!\" # double quotes\n" "'Paris rabbit got your back :)! Yay!'\n" ">>> '1975' # digits and numerals enclosed in quotes are also strings\n" "'1975'" msgid "To quote a quote, we need to \"escape\" it, by preceding it with ``\\``. Alternatively, we can use the other type of quotation marks::" msgstr "برای قرار دادن یک نقل‌قول درون یک نقل‌قول، باید آن را با قرار دادن ``\\`` پیش از آن، «escape» کنیم. همچنین می‌توانیم از نوع دیگر علامت‌های نقل‌قول استفاده کنیم::" msgid "" ">>> 'doesn\\'t' # use \\' to escape the single quote...\n" "\"doesn't\"\n" ">>> \"doesn't\" # ...or use double quotes instead\n" "\"doesn't\"\n" ">>> '\"Yes,\" they said.'\n" "'\"Yes,\" they said.'\n" ">>> \"\\\"Yes,\\\" they said.\"\n" "'\"Yes,\" they said.'\n" ">>> '\"Isn\\'t,\" they said.'\n" "'\"Isn\\'t,\" they said.'" msgstr "" ">>> 'doesn\\'t' # use \\' to escape the single quote...\n" "\"doesn't\"\n" ">>> \"doesn't\" # ...or use double quotes instead\n" "\"doesn't\"\n" ">>> '\"Yes,\" they said.'\n" "'\"Yes,\" they said.'\n" ">>> \"\\\"Yes,\\\" they said.\"\n" "'\"Yes,\" they said.'\n" ">>> '\"Isn\\'t,\" they said.'\n" "'\"Isn\\'t,\" they said.'" msgid "In the Python shell, the string definition and output string can look different. The :func:`print` function produces a more readable output, by omitting the enclosing quotes and by printing escaped and special characters::" msgstr "در پوسته‌ی پایتون، تعریف رشته و رشته‌ی خروجی ممکن است متفاوت به نظر برسند. تابع :func:`print` خروجی خواناتری تولید می‌کند، زیرا نقل‌قول‌های احاطه‌کننده را حذف می‌کند و نویسه‌های escapeشده و ویژه را چاپ می‌کند::" msgid "" ">>> s = 'First line.\\nSecond line.' # \\n means newline\n" ">>> s # without print(), special characters are included in the string\n" "'First line.\\nSecond line.'\n" ">>> print(s) # with print(), special characters are interpreted, so \\n produces new line\n" "First line.\n" "Second line." msgstr "" ">>> s = 'First line.\\nSecond line.' # \\n نشان‌دهنده‌ی رفتن به خط بعد است\n" ">>> s # without print(), special characters are included in the string\n" "'First line.\\nSecond line.'\n" ">>> print(s) # with print(), special characters are interpreted, so \\n یک خط جدید ایجاد می‌کند\n" "First line.\n" "Second line." msgid "If you don't want characters prefaced by ``\\`` to be interpreted as special characters, you can use *raw strings* by adding an ``r`` before the first quote::" msgstr "اگر نمی‌خواهید نویسه‌هایی که با ``\\`` پیش از آن‌ها آمده است به‌عنوان نویسه‌های ویژه تفسیر شوند، می‌توانید با افزودن ``r`` پیش از اولین علامت نقل‌قول، از *رشته‌های خام* استفاده کنید::" msgid "" ">>> print('C:\\this\\name') # here \\t means tab, \\n means newline\n" "C: his\n" "ame\n" ">>> print(r'C:\\this\\name') # note the r before the quote\n" "C:\\this\\name" msgstr "" ">>> print('C:\\this\\name') # در اینجا \\t نشان‌دهنده‌ی تب و \\n نشان‌دهنده‌ی خط جدید است\n" "C: his\n" "ame\n" ">>> print(r'C:\\this\\name') # به حرف r قبل از علامت نقل‌قول توجه کنید\n" "C:\\this\\name" msgid "There is one subtle aspect to raw strings: a raw string may not end in an odd number of ``\\`` characters; see :ref:`the FAQ entry ` for more information and workarounds." msgstr "یک نکته‌ی ظریف درباره‌ی رشته‌های خام وجود دارد: یک رشته‌ی خام نمی‌تواند با تعداد فردی از نویسه‌های ``\\`` پایان یابد؛ برای اطلاعات بیشتر و راه‌حل‌های جایگزین، به :ref:`ورودی پرسش‌های متداول ` مراجعه کنید." msgid "String literals can span multiple lines. One way is using triple-quotes: ``\"\"\"...\"\"\"`` or ``'''...'''``. End-of-line characters are automatically included in the string, but it's possible to prevent this by adding a ``\\`` at the end of the line. In the following example, the initial newline is not included::" msgstr "رشته‌های لفظی می‌توانند چندین خط را دربر بگیرند. یک روش استفاده از نقل‌قول‌های سه‌تایی است: ``\"\"\"...\"\"\"`` یا ``'''...'''``. نویسه‌های پایان خط به‌صورت خودکار در رشته قرار می‌گیرند، اما می‌توان با افزودن یک ``\\`` در انتهای خط از این کار جلوگیری کرد. در مثال زیر، خط جدید ابتدایی در رشته قرار نمی‌گیرد::" msgid "" ">>> print(\"\"\"\\\n" "... Usage: thingy [OPTIONS]\n" "... -h Display this usage message\n" "... -H hostname Hostname to connect to\n" "... \"\"\")\n" "Usage: thingy [OPTIONS]\n" " -h Display this usage message\n" " -H hostname Hostname to connect to\n" "\n" ">>>" msgstr "" ">>> print(\"\"\"\\\n" "... Usage: thingy [OPTIONS]\n" "... -h Display this usage message\n" "... -H hostname Hostname to connect to\n" "... \"\"\")\n" "Usage: thingy [OPTIONS]\n" " -h Display this usage message\n" " -H hostname Hostname to connect to\n" "\n" ">>>" msgid "Strings can be concatenated (glued together) with the ``+`` operator, and repeated with ``*``::" msgstr "رشته‌ها را می‌توان با عملگر ``+`` به یکدیگر متصل (چسباند) کرد و با ``*`` تکرار کرد::" msgid "" ">>> # 3 times 'un', followed by 'ium'\n" ">>> 3 * 'un' + 'ium'\n" "'unununium'" msgstr "" ">>># 3 times 'un', followed by 'ium'\n" ">>> 3 * 'un' + 'ium'\n" "'unununium'" msgid "Two or more *string literals* (i.e. the ones enclosed between quotes) next to each other are automatically concatenated. ::" msgstr "دو یا چند *رشته‌ی لفظی* (یعنی مواردی که بین علامت‌های نقل‌قول قرار گرفته‌اند) که در کنار یکدیگر قرار دارند، به‌صورت خودکار به هم متصل می‌شوند. ::" msgid "" ">>> 'Py' 'thon'\n" "'Python'" msgstr "" ">>> 'Py' 'thon'\n" "'Python'" msgid "This feature is particularly useful when you want to break long strings::" msgstr "این قابلیت به‌ویژه زمانی مفید است که بخواهید رشته‌های طولانی را شکسته و در چند خط بنویسید::" msgid "" ">>> text = ('Put several strings within parentheses '\n" "... 'to have them joined together.')\n" ">>> text\n" "'Put several strings within parentheses to have them joined together.'" msgstr "" ">>> text = ('Put several strings within parentheses '\n" "... 'to have them joined together.')\n" ">>> text\n" "'Put several strings within parentheses to have them joined together.'" msgid "This only works with two literals though, not with variables or expressions::" msgstr "البته این فقط برای دو رشته‌ی لفظی ثابت کار می‌کند، نه برای متغیرها یا عبارت‌ها::" msgid "" ">>> prefix = 'Py'\n" ">>> prefix 'thon' # can't concatenate a variable and a string literal\n" " File \"\", line 1\n" " prefix 'thon'\n" " ^^^^^^\n" "SyntaxError: invalid syntax\n" ">>> ('un' * 3) 'ium'\n" " File \"\", line 1\n" " ('un' * 3) 'ium'\n" " ^^^^^\n" "SyntaxError: invalid syntax" msgstr "" ">>> prefix = 'Py'\n" ">>> prefix 'thon' # can't concatenate a variable and a string literal\n" " File \"\", line 1\n" " prefix 'thon'\n" " ^^^^^^\n" "SyntaxError: invalid syntax\n" ">>> ('un' * 3) 'ium'\n" " File \"\", line 1\n" " ('un' * 3) 'ium'\n" " ^^^^^\n" "SyntaxError: invalid syntax" msgid "If you want to concatenate variables or a variable and a literal, use ``+``::" msgstr "اگر می‌خواهید متغیرها یا یک متغیر و یک رشته‌ی لفظی ثابت را به هم متصل کنید، از ``+`` استفاده کنید::" msgid "" ">>> prefix + 'thon'\n" "'Python'" msgstr "" ">>> prefix + 'thon'\n" "'Python'" msgid "Strings can be *indexed* (subscripted), with the first character having index 0. There is no separate character type; a character is simply a string of size one::" msgstr "رشته‌ها را می‌توان *اندیس‌گذاری* (اندیس‌گذاری) کرد؛ به‌طوری که اولین نویسه دارای اندیس 0 است. نوع جداگانه‌ای برای نویسه وجود ندارد؛ یک نویسه در واقع فقط رشته‌ای با اندازه‌ی یک است::" msgid "" ">>> word = 'Python'\n" ">>> word[0] # character in position 0\n" "'P'\n" ">>> word[5] # character in position 5\n" "'n'" msgstr "" ">>> word = 'Python'\n" ">>> word[0] # character in position 0\n" "'P'\n" ">>> word[5] # character in position 5\n" "'n'" msgid "Indices may also be negative numbers, to start counting from the right::" msgstr "اندیس‌ها همچنین می‌توانند اعداد منفی باشند تا شمارش از سمت راست آغاز شود::" msgid "" ">>> word[-1] # last character\n" "'n'\n" ">>> word[-2] # second-last character\n" "'o'\n" ">>> word[-6]\n" "'P'" msgstr "" ">>> word[-1] # last character\n" "'n'\n" ">>> word[-2] # second-last character\n" "'o'\n" ">>> word[-6]\n" "'P'" msgid "Note that since -0 is the same as 0, negative indices start from -1." msgstr "توجه کنید که چون ‎-0 همان 0 است، اندیس‌های منفی از ‎-1 شروع می‌شوند." msgid "In addition to indexing, *slicing* is also supported. While indexing is used to obtain individual characters, *slicing* allows you to obtain a substring::" msgstr "علاوه بر اندیس‌گذاری، *اسلایس کردن* نیز پشتیبانی می‌شود. در حالی که اندیس‌گذاری برای به‌دست آوردن نویسه‌های جداگانه استفاده می‌شود، *اسلایس کردن* به شما اجازه می‌دهد یک زیررشته به‌دست آورید::" msgid "" ">>> word[0:2] # characters from position 0 (included) to 2 (excluded)\n" "'Py'\n" ">>> word[2:5] # characters from position 2 (included) to 5 (excluded)\n" "'tho'" msgstr "" ">>> word[0:2] # characters from position 0 (included) to 2 (excluded)\n" "'Py'\n" ">>> word[2:5] # characters from position 2 (included) to 5 (excluded)\n" "'tho'" msgid "Slice indices have useful defaults; an omitted first index defaults to zero, an omitted second index defaults to the size of the string being sliced. ::" msgstr "اندیس‌های اسلایس مقدارهای پیش‌فرض مفیدی دارند؛ اگر اندیس اول حذف شود، مقدار پیش‌فرض آن صفر است و اگر اندیس دوم حذف شود، مقدار پیش‌فرض آن اندازه‌ی رشته‌ای است که در حال اسلایس شدن است. ::" msgid "" ">>> word[:2] # character from the beginning to position 2 (excluded)\n" "'Py'\n" ">>> word[4:] # characters from position 4 (included) to the end\n" "'on'\n" ">>> word[-2:] # characters from the second-last (included) to the end\n" "'on'" msgstr "" ">>> word[:2] # character from the beginning to position 2 (excluded)\n" "'Py'\n" ">>> word[4:] # characters from position 4 (included) to the end\n" "'on'\n" ">>> word[-2:] # characters from the second-last (included) to the end\n" "'on'" msgid "Note how the start is always included, and the end always excluded. This makes sure that ``s[:i] + s[i:]`` is always equal to ``s``::" msgstr "توجه کنید که نقطه‌ی شروع همیشه شامل می‌شود و نقطه‌ی پایان همیشه حذف می‌شود. این موضوع تضمین می‌کند که ``s[:i] + s[i:]`` همیشه برابر با ``s`` باشد::" msgid "" ">>> word[:2] + word[2:]\n" "'Python'\n" ">>> word[:4] + word[4:]\n" "'Python'" msgstr "" ">>> word[:2] + word[2:]\n" "'Python'\n" ">>> word[:4] + word[4:]\n" "'Python'" msgid "One way to remember how slices work is to think of the indices as pointing *between* characters, with the left edge of the first character numbered 0. Then the right edge of the last character of a string of *n* characters has index *n*, for example::" msgstr "یک روش برای به خاطر سپردن نحوه‌ی کار اسلایس‌ها این است که تصور کنید اندیس‌ها به *بین* نویسه‌ها اشاره می‌کنند، به‌طوری که لبه‌ی سمت چپ اولین نویسه شماره‌ی 0 دارد. سپس لبه‌ی سمت راست آخرین نویسه‌ی یک رشته با *n* نویسه، دارای اندیس *n* است؛ برای مثال::" msgid "" " +---+---+---+---+---+---+\n" " | P | y | t | h | o | n |\n" " +---+---+---+---+---+---+\n" " 0 1 2 3 4 5 6\n" "-6 -5 -4 -3 -2 -1" msgstr "" " +---+---+---+---+---+---+\n" " | P | y | t | h | o | n |\n" " +---+---+---+---+---+---+\n" " 0 1 2 3 4 5 6\n" "-6 -5 -4 -3 -2 -1" msgid "The first row of numbers gives the position of the indices 0...6 in the string; the second row gives the corresponding negative indices. The slice from *i* to *j* consists of all characters between the edges labeled *i* and *j*, respectively." msgstr "ردیف اول اعداد، موقعیت اندیس‌های 0...6 در رشته را نشان می‌دهد؛ ردیف دوم اندیس‌های منفی متناظر را نشان می‌دهد. اسلایس از *i* تا *j* شامل تمام نویسه‌هایی است که بین لبه‌های مشخص‌شده با *i* و *j* قرار دارند." msgid "For non-negative indices, the length of a slice is the difference of the indices, if both are within bounds. For example, the length of ``word[1:3]`` is 2." msgstr "برای اندیس‌های غیرمنفی، طول یک اسلایس برابر با تفاوت بین اندیس‌ها است، به شرطی که هر دو در محدوده باشند. برای مثال، طول ``word[1:3]`` برابر با 2 است." msgid "Attempting to use an index that is too large will result in an error::" msgstr "تلاش برای استفاده از اندیسی که بیش از حد بزرگ است، باعث ایجاد خطا خواهد شد::" msgid "" ">>> word[42] # the word only has 6 characters\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "IndexError: string index out of range" msgstr "" ">>> word[42] # the word only has 6 characters\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "IndexError: string index out of range" msgid "However, out of range slice indexes are handled gracefully when used for slicing::" msgstr "بااین‌حال، اندیس‌های اسلایس خارج از محدوده هنگام استفاده برای اسلایس کردن به‌صورت مناسبی مدیریت می‌شوند::" msgid "" ">>> word[4:42]\n" "'on'\n" ">>> word[42:]\n" "''" msgstr "" ">>> word[4:42]\n" "'on'\n" ">>> word[42:]\n" "''" msgid "Python strings cannot be changed --- they are :term:`immutable`. Therefore, assigning to an indexed position in the string results in an error::" msgstr "رشته‌های پایتون قابل تغییر نیستند --- آن‌ها :term:`تغییرناپذیر ` هستند. بنابراین، اختصاص دادن مقدار به یک موقعیت اندیس‌گذاری‌شده در رشته باعث ایجاد خطا می‌شود::" msgid "" ">>> word[0] = 'J'\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment\n" ">>> word[2:] = 'py'\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment" msgstr "" ">>> word[0] = 'J'\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment\n" ">>> word[2:] = 'py'\n" "Traceback (most recent call last):\n" " File \"\", line 1, in \n" "TypeError: 'str' object does not support item assignment" msgid "If you need a different string, you should create a new one::" msgstr "اگر به یک رشته‌ی متفاوت نیاز دارید، باید یک رشته‌ی جدید ایجاد کنید::" msgid "" ">>> 'J' + word[1:]\n" "'Jython'\n" ">>> word[:2] + 'py'\n" "'Pypy'" msgstr "" ">>> 'J' + word[1:]\n" "'Jython'\n" ">>> word[:2] + 'py'\n" "'Pypy'" msgid "The built-in function :func:`len` returns the length of a string::" msgstr "تابع توکار :func:`len` طول یک رشته را برمی‌گرداند::" msgid "" ">>> s = 'supercalifragilisticexpialidocious'\n" ">>> len(s)\n" "34" msgstr "" ">>> s = 'supercalifragilisticexpialidocious'\n" ">>> len(s)\n" "34" msgid ":ref:`textseq`" msgstr ":ref:`textseq`" msgid "Strings are examples of *sequence types*, and support the common operations supported by such types." msgstr "رشته‌ها نمونه‌هایی از *انواع دنباله‌ای* (*sequence types*) هستند و از عملیات مشترکی که این نوع‌ها پشتیبانی می‌کنند، پشتیبانی می‌کنند." msgid ":ref:`string-methods`" msgstr ":ref:`string-methods`" msgid "Strings support a large number of methods for basic transformations and searching." msgstr "رشته‌ها تعداد زیادی متد برای تبدیل‌های پایه و جست‌وجو ارائه می‌دهند." msgid ":ref:`f-strings`" msgstr ":ref:`f-strings`" msgid "String literals that have embedded expressions." msgstr "رشته‌های لفظی ثابتی که شامل عبارت‌های تعبیه‌شده هستند." msgid ":ref:`formatstrings`" msgstr ":ref:`formatstrings`" msgid "Information about string formatting with :meth:`str.format`." msgstr "اطلاعات درباره‌ی قالب‌بندی رشته‌ها با :meth:`str.format`." msgid ":ref:`old-string-formatting`" msgstr ":ref:`old-string-formatting`" msgid "The old formatting operations invoked when strings are the left operand of the ``%`` operator are described in more detail here." msgstr "عملیات قالب‌بندی قدیمی که زمانی فراخوانی می‌شوند که رشته‌ها عملوند سمت چپ عملگر ``%`` باشند، در اینجا با جزئیات بیشتری توضیح داده شده‌اند." msgid "Lists" msgstr "فهرست‌ها" msgid "Python knows a number of *compound* data types, used to group together other values. The most versatile is the *list*, which can be written as a list of comma-separated values (items) between square brackets. Lists might contain items of different types, but usually the items all have the same type. ::" msgstr "پایتون تعدادی نوع داده‌ی *مرکب* دارد که برای گروه‌بندی مقدارهای دیگر استفاده می‌شوند. انعطاف‌پذیرترین آن‌ها *فهرست* (*list*) است که می‌توان آن را به‌صورت فهرستی از مقدارهای جداشده با ویرگول (آیتم‌ها) در میان کروشه‌ها نوشت. فهرست‌ها ممکن است شامل آیتم‌هایی از نوع‌های مختلف باشند، اما معمولاً همه‌ی آیتم‌ها یک نوع یکسان دارند. ::" msgid "" ">>> squares = [1, 4, 9, 16, 25]\n" ">>> squares\n" "[1, 4, 9, 16, 25]" msgstr "" ">>> squares = [1, 4, 9, 16, 25]\n" ">>> squares\n" "[1, 4, 9, 16, 25]" msgid "Like strings (and all other built-in :term:`sequence` types), lists can be indexed and sliced::" msgstr "مانند رشته‌ها (و تمام نوع‌های توکار دیگر :term:`دنباله `)، فهرست‌ها را می‌توان اندیس‌گذاری و اسلایس داد::" msgid "" ">>> squares[0] # indexing returns the item\n" "1\n" ">>> squares[-1]\n" "25\n" ">>> squares[-3:] # slicing returns a new list\n" "[9, 16, 25]" msgstr "" ">>> squares[0] # indexing returns the item\n" "1\n" ">>> squares[-1]\n" "25\n" ">>> squares[-3:] # slicing returns a new list\n" "[9, 16, 25]" msgid "Lists also support operations like concatenation::" msgstr "فهرست‌ها همچنین از عملیاتی مانند الحاق پشتیبانی می‌کنند::" msgid "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" msgstr "" ">>> squares + [36, 49, 64, 81, 100]\n" "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" msgid "Unlike strings, which are :term:`immutable`, lists are a :term:`mutable` type, i.e. it is possible to change their content::" msgstr "برخلاف رشته‌ها که :term:`تغییرناپذیر ` هستند، فهرست‌ها یک نوع :term:`تغییرپذیر ` هستند؛ یعنی امکان تغییر محتوای آن‌ها وجود دارد::" msgid "" ">>> cubes = [1, 8, 27, 65, 125] # something's wrong here\n" ">>> 4 ** 3 # the cube of 4 is 64, not 65!\n" "64\n" ">>> cubes[3] = 64 # replace the wrong value\n" ">>> cubes\n" "[1, 8, 27, 64, 125]" msgstr "" ">>> cubes = [1, 8, 27, 65, 125] # something's wrong here\n" ">>> 4 ** 3 # the cube of 4 is 64, not 65!\n" "64\n" ">>> cubes[3] = 64 # replace the wrong value\n" ">>> cubes\n" "[1, 8, 27, 64, 125]" msgid "You can also add new items at the end of the list, by using the :meth:`list.append` *method* (we will see more about methods later)::" msgstr "همچنین می‌توانید با استفاده از *متد* :meth:`list.append` آیتم‌های جدیدی را به انتهای فهرست اضافه کنید (در ادامه درباره‌ی متدها بیشتر خواهیم دید)::" msgid "" ">>> cubes.append(216) # add the cube of 6\n" ">>> cubes.append(7 ** 3) # and the cube of 7\n" ">>> cubes\n" "[1, 8, 27, 64, 125, 216, 343]" msgstr "" ">>> cubes.append(216) # add the cube of 6\n" ">>> cubes.append(7 ** 3) # and the cube of 7\n" ">>> cubes\n" "[1, 8, 27, 64, 125, 216, 343]" msgid "Simple assignment in Python never copies data. When you assign a list to a variable, the variable refers to the *existing list*. Any changes you make to the list through one variable will be seen through all other variables that refer to it.::" msgstr "انتساب ساده در پایتون هرگز داده‌ها را کپی نمی‌کند. هنگامی که یک فهرست را به یک متغیر اختصاص می‌دهید، متغیر به *فهرست موجود* اشاره می‌کند. هر تغییری که از طریق یک متغیر در فهرست ایجاد کنید، از طریق تمام متغیرهای دیگری که به آن اشاره می‌کنند نیز دیده خواهد شد.::" msgid "" ">>> rgb = [\"Red\", \"Green\", \"Blue\"]\n" ">>> rgba = rgb\n" ">>> id(rgb) == id(rgba) # they reference the same object\n" "True\n" ">>> rgba.append(\"Alph\")\n" ">>> rgb\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" msgstr "" ">>> rgb = [\"Red\", \"Green\", \"Blue\"]\n" ">>> rgba = rgb\n" ">>> id(rgb) == id(rgba) # they reference the same object\n" "True\n" ">>> rgba.append(\"Alph\")\n" ">>> rgb\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" msgid "All slice operations return a new list containing the requested elements. This means that the following slice returns a :ref:`shallow copy ` of the list::" msgstr "تمام عملیات اسلایس یک فهرست جدید شامل عناصر درخواست‌شده برمی‌گردانند. این یعنی اسلایس زیر یک :ref:`کپی سطحی ` از فهرست ایجاد می‌کند::" msgid "" ">>> correct_rgba = rgba[:]\n" ">>> correct_rgba[-1] = \"Alpha\"\n" ">>> correct_rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alpha\"]\n" ">>> rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" msgstr "" ">>> correct_rgba = rgba[:]\n" ">>> correct_rgba[-1] = \"Alpha\"\n" ">>> correct_rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alpha\"]\n" ">>> rgba\n" "[\"Red\", \"Green\", \"Blue\", \"Alph\"]" msgid "Assignment to slices is also possible, and this can even change the size of the list or clear it entirely::" msgstr "انتساب به اسلایس‌ها نیز امکان‌پذیر است و حتی می‌تواند اندازه‌ی فهرست را تغییر دهد یا آن را به‌طور کامل خالی کند::" msgid "" ">>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> letters\n" "['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> # replace some values\n" ">>> letters[2:5] = ['C', 'D', 'E']\n" ">>> letters\n" "['a', 'b', 'C', 'D', 'E', 'f', 'g']\n" ">>> # now remove them\n" ">>> letters[2:5] = []\n" ">>> letters\n" "['a', 'b', 'f', 'g']\n" ">>> # clear the list by replacing all the elements with an empty list\n" ">>> letters[:] = []\n" ">>> letters\n" "[]" msgstr "" ">>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> letters\n" "['a', 'b', 'c', 'd', 'e', 'f', 'g']\n" ">>> # replace some values\n" ">>> letters[2:5] = ['C', 'D', 'E']\n" ">>> letters\n" "['a', 'b', 'C', 'D', 'E', 'f', 'g']\n" ">>> # now remove them\n" ">>> letters[2:5] = []\n" ">>> letters\n" "['a', 'b', 'f', 'g']\n" ">>> # clear the list by replacing all the elements with an empty list\n" ">>> letters[:] = []\n" ">>> letters\n" "[]" msgid "The built-in function :func:`len` also applies to lists::" msgstr "تابع توکار :func:`len` برای فهرست‌ها نیز کاربرد دارد::" msgid "" ">>> letters = ['a', 'b', 'c', 'd']\n" ">>> len(letters)\n" "4" msgstr "" ">>> letters = ['a', 'b', 'c', 'd']\n" ">>> len(letters)\n" "4" msgid "It is possible to nest lists (create lists containing other lists), for example::" msgstr "امکان تو در تو کردن فهرست‌ها وجود دارد (ایجاد فهرست‌هایی که شامل فهرست‌های دیگر هستند)، برای مثال::" msgid "" ">>> a = ['a', 'b', 'c']\n" ">>> n = [1, 2, 3]\n" ">>> x = [a, n]\n" ">>> x\n" "[['a', 'b', 'c'], [1, 2, 3]]\n" ">>> x[0]\n" "['a', 'b', 'c']\n" ">>> x[0][1]\n" "'b'" msgstr "" ">>> a = ['a', 'b', 'c']\n" ">>> n = [1, 2, 3]\n" ">>> x = [a, n]\n" ">>> x\n" "[['a', 'b', 'c'], [1, 2, 3]]\n" ">>> x[0]\n" "['a', 'b', 'c']\n" ">>> x[0][1]\n" "'b'" msgid "First Steps Towards Programming" msgstr "قدم‌های اول به سوی برنامه‌نویسی" msgid "Of course, we can use Python for more complicated tasks than adding two and two together. For instance, we can write an initial sub-sequence of the `Fibonacci series `_ as follows::" msgstr "البته، می‌توانیم از پایتون برای کارهای پیچیده‌تری از جمع کردن دو و دو استفاده کنیم. برای نمونه، می‌توانیم یک زیردنباله‌ی ابتدایی از `دنباله‌ی فیبوناچی `_ را به شکل زیر بنویسیم::" msgid "" ">>> # Fibonacci series:\n" ">>> # the sum of two elements defines the next\n" ">>> a, b = 0, 1\n" ">>> while a < 10:\n" "... print(a)\n" "... a, b = b, a+b\n" "...\n" "0\n" "1\n" "1\n" "2\n" "3\n" "5\n" "8" msgstr "" ">>> # Fibonacci series:\n" ">>> # the sum of two elements defines the next\n" ">>> a, b = 0, 1\n" ">>> while a < 10:\n" "... print(a)\n" "... a, b = b, a+b\n" "...\n" "0\n" "1\n" "1\n" "2\n" "3\n" "5\n" "8" msgid "This example introduces several new features." msgstr "این مثال چندین قابلیت جدید را معرفی می‌کند." msgid "The first line contains a *multiple assignment*: the variables ``a`` and ``b`` simultaneously get the new values 0 and 1. On the last line this is used again, demonstrating that the expressions on the right-hand side are all evaluated first before any of the assignments take place. The right-hand side expressions are evaluated from the left to the right." msgstr "خط اول شامل یک *انتساب چندگانه* است: متغیرهای ``a`` و ``b`` به‌صورت همزمان مقدارهای جدید 0 و 1 را دریافت می‌کنند. در خط آخر نیز دوباره از این ویژگی استفاده شده است و نشان می‌دهد که تمام عبارت‌های سمت راست ابتدا ارزیابی می‌شوند، پیش از آنکه هر یک از انتساب‌ها انجام شود. عبارت‌های سمت راست از چپ به راست ارزیابی می‌شوند." msgid "The :keyword:`while` loop executes as long as the condition (here: ``a < 10``) remains true. In Python, like in C, any non-zero integer value is true; zero is false. The condition may also be a string or list value, in fact any sequence; anything with a non-zero length is true, empty sequences are false. The test used in the example is a simple comparison. The standard comparison operators are written the same as in C: ``<`` (less than), ``>`` (greater than), ``==`` (equal to), ``<=`` (less than or equal to), ``>=`` (greater than or equal to) and ``!=`` (not equal to)." msgstr "حلقه‌ی :keyword:`while` تا زمانی اجرا می‌شود که شرط (در اینجا: ``a < 10``) درست باقی بماند. در پایتون، مانند C، هر مقدار صحیح غیرصفر درست (*true*) است؛ صفر نادرست (*false*) است. شرط همچنین می‌تواند یک مقدار رشته‌ای یا فهرست باشد، در واقع هر دنباله‌ای؛ هر چیزی که طول غیرصفر داشته باشد درست است و دنباله‌های خالی نادرست هستند. آزمایشی که در مثال استفاده شده است یک مقایسه‌ی ساده است. عملگرهای استاندارد مقایسه مانند C نوشته می‌شوند: ``<`` (کوچک‌تر از)، ``>`` (بزرگ‌تر از)، ``==`` (برابر با)، ``<=`` (کوچک‌تر یا برابر با)، ``>=`` (بزرگ‌تر یا برابر با) و ``!=`` (نابرابر با)." msgid "The *body* of the loop is *indented*: indentation is Python's way of grouping statements. At the interactive prompt, you have to type a tab or space(s) for each indented line. In practice you will prepare more complicated input for Python with a text editor; all decent text editors have an auto-indent facility. When a compound statement is entered interactively, it must be followed by a blank line to indicate completion (since the parser cannot guess when you have typed the last line). Note that each line within a basic block must be indented by the same amount." msgstr "*بدنه* حلقه *تورفته* است: تورفتگی روش پایتون برای گروه‌بندی دستورهاست. در اعلان تعاملی، باید برای هر خط تورفته یک تب یا چند فاصله تایپ کنید. در عمل، ورودی‌های پیچیده‌تر پایتون را با یک ویرایشگر متن آماده خواهید کرد؛ تمام ویرایشگرهای متن مناسب قابلیت تورفتگی خودکار دارند. هنگامی که یک دستور مرکب به‌صورت تعاملی وارد می‌شود، باید پس از آن یک خط خالی قرار گیرد تا پایان آن مشخص شود (زیرا پارسر نمی‌تواند حدس بزند که آخرین خط را چه زمانی نوشته‌اید). توجه کنید که هر خط درون یک بلوک پایه باید به یک اندازه تورفته باشد." msgid "The :func:`print` function writes the value of the argument(s) it is given. It differs from just writing the expression you want to write (as we did earlier in the calculator examples) in the way it handles multiple arguments, floating-point quantities, and strings. Strings are printed without quotes, and a space is inserted between items, so you can format things nicely, like this::" msgstr "تابع :func:`print` مقدار آرگومان(هایی) را که دریافت می‌کند می‌نویسد. این تابع با نوشتن مستقیم عبارتی که می‌خواهید نمایش دهید (مانند مثال‌های قبلی ماشین‌حساب) تفاوت دارد، زیرا آرگومان‌های متعدد، مقدارهای اعشاری و رشته‌ها را به شکل متفاوتی مدیریت می‌کند. رشته‌ها بدون علامت نقل‌قول چاپ می‌شوند و بین آیتم‌ها یک فاصله قرار می‌گیرد، بنابراین می‌توانید خروجی را به شکل مناسبی قالب‌بندی کنید، مانند این::" msgid "" ">>> i = 256*256\n" ">>> print('The value of i is', i)\n" "The value of i is 65536" msgstr "" ">>> i = 256*256\n" ">>> print('The value of i is', i)\n" "The value of i is 65536" msgid "The keyword argument *end* can be used to avoid the newline after the output, or end the output with a different string::" msgstr "آرگومان کلیدواژه‌ای *end* می‌تواند برای جلوگیری از ایجاد خط جدید پس از خروجی، یا پایان دادن خروجی با یک رشته‌ی متفاوت استفاده شود::" msgid "" ">>> a, b = 0, 1\n" ">>> while a < 1000:\n" "... print(a, end=',')\n" "... a, b = b, a+b\n" "...\n" "0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987," msgstr "" ">>> a, b = 0, 1\n" ">>> while a < 1000:\n" "... print(a, end=',')\n" "... a, b = b, a+b\n" "...\n" "0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987," msgid "Footnotes" msgstr "پانویس‌ها" msgid "Since ``**`` has higher precedence than ``-``, ``-3**2`` will be interpreted as ``-(3**2)`` and thus result in ``-9``. To avoid this and get ``9``, you can use ``(-3)**2``." msgstr "از آنجا که ``**`` تقدم بیشتری نسبت به ``-`` دارد، عبارت ``-3**2`` به‌صورت ``-(3**2)`` تفسیر می‌شود و در نتیجه مقدار ``-9`` را تولید می‌کند. برای جلوگیری از این موضوع و به‌دست آوردن ``9``، می‌توانید از ``(-3)**2`` استفاده کنید." msgid "Unlike other languages, special characters such as ``\\n`` have the same meaning with both single (``'...'``) and double (``\"...\"``) quotes. The only difference between the two is that within single quotes you don't need to escape ``\"`` (but you have to escape ``\\'``) and vice versa." msgstr "برخلاف زبان‌های دیگر، نویسه‌های ویژه‌ای مانند ``\\n`` در هر دو نوع نقل‌قول تکی (``'...'``) و نقل‌قول دوتایی (``\"...\"``) معنای یکسانی دارند. تنها تفاوت بین این دو این است که درون نقل‌قول‌های تکی نیازی به escape کردن ``\"`` ندارید (اما باید ``\\'`` را escape کنید) و برعکس." msgid "# (hash)" msgstr "# (hash)" msgid "comment" msgstr "کامنت"