ترجمه رشته ها در برنامه نویسی ماژول های دروپال با تابع t

ترجمه رشته ها در برنامه نویسی ماژول های دروپال با تابع t

دروپال به صورت طبیعی یک سیستم مدیریت محتوا است که چند زبانی (multlingual) را پشتیبانی می کند. روش معمول در برنامه نویسی ماژول های دروپال این است که همه رشته هایی که به کار می روند باید به صورتی استفاده شوند که بعداً قابل ترجمه باشند.

ترجمه رشته ها با تابع  t

ترجمه رشته ها در API دروپال با تابع t انجام می شود. این تابع کاربرد بسیار زیادی در دروپال دارد، زیرا رشته های زیادی برای ترجمه در ماژول ها وجود دارد. تعریف این تابع که در هسته دروپال قرار دارد به صورت زیر است:

t($string, array $args = array(), array $options = array())

اولین پارامتر ورودی رشته ای است که می خواهیم ترجمه کنیم. این رشته بر اساس قرارداد باید به زبان انگلیسی باشد. در واقع در دروپال زبان مبدا و پیش فرض انگلیسی است.

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

پارامتر سوم نیز آرایه ای از تنظیمات مورد نظر برای ترجمه و به صورت اختیاری است. این آرایه می تواند حاوی ایندکس های langcode و context باشد.

نمونه کد هایی از استفاده از تابع t در دروپال

  $title = t('E-mail address');
  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => $title,
    '#required' => TRUE,
  );

در کد بالا به صورت ساده و پیش فرض از تابع t برای ترجمه لیبل یک فیلد فرم استفاده کرده ایم. می بینید که رشته E-mail address را به این تابع داده ایم. انتظار می رود که در صورتی که ترجمه ای برای این رشته وجود داشته باشد، تابع t آن را به ما بدهد تا نمایش بدهیم. در صورتی که ترجمه ای برای این رشته در دیتابیس دروپال وجود نداشته باشد خود رشته داده شده یعنی E-mail address بازگردانده می شود.

$message['body'][] = t('@name sent you the following message', array('@name' => $params['name']));

در نمونه بالا، از ورودی دوم تابع t نیز استفاده کرده ایم. رشته ای انگلیسی داریم که باید ترجمه شود ولی در یک قسمت از آن برای username استفاده می شود که برای هر کاربر متغیر است. بنابراین یک متغیر درون رشته در نظر می گیریم که بعدا مقدار واقعی در آن جایگزین می شود. با این کار هم رشته در دروپال به صورت عمومی قابل ترجمه می شود و هم اینکه می توانیم یک مقدار را در جایی از آن رشته به صورت داینامیک جایگزین کنیم.

استفاده از متغیر های جایگزینی در ترجمه رشته ها با تابع t

همانطور که در قسمت قبل دیدید، ورودی دوم تابع t یک آرایه است که می توانیم برای محل های مشخص شده ای در رشته اصلی، مقداری متغیر را جایگزین کنیم.

در مثال قبلی از @name استفاده کردیم. وقتی که کلید محل جایگزینی با @ شروع می شود. مقداری که از طریق آرایه ورودی دوم به تابع برای این کلید ارسال می شود، به تابع check_plain داده می شود و خروجی آن در رشته جایگزین می شود.

اگر کلید با ! شروع شود، همان مقداری به برای این کلید در آرایه دوم ارسال می شود، به صورتی که هست در رشته جایگزین می شود. این برای وقتی که می خواهیم یک کد HTML را در رشته اصلی جایگزین کنیم خوب است.

در صورتی که کلید با % شروع شود، نتیجه به صورت placeholder نمایش داده می شود. یعنی با استفاده از theme placeholder نمایش داده می شود. معمولا theme_placeholder مقدار را  درون تگ های em قرار می دهد ولی بعدا قابل سفارشی سازی است.

نمونه دیگری از کاربرد تابع t در دروپال

مثلا در یک فرم می خواهیم در یک متن قابل ترجمه لینکی به صفحه پروفایل کاربری جاری بدهیم:

global $user;
$link_title = t('user profile page');
$link_url = l($link_title, "user/{$user->uid}");
$form['name'] = array(
	'#type' => 'item',
	'#markup' => t('Go to !user.', array('!user' => $link_url)),
);

در خط دوم از تابع t به صورت ساده استفاده کرده ایم. در خط سوم لینک صفحه پروفایل کاربر را با استفاده از تابع l ایجاد کرده و خروجی آن که حاوی تگ HTML لینک است را در خط ششم جایگزین کلید !name در رشته اصلی کرده ایم.

ارسال نظر