2015-06-15 9 views
5

का उपयोग करके बहुवचन के साथ कोणीय जेएस अनुवाद हैलो मुझे मूल्य के आधार पर बहुवचन के साथ अनुवाद करने की आवश्यकता है, लेकिन यह नहीं पता कि यह कैसे किया जाए।कोणीय-अनुवाद

उदाहरण के लिए मेरे पास peopleCount है।

  1. peopleCount = 1 अनुवाद किया जाना चाहिए: अंग्रेज़ी: {{ peopleCount }} person likes this lithuanian: {{ peopleCount }} zmogus tai megsta
  2. अगर peopleCount है 1 से अधिक अंग्रेज़ी अनुवाद होगा: {{ peopleCount }} people like this

लेकिन lithuanian अनुवाद के लिए:

  1. अगर peopleCount 2 और 9 या किसी भी संख्या संख्या जो 4 शासन में प्रदान की गई संख्या के साथ समाप्त होता सिवाय उन संख्याओं के साथ समाप्त होने के बीच है (उदाहरण के : 225, 24 9, 210 < --- ये सही संख्याएं हैं और अविश्वसनीय हैं: 215, 250 ...)। यह {{ peopleCount }} zmones tai megsta
  2. हो सकता है अगर गिनती 10 और 20 या 30, 40 या किसी अन्य नंबर 150 की तरह एक शून्य या 90 के साथ समाप्त होने के बीच है यह {{ peopleCount }} zmoniu tai megsta

मैं ऐसा कैसे पूरा करते हैं हो सकता है?

+1

बस एक नोट है कि उचित अंग्रेजी व्याकरण "इस तरह के 5 लोग" होगा (पसंद नहीं)। – mkaj

उत्तर

12

कोणीय-अनुवाद MessageFormat की कार्यक्षमता के साथ सेवा है जो वास्तव में शक्तिशाली है है और यह भी lithuanian के लिए निर्मित वातावरण है। Article about MessageFormat and angular-translate.

स्थापित कर रहा है

आप बोवर के माध्यम से इस पैकेज स्थापित कर सकते हैं:

<script src="path/to/messageformat.js"></script> 
<script src="path/to/angular-translate-interpolation-messageformat.js"></script> 
:

$ bower install angular-translate-interpolation-messageformat 

उसके बाद MessageFormat और इसी क्रम में कोणीय-अनुवाद-प्रक्षेप-messageformat साथ आवश्यक स्क्रिप्ट शामिल

और आखिर में आपके कॉन्फ़िगरेशन फ़ंक्शन कॉल में MessageFormatInter $ TranslateProvider से polation समारोह:

$translateProvider.useMessageFormatInterpolation(); 

प्रयोग

आप इसके साथ काम कर सकते हैं अपने ऐप्लिकेशन में angular-translate-interpolation-messageformat स्थापित करने के बाद।

उदाहरण के लिए, आप इस रूप में कोड 'लोग' के लिए अंग्रेज़ी स्थानीयकरण बना सकते हैं:

{ 
    "PEOPLE" : "{peopleCount, plural, one {There is one man (in lithuanian)} few {# zmones tai megsta} other {# zmoniu tai megsta}}" 
} 

और की तुलना में इस तरह अपने html में इसका इस्तेमाल करते हैं:

<span translate="PEOPLE" translate-values="{peopleCount: 12}" translate-interpolation="messageformat"></span> 

उत्पादन होगा: " 12 zmones ताई megsta "।

+0

अभी भी सोच रहा है कि क्या इसे 'एक', 'कुछ' और 'अन्य' के बजाय किसी प्रकार के बयान के साथ अधिक विकल्पों के साथ बनाने का कोई तरीका है? – Einius

+0

आप [github] (https://github.com/SlexAxton/messageformat.js/) पर और अधिक पढ़ सकते हैं। 'चयन' घोषणा भी है, जो कड़ाई से बयान नहीं है, लेकिन शायद आपकी ज़रूरतों के लिए सहायक होगी। चयन के साथ आप इस तरह कुछ बना सकते हैं: '" लोग ":" {लोग गणना, चयन, 1 {एक आदमी} 2 {दो पुरुष} अन्य {# लोग}} "' –

+0

आउटपुट कैसे हो सकता है "12 zmones tai megsta" , जब 'लोगकाउंट' का मूल्य 5 है? 12! = 5 – cezar

1

कुछ इस तरह अपने परिदृश्य के लिए काम करेगा:

<ng-pluralize count="peopleCount" 
      when="{ 
       'one': 'zmogus tai megsta', 
       'few': '{} zmones tai megsta', 
       'other': '{} zmoniu tai megsta'}"> 
</ng-pluralize> 

आप अधिक जानकारी के लिए इस पर विचार कर सकते हैं। https://docs.angularjs.org/api/ng/directive/ngPluralize और भाषा के लिए यहाँ विशिष्ट बहुवचन तार: http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html

0

मैं बिना angular-translate-interpolation-messageformat

यह लक्ष्य प्राप्त मेरे मामला है:
मैं संसाधन बंडल lables है:
label.myItem=You have {{count}} item
label.myItems=You have {{count}} items

HTML में मैं इस तरह लिखा है:

<ng-pluralize count="itemCount" 
     when="{'one':'{{&quot;label.myItem&quot; | translate:{count: itemCount} }}', 
      'other':'{{&quot;label.myItems&quot; | translate: {count: itemCount} }}' }"> 
</ng-pluralize> 

यहां itemCount 012 होगाचर।

इस तरह से आपको कोई भी नया कोणीय पैकेज स्थापित करने की आवश्यकता नहीं है।

आउटपुट है: जब मैं 1 है:

आपके पास 1 आइटम

जब मैं 2 (1 से अधिक) है:

आप 2 है आइटम

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^