ওভাররাইড ডিফল্ট ওয়ার্ডপ্রেস মূল অনুবাদ


11

ওয়ার্ডপ্রেস ডাচ ভাষা সেট করা আছে। আমি যখন get_the_archive_title()আমার থিমটি সঠিকভাবে কোনও বিভাগ সংরক্ষণাগার পৃষ্ঠায় "শ্রেণিবদ্ধ: বিভাগ-নাম" আউটপুট ব্যবহার করি তখন । তবে আমি এটি "সিকি: বিভাগ-নাম" পড়তে চাই।

আমি ডাব্লুপি-কন্টেন্ট / ভাষা ফোল্ডারে ডাচ ভাষার ফাইল পরিবর্তন করতে চাই না, কারণ এটি ওয়ার্ডপ্রেস আপডেট দ্বারা আপডেট হবে।

আমি সেই অনুবাদ ফাইলটি অনুলিপি করে, "বিভাগ" অনুবাদটি পরিবর্তন করে নতুন এনএল_এনএল.মো ফাইলটি আমার থিম / ভাষায় রাখার চেষ্টা করেছি। এটির কোনও প্রভাব ছিল না।

মূল অনুবাদ ফাইলগুলি পরিবর্তন না করে কিছু স্ট্রিংয়ের জন্য আমি কীভাবে আলাদা অনুবাদ অর্জন করতে পারি?

উত্তর:


15

আপনি gettext ফিল্টার ব্যবহার করতে পারেন :

add_filter( 'gettext', 'cyb_filter_gettext', 10, 3 );
function cyb_filter_gettext( $translated, $original, $domain ) {

    // Use the text string exactly as it is in the translation file
    if ( $translated == "Categorie: %s" ) {
        $translated = "Sectie: %s";
    }

    return $translated;
}

আপনার যদি প্রসঙ্গ সহ কোনও অনুবাদ gettext_with_contextফিল্টার করতে হয় তবে ফিল্টারটি ব্যবহার করুন :

add_filter( 'gettext_with_context', 'cyb_filter_gettext_with_context', 10, 4 );
function cyb_filter_gettext_with_context( $translated, $original, $context, $domain ) {

    // Use the text string exactly as it is in the translation file
    if ( $translated == "Categorie: %s" ) {
        $translated = "Sectie: %s";
    }

    return $translated;
}

প্রসঙ্গ সহ একটি অনুবাদ মানে স্ট্রিং অনুবাদ করতে ব্যবহৃত গেটেক্সট ফাংশনে একটি প্রসঙ্গ দেওয়া হয়। উদাহরণস্বরূপ, এটি প্রসঙ্গ ছাড়াই:

$translated = __( 'Search', 'textdomain' );

এবং এটি প্রসঙ্গে:

$translated = _x( 'Search', 'form placeholder', 'textdomain' );

বহুবচ অনুবাদ ( [_n()][2]এবং [_nx()][2]) এর জন্য অনুরূপ ফিল্টার উপলভ্য : ngettextএবং ngettext_with_context


1
যে কাজ! আমাকে "শ্রেণীবদ্ধ:% s" এবং "সিকিটি:% s" করতে হয়েছিল কারণ পাঠ্যটি অনুবাদ ফাইলে ঠিক একই রকম হতে হয়েছিল।
ফ্লোরিয়ান

ওহ, হ্যাঁ, এটা সঠিক। অনুবাদ করার জন্য সঠিক লেখাটি আমি জানতাম না।
সাইবমেটা 14'15

1
দুর্দান্ত টুকরা কোড - কেবল সচেতন থাকুন যে gettextফিল্টার এমন অনুবাদগুলিকে ধরবে না যেগুলি "প্রসঙ্গ" স্ট্রিং ব্যবহার করে, সেগুলিতে gettext_with_context প্রয়োজন হবে ।
মনু

এই দুর্দান্ত সমাধানের জন্য ধন্যবাদ। আমি যখন একটি শিশু থিম তৈরি করছি এবং মূল থিমের কয়েকটি অনুবাদকে অগ্রাহ্য করতে ইচ্ছুক, তখন আমি প্রস্তাবিত ফাংশন বডিটি নিম্নলিখিত লাইনের সাথে প্রতিস্থাপন করেছি return $domain != 'child-domain' && ( $new = __( $original, 'child-domain' ) ) != $original ? $new : $translated;। এইভাবে, আমি চাইল্ড থিমের পিও ফাইলে ওভাররাইডিং অনুবাদগুলিকে ফাংশন কোডটিতে সক্ষম করার পরিবর্তে ঘরে বসে রাখতে পারি।
ফ্রাঙ্কো

ধন্যবাদ সাইবমেটা! আমি রেপোতে প্রকাশিত একটি প্লাগইন দিয়ে মূল পাঠ্য পরিবর্তন করতে এই কৌশলটি ব্যবহার করেছি। আমি এই পোস্টটি কোডটিতে জমা দিয়েছি। wordpress.org/plugins/…
জন ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.