API¶
هر چه در ادامه میآید از gettext_tstrings صادر میشود. هیچچیز دیگری
عمومی نیست. این صفحه مرجعِ امضاهاست؛ برای نمونههای کارشده از هر تابع
راهنما را ببینید.
ترجمهکردن¶
هر تابع t-string خود را بهصورت موضعی میگیرد و دو آرگومان کلیدواژهای
میپذیرد: translations (که به بستهٔ بافتار و سپس به توابع سراسری
کتابخانهٔ استاندارد بازمیگردد) و strict (نگاه کنید به
راهنما).
| تابع | امضا |
|---|---|
gettext |
(template, /, *, translations=None, strict=False) -> str |
ngettext |
(singular, plural, n, /, *, translations=None, strict=False) -> str |
pgettext |
(context, template, /, *, translations=None, strict=False) -> str |
npgettext |
(context, singular, plural, n, /, *, translations=None, strict=False) -> str |
tr |
نام دیگرِ gettext |
ntr |
نام دیگرِ ngettext |
Translator¶
یک dataclassِ منجمد که یک شیء ترجمه را میبندد تا محلهای فراخوانی مجبور به تکرارش نباشند.
فراخوانیپذیر است (_(t"…")) و gettext و ngettext و pgettext و
npgettext و نامهای دیگرِ tr / ntr را با خود دارد.
بستن بافتار¶
| نام | کارکرد |
|---|---|
use_translations(translations) |
برای مدت یک بلوک with میبندد و سپس حالت پیشین را بازمیگرداند. |
set_translations(translations) |
بدون بلوک میبندد، برای چرخههای حیاتی که فریمورک مدیریت میکند. |
get_translations() |
بستهٔ جاری را میخواند، یا None. |
بسته یک ContextVar است؛ پس بهازای هر بافتار جداست و زیر همزمانی امن
است.
رشتههای معوق¶
| نام | کارکرد |
|---|---|
lazy_gettext(template, /, *, strict=False) |
ترجمه را تا هر بار رندر به تعویق میاندازد. |
lazy_pgettext(context, template, /, *, strict=False) |
صورت بافتاری آن. |
LazyString |
آنچه هر دو برمیگردانند. از راه str() و format() به هر زبانی که در آن لحظه مقید است رندر میشود، با متنِ رندرشدهٔ خود برابر مقایسه میشود، و عمداً hashناپذیر است. |
نمونههای کارشده، از جمله اینکه چرا strict جایش در محلِ تعریف است، در
ترجمهٔ معوق آمده است.
سطح پایینتر¶
compile_template(template, /) -> CompiledTemplate¶
یک t-string را کامپایل میکند و از نقشهٔ ایستای کششدهاش دوباره استفاده میکند.
CompiledTemplate¶
| عضو | معنا |
|---|---|
.msgid |
شناسهٔ پایدار پیام در gettext. |
.placeholders |
نامهای جاینگهدار به ترتیب نخستین ظهور. |
.render(pattern) |
یک الگو را اعتبارسنجی و رندر میکند. در ناسازگاری همیشه استثنا پرتاب میکند. |
نوعها و خطاها¶
Translations¶
یک Protocolِ runtime_checkable برای چهار متد استاندارد، همه صرفاً
موضعی:
class Translations(Protocol):
def gettext(self, message: str, /) -> str: ...
def ngettext(self, singular: str, plural: str, n: int, /) -> str: ...
def pgettext(self, context: str, message: str, /) -> str: ...
def npgettext(self, context: str, singular: str, plural: str, n: int, /) -> str: ...
gettext.NullTranslations و gettext.GNUTranslations و Translationsِ
Babel هر سه آن را برآورده میکنند.
استثناها¶
| کلاس | چه وقت پرتاب میشود |
|---|---|
TStringError |
کلاس پایه برای هر دو مورد زیر. |
InvalidTemplateError |
t-stringِ مبدأ قرارداد را میشکند — یک درونیابی پیچیده، یا نامی تکراری با قالببندی متفاوت. |
InvalidTranslationError |
ترجمه آن را میشکند. زیر حالت آسانگیرِ پیشفرض، این در لاگ ثبت میشود و بهجایش متن مبدأ رندر میشود. |
نقطههای ورود استخراج¶
هنگام نصب خودکار ثبت میشوند؛ با نام به آنها ارجاع میدهید، نه با import.
| گروه | نام | مصرفکننده |
|---|---|---|
babel.extractors |
gettext_tstrings |
مقدار method در babel.cfg. |
babel.checkers |
gettext_tstrings |
pybabel compile، بهطور خودکار. |
کارایی¶
روایت کامل — چه چیزی کش میشود، کشها بر چه کلید میخورند، و اعدادِ اندازهگیریشده — در مسیر داغ آمده است. صورت کوتاهش: اعتبارسنجی کش میشود و هرگز رد نمیشود، و کل رندر کسری از یک میکروثانیه هزینه دارد. سنجه را روی هدف خودتان اجرا کنید: