ওয়ার্ডপ্রেস প্লাগইন অনুবাদ কীভাবে প্রস্তুত?


19

কোনও প্লাগইন তৈরির সর্বোত্তম উপায় যা অনুবাদ প্রস্তুত?

এটি প্রথম থেকেই অনুবাদ করতে হবে না তবে এটি সহজেই অনুবাদযোগ্য হতে হবে যাতে বিভিন্ন সংস্কৃতি থেকে সহ বিকাশকারীরা প্লাগইনটির স্থানীয়করণ প্রক্রিয়ায় অংশ নিতে পারে।

উত্তর:


38

1. স্থানীয়করণের কথা মাথায় রেখে লিখুন

পাঠ্য আউটপুট ব্যবহার echoবা print()উত্পাদন করার জন্য ব্যবহার করবেন না , পরিবর্তে ওয়ার্ডপ্রেস ফাংশন __()এবং _e():

/** Not localization friendly */
echo "Welcome to my plugin";    
// OR
print("Welcome to my plugin");

/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;

_e()এবং __()প্রথম প্যারামিটার হিসাবে সরবরাহিত পাঠ্যের - বর্তমান ভাষায় - অনুবাদ সরবরাহ করবে। _e()পাঠ্যটিকে আউটপুট দেয় যেখানে __()এটি ফিরে আসবে।

দ্বিতীয় প্যারামিটারটি পাঠ্য ডোমেন , আপনি ওয়ার্ডপ্রেসকে বলতে এটি ব্যবহার করবেন যে প্রথম প্যারামিটার হিসাবে সরবরাহিত পাঠ্যটি এই প্লাগইনটির অন্তর্ভুক্ত, আপনি যে কোনও নাম ব্যবহার করতে পারেন তবে আমি প্লাগইনটির জন্য যেমন নাম ব্যবহার করেছি তেমন নাম ব্যবহার করতে পছন্দ করি ডিরেক্টরি ফাইল, আমি এটি আরও স্বজ্ঞাত।

কীভাবে ডায়নামিক পাঠ্য আউটপুট করবেন: "হ্যালো <ব্যবহারকারী নাম>"?

সহ __()এবং sprintf():

/** Get the username */
$username = 'Magictrick';

/** Not localization friendly */
echo "Hello $username";     

/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR 
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;

2. .পট / .পো / .মো ফাইলগুলি প্রস্তুত করুন

সংজ্ঞা

  • .Pot ফাইল : প্লাগইন বিকাশকারী আপনার নিয়ন্ত্রণে রাখেন এবং এটি নতুন অনুবাদ তৈরি করার জন্য একটি প্রাথমিক পয়েন্ট হিসাবে ব্যবহৃত হয়, ওয়ার্ডপ্রেস এটি ব্যবহার করে না।
  • একটি .po ফাইল : একটি অনুবাদ ফাইল যা আপনি বা অন্য কেউ শুরু করেছিলেন এবং সম্ভবত এটি সম্পূর্ণ হয়েছে, ওয়ার্ডপ্রেস এটি ব্যবহার করে না।
  • এ.এম.ও ফাইল : আপনি যখনই কোনও .po ফাইল সংরক্ষণ করেন তখনই পোয়েডিট স্বয়ংক্রিয়ভাবে তৈরি হয়, আপনি যখনই কোনও .po ফাইল তৈরি বা আপডেট করেন তখনই এই ফাইলগুলি আপলোড বা পুনরায় আপলোড করা। ওয়ার্ডপ্রেস .mo ফাইল থেকে অনুবাদ পেয়েছে

পোয়েডিট খুলুন এবং এই সেটিংস সহ একটি নতুন ক্যাটালগ (ফাইল ›নিউ ক্যাটালগ ...) তৈরি করুন :

  • প্রকল্পের তথ্য: আপনার (বা আপনার দল) তথ্য ব্যবহার করুন, ভাষা এবং দেশটি আপনার প্লাগইন ডিফল্ট ভাষার সাথে মেলে
  • পথ:
    • বেস পাথ: .
    • পাথস: সমস্ত মুছে ফেলুন এবং যুক্ত করুন ..(আমরা ভাষা নামক একটি প্লাগইন সাব-ডিরেক্টরিতে ভাষার ফাইল সংরক্ষণ করব)
  • কীওয়ার্ডস: সমস্ত মুছে ফেলুন এবং যোগ করুন __এবং_e

সংরক্ষণ করুন যেমন ক্যাটালগ এবং স্ক্যান আপডেট বোতাম টিপে অনুবাদযোগ্য পাঠ্যের জন্য আপনার প্লাগইন ফাইল। আপডেটটি যখন ক্যাটালগের কাছাকাছি শেষ হয়, আপনি আপনার প্লাগইনে নতুন অনুবাদযোগ্য স্ট্রিং (অর্থাত্ সংযুক্ত বা ) সংযোজন না করে আপনাকে সেই ফাইলটি আপডেট করার প্রয়োজন হবে না ।/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot__()_e()

এখন আসুন প্রথম অনুবাদটি তৈরি করুন (আমি fr_FR ব্যবহার করব):

পোডাইট ব্যবহার করে , একটি পট ফাইল থেকে একটি ক্যাটালগ তৈরি করুন (ফাইল P পট ফাইল থেকে নতুন ক্যাটালগ ...) :

  • প্রকল্পের তথ্য: আপনার (বা আপনার দল) তথ্য ব্যবহার করুন, ভাষা এবং দেশ পরিবর্তন করুন , আমি ফরাসি এবং ফ্রান্স ব্যবহার করব
  • পথ: পরিবর্তন করবেন না
  • কীওয়ার্ডস: ধাওয়া করবেন না

ক্যাটালগ হিসাবে সংরক্ষণ করুন । কিছু বা সমস্ত স্ট্রিং অনুবাদ করুন, আবার .po ফাইল সংরক্ষণ করুন, .po এবং .mo ফাইল উভয়ই আপলোড করুন/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po

নোট করুন যে যখনই আপনি একটি .po ফাইল সংরক্ষণ করেন একই নাম দিয়ে একটি .mo ফাইল উত্পন্ন হয়, .po ফাইলের ফাইলের নামটি গুরুত্বপূর্ণ , এটি প্লাগইন পাঠ্য ডোমেন (মাই-প্লাগইন) এবং ভাষা লোকেলের সংমিশ্রণ দ্বারা গঠিত ( fr_FR), সর্বদা আপনার .po ফাইলগুলিকে প্লাগইনগুলির জন্য এই জাতীয় নাম দিন: [টেক্সটডোমেন] - [লোকেল] .po , এখানে কয়েকটি উদাহরণ রয়েছে:

  • ইতালীয় / ইতালি: wpcf7-it_IT.po
  • পর্তুগীজ / ব্রাজিল: wpcf7-pt_BR.po
  • আরবি: wpcf7-ar.po... হ্যাঁ!

যখনই প্লাগইনটি নতুন পাঠ্যের সাথে আপডেট হয়, পো ফাইলটি আপডেট করুন, নতুন স্ট্রিং অনুবাদ করুন এবং .po এবং .mo ফাইলগুলি পুনরায় আপলোড করুন

৩. বর্তমান ভাষার জন্য অনুবাদিত পাঠ্য লোড করার জন্য প্লাগইনকে নির্দেশ দিন

আপনার প্লাগইনের কোথাও, আপনাকে অবশ্যই ওয়ার্ডপ্রেসকে আপনার .mo ফাইলটি ব্যবহার করতে বলতে হবে, আপনি আপনার প্লাগইন ফাইলের শুরুতে এই কোডটি ব্যবহার করে এটি করতে পারেন:

function my_plugin_init() {
  load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');

ফাংশনের my-pluginপ্রথম এবং তৃতীয় প্যারামিটারে আপনার প্লাগইন নামটি দিয়ে প্রতিস্থাপন করুন load_plugin_textdomain

4. পরীক্ষা এবং সমস্যা সমাধান

এটি কার্যকর না হওয়ার কিছু কারণ:

  • স্ট্রিং .pot বা .po ফাইলে আমদানি করা হয় না
    • Catalog ভুল ক্যাটালগ সেটিংস (পথ বা কীওয়ার্ড বা উভয়)
  • ওয়ার্ডপ্রেস সাইটে পাঠ্যটি অনুবাদ করা হয়নি
    • Language .মো ফাইলটি সেই ভাষার জন্য অনুপস্থিত বা ফাইলের একটি ভুল নাম রয়েছে
    • → পাঠ্য ডোমেইন ব্যবহার করা (প্রতিস্থাপন _e('my text')সঙ্গে _e('my text', 'my-plugin'))
    • → পাঠ্য ডোমেন লোড হয়নি (ডান প্যারামিটারগুলির সাথে উপরের উদাহরণ ব্যবহার করুন, ডাব্লুপি আপনাকে ভুল সম্পর্কে সতর্ক করবে না)

3
+1 ভাল লেখার জন্য আপ :) এই নিবন্ধটি একবার দেখুন: ওয়ার্ডপ্রেস ভাষার ফাইলগুলি সঠিকভাবে লোড করা হচ্ছে , " ওয়ার্ডপ্রেসে ভাষার ফাইল লোড করার সময় ব্যথাটি সরিয়ে নেওয়ার জন্য ব্যবহারিক নির্দেশিকা "। :::::: Glotpress এবং Polyglots গ্রুপ খুব কহতব্য হতে পারে।
brasofilo

এই সুন্দর নির্দেশের জন্য ধন্যবাদ! এটি উল্লেখযোগ্য যে লোড_প্লাগিন_টেক্সটডোমাইন () প্রতিটি পদ্ধতিতে কল করা দরকার, যেখানে আপনি _e () এবং __ () ব্যবহার করেন
অ্যান্ড্রেস

2

নাবিলের উত্তর মোটামুটি সম্পূর্ণ তবে একটি সহজ প্রকরণ দেওয়া আছে:

  1. আপনার প্লাগইনটি WordPress.org প্লাগইন সংগ্রহস্থলে রয়েছে

  2. আপনি আপনার প্লাগইনটি কেবল ওয়ার্ডপ্রেস 4.6 বা তার চেয়ে বেশি এর সাথে কাজ করার জন্য প্রস্তুত।

পদক্ষেপগুলি হ'ল:

  1. আপনার প্লাগইনের readme.txt ফাইলটিতে যুক্ত করুন Requires at least: 4.6Https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/ দেখুন

  2. যদি এটি ইতিমধ্যে না থাকে তবে আপনার প্লাগইনটি ওয়ার্ডপ্রেস প্লাগইন ভাণ্ডারে আপলোড করুন। Https://wordpress.org/plugins/developers/add/ দেখুন ।

  3. আপনার প্লাগইনের স্লাগ / পাঠ্য ডোমেনটি সন্ধান করুন। এটি করতে, ওয়ার্ডপ্রেস প্লাগইন সংগ্রহস্থলে আপনার প্লাগইন এর পৃষ্ঠায় যান। URL টি কেমন হবে https://wordpress.org/plugins/your-plugin-slug/ । URL- এর শেষ অংশটি, "আপনার প্লাগ-ইন-স্লাগ" হ'ল আপনার প্লাগইনের স্লাগ। এটি আপনি অনুবাদ ফাংশনগুলির পাঠ্য ডোমেনের জন্য ব্যবহার করেন।

  4. আপনার প্লাগইনে ওয়ার্ডপ্রেসের অনুবাদ ফাংশন ব্যবহার করুন (পছন্দ করুন __e(‘hello’, ‘my-plugin-domain’);)। পূর্ববর্তী পদক্ষেপে অর্জিত সঠিক প্লাগইন পাঠ্য ডোমেনটি ব্যবহার নিশ্চিত করুন make আরও তথ্যের জন্য https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ দেখুন ।

আপনি যদি উপরের পদক্ষেপগুলি করেন তবে ওয়ার্ডপ্রেস যত্ন নেবে:

  • সমস্ত অনুবাদযোগ্য স্ট্রিংয়ের জন্য আপনার প্লাগইনটি পার্সিং করছে (পোয়েডিট বা অন্য কিছু ইনস্টল ও চালানোর দরকার নেই)
  • অনুবাদকর্তা.প্রেস.আরসি.আর.জে আপনার প্লাগইনের অনুবাদগুলির জন্য যে কারওর পক্ষে সহজতর করুন (আপনার নিজস্ব প্লাগইন অনুবাদ করার জন্য নিজস্ব সাইট নিবেদিত করার প্রয়োজন নেই, অথবা অনুবাদকদের অনুবাদগুলি আপনার কাছে জমা দেওয়ার জন্য একটি কাস্টম প্রক্রিয়া রয়েছে)
  • যখন কেউ আপনার প্লাগইন ব্যবহার করে, ওয়ার্ডপ্রেস এটি তাদের ভাষায় অনুবাদ করে কিনা তা যাচাইয়ের যত্ন নেবে এবং তা যদি হয় তবে তা তাদের ভাষায় দেখানো হয় (তাদের জন্য বা আপনার কোনও দরকার নেই, অনুবাদ ফাইলগুলি তাদের ওয়েবসাইটে লোড করার জন্য)

(আমার ব্লগ পোস্ট থেকে উত্তর এখানে: https://cmljnelson.blog/2019/01/01/tre-really-lazy-way-to-translate-a-wordpress-plugin/ )


আমি নিশ্চিত নই কেন এটিকে নিম্নমানের করা হয়েছিল। এটি আমি ওয়ার্ডপ্রেস.আর.অর্গ
প্লাগইনস

এর অর্থ কি যদি কোনও প্লাগইন / থিম ওয়ার্ডপ্রেস প্লাগইন ভাণ্ডারে না থাকে তবে সেখানে একটি প্লাগইনের টেক্সট ডোমেন ব্যবহার করে, ওয়ার্ডপ্রেস ভুল অনুবাদ ফাইলগুলি লোড করবে?
বোডো

ভাল প্রশ্ন @ বোডো। যদি কোনও প্লাগইন wp.org রেপোতে থাকা অন্য প্লাগইনটির পাঠ্য ডোমেনটি ব্যবহার করার ইঙ্গিত দেয় তবে আমি মনে করি ওয়ার্ডপ্রেস সুখে wp.org প্লাগইনের অনুবাদ ফাইলগুলি ব্যবহার করবে। তবে দুঃখিত, আমি নিশ্চিত নই।
thespacecamel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.