منظور از چند زبانی قالب وردپرس چیست؟
منظور از چند زبانی قالب بین المللی سازی فرآیند توسعه قالب است، بنابراین می توان آن را به راحتی به زبان های دیگر ترجمه کرد. بین المللی سازی اغلب به صورت اختصاری i18n خوانده می شود (زیرا بین حروف i و n 18 حرف وجود دارد).
چرا چند زبانی قالب و بین المللی سازی اهمیت دارد؟
وردپرس در سراسر جهان استفاده می شود، در کشورهایی که انگلیسی زبان اصلی نیست. متن های موجود در قالب و افزونه های وردپرس باید به روش خاصی کدگذاری شوند تا به راحتی به زبان های دیگر ترجمه شوند. به عنوان یک توسعه دهنده، ممکن است نتوانید برای همه کاربران خود بومی سازی ارائه کنید. با این حال، یک مترجم میتواند با موفقیت متن را بومیسازی کند، بدون اینکه نیازی به تغییر کد قالب و یا افزونه باشد.
چگونه قالب وردپرسی را چند زبانی و بین المللی کنیم؟
برای اینکه متن موجود در قالب به راحتی قابل ترجمه باشد، متن نباید در قالب مستقیما و هاردکد باشد، بلکه باید به عنوان آرگومان از طریق یکی از توابع مختص چند زبانگی و محلی سازی ( localization ) در وردپرس استفاده گردد.
مثال زیر قابل ترجمه نیست مگر اینکه مترجم کد قالب را اصلاح کند که کار صحیح و استاندارد نیست.
<h1>Settings Page</h1>
با عبور متن از طریق تابع محلی سازی ( localization ) می توان آن را به راحتی آماده ترجمه کرد.
<h1><?php _e( 'Settings Page' ); ?></h1>
وردپرس از کتابخانه های gettext استفاده می کند تا بتواند ترجمه ها را در PHP اضافه کند. در وردپرس باید از توابع محلی سازی ( localization ) وردپرس به جای توابع ترجمه متناظر با متن اصلی PHP استفاده کنید.
Text Domain
text domain دومین آرگومان است که در توابع بین المللی سازی استفاده می شود. text domain یک شناسه منحصر به فرد است که به وردپرس اجازه می دهد بین تمام ترجمه های بارگذاری شده تمایز قائل شود. text domain فقط برای و افزونه ها تعریف می شود.
قالب هایی که در WordPress.org میزبانی میشوند، text domain باید با Slug URL قالب شما مطابقت داشته باشد (wordpress.org/themes) تا ترجمه ها از translate.wordpress.org به درستی کار کنند.
نام text domain باید از خط تیره استفاده شود نه از زیرخط و حروف کوچک. برای مثال، اگر نام تم My Theme در style.css تعریف شده باشد یا در پوشهای به نام my-theme موجود باشد، text domain باید my-theme باشد.
text domain در سه مکان مختلف استفاده می شود:
- فایل style.css قالب
- به عنوان پارامتر دوم در توابع محلی سازی ( localization )
- به عنوان پارامتر توابع لود ترجمه ها load_theme_textdomain یا load_child_theme_textdomain
فایل style.css قالب
text domain به هدر style.css اضافه میشود تا متا دادههای قالب مانند توضیحات، حتی زمانی که قالب فعال نیست، ترجمه شود. text domain باید همان باشد که هنگام لود ترجمه ها استفاده می شود.
مثال :
/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
*/
مسیر text domain
مسیر text domain زمانی مورد نیاز است که ترجمهها در مسیری غیر از languages ذخیره شوند. این به این دلیل است که وردپرس بداند در صورت فعال نشدن قالب، ترجمه را کجا پیدا کند. به عنوان مثال، اگر فایلهای mo. در پوشه languages قرار دارند، مسیر ترجمه languages/ خواهد بود و باید با اولین اسلش نوشته شود.و توجه فرمائید که پیشفرض پوشه زبانها در قالب به این صورت است.
/*
* Theme Name: My Theme
* Author: Theme Author
* Text Domain: my-theme
* Domain Path: /languages
*/
طرز استفاده از text domain در ترجمه ها
text domain باید به عنوان یک پارامتر به همه توابع محلی سازی ( localization ) اضافه شود تا ترجمه ها به درستی کار کنند.
__( 'Post', 'my-theme' );
_e( 'Post', 'my-theme' );
_n( '%s post', '%s posts', $count, 'my-theme' )
اخطار :
text domain نباید به عنوان متغییر به توابع محلی سازی ارسال شود.. نمونه کارهایی که نباید انجام داد:
__( 'Translate me.' , $text_domain ); // اشتباه است
بارگذاری text domain
ترجمه ها در وردپرس در فایل های po. و mo. ذخیره می شوند که باید بارگذاری شوند. آنها را می توان با استفاده از توابع load_theme_textdomain یا load_child_theme_textdomain بارگذاری کرد.
کد زیر را در فایل functions قالب قرار دهید.
function my_theme_load_theme_textdomain() {
load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'my_theme_load_theme_textdomain' );
اگر طبق دستورالعمل این مطلب پیش بروید قالب چند زبانی می شود.
مطالبت مرتبط