ترجمه قالب وردپرس

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

فکر می‌کنم توضیحات پاراگراف بالا دلیل خوبی باشه تا وب سایت وردپرس عنوان “بین المللی کردن/شدن(Internationalization) ” را برای این مقاله انتخاب کنه.

بین المللی کردن قالب وردپرس چیست؟

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

چرا بین المللی سازی یا ترجمه قالب وردپرس مهمه؟

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

چگونه قالب وردپرس را بین المللی کنیم؟

قسمتهایی که به عنوان تکست یا متن به صورت مستقیم در قالب استفاده میشه به راحتی با استفاده از توابع محلی سازی مثل __() یا _e() که قبلا در وردپرس تعریف شده اند ترجمه می‌شوند.فقط کافیست متن مورد نظر را به جای این که به صورت مستقیم در پوسته تایپ کنید با استفاده از توابع مورد نظر چاپ کنید.
یعنی به جای

<h1>Setting Page</h1>

از

<h1><?php __( 'Settings Page' ); ?></h1>

استفاده کنید.

وردپرس برای افزودن قابلیت ترجمه به قالب ها از کتابخانه‌ی gettext در پی اچ پی استفاده می‌کند.در ورپرس شما باید از توابع محلی سازی خود وردپرس به جای توابع getext پی اچ پی برای فعال کردن قابلیت ترجمه استفاده کنید این کار به مراتب راحتتر می باشد و موجب می‌شود برنامه نویس با برخی مشکلات درگیر نشود.

بیشتر بخوانید: امنیت کامل وردپرس

همه چیز در باره‌ی Text Domain

دومین آرگومان تمامی توابع محلی سازی قالب وردپرس text domain می باشد.text domain یک شناسه یکتا می باشد که موجب تمییز تمامی ترجمه های لود شده میشه.text domain فقط برای قالب ها و افزونه های وردپرس تفریف می شود.

قالب های یا پوسته هایی که در wordpress.org میزبانی میشن text domain آنها باید

در text domain شما تنها می تونید از حروف کوچک و خط تیره استفاده کنید.برای مثال اگر نام قالب شما در style.css به صورت My Theme باشد text domain آن باید my-them تعریف شود.

text domain در جاهای مختلف استفاده میشه که عبارتند از

  1. در هدر فایل style.css برای معرفی قالب
  2. به عنوان آرگومان در توابع محلی سازی(__(),_e() , ….)
  3. به عنوان آرگومان برای توابع load_theme_textdomain و load_child_theme_textdomain .

استفاده از text domain در هدر فایل style.css

مثال

/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
*/
Domain Path یا مسیر text domain

وقتی فایل ترجمه شما در مسیری غیر از پوشه پیش فرض(languages) ذخیره میشود باید مسیر text domain را به هدر بالا اضافه نمائید و بعد از دو نقطه میسر مورد نظر را بنویسید.این کار کمک میکنه که وردپرس مسیر فایل ترجمه را پیدا کنه.برای مثال اگر فایل ترجمه‌ی شما در پوشه‌ی ‌languages باشه Domain Path شما باید languages باشه و حتما باید با / شروع بشه.به مثال زیر دقت کنید:

/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
* Domain Path: /languages
*/

اضافه کردن text domain به رشته ها

برای این که توابع محلی سازی وردپرس به درستی کار کنند و رشته های استفاده شده در قالب شما را به درستی ترجمه کنند باید text domain به عنوان آرگومان دوم در توابع مذکور استفاده شوند.

__( 'Post' )

باید به

__( 'Post', 'my-theme' )

تبدیل بشه.

همچنین

_e( 'Post' )
و
_n( 'One post', '%s posts', $count )

باید به

_e( 'Post', 'my-theme' )
و
_n( 'One post', '%s posts', $count, 'my-theme' )

تبدیل بشه.

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

__( 'Translate me.' , $text_domain );

لود ترجمه ها

ترجمه ها در وردپرس با پسوندهای .po و .mo ذخیره میش که توسط دو تابع load_theme_textdomain() و load_child_theme_textdomain() لود میشن.

۱ Comment

  1. کیت وردپرس گفت:

    سلام و درود میشه در مورد تابع لود ترجمه بیشتر صحبت کنید چطوری باید فایل ترجمه رو لود کنیم؟

دیدگاه خود را بنویسید