کتابخانه‌ی استاندارد · متن

بین‌المللی‌سازی i18n

برنامه‌ی چندزبانه: ترجمه‌ی پیام‌ها، جای‌گذاری مقدار در پیام و انتخاب شکل مفرد و جمع.

واردسازی بین‌المللی‌سازی
در این صفحه
  1. گونه‌ها
  2. روال‌ها

اگر برنامه‌تان باید به چند زبان حرف بزند، پیام‌ها را در کد ننویسید؛ آن‌ها را با یک کلید در «فهرست ترجمه» بگذارید و هنگام نمایش، ترجمه‌ی زبان کاربر را بگیرید.

هر فهرست یک زبان پشتیبان دارد. اگر پیامی برای زبان کاربر ترجمه نشده باشد، نسخه‌ی زبان پشتیبان نمایش داده می‌شود، و اگر آن هم نباشد، خود کلید؛ پس برنامه هیچ‌وقت پیام خالی نشان نمی‌دهد.

گونه‌ها

فهرست ترجمه Catalog

ساختار فهرست ترجمه
فهرست ترجمه‌ها. آن را با جدید بسازید و با آزادسازی رها کنید.
نامانگلیسیگونهتوضیح
keyskeysوکتور<رشته>کلیدهای ذخیره‌شده، به شکل «زبان:کلید».
valsvalsوکتور<رشته>ترجمه‌ها، به همان ترتیب کلیدها.
fallbackfallbackرشته = "en"زبان پشتیبان.
i18n-Catalog.salam
واردسازی بین‌المللی‌سازی

روال ریشه:
    ناپایا ف := بین‌المللی‌سازی.جدید("en")
    دیرکن بین‌المللی‌سازی.آزادسازی(ف)
    بین‌المللی‌سازی.تنظیم(ف، "en"، "hello"، "Hello")
    بین‌المللی‌سازی.تنظیم(ف، "fa"، "hello"، "سلام")
    بین‌المللی‌سازی.تنظیم(ف، "en"، "bye"، "Goodbye")
    سرچاپ بین‌المللی‌سازی.ترجمه(ف، "fa"، "hello")، بین‌المللی‌سازی.ترجمه(ف، "fa"، "bye")، بین‌المللی‌سازی.ترجمه(ف، "fa"، "missing")
    سرچاپ بین‌المللی‌سازی.دارد(ف، "fa"، "bye")، بین‌المللی‌سازی.دریافت خام(ف، "fa"، "bye") == ""
    سرچاپ ف.fallback
پایان
خروجیسلام Goodbye missing false true en

روال‌ها

جدید New

روال جدید(default_locale: رشته): فهرست ترجمه
یک فهرست خالی با زبان پشتیبان داده‌شده می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam

تنظیم Set

روال تنظیم(c &: فهرست ترجمه، locale: رشته، key: رشته، val: رشته)
ترجمه‌ی یک کلید را برای یک زبان ثبت می‌کند؛ اگر از قبل بوده، جایگزین می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam

دارد Has

روال دارد(c &: فهرست ترجمه، locale: رشته، key: رشته): منطقی
اگر برای این زبان و کلید ترجمه‌ای ثبت شده باشد، درست برمی‌گرداند. زبان پشتیبان را نگاه نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam

دریافت خام RawGet

روال دریافت خام(c &: فهرست ترجمه، locale: رشته، key: رشته): رشته
ترجمه‌ی ثبت‌شده را بی‌هیچ جایگزینی برمی‌گرداند؛ اگر نباشد، رشته‌ی تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam

ترجمه T

روال ترجمه(c &: فهرست ترجمه، locale: رشته، key: رشته): رشته
ترجمه‌ی کلید را برمی‌گرداند؛ اگر نباشد، ترجمه‌ی زبان پشتیبان را، و اگر آن هم نباشد، خود کلید را.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam

جایگذاری Interpolate

روال جایگذاری(msg: رشته، param_names: وکتور<رشته>، param_vals: وکتور<رشته>): رشته
هر {نام} در پیام را با مقدار هم‌نامش جایگزین می‌کند. نام‌ها و مقدارها در دو وکتور هم‌ترتیب داده می‌شوند.
i18n-Tf.salam
واردسازی بین‌المللی‌سازی

روال ریشه:
    ناپایا ف := بین‌المللی‌سازی.جدید("en")
    دیرکن بین‌المللی‌سازی.آزادسازی(ف)
    بین‌المللی‌سازی.تنظیم(ف، "fa"، "greet"، "سلام {name}، {n} پیام تازه داری")
    ناپایا نام‌ها := وکتور {} برگردان وکتور<رشته>
    ناپایا مقدارها := وکتور {} برگردان وکتور<رشته>
    دیرکن نام‌ها.آزادکن()
    دیرکن مقدارها.آزادکن()
    نام‌ها.بیفزا("name")
    نام‌ها.بیفزا("n")
    مقدارها.بیفزا("مریم")
    مقدارها.بیفزا("۳")
    سرچاپ بین‌المللی‌سازی.ترجمه قالبی(ف، "fa"، "greet"، نام‌ها، مقدارها)
    سرچاپ بین‌المللی‌سازی.جایگذاری("{name} و باز هم {name}"، نام‌ها، مقدارها)
پایان
خروجیسلام مریم، ۳ پیام تازه داری مریم و باز هم مریم

ترجمه قالبی Tf

روال ترجمه قالبی(c &: فهرست ترجمه، locale: رشته، key: رشته، param_names: وکتور<رشته>، param_vals: وکتور<رشته>): رشته
ترجمه و جای‌گذاری در یک قدم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Tf.salam

جمع Plural

روال جمع(c &: فهرست ترجمه، locale: رشته، key: رشته، n: صحیح۶۴): رشته
شکل مناسب پیام را برای عدد n انتخاب می‌کند: کلید .one برای یک و .other برای بقیه. عدد را خودش در پیام نمی‌گذارد؛ برای آن جایگذاری را به کار ببرید. در فارسی معمولاً یک شکل کافی است («۵ سیب»)، پس همان .other را بنویسید.
i18n-Plural.salam
واردسازی بین‌المللی‌سازی
واردسازی ورودی خروجی

روال ریشه:
    ناپایا ف := بین‌المللی‌سازی.جدید("en")
    دیرکن بین‌المللی‌سازی.آزادسازی(ف)
    ورودی خروجی.نوشتن پرونده("en.txt"، "apple.one = one apple\napple.other = {n} apples\n")
    سرچاپ بین‌المللی‌سازی.بارگذاری زبان(ف، "en"، "en.txt")
    ناپایا نام‌ها := وکتور {} برگردان وکتور<رشته>
    دیرکن نام‌ها.آزادکن()
    نام‌ها.بیفزا("n")
    هر ن در [۱، ۵]:
        ناپایا مقدارها := وکتور {} برگردان وکتور<رشته>
        مقدارها.بیفزا("" + ن)
        سرچاپ بین‌المللی‌سازی.جایگذاری(بین‌المللی‌سازی.جمع(ف، "en"، "apple"، ن)، نام‌ها، مقدارها)
        مقدارها.آزادکن()
    پایان
    سرچاپ بین‌المللی‌سازی.تشخیص زبان().طول() > ۰
پایان
خروجی2 one apple 5 apples true

بارگذاری زبان LoadLocale

روال بارگذاری زبان(c &: فهرست ترجمه، locale: رشته، path: رشته): صحیح
ترجمه‌های یک زبان را از پرونده‌ای با خط‌های کلید = مقدار بارگذاری می‌کند و تعداد کلیدهای خوانده‌شده را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Plural.salam

تشخیص زبان DetectLocale

روال تشخیص زبان(): رشته
زبان کاربر را از متغیرهای محیطی حدس می‌زند: اول SALAM_LOCALE، بعد LANG و LC_ALL. اگر هیچ‌کدام تنظیم نشده باشد، en برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Plural.salam

آزادسازی Free

روال آزادسازی(c &: فهرست ترجمه)
حافظه‌ی فهرست را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam