بینالمللیسازی i18n
برنامهی چندزبانه: ترجمهی پیامها، جایگذاری مقدار در پیام و انتخاب شکل مفرد و جمع.
واردسازی بینالمللیسازی
اگر برنامهتان باید به چند زبان حرف بزند، پیامها را در کد ننویسید؛ آنها را با یک کلید در «فهرست ترجمه» بگذارید و هنگام نمایش، ترجمهی زبان کاربر را بگیرید.
هر فهرست یک زبان پشتیبان دارد. اگر پیامی برای زبان کاربر ترجمه نشده باشد، نسخهی زبان پشتیبان نمایش داده میشود، و اگر آن هم نباشد، خود کلید؛ پس برنامه هیچوقت پیام خالی نشان نمیدهد.
گونهها
فهرست ترجمه Catalog
ساختار فهرست ترجمهجدید بسازید و با آزادسازی رها کنید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| keys | keys | وکتور<رشته> | کلیدهای ذخیرهشده، به شکل «زبان:کلید». |
| vals | vals | وکتور<رشته> | ترجمهها، به همان ترتیب کلیدها. |
| fallback | fallback | رشته = "en" | زبان پشتیبان. |
واردسازی بینالمللیسازی
روال ریشه:
ناپایا ف := بینالمللیسازی.جدید("en")
دیرکن بینالمللیسازی.آزادسازی(ف)
بینالمللیسازی.تنظیم(ف، "en"، "hello"، "Hello")
بینالمللیسازی.تنظیم(ف، "fa"، "hello"، "سلام")
بینالمللیسازی.تنظیم(ف، "en"، "bye"، "Goodbye")
سرچاپ بینالمللیسازی.ترجمه(ف، "fa"، "hello")، بینالمللیسازی.ترجمه(ف، "fa"، "bye")، بینالمللیسازی.ترجمه(ف، "fa"، "missing")
سرچاپ بینالمللیسازی.دارد(ف، "fa"، "bye")، بینالمللیسازی.دریافت خام(ف، "fa"، "bye") == ""
سرچاپ ف.fallback
پایانروالها
جدید 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: وکتور<رشته>): رشته{نام} در پیام را با مقدار همنامش جایگزین میکند. نامها و مقدارها در دو وکتور همترتیب داده میشوند.واردسازی بینالمللیسازی
روال ریشه:
ناپایا ف := بینالمللیسازی.جدید("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 را بنویسید.واردسازی بینالمللیسازی
واردسازی ورودی خروجی
روال ریشه:
ناپایا ف := بینالمللیسازی.جدید("en")
دیرکن بینالمللیسازی.آزادسازی(ف)
ورودی خروجی.نوشتن پرونده("en.txt"، "apple.one = one apple\napple.other = {n} apples\n")
سرچاپ بینالمللیسازی.بارگذاری زبان(ف، "en"، "en.txt")
ناپایا نامها := وکتور {} برگردان وکتور<رشته>
دیرکن نامها.آزادکن()
نامها.بیفزا("n")
هر ن در [۱، ۵]:
ناپایا مقدارها := وکتور {} برگردان وکتور<رشته>
مقدارها.بیفزا("" + ن)
سرچاپ بینالمللیسازی.جایگذاری(بینالمللیسازی.جمع(ف، "en"، "apple"، ن)، نامها، مقدارها)
مقدارها.آزادکن()
پایان
سرچاپ بینالمللیسازی.تشخیص زبان().طول() > ۰
پایانبارگذاری زبان LoadLocale
روال بارگذاری زبان(c &: فهرست ترجمه، locale: رشته، path: رشته): صحیحکلید = مقدار بارگذاری میکند و تعداد کلیدهای خواندهشده را برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: i18n-Plural.salam
تشخیص زبان DetectLocale
روال تشخیص زبان(): رشتهSALAM_LOCALE، بعد LANG و LC_ALL. اگر هیچکدام تنظیم نشده باشد، en برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: i18n-Plural.salam
آزادسازی Free
روال آزادسازی(c &: فهرست ترجمه)نمونهی این مورد همراه با موارد بالاتر آمده است: i18n-Catalog.salam