چطوری میشه

چگونه وردپرس را برای محلی سازی بین المللی کنیم

چگونه وردپرس را برای محلی سازی بین المللی کنیم

عجب! اگر تعجب می کنید که این پست به چه معناست، نگران نباشید که شما تنها نیستید! همانطور که می‌دانید، وردپرس به زبان‌های زیادی ترجمه می‌شود، اما اغلب افزونه‌ها یا تم‌ها حاوی رشته‌هایی هستند که به زبان شما ترجمه نشده‌اند و این امر بیش از آن ناامیدکننده است: آزاردهنده است.

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

مرحله 1 – بارگیری فایل های ترجمه

اولین گام هنگام ایجاد یک طرح زمینه بارگیری فایل های ترجمه است، راه های زیادی برای انجام آن وجود دارد، اما ساده ترین آنها استفاده از این کد است:

add_action('after_setup_theme', 'my_theme_setup');
تابع my_theme_setup(){
    load_theme_textdomain('my_theme', get_template_directory() . '/languages');
}

هنگامی که روی یک افزونه کار می‌کنید، تقریباً یکسان است:

function myplugin_init() {
  load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) ); 
}
add_action('plugins_loaded', 'myplugin_init');

اکنون که فایل‌ها در پوشه زبان‌ها بارگیری می‌شوند، می‌توانید با استفاده از POedit  نرم افزار رایگان.

مرحله 2 – ترجمه رشته ها

زمانی که نیاز دارید رشته ای قابل ترجمه باشد، باید رشته حاوی را در یک تابع قرار دهید. بیشترین استفاده از توابع _e() و __() است. در اینجا نمونه ای از استفاده از __():

است

echo '

' . __( 'این محتوای رشته است'، 'textdomain') . '

';

این تابع که رشته را برمی گرداند شامل چه چیزی است، اما آن را چاپ نمی کند. به همین دلیل است که باید از اکو استفاده کنیم. اما تابع _e() محتوای رشته را بدون استفاده از echo یا print چاپ می‌کند:

echo '

'; _e( 'این محتوای رشته است', 'textdomain' ); پژواک '

';

مرحله 3 – ترجمه رشته حاوی متغیرها

اما گاهی ممکن است رشته شما دارای متغیرهایی باشد. استفاده از _e() و __() کار نمی کند. بنابراین، در آن صورت شما نیاز به توابع printf() و sprintf() دارید. همانطور که قبلا دیدیم، printf() رشته را بازتاب می دهد در حالی که sprintf() آن را ذخیره می کند.

echo '

'; printf( __( '%d کتاب خریدم.' ), $_books_count ); پژواک '

'; echo '

'; echo sprintf( __( '%d کتاب خریدم.' ), $_books_count ); echo '

';

مرحله 4 – رشته هایی با بیش از یک متغیر

در مورد رشته ای که بیش از یک متغیر دارد، از کد زیر استفاده کنید:

printf( __( 'من %1$s کتاب و %2$s گوجه فرنگی خریدم.' ), $ books_count, $tomatoes_count );

مرحله 5 – برخورد با جمع

در مثال بالا من کتاب و گوجه فرنگی خریدم. اما من فقط یک کتاب خریدم؟ کد “1 کتاب” را چاپ می کند، و این درست نیست. بنابراین، برای مقابله با جمع، تابع دیگری به نام _n() وجود دارد. در اینجا نحوه استفاده از آن آمده است:

printf( _n( '%d کتاب خریدم.', 'من %d کتاب خریدم.', $books_count ), $books_count );

مرحله 6 – زمینه ها

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

/*
ظاهری (مشخص در مقابل نامشخص) - برای همه آشکار بود، جو بازنده ظاهری بود. 
دو زمینه متفاوت برای کلمه "ظاهری"
*/

// در محتوا
echo _x('apparent', 'in_content', 'my-plugin-domain');

// در نوار کناری
echo _x('apparent', 'in_sidebar', 'my-plugin-domain' );

مرحله 7 – بین المللی سازی جاوا اسکریپت

و در نهایت وقتی رشته ای دارید که باید در یک فایل جاوا اسکریپت قابل ترجمه باشد، می توانید از روشی استفاده کنید که در کدکس با استفاده از wp_localize_script().

// در فایل PHP شما:

wp_enqueue_script('script-handle', … );
wp_localize_script('script-handle', 'objectL10n', array(
	'speed' => $distance / $time،
	'submit' => __('Submit', 'my-plugin-domain')
)))

// در فایل جاوا اسکریپت:

$('#submit').val(objectL10n.submit);
$('#speed').val('{speed} km/h'.replace('{speed}', objectL10n.speed));

به سادگی متغیرهای خود را جایگزین کنید و کارتان تمام است!

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا