• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سایت دو زبانه
#1
سلام من دو تا سوال دارم
سایت های دو زبانه در ci چگونه هستند؟
یعنی نحوه استفاده از lan helper چه جوریه

سوال دومم هم در مورد تاریخ شمسی هست آیا به صورت پیش فرض ساپورت می کنه؟
  پاسخ
تشکر شده توسط :
#2
تاریخ شمسی ساپورت نمی شه بصورت پیش فرض. من یه هلپر براش نوشته بودم. باید بگردم پیداش کنم برات.
در مورد چند زبانه بودن سایت چون CI یه ORM خوب نداره در لایه دیتابیس کاری از پیش نمی برید و کلاس دیتابیس خودش هم i18n ساپورت نمی کنه. شما اگر داکیومنت رو کامل بخونید فکر نمی کنم سوالی براتون پیش بیاد اما توضیح می دم.
در مسیر system/application/language یک فایل ایجاد کنید. به عنوان مثال من برای زبان فارسی این فایل رو ایجاد می کنم farsi_lang.php . سپس درون فایل چند نوع از کلمات رو معرفی می کنم.
کد پی‌اچ‌پی:
$lang['BlogTitle'] = "این تایتل است";
$lang['BlogWellcome'] = "خوش آمدید"

حالا هرجا نیاز به چاپ اینها داشتم. ابتدا فایل زبان رو با این کد فراخوانی می کنم
کد پی‌اچ‌پی:
$this->lang->load('farsi''fa'); 
سپس با این کد اجزایی که معرفی کردم رو فراخوانی می کنم
کد پی‌اچ‌پی:
$this->lang->line('language_key'); 
language_key همون نام key هایی هست که اون بالا برای متغیر lang تعریف کردیم
به عنوان مثال برای چاپ تایتل از این کد استفاده می کنیم ( در کنترلر )
کد پی‌اچ‌پی:
$this->lang->line('BlogTitle'); 

اگر هم در ویو نیاز بود ابتدا هلپر رو لود می کنید
کد پی‌اچ‌پی:
$this->load->helper('language'); 
بعدش
کد پی‌اچ‌پی:
echo lang('language_key''form_item_id'); 
language_key که همون بالایی هست. form_item_id هم آی دی لیبلی هست که
چاپ می شه
کد:
<label for="form_item_id">language_key</label>
اگر نیاز داشتی می تونم راهایی برای گسترش کلاس Language بهت نشون بدم تا دیگه فقط درون لیبل چاپ نشه.
  پاسخ
تشکر شده توسط : scooter molana
#3
نقل قول: اگر نیاز داشتی می تونم راهایی برای گسترش کلاس Language بهت نشون بدم تا دیگه فقط درون لیبل چاپ نشه.
اگه بگی که خیلی خیلی ممنون می شم.
  پاسخ
تشکر شده توسط :
#4
سلام یعنی حتما باید از lable استفاده کرد؟
اگه یه جایی قرار شد از DB استفاده چی کار باید بکینیم
من خیلی سرچ کردم تا یه فایل تست پیدا کنم اما هیچینبود
  پاسخ
تشکر شده توسط :
#5
سلام
بعد از مدتها تلاش بی وقفه Big Grin تونستم که با این کلاس کار کنم
اما حالا یه سوال جدید برام پیش اومده و اون اینه که اساس یک سایت 2 زبانه در ci چگونه است؟
مثلا چگونه باید بین زبان ها سوییچ کرد؟
یا همه فایل های view در یک فولدر باشند یا به ازای هر زبان باید یک فولدر view داشته باشیم
ممنون می شم اگه راهنماییم کنین
  پاسخ
تشکر شده توسط :
#6
برای لود کردن زبان
کد:
Loading A Language File

In order to fetch a line from a particular file you must load the file first. Loading a language file is done with the following code:
کد پی‌اچ‌پی:
$this->lang->load('filename''language'); 
کد:
Where filename is the name of the file you wish to load (without the file extension), and language is the language set containing it (ie, english). If the second parameter is missing, the default language set in your application/config/config.php file will be used.

مثلا شما در فایل فارسی و انگلیسی این متغیر رو دارید
کد پی‌اچ‌پی:
$lang['BlogTitle'
حالا شما وقتی که زبان فارسی رو لود می کنید هر جا در VIEW از متغیر بالا استفاده کرده باشید مقدار فارسی چاپ می شه و بلعکس
  پاسخ
تشکر شده توسط :
#7
نه منظور من از سویچ اینه که توی سایت ما می نویسیم زبان را انتخاب کنید
اگر کاربر فارسی رو انتخاب کرد همه صفحه فارسی بشه
و اگر انگیلیسی هم انگلیسی
سوال من اینه که با انتخاب کاربر چه جوری باید فایل فارسی رو load کنیم و برعکس
  پاسخ
تشکر شده توسط :
#8
میتونی مقدار زبان فعلی رو توی سشن ذخیره کنی
یه لینک که طرف روش کلیک می کنه برای تغییر زبان
کد:
sitedomain/lang/swichlang/fa
sitedomain/lang/swichlang/en
یه کنترلر با نام lang و یه فانکشن به نام swichlang گذاشتم. مقدار بعدی زبانی هست که باید ست بشه که حالا fa می خواد باشه en می خواد باشه یا ...
در کل اسکریپت هم از طریق سشن زبان رو می خونم. اینطوری وقتی که طرف زبان رو فارسی می کنه یا انگلیسی می کنه دیگه همیشه زبان فارسی هست. البته این راه خوبی نیست زیاد
بهتره در GET نوع زبان رو داشته باشید البته این کار هم دردسر هایی داره
مثلا تمامی فانکشن ها باید یه آرگومان برای زبان داشته باشند
کد پی‌اچ‌پی:
function news($id$lang fa

من خودم به هیچ وجه استفاده از CI رو برای سایت های پیشرفته پیش نهاد نمی کنم.
  پاسخ
تشکر شده توسط : scooter
#9
خیلی خیلی از جوابت ممنونم .اگه بازم سوالی پیش اومد حتما می پرسم ازت
  پاسخ
تشکر شده توسط :
#10
سلام تا اونجایی که گفتی من پیش رفتم (با استفاده از session )
اما من میخوام یک segment ساخته نشه .
یعنی زبان فارسی انتخاب بشه بدون اینکه url تغییر کنه و برعکس ( هر عملیاتی روی زبان انجام شد url تغییر نکنه)
ممنون می شم کمکم کنی
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان