زمان جاری: 2012/05/24, 12:22 AM خوش آمدید مهمان گرامی! (ورودعضویت)



انتخاب زبان (چند زبانه Multi Language)


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
انتخاب زبان (چند زبانه Multi Language)
نویسنده پیام
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #1
Question انتخاب زبان (چند زبانه Multi Language)
سوال : برای چند زبانه کردن برنامه در کیک چه راهی را پیشنهاد می دهید ؟
( مثلا برای یک سیستم وبلاگ )
2011/12/09 07:58 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #2
RE: انتخاب زبان (چند زبانه Multi Language)
روش خود کیک بسیار عالی و کامل هست. نیازی هم به روش های دیگه نیست
2011/12/09 02:35 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #3
RE: انتخاب زبان (چند زبانه Multi Language)
در صورت امکان کمی این مورد را شرح بدهید . Huh
2011/12/14 03:17 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #4
RE: انتخاب زبان (چند زبانه Multi Language)
چند زبانه سازی در کیک از دو قسمت تشکیل شده. یکی چند زبانه سازی محتوا هست. و دیگری چند زبانه سازی متغییر ها یا ایتم ها هست.

کدام روش مد نظر شما هست؟
2011/12/14 04:40 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #5
RE: انتخاب زبان (چند زبانه Multi Language)
منظور بنده محتوا بود ، اما با سوال شما اینگونه نتیجه می گیرم که برای یک سیستم چند زبانه کامل به هر دو مورد نیاز هست .
2011/12/14 05:56 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #6
RE: انتخاب زبان (چند زبانه Multi Language)
برای ترجمه محتوا باید از رفتار کننده Translate استفاده کنید. در داکیومنت 2 به خوبی تشریح شده. مطالعه کنید و انجام بدید اگر مشکلی بود بپرسید.

فقط دو نکته :
1- ترجمه ها امکان ولید شدن نسیتند. (درستش هم همینه)
2- یادم نمیاد Big Grin یادم اومد میگم
2011/12/14 10:56 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #7
Information RE: انتخاب زبان (چند زبانه Multi Language)
(2011/12/14 10:56 PM)saleh نوشته است:  برای ترجمه محتوا باید از رفتار کننده Translate استفاده کنید. در داکیومنت 2 به خوبی تشریح شده. مطالعه کنید و انجام بدید اگر مشکلی بود بپرسید.

فقط دو نکته :
1- ترجمه ها امکان ولید شدن نسیتند. (درستش هم همینه)
2- یادم نمیاد Big Grin یادم اومد میگم

من راهنما را مطالعه کردم اما متوجه نشدم که روش کار رفتار کننده به چه شکل هست ، من الان در حال تکمیل یک پروژه هستم آیا نیازی به تغییر ساختار دیتا بیس هست ؟
روش ورود و ذخیره اطلاعات با این رفتار کننده به چه شکل هست ؟

اگر امکان دارد شرح مختصری بدهید تا مطلب کامل باشد و همه دوستان بتوانند از آن استفاده کنند (که در این صورت پیشنهاد می کنم مطالب کامل اینگونه را در یک تالار آموزشی به صورت تک مطلب ، گردآوری کنید تا یک مرجع خوب باشد بدون هیچ چیز اضافی )

با سپاس
2011/12/17 02:24 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #8
RE: انتخاب زبان (چند زبانه Multi Language)
دوست عزیز شما باید یکبار داکیومنت رو به خوبی مطالعه کنید. مشکل شما دقیقا همین هست که طبق نیازتون یکی از قسمت های رو مطالعه می کنید.

من اگر بخوام توضیحی بدم باید همین قسمت رو ترجمه کنم. و چیز بیشتری ندارم از داکیومنت کیک.

در مورد تغییر ساختار جواب این هست که اگر به روش کیک برید جلو بله باید جداول رو تغییر بدید.
اما با کمی تغییرات در این رفتار کننده . این مورد هم به راحتی رفع میشه.

این پلاگین رو هم نگاه کنید
کد PHP:
https://github.com/CakeDC/i18n/ 
کار خود تیم شرکت کیک هست
2011/12/18 03:55 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #9
RE: انتخاب زبان (چند زبانه Multi Language)
سلام ، در کتاب کیک 1.3 برای استفاده از قابلیت Translate ، از کنسول استفاده شده ، حالا اگر بخواهیم بدون کنسول اینکار را بکنیم چه ؟

چیزی که من از این مبحث متوجه شدم :

برای اینکار به جدول i18n نیاز داریم که ساختار زیر را دارد :

کد PHP:
CREATE TABLE i18n (
    
id int(10NOT NULL auto_increment,
    
locale varchar(6NOT NULL,
    
model varchar(255NOT NULL,
    
foreign_key int(10NOT NULL,
    
field varchar(255NOT NULL,
    
content mediumtext,
    
PRIMARY KEY    (id),
#    UNIQUE INDEX I18N_LOCALE_FIELD(locale, model, foreign_key, field),
#    INDEX I18N_LOCALE_ROW(locale, model, foreign_key),
#    INDEX I18N_LOCALE_MODEL(locale, model),
#    INDEX I18N_FIELD(model, foreign_key, field),
#    INDEX I18N_ROW(model, foreign_key),
    
INDEX locale (locale),
    
INDEX model (model),
    
INDEX row_id (foreign_key),
    
INDEX field (field)
); 

و باید در مدل مورد نظر طبق ساختار زیر فیلدهایی که باید ترجمه شوند را مشخص کنیم :

کد PHP:
var $actsAs = array(
''Translate' => array('title'   => 'titleTranslation',
                                 '
body'    => 'bodyTranslation'
                                 )
); 

و در core دستور زیر را اضافه می کنیم :

کد PHP:
Configure::write('Config.language''eng'); 

و در bootstrap :

کد PHP:
Configure::write('Config.languages', array(
'en' => array(
'language' => 'English',
'locale' => 'eng',
'localeFallback' => 'eng',
'charset' => 'utf-8'
),
)
); 

و در تابع ذخیره در کنترلر هم از دستور زیر :

کد PHP:
$this->Post->locale 'de_de'

من بدون کنسول این مورد را اجرا کردم ( توضیحات کتاب کامل نیست )
حال هر پستی که ذخیره می شود یکبار در جدول post و یکبار هم در جدول i18n ( همان دو فیلدی که در مدل تعریف کردیم ) ذخیره می شوند ، یعنی دوبار یک دیتا ذخیره می شود و در دو جدول !!!
آیا این افزونگی نیست ؟ آیا باید فیلد ها را از جدول پست حذف کنیم تا فقط در همان جدول i18n ذخیره شوند ؟

دوستان لطفا راهنمایی کنید . Huh
ممنون
(آخرین تغییر در این ارسال: 2012/03/20 11:16 PM توسط 786ali.)
2012/03/20 09:57 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #10
RE: انتخاب زبان (چند زبانه Multi Language)
فیلد هایی که قرار هست دو زبانه باشه. دیگه تو تیبل اصلی قرار نمی گیرند. مثل title , body

کد PHP:
Configure::write('Config.languages', array(
'en' => array(
'language' => 'English',
'locale' => 'eng',
'localeFallback' => 'eng',
'charset' => 'utf-8'
),
)
); 
این مورد هم اضافه هست. یعنی جز استاندارد کیک نیست. تو آموزش های برای مدیریت زبان نویسنده طرح خودش رو داده
2012/03/21 12:59 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #11
RE: انتخاب زبان (چند زبانه Multi Language)
در کتاب برای تعیین زبان ترجمه در +این قسمت گفته شده باید مقدار متغیر local را مشخص کنیم ، البته می شود از ساختار زیر هم استفاده کرد :
کد PHP:
Configure::write('Config.language''per'); 

حالا با استفاده از Configure فقط سیستم ترجمه فایل های po عمل می کند و ترجمه های ذخیره شده در دیتابیس فراخوانی نمی شود !

البته با مشخص کردن متغیر local در مدل می توانیم زبان ترجمه را مشخص کنیم اما سیستم چند زبانه باید قابلیت تغییر داشته باشد و با توجه به اینکه به Session ها در مدل و حتی bootstrap دسترسی نداریم چگونه باید این تغییر زبان را انجام دهیم ؟
(آخرین تغییر در این ارسال: 2012/04/13 11:01 PM توسط 786ali.)
2012/04/13 11:00 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #12
RE: انتخاب زبان (چند زبانه Multi Language)
نقل قول:البته با مشخص کردن متغیر local در مدل می توانیم زبان ترجمه را مشخص کنیم اما سیستم چند زبانه باید قابلیت تغییر داشته باشد و با توجه به اینکه به Session ها در مدل و حتی bootstrap دسترسی نداریم چگونه باید این تغییر زبان را انجام دهیم ؟

منظور شما رو از دسترسی نداشتن به سشن ها در مدل یا بوت استراپ رو به درستی متوجه نشدم. اما باید مد نظر داشته باشید. که قبل از ارسال هر گونه هدری شما باید session_start() رو فرا خوانی کنید. این یک قانون هست. پس در کیک هم در همون ابتدای لود شدن سشن استارت زده میشه. پس همه جا میشه بهش دست پیدا کرد.

مشکل شما این هست که به کلاس های کیک زیادی واسته شده اید و فکر می کنید دسترسی فقط از طریق کامپوننت و هلپر ها امکان پذیر هست. در صورتی که به کد های این تو کلاس نگاه کنید می بینید هر دو از یک کلاس به اسم CakeSession بهره می گیرند.

از این کلاس در همجا می تونید استفاده کنید.

انا بحث تغییر زبان راه های مختلفی داره یکیش از طریق روتر و url هست. یک راه دیگه هم از طریق همون سیستم کانفیگ هست که شما در کنترلر تنظیمات رو لود میکنید. ولی من پیشنهاد دادم که کانفیگ ها رو در بوت استراپ لود کنید. و این دقیقا اون چیزی هست که شما دنبالش می گردید.
2012/04/14 04:16 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #13
RE: انتخاب زبان (چند زبانه Multi Language)
(2012/04/14 04:16 PM)saleh نوشته است:  منظور شما رو از دسترسی نداشتن به سشن ها در مدل یا بوت استراپ رو به درستی متوجه نشدم. اما باید مد نظر داشته باشید. که قبل از ارسال هر گونه هدری شما باید session_start() رو فرا خوانی کنید. این یک قانون هست. پس در کیک هم در همون ابتدای لود شدن سشن استارت زده میشه. پس همه جا میشه بهش دست پیدا کرد.

بله طبق قواعد کلی همینگونه هست اما من با بکارگیری ساختار زیر در bootstrap نتوانستم این کار را بکنم :

کد PHP:
CakeSession::write('Config.language''eng'); 

(2012/04/14 04:16 PM)saleh نوشته است:  مشکل شما این هست که به کلاس های کیک زیادی واسته شده اید و فکر می کنید دسترسی فقط از طریق کامپوننت و هلپر ها امکان پذیر هست. در صورتی که به کد های این تو کلاس نگاه کنید می بینید هر دو از یک کلاس به اسم CakeSession بهره می گیرند.

بله چون بعد از این مدت کار با کیک به این تنیجه رسیدم تقریبا در 90% اوقات کیک همه چیز را پیش بینی کرده و نیاز به چیز اضافی نیست ، فقط کافیه ظرایف کیک را بیاموزیم .

(2012/04/14 04:16 PM)saleh نوشته است:  از این کلاس در همجا می تونید استفاده کنید.

بله همه جا غیر از bootstrap ، در واقع در bootstrap برای استفاده از هر کلاسی باید ابتدا آنرا فرآخوانی کنیم :

کد PHP:
App::uses('CakeSession''Model/Datasource');
CakeSession::write('Config.language''eng'); 

آیا اضافه کردن این کلاس ها در bootstrap کار درستی است ؟ چون بعضا این کلاس ها بعد از این مرحله به برنامه اضافه می شوند .

(2012/04/14 04:16 PM)saleh نوشته است:  اما بحث تغییر زبان راه های مختلفی داره یکیش از طریق روتر و url هست. یک راه دیگه هم از طریق همون سیستم کانفیگ هست که شما در کنترلر تنظیمات رو لود میکنید. ولی من پیشنهاد دادم که کانفیگ ها رو در بوت استراپ لود کنید. و این دقیقا اون چیزی هست که شما دنبالش می گردید.

یعنی شما می فرمائید تغییر زبان همراه با تغییر url نباشد ؟

کد PHP:
site.com/eng/posts
//or
site.com/posts

آیا این کار درست است که ما زبان را با سشن تغییر بدهیم و هیچ تغییری در آدرس ایجاد نشود ؟؟

من از چنین ساختاری می خواستم استفاده کنم :

کد PHP:
$this->Session->write('Config.language',$this->params['language']); 

و گذشته از همه این موارد بدون تعیین مقدار Locale در مدل یا کنترلر تغییر زبان به صورت کامل انجام نمی شود یعنی Config.language به تنهایی کافی نیست .

ممنون از لطف شما
(آخرین تغییر در این ارسال: 2012/04/16 10:47 PM توسط 786ali.)
2012/04/16 10:24 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #14
RE: انتخاب زبان (چند زبانه Multi Language)
نقل قول:بله همه جا غیر از bootstrap ، در واقع در bootstrap برای استفاده از هر کلاسی باید ابتدا آنرا فرآخوانی کنیم :
نیازی به فراخوانی کلاس نیست . این کلاس رو خود کیک در لودرش لود میکنه اتو ماتیک

نقل قول:آیا اضافه کردن این کلاس ها در bootstrap کار درستی است ؟ چون بعضا این کلاس ها بعد از این مرحله به برنامه اضافه می شوند .
زمانی که نیاز هست بله. باید این کار رو انجام بدید.

نقل قول:یعنی شما می فرمائید تغییر زبان همراه با تغییر url نباشد ؟
متوجه منظورتون نشدم. توضیح میدید.

نقل قول:آیا این کار درست است که ما زبان را با سشن تغییر بدهیم و هیچ تغییری در آدرس ایجاد نشود ؟؟
یکی از روش ها این هست. که زبان سیستم به url وابسته نیست.


نقل قول:و گذشته از همه این موارد بدون تعیین مقدار Locale در مدل یا کنترلر تغییر زبان به صورت کامل انجام نمی شود یعنی Config.language به تنهایی کافی نیست .
من تا الان به این مشکل بر نخوردم و فکر هم نکنم جایی نیاز باشه. که به غیر از Config.language در جایی دیگری زبان تعریف بشه

البته من همیشه زبان رو وابسته به url کردم و به کمک روتر متوجه تغییر زبان میشم.
2012/04/17 02:31 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #15
Smile RE: انتخاب زبان (چند زبانه Multi Language)
(2012/04/17 02:31 AM)saleh نوشته است:  نیازی به فراخوانی کلاس نیست . این کلاس رو خود کیک در لودرش لود میکنه اتو ماتیک

!!! من مدل های مختلف رو برای CakeSession استفاده کردم اما به نتیجه نرسیدم ( تا اینکه کلاس اصلی رو لود کردم طبق مثال بالا ) ، در واقع خطای عدم وجود کلاس را دریافت کردم .

نقل قول:یعنی شما می فرمائید تغییر زبان همراه با تغییر url نباشد ؟
متوجه منظورتون نشدم. توضیح میدید.

منظورم اینه که در روتر هیچ چیزی برای زبان تعریف نشود و موقع تغییر زبان url تغییری نکند و همه چیز از طریق سشن اتفاق بیافتد .

نقل قول:آیا این کار درست است که ما زبان را با سشن تغییر بدهیم و هیچ تغییری در آدرس ایجاد نشود ؟؟
یکی از روش ها این هست. که زبان سیستم به url وابسته نیست.

این روش به نظر کاربرد های خاص دارد اما در حالت کلی بهترین روش تغییر زبان در url هم باید نمود داشته باشد ، مثلا فرض کنید در یک سایت چند زبانه کاربر بخواهد لینک یک مقاله روسی را ذخیره کند و یا آنرا به دیگری بدهد و یا در شبکه های اجتماعی به اشتراک بگذارد ، اما هر کاربر با مراجعه به لینک ، زبان پیش فرض سیستم را مشاهده می کند و یا با خطای عدم وجود صفحه مورد نظر مواجه می شود چون سشن زبان روسی را ذخبره نکرده .

نقل قول:و گذشته از همه این موارد بدون تعیین مقدار Locale در مدل یا کنترلر تغییر زبان به صورت کامل انجام نمی شود یعنی Config.language به تنهایی کافی نیست .
من تا الان به این مشکل بر نخوردم و فکر هم نکنم جایی نیاز باشه. که به غیر از Config.language در جایی دیگری زبان تعریف بشه

با تعریف Config.language فقط ترجمه فایل های po تغییر می کند اما سیستم ترجمه ای که در دیتابیس تعریف شده تغییر نمی کند مگر متغیر Locale در مدل و یا کنترلر تنظیم شود .

ممنونم
2012/04/17 10:04 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #16
RE: انتخاب زبان (چند زبانه Multi Language)
نقل قول:!!! من مدل های مختلف رو برای CakeSession استفاده کردم اما به نتیجه نرسیدم ( تا اینکه کلاس اصلی رو لود کردم طبق مثال بالا ) ، در واقع خطای عدم وجود کلاس را دریافت کردم .
نمی دونم باید تو یک app خام تست کنم. شاید من خودم یکجایی لودش کردم

نقل قول:این روش به نظر کاربرد های خاص دارد اما در حالت کلی بهترین روش تغییر زبان در url هم باید نمود داشته باشد ، مثلا فرض کنید در یک سایت چند زبانه کاربر بخواهد لینک یک مقاله روسی را ذخیره کند و یا آنرا به دیگری بدهد و یا در شبکه های اجتماعی به اشتراک بگذارد ، اما هر کاربر با مراجعه به لینک ، زبان پیش فرض سیستم را مشاهده می کند و یا با خطای عدم وجود صفحه مورد نظر مواجه می شود چون سشن زبان روسی را ذخبره نکرده .
نظری ندارم- چون روش ها رو باید بر اساس نیازها انتخاب کرد

نقل قول:با تعریف Config.language فقط ترجمه فایل های po تغییر می کند اما سیستم ترجمه ای که در دیتابیس تعریف شده تغییر نمی کند مگر متغیر Locale در مدل و یا کنترلر تنظیم شود .
اگر در Config.language زبان رو به صورت 3 حرفی معرفی کرده باشید در ترجمه از اون استفاده مییشه.
(آخرین تغییر در این ارسال: 2012/04/17 11:45 AM توسط saleh.)
2012/04/17 11:41 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: