يکسري زبانه بودن برنامههاي اينترنت
يکسري زبانه بودن تارنما يعني پيادهسازي امکاني که استفاده کننده بتواند
وبسايتهاي تعداديزبانه در دنياي امروز يوزرها و مشتريان بيشتري از تارنماهاي تکزبانه خواهند داشت و پياده سازي اين خصوصيت قادر است يک امکان مهم براي تارنما به شمار آيد و بخش اعظمي از افرادي که به شما پيشنهاد ساخت اينترنت نرم افزار و وبسايت مي دهند از شما ميخواهند اين گزينه را پياده سازي نمائيد.
تکنيکهاي متعددي براي پياده سازي امکان يک سري زبانه موجود است که هرمورد مزايا و معايب يگانه خويش را داراهستند و ما دراين فراگيري همت مي کنيم يکياز شايسته ترين شيوههاي مو جود را براي قاب ورک Laravel و اينترنت نرم افزار هايي که با آن ساخته ميشود پياده سازي کنيم.
يک کدام از تجهيزات جذاب و سهل و آسان در کادر ورک لاراول استعمال از سرويس ها ترجمه براي پياده سازي تارنماهاي چندين زبانه است. اين بخش به شما تحت عنوان بسط دهنده اين قابليت را ميدهد که به تعداد دلخواه، هر زباني را که مي خواهيد به سايت خويش بيشتر فرمائيد.
قابليت و امکان به کار گيري ترجمهها در API گوشي
يک کدام از قابليت و امکانهاي خوب لاراول قابليت ادغام اين بخش يکسري زبانه با بخشهاي ديگر تارنما براي ارائه به طور API گوشي ميباشد که به راحتي قابل به کار گيري ميباشد.
طراحي وب سايت چندين زبانه با کادر ورک لاراول
به عبارتيطور که گفتيم، براي پيادهسازي يک وب سايت چندزبانه شيوه هاي مختلفي موجود است که با دقت به دسته وب سايت مي توانيم يک رويکرد را تعيين کنيم. ولي راهي که دراين فراگيري به آن مي پردازيم يک رويه معمولي، کاربردي و در عين درحال حاضر انعطافپذير ميباشد که بهطور معمول براي تمام وبسايتها قابل انجام و تماما مطلوب ميباشد.
نخست در فولدر برنامه لاراول و نصيب config يک فولدر PHP با اسم translation يا اين که نامي دلخواه توليد ميکنيم. يک نکتهي مهم در امر پوشههايي که در فولدر config ميسازيم اين ميباشد که تمام اين پوشهها بايستي يک آرايه را مانند ذيل برگرداند.
درحال حاضر مي خواهيم يک آرايه که گويشهاي وبسايت مارا معين مينمايد بهصورت تحت برگردانيم.
[
\"fa\"=>\"Persian\",
\"ar\"=>\"Arabic\",
\"en\"=>\"English\"
]
];
درصورتيکه به url وبسايتهاي يکسريزبانه دقت کرده باشيد، بهطور نمونه، وقتي که بخواهيد مطالب يک سايتي که امکان Multi-Language داراست، به لهجه انگليسي اکران داده شود، کافيست در صدر يا اين که پايان url وبسايت keyword يا اين که واژه و کلمه کليدي en را قرار دهيد.
ما در کد بالا en را برابر با English يا اين که به عبارتي لهجه انگليسي قرار داديم. اما دقت فرمائيد که هنوز بر روي اين لهجهها هيچ دستوري پياده سازي نشده ميباشد و پيروي فراگيري ساخت وب سايت تعدادي زبانه با قاب ورک لاراول ، بدين عمل خواهيم پرداخت.
اکنون فرض فرماييد که يک Blade براي توليد يک Post در کاغذي وبسايتمان داريم و به صورت نمونه اين Blade که نامش create.blade.php ميباشد در داخل Contorller ما PostsController را مانند تحت برگردانده يا اين که return ميگردد.
درحال حاضر فرض فرماييد که مي خواهيد همين Controller که به return، create.blade.php مي شود، کاغذي متبوع ما يعني به عبارتي create.blade را Multilanguage يا اين که چندزبانه نمايد. براي اينفعاليت مانند امر پايين کار مي کنيم.
امر بالا از فولدري config و فولدر translation آرايهي languages را گرفته و در متغير languages$ قرار داديم. آنگاه آن را بوسيله تابع compact به create.blade ارسال کرديم. هم اکنون در create.blade ميتوانيم آن را فراخواني کنيم.
ما در کد ذيل قسمتي از create.blade، که مرتبط با tabها ميباشد را بهطور نمونه آوردهايم و شما کافي ميباشد با پيادهسازي قابليت و امکان Multilanguage آشنا گرديد تا بتوانيد اين امکان را در کدهاي خويش آنسيرتکامل که مي خواهيد پيادهسازي نماييد.
Persian
Arabic
English
در کد بالا مي بايست languages$ را فراخواني کنيم و تغييرات تحت را بر روي Blade اعمال کنيم. اعتنا فرمائيد که languages$ يک آرايه ميباشد و همينطور ما گويش فارسي را بهچهره پيشفرض براي تارنمامان active گذاشتيم.
@foreach($languages as $lang_code => $lang_title)
first) active @endif\">{{ $lang_title }}
@endforeach
با به کار گيري از امر بالا کدمان را از موقعيت دستي وارد کردن در مياوريم و با به کارگيري از رينگ foreach آن را هوشمند و Dynamic مي کنيم. همچنين براي اينکه بگوييم اولين loop از foreach که به عبارتي لهجه فارسي ميباشد بهرخ active دربيايد از فرمان if@ مانند بالا استعمال ميکنيم.
ما از منطق کد بالا ميتوانيم در تمام برنامهها به کار گيري کنيم، يعني مانند دستوراتي که در ابتدا نوشتهايم، در هر کجا از کدمان که بخواهيم از موقعيت Multi-Language استعمال کنيم، ميتوانيم با به کار گيري از رينگ foreach@ آن را Dynamic کنيم.
هم اکنون فرض فرمائيد که مي خواهيم در ورقهي تارنمامان يک Post توليد کنيم، پس به عبارتيطور که گفتيم و مانند مکانيسم قبل براي پياده سازي وبسايت Multilanguage از کد پايين به کارگيري مي کنيم.
{{ csrf_field() }}
@foreach($languages as $lang_code => $lang_title)
first) show active @endif\" id=\"{{ strtolower($lang_title) }}\" role=\"tabpanel\">
Post Title
Post Content
@endforeach
Save Post
تا بهحالا ما Tab و Content تشکيل پست وبسايت را صرفا از حيث کد Dynamic کرديم و درپيي يادگرفتن طراحي وب سايت يکسري زبانه با قاب ورک لاراول ، مي بايست از نگاه منطقي و نوشتاري آن را Dynamic کنيم.
اکنون فرض فرماييد که يک Route براي PostsController و تابع Store مانند پايين داريم.
به عبارتيطور که گفتيم يک Route براي PostsController و تابع Store ساختيم و اکنون بايستي اين تابع را در PostsController ساخت کنيم. بعداز ساخت تابع Store، دستورها پايين را در آن وارد مي کنيم.
all();
$languages=config(\"translation.languages\");
$translation= [];
foreach($languages as $lang_code => $lang_title){
if ($this->checkTranslation($lang_code,$params))
{
$translation[]=[
\"title\" => $params[\"post_title_\".$lang_code],
\"content\" => $params[\"post_content_\".$lang_code]
];
}
}
}
private function checkTranslation($lang_code,$params){
return isset($params[\"post_title_\".$lang_code]) && !empty($params[\"post_title_\".$lang_code]) &&
isset($params[\"post_content_\".$lang_code]) && !empty($params[\"post_content_\".$lang_code]);
}
}
ما در بالا تمام درخواستهاي ارسال گرديده را در درون متغير params$ ذخيره ميکنيم. بعد از آن مانند تابع create تمام languageهاي مو جود در فولدر translation در فولدر config را مي گيريم و در languages$ ذخيره ميکنيم. هم اکنون يک آرايهي خالي يا اين که تهي به اسم translation$ توليد ميکنيم تا در رينگي foreach از آن به کار گيري کنيم.
در رينگي foreach تمام languagesها را گرفته و به وسيله تابع checkTranslation که در Class تمجيد کرديم و براي نظارت کردن Set شدن و خالي نبودن Fieldهاي content و title بود، باز بيني ميکنيم. دراينحالت در صورتي بازبيني ما صحيح بود در آرايه translation$، داده هاي title و content را قرار مي دهيم. اکنون براي ذخيرهسازي آنان مي بايست يک Model توليد کنيم، پس به توليد يک Model و پيادهسازي آن مي پردازيم.
$ php artisan make:model Post -m
$ php artisan make:model Translation -m
بوسيله امر بالا دو model با اسمهاي Post و Translation و migration مربوط به آنها، توليد ميکنيم.
درحال حاضر در Post, migration يک جدول ميسازيم. براي اينفعاليت به Post, migration ميرويم و دستورها پايين را وارد مي کنيم.
increments(\"id\");
$table->integer(\"user_id\");
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(\"posts\");
}
}
آن گاه براي Translate کردن به migration و Translate مي رويم و در آن امرها پايين را وارد ميکنيم.
increments(\"id\");
$table->integer(\"post_id\");
$table->string(\"lang\",10);
$table->string(\"title\",100);
$table->text(\"content\");
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(\"translations\");
}
}
هم اکنون که کدنويسي migrationها به پايان رسيد آن ها را به وسيله فرمان تحت اجرا مي کنيم.
$ php artisan migrate
حال Model هايي که ساختيم را Setup ميکنيم.
براي Post:
به عبارتيطور که احتمالا ميدانيد، Post و Translation با هم رابطه دارا هستند. براي اينعمل مي بايست از Post به Translation و بالعکس يک ارتباط توليد کنيم.
براي ساخت رابطه از Post به Translation:
hasMany(Translation::class,\"post_id\");
}
}
براي ساخت رابطه از Translation به Post:
belongsTo(Post::class,\"post_id\");
}
}
هم اکنون به PostsController برميگرديم و براي ذخيرهسازي دادهها، نخست آنها را در Database بوسيله Model توليد مي کنيم.
all();
$newpost = Post::create([
\"user_id\" => 1
]);
if ($newpost) {
$languages=config(\"translation.languages\");
$translation= [];
foreach ($languages as $lang_code => $lang_title) {
if ($this->checkTranslation($lang_code, $params)) {
$translation[] = [
\"lang\" => $lang_code,
\"title\" => $params[\"post_title_\" . $lang_code],
\"content\" => $params[\"post_content_\" . $lang_code]
];
}
}
$newpost->translations()->createMany($translation);
return back();
}
}
private function checkTranslation($lang_code,$params){
return isset($params[\"post_title_\".$lang_code]) && !empty($params[\"post_title_\".$lang_code]) &&
isset($params[\"post_content_\".$lang_code]) && !empty($params[\"post_content_\".$lang_code]);
}
}
ما در دستورها بالا از روش relation در بين Post و Translation، پس از توليد يک Translation ,Post مرتبط با آن را در Database و جدول Translation ساخت ميکنيم.
اکنون بهطور نمونه براي Post، يک توشه به لهجه عربي، يک توشه فارسي و توشه ديگر متني انگليسي وارد مي کنيم، بعد Post کرده تا بوسيله تابع Store در PostsController در Database ذخيره شود.
يکسري زبانه بودن برنامههاي اينترنت
معرفي چندين گويش نرم افزار نويسي در طراحي وب
گونه هاي لهجه هاي نرم افزار نويسي پايين اينترنت
,post ,lang ,مي ,يک ,code ,lang code , post ,params , lang ,يا اين ,code &&isset params ,@return void* public ,void* public function ,down {schema dropifexists
درباره این سایت