वर्डप्रेस में हाइपरलिंक ट्रांसलेट करने योग्य टेक्स्ट कैसे बनाएं?


15

मैंने हाइपरलिंक अनुवाद के साथ एक पाठ करने के विभिन्न तरीकों को देखा है। हालाँकि, मैं एक भी सर्वोत्तम अभ्यास खोजने में असमर्थ रहा हूँ।

इसलिए, यहां कुछ उपाय दिए गए हैं:

// METHOD 1
sprintf( __( 'Please read %1$sthis%2$s.', 'tacoverdo-example-domain' ), '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">', '</a>' );

// METHOD 2
echo '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">';
_e( 'Please read this.', 'tacoverdo-example-domain' );
echo '</a>';

// METHOD 3
sprintf( __( 'Please read <a href="%s">this</a>.', 'tacoverdo-example-domain' ), esc_url( 'https://goo.gl' ) );

// METHOD 4
sprintf( __( 'Please read %sthis%s.', 'tacoverdo-example-domain' ), '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">', '</a>' );

// METHOD 5
_e( 'Please read <a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">this</a>', 'tacoverdo-example-domain' );

मेरा पहला विचार यह है कि विधि 1 सबसे अच्छा होगा। HTML को जानने के लिए आपके अनुवादकों की आवश्यकता नहीं है। लेकिन यह उन लोगों को भी अनुमति नहीं देता है जो इसके साथ खिलवाड़ करते हैं। जब से आपको बार-बार पूरे HTML-part का अनुवाद नहीं करना पड़े, तब तक यह काफी DRY (खुद को दोहराएं नहीं) है।

हालांकि, ट्विटर पर इस सवाल को पोस्ट करते समय, लोगों ने कहा कि विधि 3 सबसे अच्छा होगा जैसा कि आप यहां देख सकते हैं ।

तो, मुझे वर्डप्रेस में हाइपरलिंक अनुवाद के साथ एक पाठ कैसे बनाना चाहिए?

जवाबों:


17

यह बहुत ही सुस्पष्ट मुद्दा है। यह अनुवाद चुनौतियों के पूरे नए लोड के साथ अंतर्निहित HTML सामग्री मुद्दों को जोड़ती है, जैसे कि स्ट्रिंग्स के लिए स्कैनिंग, अनुवाद प्रक्रिया और इसका सत्यापन।

तो हमें गठबंधन करना होगा:

  1. पाठ (अनुवाद योग्य रूप में)
  2. HTML मार्कअप (हार्ड तोड़ने के लिए, लेकिन अधिमानतः लचीला रूप में)
  3. URL गंतव्य (सुरक्षित और अधिमानतः अनुवाद योग्य रूप में, भाषा के लिए विशिष्ट हो सकता है!)

हमें परिचित और पूर्व कला पर भी विचार करने की आवश्यकता है, दूसरे शब्दों में - कोर क्या करेगा। ठीक है, यह मदद नहीं करता है कि त्वरित जांच से कोर इन तरीकों में से अधिकांश (यदि सभी नहीं) में ऐसा करता है।

इन कारकों और आसपास की चर्चा से मैं कहूंगा कि जरूरतों और प्राथमिकताओं के आधार पर दृष्टिकोण के तीन बाल्टी हैं।

सरल - सब कुछ के साथ एक स्ट्रिंग

__( 'Please read <a href="https://goo.gl">this</a>', 'example-domain' );
  • कोड में पालन करना आसान है
  • सभी भागों (पाठ, मार्कअप, URL) को संपूर्ण रूप में अनुवाद करने की अनुमति देता है
  • URL हार्डकोड किया गया
  • HTML टूटने का खतरा
  • कोर में लोकप्रिय है

संतुलित - URL टूट गया

sprintf( 
    __( 'Please read <a href="%s">this</a>', 'example-domain' ), 
    esc_url( 'https://goo.gl' ) 
);
  • अनुसरण करने में आसान
  • सभी भागों का अनुवाद कर सकते हैं, लेकिन URL को अलग अनुवाद कॉल की आवश्यकता है
  • URL गतिशील और बच सकता है
  • HTML टूटने का खतरा
  • कोर में लोकप्रिय है
  • डेवलपर्स / अनुवादकों के साथ वास्तविक रूप से लोकप्रिय

टुकड़े टुकड़े करना - मार्कअप टूट गया

sprintf( 
    __( 'Please read %1$sthis%2$s.', 'example-domain' ), 
    '<a href="' . esc_url( 'https://goo.gl' ) . '">',
    '</a>' 
);

या संघ के माध्यम से

'<a href="' . esc_url( 'https://goo.gl' ) . '">' 
. __( 'Please read this.', 'example-domain' );
. '</a>';
  • कम पठनीय
  • HTML टूटने के लिए अधिक लचीला
  • कोर में कम लोकप्रिय
  • अनुवाद के लिए अधिक संदर्भ की आवश्यकता है

अंगूठे का नियम (जहाँ तक मैं इसे देखता हूँ)

  1. सरल संभव के रूप में सरल रूप में रखना
  2. HTML को रोकने के लिए टुकड़ा
  3. अन्य सभी मामलों के लिए संतुलित (संभवतः सबसे आम)

+1। मैं "संतुलित" विकल्प की तरह, हो सकता है का उपयोग करते हुए संदर्भ जोड़ना सुधार किया जा सकता _xबजाय__
gmazzap

मैंने व्यापक लोगों के बजाय बुनियादी उदाहरणों के रूप में स्निपेट्स का इरादा किया था। संभवतः परिदृश्यों और अनुवाद कार्यों की व्यापक संख्या के कारण प्रत्येक में भिन्नता होगी।
रारस्ट

संतुलित विकल्प में भी समस्या है, कि अनुवादक गलत मार्कअप बना सकते हैं। एक सुनिश्चित और सुरक्षित अनुवाद के लिए यह बेहतर है, कि आप html को बाहर कर दें। इसके अलावा, मैं संदर्भ के साथ अनुवाद कार्यों के लिए मतदान करता हूं। यह अनुवादकों को यह समझने का मौका देता है कि कैसे उन्हें स्थिति, प्लगइन में प्रसंग, विषय के बारे में ज्ञान के बिना।
bueltge

मैंने सुना है कि 'अनुवादकों को पहले संदर्भ-तर्क की आवश्यकता होती है', लेकिन इससे मुझे आश्चर्य होता है। इस उदाहरण के लिए उन्हें क्या संदर्भ चाहिए ? मुझे लगता है कि जरूरत पड़ने पर संदर्भ प्रदान करने के लिए यह अच्छा अभ्यास है, लेकिन क्या इस मामले में अनुवादकों को वास्तव में इसकी आवश्यकता है? क्या उन्हें यह जानने की आवश्यकता है कि क्या इसके लिए %sखड़ा है <strong>या नहीं <a href target="#">? क्या यह उनके अनुवाद को प्रभावित करता है?
टैको वर्डो

@TacoVerdo यदि लिंक टूट गया है, तो मैं यह मान सकता हूं कि इसके बिना पाठ बहुत अच्छी तरह से अस्पष्ट हो सकता है, उस स्थिति में संदर्भ को यह बताना चाहिए कि पाठ किस गंतव्य के लिए है। प्रसंग सूचना को तब तक पैड करने का कार्य करता है जब तक वह पूर्ण और अस्पष्ट न हो। जैसा कि आप पाठ को छोटे स्टैंडअलोन टुकड़ों में तोड़ते हैं, उनमें से प्रत्येक को अधिक संदर्भ की आवश्यकता होती है जहां यह पूरे में फिट बैठता है।
रार्स्ट

8

इन दिनों मैं कई बहुभाषी वेबसाइटों के साथ काम करता हूं, और मुझे कहना होगा:

  1. लिंक के URL को अक्सर अनुवाद योग्य होना चाहिए।
  2. ट्रस्ट ट्रांसलेशन फंक्शन आउटपुट खराब है। मैं बहुत अधिक उपयोग नहीं करता, __()लेकिन हमेशा esc_html__()/ esc_attr__()। जिसका अर्थ है कि अनुवादित किए जाने वाले स्ट्रिंग में किसी भी प्रकार का HTML नहीं हो सकता है।
  3. अंग्रेजी में लिखना हमें अक्सर महसूस नहीं होता है कि अन्य भाषाओं में किसी शब्द को संदर्भ के आधार पर अलग-अलग तरीकों से लिखा जा सकता है। इसलिए जब पाठ में 1 या कुछ शब्द होते हैं, तो *_x()अनुवाद कार्यों के संस्करण का उपयोग करना हमेशा बेहतर होता है।
  4. प्रत्येक अनुवाद योग्य स्ट्रिंग के लिए एक से अधिक प्लेसहोल्डर को शामिल करना "खतरनाक" हो सकता है। यदि अनुवादक डेवलपर नहीं है, तो वे पृष्ठ रेंडरिंग को आसानी से तोड़ देंगे। उदाहरण में %1$sthis%2$sएक गैर तकनीकी अनुवादक यह नहीं समझता है कि उचित प्रतिपादन के लिए sबस पहले thisआवश्यक है, और यह भी सोच सकता है कि डेवलपर टाइप करना चाहता thisथा लेकिन एक टाइपो और लिखा था sthis

इन सभी कारणों के लिए "ठीक से" पाठ का अनुवाद जिसमें लिंक शामिल हैं, कठिन है। केवल व्यवहार्य समाधान जो सभी को ध्यान में रखते हुए ऊपर कहा गया है:

$anchor = esc_html_x( 'Google', 'link text for google.com', 'txt-domain' );
$domain = esc_url( __( 'google.com', 'txt-domain' ) );  
$link   = sprintf( '<a href="https://%s">%s</a>', $domain, $anchor );

 /* translators: 1 is a link with text "Google" and URL google.com */
echo sprintf( esc_html__( 'Use %1$s to search.', 'example-domain' ), $link );

जो गैर-तकनीकी लोगों द्वारा अनुवादित किया जाना सुरक्षित और आसान है, लेकिन इसे लागू करने के लिए क्रिया और PITA भी, खासकर यदि यह कई लिंक के लिए किया जाना है ...

हालाँकि, कई भाषाओं में बोलने वाले (वास्तविक या संभावित) उपयोगकर्ताओं के साथ जंगली में जारी एक कोड के लिए, यह वह तरीका है जो मैं ले जाऊंगा।

यह वास्तव में जिस तरह से मैं आंतरिक-उपयोग-केवल कोड के लिए भी ले रहा हूं, लेकिन यह मुझे है।


नोट :

"Google" शब्द को अलग-अलग अनुवाद करने के लिए यह बहुत अधिक दिखाई दे सकता है, और शायद इस विशिष्ट मामले के लिए यह सच है। लेकिन कभी-कभी ब्रांड के नामों को गलत भी मान लेते हैं। बस एक उदाहरण का नाम है, इटली में हमारे पास "अल्जीडा" ब्रांड है जिसे दुनिया भर में ~ 30 अलग-अलग नामों से जाना जाता है

ऐसे मामले में, URL और / या ब्रांड नाम को हार्डकोड करना, मुद्दों का कारण होगा।

अनुवाद के लिए संदर्भ प्रदान करें अनुवादकों को यह तय करने में मदद मिलेगी कि उन्हें ब्रांड नाम का अनुवाद करने की आवश्यकता है या नहीं।


2

आपको मार्कशीट को ट्रांसलेटेबल स्ट्रिंग में रखना होगा, क्योंकि ट्रांसलेटर्स को यह जानना होगा कि एक लिंक है। कुछ भाषाओं में परिणामी लिंक पाठ में कई शब्द हो सकते हैं, अंदर एक अल्पविराम (या समतुल्य) या अन्य मार्कअप हो सकते हैं जिन्हें सही ढंग से नेस्टेड करने की आवश्यकता होती है।

यह भी एक बोल कड़ी पाठ, नहीं का निर्माण करने के लिए महत्वपूर्ण है यह या यहाँ

2 या 3 एकमात्र अनुवाद योग्य विकल्प हैं, लेकिन आपको URL को भी अनुवाद योग्य बनाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.