آدرس صفحات در سایت دوزبانه

در دروپال 6 که Locale و translation رو فعال می‌کنی این امکان وجود داره که یک متن رو که به فارسی وارد کردی ترجمه‌اش رو هم به انگلیسی وارد کنی و این ترجمه تحت یک node دیگه ذخیره میشه. توی صفحه تنظیمات Language از آدرس‌دهی به صورت drupal.org/en و drupal.org/fa صحبت شده. می‌خواستم ببینم برای اینکه آدرس صفحات اینطوری باشه باید چه کار کرد؟ و اینکه با عوض کردن زبان قالب هم عوض بشه (یعنی از فارسی به انگلیسی که رفتیم، قالب کل سایت چپ‌به‌راست بشه و منوها انگلیسی بشه و اسم سایت به انگلیسی ظاهر بشه و باقی قضایا)...

سلام

خوشحالم که افراد مثل شما سوالات کاملا تخصص از من سوال می کنند.

من منظور شما رو نفهمیدم شما می خواهید در دروپال 5 این کار رو انجام دهید یا دروپال شش.

اگر در دروپال 5 می خواهید استفاده کنید . باید ماجول i118n رو دانلود کنید.

ولی در دروپال شش کافی است به لیست زبان ها بروید.

و دکمه ویرایش هر زبان رو بزنید و یک پروفیک به آن زبان اختصاص دهید.

مثلا پیشفرض زبان فارسی fa هست ولی زبان اینگلیسی بطور پیشفرض پروفیکسی ندارد شما می توانید en را به آن اضافه کنید.

در صفحه پیکربندی زبان ها مشخص کنید که زبان ها بصورت پروفیکس نمایش داده شوند می توانید گزینه دامین را انتخاب کنید تا مثلا به قسمت فارسی خود این دامین را اختصاص دهید http://fa.site.com

حالا تنها یک چیز باقی می ماند اینکه در تمام صفحات تنها متون مربوط به آن نمایش داده شوند.

برای اینکار یا باید صبر کنید اون ماجول رو که گفتم کاملا برای دروپال شش آماده شود یا باید از ماجول نصفه نیمه که آماده شده استفاده کنید .

این ماجول در لیست ماجول های دروپال هنوز قرار ندادم .

اگر آن را می خواهید بگیید تا آپلود کنم.

ترجمه بقیه سایت غیر از خود مطالب

جناب موسوی و اگر اجازه بدید علی جان،
خیلی از راهنمایی‌هاتون ممنونم. من به این سیستم اعتقاد پیدا کردم چون دروپال واقعاً کشش تبدیل شدن به CMS تمامی سایت‌های حرفه‌ای رو داره. برای CCK‌ با طعم دروپال 6 هم که دیگه روزشماری می‌کنم. منظور من در این بحث دروپال 6 بود. نمونه سایتی که می‌گم سایت amnesty.org هست که عربی و انگلیسی و یک زبان دیگه داره. الان چیزایی رو که گفتید اجرا کردم. قالب حالا با نمایش مطلب انگلیسی چپ‌به‌راست می‌شه.:) با توجه به ترتیب منطقی مطالب در html قالبی که درست کردم، اشکال زیادی در نمایش css و بک‌گراندها و... پیش نمیاد؛ در واقع حالا rtl- ها لود نمی‌شن. تنها چیزی که اینجا درست نیست، اسم سایته (که در واقع فقط یه جا میشه تعریفش کرد و اونهم یا فارسی یا انگلیسی -- در حالی که ما ترجمه‌اش رو لازم داریم) و منوها (که من فعلا امکانی برای ترجمه اونها نمی‌بینم)‍. ماجولی که گفتید رو اختصاصاً خودتون دارین می‌نویسین؟
آیا نمیشه همونطور که page-front.tpl.php رو برای صفحه اول جداگانه طراحی کردم، برای زبان انگلیسی هم جداگانه قالبی طراحی کنم که اسم سایت به صورت استاتیک توش باشه؟ که البته title‌ صفحات رو اون موقع باید چکار کنیم؟ با این همه امکاناتی که دروپال برای سایت‌های چندزبانه (multilingual) داره، این روش آخری که گفتم البته نقض غرض هست و نباید انجامش داد.

خیلی مفید

سلام
اول اجازه ما هم دست شماست.

دوم مطالبی که شما ذکر می کنید دقیقا همون چزهایی است که بنظر من می رسه.
و من از این همه تشابه گاهی تعجب می کنم.

خب اون ماجول رو من ننوشتم ولی یکی از دوستام یک قسمت از ماجول i18n رو که برای نمایش دادن هر مطلب در زبان مخصوصش بود برای دروپال شش تهیه کردی.

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

ولی اون نکته ای که ذکر کردید یعنی تغییر نام سایت با تغییر زبان من اینو توی هیچ ماجولی ندیدم.
ولی خودم یکراهی بزهنم می رسه که حتما عملی هست

اونجایی که در صفحه ی page.tpl.php این گزینه رو داره یعنی
print $site-name کافی یک شرط براش بگذاریم که اگر فارسی بود اینو چاپ کن و اگر اینگلیسی بود اینو .

خب الان یک مشکل دارم . اینکه وقت ندارم بگردم ببینم در دروپال شش متغییر گولوبال زبان کاربر چه متغییری تعریف شده
اسمش language هست یا locale اگر این مسئله رو بدونم هم توی اینکار بکار میاد و هم توی تاریخ شمسی.
در دروپال پنج با استفاده از ماجول i118n و تعریف تابعی ارجاعی به این ماجول می شد اینکارو کرد.

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

برای ترجمه کردن سایر قسمت های سایت هم از همون ترجمه فایل po استفاده کن . درصورتی که این ترجمه کامل باشه تموم منوها و تموم قسمت ها درست ترجمه می شوند.

من چون ان اولی که فایل po دروپال شش رو ساختم فایلش خراب بود.
چون تازه اولی بود که دروپال شش آمده بود و یکسری مشکلات داشت برای همین ترجمه ای که توی سایت قرار داره یکم مشکل داره.

و بخاطر همون مشکلی که گفتم دارم ( وقت وقت ) نمی رسم درستش کنم.

تنها کارش اینه که یک فایل po سالم برای دروپال شش ساخته بشه و اون رشته هایی که تو فایل الان موجود هست ( ترجمشون ) به اون یکی کپی یشه.

کپی کردن حدود 2000 رشته فکر کنم 1 ساعت طول بکشه .
اگر کسی از بچه ها همت اینکارو بکنه واقعا ممنون می شم.

البته خود دروپال یک فایل pot طراحی کرده که بنظر من همون رو ترجمه کنید خیلی بهتر هست

این فایل pot شامل چندین فایل pot و برای هر ماجول هسته بصورت جداست مثلا ماجول forum براش فایل forum.pot رو ساخته.
بنظر ترجمه اینطوری هم سیستماتیک هست و هم بهینه
اگر کسی از بچه ها همتش رو داره این فایل رو دانلود کنی و فایلی که توی سایت من هست و اونا رو کپی بگیری تو هم .

http://ftp.drupal.org/files/projects/drupal-pot-6.x-1.0-rc3.tar.gz

سعی می‌کنم برا

سعی می‌کنم برا اون ترجمه یه کاری بکنم. اون سایت http://www.amnesty.org/ رو ببینید خیلی کار کردن روش. فکر کنم باید یه مقدار php کار کرد تا همه چی شرطی بشه نسبت به زبان. درباره اون متغیر هم من یه چیزی دیده بودم سریعاً بهتون می‌گم. چون الان لینک اصلی‌شو از سایت دروپال دم دست ندارم.

آره

آره سایت دیدم .

من سایت های خیلی بهتره دیدم که با دروپال چند زبانه ساخته شده بودند.

مهم اینه که کاملا به دروپال مسط بشی اونوقت با اون هرکاری می تونی بکنی.

این سیستم آنچنان انعطاف بالایی داره که من دارم هر روز با وجه دیگری از اون آشنا می شم

«زبان» در دروپال 6 یک شیء است

متغیر language$ که در تم‌های PHPTemplate قابل دسترسی بود اکنون نه‌تنها یک رشته ساده حاوی کد زبان صفحه جاری است، بلکه یک شیء نماینده خصوصیات چندگانه زبان جاری است. این امکان در حال حاضر وجود دارد که تم‌ها را با جهت راست‌به‌چپ هماهنگ کرد، تا کسانی که مطالب خود را در زبان‌های راست‌به‌چپ (فارسی، عربی، عبری) ارائه می‌دهند بتوانند از این تم‌ها استفاده کنند.
language$ صفت language->language$ را دارد که حاوی کد زبان جاری است (fa، en،...)، و language->direction$ که یک عدد صحیح است (صفر یا LANGUAGE_LTR برای چپ‌به‌راست و 1 یا LANGUAGE_RTL برای راست‌به‌چپ). اگر شما تنها علاقه‌مند به به‌روزرسانی تم‌های نسخه‌های قبلی به نسخه 6 هستید language$ را با language->language$ در تم‌هایتان جایگزین کنید.
از:تبدیل قالب‌های 5 به 6

سلام

دستت درد نکنه ممنون همون چیزو بود که می خواستم کاش فرصت داشتم.

سعی می کنم بزودی همه چیز رو مرتب کنم

منوهای سفارشی در دروپال 6 ترجمه نمی‌شوند؟

ترجمه نشدن منوهای سفارشی (یا ساخته‌شده توسط کاربر) به عنوان یک bug در سایت دروپال گزارش شده، ولی ظاهراً بر طبق ساختار هسته و ماجول منو در دروپال 6 (با وجود تأکید زیاد روی امکانات چندزبانه نسخه 6) این امکان وجود نداره، و به اصطلاح در نسخه 6 این مشکل حل‌نشدنی (won't fix) هست.

نه اینطور نیست

نه دقیقا اینطور نیست.

من خودم در حال حاضر از دروپال شش استفاده می کنم آن هم مثل دروپال پنج با ترجمه رشته ی های لازم منوها نیز ترجمه می شوند.

شاید این پیگیری برای نسخ آزمایشی دروپال شش بوده.

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

برخی مشخصه های این ماجول برای یک سایت دو زبانه لازم است البته این ماجول پیچ و خم ها و مشکلات زیادی در دروپال پنج داشت که آرزو می کنم این مشکل ها در دروپال شش با توجه به پیکربندی جدید دروپال شش رفع شود

content translation

دو باره بعد از مدتی سراغ دروپال 6.2 اومدم. حالا هر چقدر سعی می‌کنم content translation رو فعال بکنم، موفق نمی‌شم. ماجول Locale رو فعال کردم. Language فارسی رو اضافه کردم. در پیکربندی زبان‌ها path prefix only رو انتخاب کردم. در ماجول‌ها همچنین content translation رو تیک زدم و تغییرات رو save کردم. ولی نمی‌دونم چرا وقتی دارم محتوا ایجاد یا ویرایش می‌کنم، گزینه انتخاب زبان رو نمی‌بینم. من چی رو از قلم انداختم؟!
این رو هم بگم که ماجول i18n رو هم توی پوشه ماجول‌ها انداختم و اول چند تا از امکانات‌اش رو فعال کردم ولی بعد uninstallاش کردم ببینم با این روش قبلی که روی نسخه 6 کار می‌کرد می‌تونم کاری بکنم که دیدم اصلاً کار نمی‌کنه...

یک کار دیگر

سلام
برای اینکه شما دکمه انتخاب زبان رو ببینید یک کار دیگر لازم است تا انجام دهید.

به قسمت اناع محتوا ( content type ) در صفحه مدریت بروید و بر ریو نوعی که می خواهید چند زبانه بودن برای آ فعال باشد را کلیک کنید.

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

فکر می کنم روشن باشه و احتیاج به توضی بیشتر نداره.

راه‌حل چندزبانه کردن اطلاعات سایت (site information) در دروپال

در دروپال 6 (و حتی قبلی‌ها) به شرط نصب ماژول بین‌المللی کردن یا همون i18n می‌شود تنظیماتی مثل اسم سایت به انگلیسی و فارسی، فوتر (منظور نوشته آخر صفحه حاوی کپی‌رایت و آدرس و privacy policy و contact webmaster و امثالهم) جداگانه برای صفحات انگلیسی و فارسی، همچنین اطلاعات فرم تماس جداگانه برای هر زبان و... رو در اختیار داشت.
دقت کنید که در حالت عادی در دروپال با فعال کردن ماژول سرخود Locale و حتی بعد از فعال کردن ماژول اضافه i18n شما همچنان نمی‌توانید اسم سایت (یعنی اسمی که در بالای صفحه قرار می‌گیرد و همچنین در قسمت title صفحه در بالای پنجره براوزر دیده می‌شود) در زبان‌های مختلف داشته باشید. حالا راه‌حل که اتفاقاً از ورژن‌های گذشته دروپال هم این امکان فراهم بوده به این شرحه:
داخل فایل settings.php در پوشه مربوط به سایت (به طور پیش‌فرش اسم پوشه سایتتون: default) در پوشه sites که یکی از هفت پوشه اصلی سیستم دروپال هست، در آخر این فایل قسمتی هست که غیرفعال شده و حاوی مطالبی هست مبنی بر امکان تغییر strings یا رشته‌های متنی و یا به طور خلاصه کلماتی که در سیستم دروپال از اونها استفاده می‌شه بدون فعال کردن ماژول Locale اینطوری:
/**
* String overrides:
*
* To override specific strings on your site with or without enabling locale
* module, add an entry to this list. This functionality allows you to change
* a small number of your site's default English language interface strings.
*
* Remove the leading hash signs to enable.
*/
# $conf['locale_custom_strings_en'] = array(
# 'forum' => 'Discussion board',
# '@count min' => '@count minutes',
# );

حالا اول باید ماژول i18n را فعال کنید. بعد فایل settings.php را از حالت read-only دربیاورید و این خطوط را به آخر فایل اضافه کنید:

$conf['i18n_variables'] = array(
// Site configuration
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
'contact_form_information'
);

تغییرات را ذخیره کنید و دوباره فایل را read-only کنید که امنیت سایت‌تان هم به خطر نیفتاده باشد.
حالا اگر به قسمت اطلاعات سایت (site information) در قسمت پیکربندی در داخل مدیریت بروید مشاهده می‌کنید که در زیر اسم سایت (site name)، شعار (slogan)، هدف (mission) و پیغام پانویس (footer) نوشته شده که This is a multilingual variable. حالا نسبت به زبان سایت خود، اطلاعات خود را وارد کنید و تغییرات را ذخیره کنید. مبارک است! اسم و بقیه اطلاعات سایت شما هم «چندزبانه» شد.
توجه داشته باشید که اینها تنها متغیرهایی نیستند که چندزبانه می‌شوند. برای لیستی تکمیل‌تر از این به فایل install.txt داخل پوشه ماجول i18n مراجعه کنید. برای تغییرات حتی بیشتر باید مقداری اطلاعات بیشتر درباره نام متغیرهای سیستم دروپال به دست آورید.
برای نمونه این متغیرها که مربوط به منوها هستند را اشاره می‌کنم. البته با اینها امتحان نکردم ولی باید شبیه اون‌یکی‌ها باشه.

// Primary and secondary links
'menu_primary_menu',
'menu_secondary_menu';
// Theme settings. This is an 'all or nothing' for each theme
// This is for 'garland' theme, for other theme it would be 'theme_[themename]_settings'
'theme_garland_settings',

خیلی ممنونم.

خیلی ممنونم. کار کرد!‌

نمونه عملی

به نام یکتا و سلام
اینم یک نمونه عملی با دروپال 6.3 و ماجول i18n
http://ideano.com/sys/
برای انگلیسی:
http://ideano.com/sys/en/