ترجمه در گره‌ها

در بخش 2، قبل از بحث در رابطه با توسعه‌ دروپال گفتیم ترجمه رابط كاربری دروپال می‌تواند توسط جامعه كاربران انجام گیرد. اما این بار می‌خواهم در مورد محتوا و متون خود شما صحبت كنم.چه چیزی در یك وب‌سایت دروپالی، محتوا نامیده می‌شود؟ در حالت كلی هر چیزی كه شما به غیر از ترجمه‌ی رابط كاربری وارد وب‌سایت می‌كنید محتوا حساب می‌شود. برای این مقاله بحث رو به گره‌ها(node) محدود می‌كنیم و در بقه قسمت‌ها به سایر صفحات و ساختار‌ها می‌پردازیم.

گره‌های چندزبانه:

وقتی ماژول تعبیه شده Locale رو فعال کردید قابلیتی به وب‌سایت اضافه می‌شود كه هنوز درمورد اون صحبت نكردیم وقتی كه برای تغییر یک نوع محتوا مراجعه كنید ( Administration » Structure » Content types) یك بخش پشتیبانی از چند زبانی در قسمت گزینه‌های انتشار خواهید دید.

اما فعال كردن پشتیبانی از چند زبانی برای محتوا دقیقا چه معنایی دارد؟ بااین شیوه می‌توان به هر گره (كه این گزینه برای آن‌ها فعال شده) یك زبان متفاوت اختصاص دهید. این روش وقتی كارآمد است كه برای مثال و بلاگ شخصی چند زبانه‌ای داشته باشید كه گاهی اوقات متنی رو به زبان غیر از زبان اصلی منتشر می‌كنید ولی قصدی برای ترجمه مطلب برای سایر زبان‌ها ندارید. وقتی محتوایی به این شیوه چند زبانه اعلام شد منوی انتخاب زبان در قسمت ثبت گره نمایان می‌شود. این منو شامل همه ی زبان‌های فعال شده و یك گزینه ی خاص به نام خنثی خواهد بود (گزینه‌ی پیش فرض) هدف این گزینه این است كه گره‌هایی را بدون وابستگی به زبان خاصی منتشر كنید مثل گره‌های مربوط به انتشار عكس. متن توضیحات گالری‌ها می‌تواند قابل ترجمه باشد اما عكس‌ها، جزو متون نیستند و محتوای قابل ترجمه‌های ندارند در این صورت از گزینه‌ی خنثی استفاده می‌كنید (توجه کنید که گنجاندن تمام محتوای گالری در یک گره واقعاً شیوه‌ی مناسبی نیست، برای اطلاعات بیشتر به Media Project مراجعه كنید).

گزینه‌ی خنثی از کد زبان und استفاده می‌كند، und به معنای تعریف نشده است کهISO 639 تعیین کرده برای چنین موقعیتی استفاده بشه. این كد زبان رو می‌ توان در همه جای دروپال دید.

فعال‌سازی ترجمه برای گره‌ها :

هسته دروپال قابلیت تعبیه شده پشتیبانی ترجمه برای گره‌ها رو از دروپال 6 (در قالب یك شكل ساده) به ارث برده، وقتی ماژول ترجمه‌ی محتوا (Content translation) رو فعال كنید می‌تونید بهAdministration » Structure » Content types برگردید و گزینه‌ی Enabled, with translation for multilingual رو برای پشتیبانی از چند زبانی فعال کنید

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

وقتی كه ترجمه ی گره پایه را به زبان متفاوتی انتخاب كنید، بعضی از فیلد‌های پیش فرض و فیلد زبان به طور خودكار پر می‌شوند. وقتی كه بعد از آن گره اصلی رو تغییر دهید گزینه‌ی جدید «ثبت ترجمه به عنوان منسوخ» خواهید داشت که بیان میکند ترجمه‌ها قدیمی و غیرقابل استفاده‌اند. این گزینه توسط هسته و ماژول‌ها برای پیدا کردن ترجمه‌های منسوخ استفاده می‌شود تا گردآورندگان محتوا بتوانند ترجمه‌ها رو به روز رسانی کنند. وقتی ترجمه‌ای به روز رسانی شد، تیک گزینه‌ی «این ترجمه نیاز به به‌روز رسانی دارد» باید برداشته شود. وجود این علامت کمک میکند تصحیح ترجمه‌ها نیازی به به‌روز رسانی همزمان همه‌ی کدها نداشته باشد.این بخش همچنین لینک‌های بلوک انتخاب زبان و تغییر میدهد تا به گره‌هایی که ترجمه‌ی مطلب در آن‌ها موجود است اشاره کنند. همچنین لینک‌های ترجمه‌ها رو در خود گره نشان میدهد. ماژول‌های زیادی بر مبنای همین مدل برای دروپال ۶ ساخته شده مثل ماژول فوق‌العاده Translation overview  که برای ورژن ۷ دروپال در هنگام نگارش این مقاله هنوز نهایی نشده.

فهمیدن ایده کلی این نحوه ترجمه کمک زیادی میکند. ماژول تعبیه شده ترجمه، مجموعه ترجمه گره‌ها رو فراهم میکند که هر مجموعه یک گره مبنا دارد که این گره خود به زبان‌های مختلفی ترجمه می‌شود. پس روش کلی این است که شما مطلب رو در زبان اصلی سایت منتشر میکنید و سپس ترجمه‌ها اضافه می‌شوند. رابطه بین ترجمه‌های یک مطلب، در پایگاه داده (database) ذخیره می‌شود اما من هنوز ماژولی که این بخش‌ها رو در پایگاه داده تغییر دهد ندیده‌ام (مثل ماژول تخصیص گره‌های موجود، به یک گروه موجود از ترجمه‌ها، یا تغییر زبان گره مبنای یک گروه). نوشتن این نوع ماژول‌ها کار آسانیست. به طور خلاصه متد کلی این است که گروه ترجمه‌ها بر روی گره مبنا ساخته می‌شوند.

فایده اصلی این روش شامل مواردی مثل پشتیبانی مناسب در سطح گره در هسته دروپال و ماژول‌های اضافه شده از پردازش محتوا، انتخاب گره‌ها بر مبنای زبان، پشتیبانی تعبیه شده در رviews، تنظیم دسترسی‌ها به ترجمه‌ها، تنظیم قوانین به‌کارگیری ترجمه‌ها در هر گره و .... می‌شود.

فعال‌سازی ترجمه‌ برای فیلد‌ها

برای حل مشکلاتی که در ترجمه در سطح گره‌هاست، دروپال به ترجمه در سطح فیلدها نیز مجهز شده! با افزوده شدن مقدار زیادی از قابلیت‌های ماژول CCK به درون هسته دروپال، بسیاری چیزها در گره‌ها، taxonomyها، کاربران، نظرات و .... از نوع فیلد هستند. هسته دروپال قابلیت تعبیه شده برای استفاده از زبان برای فیلدها دارد: در کد نویسی، برای دستیابی به مقدار فیلد Body در یک گره بدون زبان، از $node->body['und'][0]['value'] استفاده می‌کنید. API فیلد به توسعه دهندگان اجازه میدهد فیلدهای قابل ترجمه رو مشخص کنند همان‌طور که برای فیلد پیش‌فرض Body انجام شده) اگرچه رابط کاربری برای این کار وجود ندارد و فقط در سطح کدنویسی انجام می‌شود

بیایید ترجمه‌ی فیلد رو با ترجمه‌ی گره مقایسه کنیم؛ در ترجمه گره، یک دسته از گره‌ها به عنوان دسته‌ی قابل ترجمه انتخاب می‌شوند پس برای هر ترجمه از تمامی ابزاری که در سطح گره موجود است میتوان استفاده کرد. بخش ترجمه‌ی فیلد، ترجمه را «وارد» گره می‌کند، که اجازه‌ی رسیدگی و مدیریت همه‌ی گره‌های آن دسته قابل ترجمه را به صورت یکجا می‌دهد، اما همه‌ی اطلاعات موجود در گره‌ها فیلد نیستند.

برای ارائه رابط کاربری بر بالای این مدل ترجمه، ماژول ترجمه ساخته شد؛ که به علت پاره‌ای از مشکلاتی که ایجاد می‌کرد، هم‌اکنون با Entity Translation جایگزین شده است. با نصب این ماژول امکان قابل ترجمه برای انواع محتوا به دروپال اضافه می‌شود. با انجام این کار، فیلد‌های آن نوع داده گزینه‌ی «کاربران می‌توانند این فیلد را ترجمه کنند» را خواهند داشت. برای نوع داده‌ای تنظیم شده، اضافه کردن گره مبنا همانند قبل است، اما با اینکه تب ترجمه مشابه قبل است، شما با ثبت یک ترجمه، در واقع گره جدیدی ثبت نمی‌کنید. فیلدهای قابل ترجمه نیز در این تب نمایش داده خواهند شد. با این ماژول می‌توانید آدرس‌ (URL)های متفاوتی برای محتوای ترجمه شده ایجاد کنید (دروپال از آدرس‌های متفاوت برای یک مسیر یکسان در هر زبان پشتیبانی می‌میکند) اما نخواهید توانست تاریخ ثبت ترجمه، نام مترجم و داده‌هایی از این قبیل را فراهم کنید. با ثبت ترجمه‌ها، با استفاده از بلوک انتخاب زبان، می‌توانید زبان مورد نظر را انتخاب کنید.

این ماژول، اطلاعات مربوط به کاربر ثبت کننده ترجمه، تاریخ ایجاد، تاریخ آخرین تغییر، تاریخ انتشار ترجمه و اطلاعاتی از این قبیل را در جدول خودش در پایگاه داده، ثبت می‌کند و گره اصلی دست نخورده باقی می‌ماند. در حال حاضر پشتیبانی خاصی از ترجمه‌ها در Views وجود ندارد.

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

تصور من این است بسیاری از ابزار در سطح گره نیاز به طراحی دوباره دارند. خیلی از ماژول‌ها به خاطر قابلیت‌های ترجمه در دروپال ۶، با امکانات ترجمه ایجاد شده‌اند اما با معرفی ترجمه در سطح فیلدها، مسئله فرق می‌کند

 

منتظر بخش بعدی مقاله باشید

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

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

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

درباره ما

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

تماس با ما

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

logo-samandehi