ဘာသာစကားမျိုးစုံ (I18N) ဖွံ့ဖြိုးတိုးတက်မှုတွင်ပရိုဂရမ်မာများသည်အသုံးပြုသူအမည်, အချိန်, အရေအတွက်, အရေအတွက်စသဖြင့် variable များကိုမကြာခဏထည့်သွင်းရန်လိုအပ်သည်။ string splicing ကိုတိုက်ရိုက်အသုံးပြုပါက Code Readability သည်ဆင်းရဲခြင်းကိုသာမကဘဲထိန်းသိမ်းရန်ခက်ခဲသည်။ PHP မှပေးသော vsprintf () function သည်ဤပြ problem နာကိုဖြေရှင်းရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် flexible နှင့်အစွမ်းထက်သောတက်ကြွသောအစားထိုးလုပ်ဆောင်မှုများကိုရရှိရန် Formatting ကြိုးနှင့် Array parameters များကိုပေါင်းစပ်ထားသည်။
VSPrintf () PHP တွင် string formating function ဖြစ်သည်။ ၎င်း၏အလုပ်လုပ်နိယာမသည် Sprintf () နှင့်ဆင်တူသည်။ ၎င်းသည်ကျွန်ုပ်တို့အားအလွယ်တကူပြင်ဆင်မှုများ (ဥပမာဒေတာဘေ့စ်မှရရှိသောအမျိုးမျိုးသော variable များကိုရရှိသော variable များကို) ဖြတ်သန်းရန်ခွင့်ပြုသည်။
Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
string vsprintf(string $format, array $values)
$ format - format placeholders နှင့်အတူ string ကို။
$ တန်ဖိုးများ - ခင်းကျင်းမှုတစ်ခုစီအတွက်တန်ဖိုးတစ်ခုစီသည် placevers များကိုကြိုးဖြင့်အစားထိုးလိမ့်မည်။
ဘာသာစကားမျိုးစုံစနစ်၏ဥပမာတစ်ခုကိုသုံးသပ်ကြည့်ပါ။ အောက်ပါအချက်အလက်များကိုကျွန်ုပ်တို့ပြသရန်လိုအပ်သည်။
English : မင်္ဂလာပါဟီဂျွန်! သင့်မှာစာ 5 မဖတ်ပါ။
တရုတ် - မင်္ဂလာပါ, ဂျွန်! သင့်မှာစာ 5 မဖတ်ပါ။
Variables (Username နှင့် Message နံပါတ်) ကိုပြောင်းလွယ်ပြင်လွယ်စေရန်ဤဝါကျနှစ်ခုကိုတင်းပလိတ်များအဖြစ် သုံး. placeholder % s ကိုမှတ်သားနိုင်သည်။
<?php
// ဘာသာစကားဖိုင်သို့မဟုတ်ဒေတာဘေ့စ်မှတင်ထားသောဘာသာစကား template ကိုယူပါ
$translations = [
'en' => 'Hello, %s! You have %d unread messages.',
'zh' => 'မင်္ဂလာပါ,%s!သင်မှာ .... ရှိသည် %d မဖတ်ပါ。'
];
// အသုံးပြုသူသတင်းအချက်အလက်
$user = 'John';
$messageCount = 5;
// လက်ရှိဘာသာစကား
$lang = 'zh'; // သို့မဟုတ် 'en'
// အသုံးပြု vsprintf အစားထိုးပါစေ
$output = vsprintf($translations[$lang], [$user, $messageCount]);
echo $output;
?>
မင်္ဂလာပါ,John!သင်မှာ .... ရှိသည် 5 မဖတ်ပါ。
VSPrintf () မှတဆင့်အသုံးပြုသူအမည်နှင့်မက်ဆေ့ခ်ျနံပါတ်နှင့်အတူ template ကို template တွင်သတ်မှတ်ထားသော placeholders (string) နှင့် % d (integer) နှင့် % d (integer) ကိုအစားထိုးသည်။
ပိုမိုရှုပ်ထွေးသောဘာသာစကားအဆောက်အအုံများလိုအပ်သည့်အခါ placeholder ရာထူးများပြောင်းလဲနိုင်သည်။ ဥပမာအားဖြင့်:
$translations = [
'en' => 'User %1$s has %2$d items in cart.',
'fr' => 'Il y a %2$d articles dans le panier de l’utilisateur %1$s.'
];
parameter လုပ်ထုံးလုပ်နည်းအနေအထားကိုသတ်မှတ်ခြင်းအားဖြင့် ( % 1 $ s % 2 $ d ) ကိုသတ်မှတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကွဲပြားခြားနားသော syntax အမိန့်ကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားနိုင်သည်။
<?php
$translations = [
'en' => 'User %1$s has %2$d items in cart.',
'fr' => 'Il y a %2$d articles dans le panier de l’utilisateur %1$s.'
];
$user = 'Alice';
$cartItems = 3;
$lang = 'fr';
echo vsprintf($translations[$lang], [$user, $cartItems]);
?>
Il y a 3 articles dans le panier de l’utilisateur Alice.
ကျွန်ုပ်တို့တွင်ချက်ချင်းဤသို့ဆိုပါစို့။ သင်၏ကိုယ်ပိုင်ပင်မစာမျက်နှာကိုကြည့်ရန်ဤနေရာကိုနှိပ်ပါ။ <a href = '% s'> link </a> "
အမှန်တကယ်အသုံးပြုမှုတွင်သင်သည်ဤအရာကိုရေးနိုင်ပါသည်။
<?php
$translations = [
'zh' => "သင်၏ကိုယ်ပိုင်ပင်မစာမျက်နှာသို့သွားရန်ဤနေရာကိုနှိပ်ပါ:<a href='%s'>သံကွင်းဆက်</a>"
];
$url = 'https://gitbox.net/user/profile';
echo vsprintf($translations['zh'], [$url]);
?>
သင်၏ကိုယ်ပိုင်ပင်မစာမျက်နှာသို့သွားရန်ဤနေရာကိုနှိပ်ပါ:<a href='https://gitbox.net/user/profile'>သံကွင်းဆက်</a>
ဘာသာစကားမျိုးစုံ string termetes ကိုပြန်လည်အစားထိုးရန် VSSprintf () ကိုအသုံးပြုခြင်းသည်အောက်ပါအားသာချက်များရှိရန်အောက်ပါအားသာချက်များရှိသည်။
Template တွင်ရှင်းလင်းသောဖွဲ့စည်းပုံနှင့်ခိုင်မာသောပြုပြင်ထိန်းသိမ်းမှုရှိသည်။
Parameter Positionary Process ကိုထိန်းချုပ်ရန်နှင့်ကွဲပြားခြားနားသော syntax ဖွဲ့စည်းပုံဘာသာစကားနှင့်လိုက်လျောညီထွေဖြစ်အောင်လုပ်ပါ။
array ဒေတာနှင့်ဘာသာစကားအစီအစဉ်များနှင့်အဆင်ပြေစွာပေါင်းစည်းခြင်း,
HTML နှင့် URLs outputting သည့်အခါပြောင်းလွယ်ပြင်လွယ်နှင့်ထိရောက်သော။
Laravel, Laravel ကဲ့သို့သောမူဘောင်များကိုအသုံးပြုသောစီမံကိန်းများအတွက်၎င်းတို့တွင်ကိုယ်ပိုင် encapsulated ဘာသာပြန်စာတမ်းများရှိသော်လည်းအခြေခံအကောင်အထည်ဖော်မှုသည် Template Placeholders အတွက် VSPrintf () ကို သုံးနေဆဲဖြစ်သည်။
အတိုချုပ်ဆိုရလျှင် VSPrintf () Mastering VSPrintf () သည်လှပသော, ဘာသာစကားမျိုးစုံဖော်ရွေသော PHP ကုဒ်ရေးသားခြင်း၏အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။