গেটেক্সটেক্স সিনট্যাক্সের মূল বিষয়টি কী?


9

এখনও অবধি আমি ওয়ার্ডপ্রেসে কিছু অনুবাদ পরিচালনা করেছি এবং অফিসিয়াল গেটেক্সট ডকুমেন্টেশন পড়ার চেষ্টা করেছি তবে একটি সাধারণ জিনিসটির বিন্দুটি পাব না: __ (, _e (ইত্যাদি) এর মতো শুরুগুলির মধ্যে পার্থক্য কী? আরও: পাশে অন্যরা কী আছেন? আগাম ধন্যবাদ!

অকপট


আপনার বিস্তৃত উত্তরের জন্য আপনাকে সবাইকে ধন্যবাদ! আমি সত্যিই এখানে এটি প্রশংসা!
সার্কিট সার্কাস

... সম্ভবত এটি আরও একটি প্রশ্ন: পাঠ্য-ডোমেনের প্রবেশ কী ছেড়ে দেওয়া যেতে পারে? আমি সরলভাবে অনুবাদ করতে চেয়েছি এমন প্রতিটি স্ট্রিংয়ে আনতে শুরু করেছিলাম তবে ওয়ার্ডপ্রেস কোডেক্সে এমন কয়েকটি উদাহরণ স্বীকৃত হয়েছিল যা এতে মোটেও থাকে না ...
সার্কিট সার্কাস

... ঠিক আছে, এখন আমি এই কোডেক্স পৃষ্ঠায় এটি জুড়ে এসেছি - এই অপ্রয়োজনীয় প্রশ্নের জন্য দুঃখিত :-)
সার্কিট সার্কাস

উত্তর:


13

__(ডাবল আন্ডারস্কোর) হ'ল বেস অনুবাদ ফাংশন। এটি একটি স্ট্রিং অনুবাদ করে এবং স্ট্রিং হিসাবে এটি প্রদান করে।

_eএর মতোই করে __তবে ফলাফলটির প্রতিধ্বনি সঙ্গে সঙ্গেই হয়।

_xপ্রাসঙ্গিক অনুবাদ ফাংশন। অনুবাদটি করা লোকদের প্রসঙ্গ সরবরাহ করার জন্য এটির দ্বিতীয় বিকল্প রয়েছে।

_exহিসাবে একই _x, কিন্তু প্রতিধ্বনির ফলাফল।

ব্যবহারের উদাহরণ _x:

$string = _x( 'Buffalo', 'an animal', 'plugin-domain' );
$string = _x( 'Buffalo', 'a city in New York', 'plugin-domain' );
$string = _x( 'Buffalo', 'a verb meaning to confuse somebody', 'plugin-domain' );

কখনও কখনও একই স্ট্রিং অন্যান্য ভাষায় পৃথক হতে পারে। অনুবাদকদের প্রসঙ্গ সরবরাহ করা তাদের সঠিক শব্দ বাছাই করতে সহায়তা করতে পারে।

শর্টকাট ফাংশন:

  • esc_attr__: সমান __কিন্তু ফলাফল মাধ্যমে চালায় esc_attr
  • esc_html__: সমান __কিন্তু ফলাফল মাধ্যমে চালায় esc_html
  • esc_attr_e: সমান _eকিন্তু ফলাফল মাধ্যমে চালায় esc_attr
  • esc_html_e: সমান _eকিন্তু ফলাফল মাধ্যমে চালায় esc_html
  • esc_attr_x: সমান _xকিন্তু ফলাফল মাধ্যমে চালায় esc_attr
  • esc_html_x: সমান _xকিন্তু ফলাফল মাধ্যমে চালায় esc_html

_nবহুবচন হ্যান্ডলার। উদাহরণ:

$string = sprintf( _n(
        'You have %d taco.', 
        'You have %d tacos.', 
        $number, 
        'plugin-domain'), 
    $number );

উদাহরণস্বরূপ, টাকোগুলির সংখ্যা বলার দুটি উপায় আছে, এটি একক বা না তা নির্ভর করে। $ সংখ্যার প্রথম ব্যবহারটি _nকোন সংস্করণটি ব্যবহার করবে তা ফাংশনকে বলে । স্ট্রিংয়ের প্রকৃত সংখ্যার সাথে% d প্রতিস্থাপন করতে int সংখ্যার দ্বিতীয় ব্যবহারটি স্প্রিন্টেফে ঘটে।

এর জন্য কোনও ইকো ফাংশন সমতুল্য _nনয়, তবে এখানে একটি ফাংশন রয়েছে _nx। এটা তোলে সংমিশ্রণ এর _nএবং _x। বহুবচন এবং প্রসঙ্গ।

_n_noopএকটি বিশেষ এক। এটি বহুবচনযুক্ত স্ট্রিং অনুবাদ করার জন্য ব্যবহৃত হয়েছে, তবে তাত্ক্ষণিকভাবে অনুবাদ সম্পাদন করে না। আপনি যদি স্ট্রিংগুলি কেন্দ্রিয়ীকরণ করতে চান তবে এটি অন্য কোথাও কাজটি করতে কার্যকর হয় This যে ফাংশনটি আসলে অন্য কোথাও কাজ করে তা হ'ল translate_nooped_plural

উদাহরণ:

$holder = _n_noop('You have %d taco.', 'You have %d tacos.', 'plugin-domain');
// ... later ...
$string = sprintf( translate_nooped_plural( $holder, $count ), $count );

এটি বেশি ব্যবহৃত হয় না, তবে এটি সংস্থার পক্ষে কার্যকর হতে পারে। উদাহরণস্বরূপ, আপনি যদি আপনার সমস্ত স্ট্রিংগুলি একটি ফাইলে রাখেন, তবে সেগুলি অন্য কোথাও উল্লেখ করুন, কেবলমাত্র এটি দিয়ে সম্ভব হবে না _n, আপনার এটি _n_noopকরার মতো কিছু দরকার ।

_nx_noopহিসাবে একই _n_noop, কিন্তু অনুবাদকদের জন্য একটি প্রসঙ্গ নিতে পারে, হিসাবে একই _x

নোট করুন যে আপনি ডোমেনটি নুপ ফাংশন কল, অথবা অনুবাদ_নুপড_প্লুরাল ফাংশন কলের মধ্যে রাখতে পারেন। আপনার প্রতিষ্ঠানের জন্য যেটি আরও বেশি অর্থবোধ করে। যদি উভয়ের একটি ডোমেন থাকে, তবে সেই নূপুর কলটি জিতল।

number_format_i18nপিএইচপি-র অন্তর্নির্মিত সংখ্যা_ ফর্ম্যাটটির সমতুল্য , তবে এটি দশমিক এবং আরও কিছু যেমন হ্যান্ডলিংয়ে যুক্ত করে যা অন্যান্য লোকেলের চেয়ে আলাদা।

date_i18nপিএইচপি-র অন্তর্নির্মিত তারিখের সমতুল্য , সেখানে সমস্ত প্রাসঙ্গিকভাবে পরিচালনা করে। মাসের নাম, দিনের নাম ইত্যাদি

এছাড়াও, কখনও আইন ভঙ্গ করবেন না । কেবল একটি অনুস্মারক। :)


বাহ, এটি সত্যিই এটির একটি ভাল ব্যাখ্যা! আপনাকে সাহায্য করার জন্য অনেক ধন্যবাদ! এখন আমি পরিষ্কার দেখতে পাচ্ছি।
সার্কিট সার্কাস

6

__ (), _ ই () এবং _ x (), _ এক্স ()

__()এবং _e()মূলত উভয়ই একটি মোড়ক translate()(সরাসরি ব্যবহার করবেন না) এবং প্রায় একই।

পার্থক্যের মধ্যে __()এটি অনূদিত স্ট্রিংটি দেয় এবং _e()এটি প্রতিধ্বনিত হয়। উভয়কেই প্রয়োজনীয় প্যারামিটার হিসাবে একটি স্ট্রিং খাওয়ানো প্রয়োজন এবং সাধারণত alচ্ছিক হলেও এটি একটি টেক্সটডমাইনও।

অ্যানালগভাবে, রয়েছে _x()এবং _ex()যা আপনাকে এমন একটি প্রসঙ্গ নির্দিষ্ট করতে দেয় যা স্ট্রিংটি কোথায় উপস্থিত তা বর্ণনা করতে পারে। যদি আপনার প্রকল্পে কয়েক দশকেরও বেশি অনুবাদযোগ্য স্ট্রিং অন্তর্ভুক্ত থাকে, তবে প্রসঙ্গটি ব্যবহার করে তা বোঝা যায়।

এছাড়াও, বহুবচনগুলির অস্তিত্ব _n()এবং তার _nx()জন্য নোট করুন ।

সাধারণ ব্যবহারের উদাহরণ

$output = '<label for="some_field">' .
        _x( 'Some Information.', 'Some Form Field', 'your-text-domain' ) .
    '</label>' .
    '<input type="text" name="some_field" value="" />' .
    '<p class="description">' .
        _x( 'Here you can enter some info.', 'Some Form Field', 'your-text-domain' ) .
    '</p>';

return $output;

পরামিতি

__( $text, $domain )
_e( $text, $domain )
_x( $text, $context, $domain )
_ex( $text, $context, $domain )
_n( $single, $plural, $number $domain )
_nx( $single, $plural, $number, $context, $domain )

সমস্ত পরামিতি কিন্তু $numberস্ট্রিং হয়। সমস্ত কিন্তু $domainপ্রয়োজন।

ভেরিয়েবল এবং স্প্রিন্টফ () সহ আরও নমনীয়তা

যদি আপনার স্ট্রিংগুলিতে পরিবর্তনশীল সংখ্যা বা শব্দ থাকে তবে ব্যবহার করুন sprintf():

$stars = get_post_meta( $post->ID, 'rating', true );
$title = get_the_title( $post->ID );

$output = '<p>' .
        sprintf(
            _x(
                'The movie titled %2$s received a %1$d star rating.',
                'Movie Description',
                'your-text-domain'
            ),
            $stars,
            $title
        ) .
    '</p>';

return $output;

অতিরিক্ত সম্পদ

আসন্ন ওয়ার্ডপ্রেস I18n নিনজা জন্য কিছু অতিরিক্ত সংস্থান:


কার্যকারিতা এবং বিশদ ব্যাখ্যার সম্পূর্ণ বিচ্ছেদের জন্য কোডেক্সে "বিবিধ" এর অধীনে "স্থানীয়করণ" দেখুন check
TheDeadMedic


@ জোহানেস পিল: আমি আমার পোস্ট পোস্ট না করা পর্যন্ত আপনার উত্তরটি লক্ষ্য করিনি, আমার পোস্টটি মুছে ফেলা উচিত?
জেরেমি জারেড

@ জেরেমি জারেড না, কেন? আরও তথ্য একটি খারাপ জিনিস হতে পারে না, তাই না ?! আমি মনে করি আপনার উত্তরটি ভালভাবে চিন্তা করে। আমার কাছ থেকে +1
জোহানেস পিল

@TheDeadMedic "অতিরিক্ত সংস্থানসমূহ" এ সম্পাদিত হয়েছে।
জোহানেস পিল

3

আমি অনুবাদগুলিতে বিশেষজ্ঞ নই, তবে ওয়ার্ডপ্রেস কোডেক্স পৃষ্ঠাতে ভাল ডকুমেন্টেশন রয়েছে এবং প্রতিটি উদাহরণ ব্যবহার করার কারণ ব্যাখ্যা করে।

কোডেক্স পৃষ্ঠা থেকে:

__()

বার্তাটি অন্য কোনও ক্রিয়াকলাপ হিসাবে আর্গুমেন্ট হিসাবে পাস করার সময় ব্যবহৃত হয়; _e()সরাসরি পৃষ্ঠায় বার্তা লিখতে ব্যবহৃত হয়। এই দুটি কার্য সম্পর্কে আরও বিশদ:

__('message')

'বার্তা' অনুবাদ করার জন্য স্থানীয়করণ মডিউল অনুসন্ধান করে এবং পিএইচপি রিটার্ন বিবৃতিতে অনুবাদটি পাস করে। 'বার্তা' এর জন্য যদি কোনও অনুবাদ না পাওয়া যায় তবে এটি কেবল 'বার্তা' দেয়।

_e('message')

'বার্তা' অনুবাদ করার জন্য স্থানীয়করণ মডিউল অনুসন্ধান করে এবং পিএইচপি প্রতিধ্বনি বিবৃতিতে অনুবাদটি পাস করে। 'বার্তা' এর জন্য যদি কোনও অনুবাদ না পাওয়া যায় তবে এটি কেবল 'বার্তা' প্রতিধ্বনিত করে।

মনে রাখবেন যে আপনি যদি কোনও থিম বা প্লাগইনকে আন্তর্জাতিকীকরণ করছেন তবে আপনার একটি ব্যবহার করা উচিত "Text Domain"

Gettext ফ্রেমওয়ার্কটি ওয়ার্ডপ্রেসের বেশিরভাগ অংশের যত্ন নেয়। তবে ওয়ার্ডপ্রেস বিতরণে এমন কয়েকটি জায়গা রয়েছে যেখানে গেটেক্সটেক্স ব্যবহার করা যায় না:

  • মূল ওয়ার্ডপ্রেস README ফাইল - এটি একটি স্ট্যাটিক এইচটিএমএল ফাইল, পিএইচপি ফাইল নয়, সুতরাং এটি গেটেক্সটেক্স ফাংশনগুলির মাধ্যমে চালানো যায় না।
  • ওয়ার্কপেক্স লোড হওয়ার আগে ওয়ার্ডপ্রেস লোডিং চক্রের খুব শীঘ্রই কয়েকটি ত্রুটি বার্তা উত্পন্ন হয়।

কোডেক্স পৃষ্ঠায় লিঙ্ক করুন

গেটেক্সটেক্স কখন কাজ করে না সে সম্পর্কিত অতিরিক্ত তথ্য

আশা করি এটি আপনার প্রশ্নের উত্তর দেয়, যদি আমাদের না জানায় এবং সম্ভবত অন্য কেউ সহায়তা করতে পারে বা আমি আরও কিছু গবেষণা করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.