مقدمه:
در هسته و افزونه های دروپال حتما دیده اید که عبارت هایی که بناست به کاربر نمایش داده شود، داخل فانکشن t قرار داده شده است. مانند: (' t('Powered by Drupal
این دستور به دروپال می گوید که اگر زبان سایت برای کاربر فعلی انگلیسی هست همین را نشان بده و اگر زبان دیگری برای وی انتخاب شده(یا زبان پیش فرض سایت غیر انگلیسی است) ترجمه این عبارت را نمایش بده.
((در برخی سیستم های دیگر گاهی یک عبارت معمولا ناخوانا مانند USER_REGISTRATION_SUBMIT در کدها قرار می دهند و در دیتابیس یا فایل های ترجمه آن عبارت را به هر زبان ترجمه می کنند.))
اما دستور ترجمه در دروپال چگونه کار میکند؟
هرگاه شما صفحه ای را در دروپال فراخوانی می کنید، افزونه ها و فایل های متعددی در جریان هستند تا خروجی را برای نمایش کاربر مهیا کنند. بیشتر عبارت هایی که کاربر در سایت مشاهده می کند، در فایل ها و افزونه ها به زبان انگلیسی و در داخل دستور t قرار داده شده است.
خوب دروپال وقتی یک دستور t می بیند عبارت داخلش را بر می دارد و به دیتابیس و جدول locales_source و locales_target مراجعه می کند. اگر این عبارت در locales_source نبود فورا آن را ایجاد می کند و همان متن انگلیسی را به خروجی برای نمایش به کاربر ارسال میکند. اما اگر این عبارت از قبل در این جدول بود. ترجمه معادل آن را از جدول locales_target استخراج کرده و به کاربر نمایش می دهد و اگر ترجمه ای برای آن عبارت نیافت همان متن داخل فانکشن t را نمایش می دهد.
بر اساس مطالب بیان شده به صورت پیش فرض دروپال نمی تواند بیش از یک ترجمه برای یک عبارت داشته باشد.
عبارت های ترجمه از کجا می آیند؟
وقتی شما افزونه locale را در سیستم خود نصب کرده و زبانی غیر از انگلیسی را در سایت خود داشته باشید می توانید از سیستم ترجمه خود دروپال برای ترجمه عبارت های سایت استفاده کنید. دروپال صفحه ای برای جستجو در میان عبارت های انگلیسی و ایجاد ترجمه آنها در هر یک از زبان های فعال شده در سایت دارد.
اما یک مدیر سایت نیازی ندارد که همه عبارت ها را ترجمه کند. معمولا افزونه های پرکاربرد یک فایل ترجمه با پسوند po دارند که هنگام نصب در سایت عبارت های ترجمه شده در این فایل وارد جداول فوق الذکر می شود بدون اینکه منتظر ایجاد آنها توسط دروپال شود. همچنین یک طراح دروپال می تواند از ترجمه هایی که در یک سایت وجود دارد خروجی گرفته و در سایت دیگر وارد کند.
سایت دروپال هم مرجع مناسبی برای ترجمه های دروپال در اختیار کاربران زبان های مختلف فراهم کرده و معمولا کاربران دروپال در هر زبان به صورت مداوم این ترجمه ها را کامل می کنند.
سیستم کش به کمک ترجمه می آید!
شاید با توضیحات بالا این سئوال به نظر شما آمده باشد که یعنی با یک درخواست صفحه صدها بار به دیتابیس برای یافتن ترجمه ها مراجعه می شود؟ پاسخ من نه هست. یکبار که یک ترجمه در دروپال استفاده می شود متن انگلیسی به همراه ترحمه آن کش می شود. یعنی همه ترجمه های لازم یک جا ذخیره می شود. در مراجعات دیگر از کش برای ترجمه عبارات صفحه استفاده می شود. علاوه بر اینکه کش کل صفحه هم اگر فعال شده باشد مراجعات به دیتابیس بسیار کمتر خواهد شد.