بومی‌سازی و APIهای زبان

همانطور كه در پایان بخش قبل گفته شد، این بخش رو در اصل برای توسعه‌دهندگان نوشتم. همچنین درباره‌ی پشتیبانی از ترجمه کلمه‌های چند معنایی و قابلیت جدید انتخاب زبان صحبت شد، حال به چگونگی استفاده صحیح از آن‌ها می‌پردازیم و «برگ تقلب» به روز رسانی شده خودم رو برای استفاده از قابلیت محلی‌سازی دروپال ۶و۷ رو برای شما به اشتراك می‌گذارم. با یك نگاه به این برگه می‌توان به چگونگی استفاده از قابلیت‌های محلی‌سازی پی برد.
 
پشتیبانی از «کلمات چند معنایی» برای ترجمه:
درمورد پشتیبانی از کلمات چند معنایی و نیاز به ترجمه آن‌ در بخش یك توضیح داده شد، شیوه استفاده‌ از آن‌ها نیز بدین صورت است:
 
 خیلی آسونه، نه؟
دروپال گروه‌های زیادی برای دسته‌بندی کلمات چند معنایی ندارد و ما هنوز دستورالعمل‌هایی واضح برای ایجادشان ننوشته‌ایم. با پیوستن به گروه آزمایش زبان که در localize.drupal.org قرار دارد می‌تونید گروه‌های کلمات چند معنایی استفاده شده توسط توسعه‌دهندگان رو ببینید و در تب ترجمه، جست‌وجو در گروه‌های کلمات چند معنایی موجود، جست‌وجوی متونی که از آن گروه‌ها استفاده میکنند و پیدا کردن ماژول‌هایی که از آن متون استفاده میکنند امکان‌پذیر است (تا وقتی که روش بهتری برای جست‌وجوی گروه‌ها پیدا کنیم کاربران مجبورند از این روش استفاده کنند). سپس نام گروه کلمه چند معنایی خود رو به دقت انتخاب كنید و لیست موجود رو چك كنید. اگر درموردی شك دارید، از دیگر مترجمین بپرسید. «مسائل علامت خورده درمورد گروه‌های کلمات چند معنایی»(context)، لیست مباحث مربوط به استفاده از گروه‌ها در ماژول‌هاست.
درحال حاضر گروه‌ها به طور مشابه در API‌ها پشتیبانی نمی‌شود. ()format_plural گروه‌ها رو به خوبی با یک دستور یکسان دریافت میکند. هنگام استفاده از ()st و ()get_t هم میتونید روی پشتیبانی از گروه‌های کلمات چند معنایی حساب کنید.
متاسفانه در دروپال۷، API‌های جاوا اسکریپت دارای پشتیبانی از قابلیت نیستند پس راهی برای استفاده از آن در ترجمه متون جاوااسکرسپتی نیست اما هنوز می‌توان از روش قدیمی‌تر، ترجمه متن را در سمت سرور با استفاده از ()t به دست آورد و با  (('drupal_add_js(..., array('type' => 'setting اون رو به صفحه اضافه كرد. از نظر فنی زیاد جالب نیست، ولی خوب، به خوبی كار می‌كند:
 
بخش جادویی دیگر سیستم محلی‌سازی، هسته پردازش توضیحات و عنوان منوهاست. با اینکه منوها دارای پشتیبانی از ترجمه کلمات چند معنایی هستند و میتوان آرگومان‌هایی رو به تابع فراخوان عنوان فرستاد (که پیش‌فرض آن ()t است)، به چند دلیل این متد با استخراج کننده‌ی قالب ترجمه کار نخواهد کرد. پس پیشنهاد من این است که شما خودتان یک تابع فراخوان عنوان انتخاب و تنظیم کنید:
 
قابلیت محلی‌سازی دیگری كه API آن از زمان دروپال 6 كاملا بدون تغییر نگه داشته شده و بنابراین فقط با استفاده از تابع ()t میتواند برای ترجمه متون استفاده شود و اجازه استفاده كردن از گروه‌های کلمات چند معنایی برای ترجمه رو نمیدهد، ()watchdog هست. از آن جایی كه «گزارش‌ها» براساس طراحیشان، پیغام‌ها رو به صورت انگلیسی ذخیره می‌كنند، هیچ راه حلی برایشان نیست، اما به هر حال بعید به نظر میاد متن پیغام گزارشات حاوی جملاتی باشد كه به ترجمه‌ی کلمات چند معناییها نیاز پیدا كند.
فایل‌های .info پروژه‌ها سرنوشت مشابهی دارد: قابلیت ترجمه گروه‌های کلمات چند معنایی قابل استفاده نیست. شاید در بعضی حالات استفاده از گروه‌ها برای اسم ماژول‌ها ایده‌ی خوبی باشد اما در حال حاضر در دروپال7 ممكن نیست.
 
مطمئن بشوید كه كارها درست انجام شده‌اند:
اگر هنوز یك كاربر طرفدار ماژول Coder module نسیتند، یا همه چیز رو خیلی خوب می‌دونید یا باید هر چه زودتر با این ابزار جالب آشنا شوید. این ماژول، ماژول بازبینی كدها رو هم با خودش دارد در نتیجه شما می‌توانید كدهای خودتون رو برای پیدا كردن اشتباهاتتون دراستفاده از API‌های دروپال رو پیدا كنید. این ماژول یك سری از قابلیت‌های چك كردن استفاده ازAPI‌های محلی‌سازی رو هم شامل می‌شود، اما بهتر است كار دیگری انجام دهید، ماژولTranslation Template Extractor رو هم نصب كنید که ماژول‌های دروپال رو برای وجود متون قابل ترجمه جست‌وجو میکند.
اگر چیزی بتواند در مورد اشتباهات استفاده از APIها بگوید، خود همین ماژول است؛ با رابطه تنگانگی كه با API ماژول بازبینی كدها دارد همه ی خطاهای موجود رو با جست‌وجوی كدهای شما پیدا می‌كند تا بتوانید به نحو احسنت از ماژول محلی‌سازی استفاده کنید. نتایج بازبینی‌های مختلف همگی با هم نشان داده می‌شوند. در تصویر بالا پیغام دوم مربوط به بخش ترجمه است.
 
برگ تقلب:
 
نوامبر 2007، من یك برگ تقلب برای بخش ترجمه دروپال 6 منتشر كردم و حالا برای دروپال 7، وقت این بود كه بازبینی شود. نسخه اصلی زیاد برای چاپ مناسب نبود و دارای كمبودهایی بود.مواردی مثل localize.drupal.org، تجربه‌ی بیشتر برای نوشتن متون، تغییرات API‌ها در دروپال 7، پشتیبانی از تم همراه با پشتیبانی كامل متون چپ به راست در دروپال، با وجود پشتیبانی كامل در هسته دروپال 6 همگی جای خالیشان در این برگ تقلب حس می‌شد.
نسخه ی جدید، برای دروپال ۶ و همچنین دروپال ۷ به روز رسانی شده وبرای چاپ مناسب‌تر است. دو نسخه هرکدام برای یک ورژن استفاده کردم، اون‌ها رو دانلود کنید و هروقت دوست داشتید استفاده کنید!
 
 
 
 
 
 
 
 
پشتیبانی از زبان را در دروپال سلیس‌تر كنید:
دروپال 6 فقط از یك زبان برای هر صفحه پشتیبانی می‌كرد كه در متغیر language$  تعریف می‌شد و فقط مجموعه‌ی محدودی از الگوریتم‌های پیش‌فرض رو برای انتخاب اون زبان ارائه می‌داد. وقتی كه آن زبان انتخاب می‌شد، بقیه ماژول‌ها به مقدار anguage$ برای ارائه و نشان دادن محتوا در آن زبان، بسیار وابسته بودند. 
دروپال 7 مسئله زبان رو یك پله بالاتر می‌برد و «نوع زبان» رو تعریف می‌كند. زبان رابط كاربری یك نوع محسوب می‌شود، هسته ۲ نوع دیگر هم ارائه می‌كند: زبان محتوا و زبان URL، اگرچه 2 مورد آخر نمی‌توانند بااستفاده از هسته تنظیم شوند ولی به وسیله  Field API و ()l به وفور استفاده می‌شوند. این انواع تعبیه شده در ()local_language_type_info که خود یک پیاده‌سازی از ()hook_language_type_info هست تعریف شده‌اند و با استفاده از آن هر ماژولی میتواند انواع دیگری تعریف کند. دروپال یک متغیر سراسری زبان در ()drupal_language_initialize برای هر نوع، تعریف میکند.
 
شاید حتی مفیدتر از آن  ()hook_language_types_info_alter باشد كه از طریق اون می‌توان انواع زبان روتغییر داد. مثل ایجاد یك رابطه كاربری برای تنظیم زبان محتوا یا تعیین زبان به كمك یك الگوریتم خاص.
به غیر از پشتیبانی از گونه‌های مختلف زبان، دروپال 7 از یك سری متدهای  قابل تنظیم برای هر یك از این گونه‌ها به صورت جداگانه پشتیبانی می‌كند در حالی كه هسته دروپال اطلاعات URL( دامنه، مسیر)، تنظیمات كاربری، تنظیمات مرورگر وب و زبان پیش فرض رو به عنوان گزینه‌های انتخابی ارائه می‌دهد ماژول‌های نوشته شده كاربران می‌تونه این موارد رو تغییر یا گسترش بدهند مثلا اگر می‌خواستید شیوه تشخیص زبان مورد نظر را براساس IP فرد مراجعه كننده انجام دهید می‌توانید از  ()hook_language_negotiation_info استفاده كنید تا این گزینه رو به رابط كاربری تنظیم زبان اضافه كنید تا بعد مدیر سیستم اون رو فعال كند
قابلیت‌های ذكر شده، همه موارد جدید اضافه شده به API زبان نبودند اما موارد اصلی حساب می‌شوند. برای اطلاعات بیشتر به local.api.php مراجعه کنید.
 
قسمت بعد : ترجمه‌ی محتوا
همانطور که گفتیم قرار است به قابلیت‌ها و APIها بپردازیم. خواهیم دید تعیین اینکه چه چیزی را در دروپال محتوا بنامیم، مخصوصا در دروپال ۷. با ما باشید

دیدگاه‌ها

eyvala

eyvala

دیدگاه جدیدی بگذارید

آخرین ارسال ها

محتواهای محبوب

درباره ما

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

تماس با ما

با ما تماس بگیرید.

logo-samandehi