2014-06-18 9 views
8

यह कोड अंग्रेजी, स्पेनिश और जर्मन ordninal संख्याओं के लिए काम करता है, लेकिन रूसी या इतालवी ordninal संख्या के साथ यह काम नहीं करता है।संख्याफॉर्मेटर :: रूसी और इतालवी में SPELLOUT वर्तनी-ordinal

'ru-RU', 'it-IT' भी

मैं में के लिए रूसी उदाहरण के लिए मिलता है काम नहीं करते 2 -> два (इस कार्डिनल संख्या है), लेकिन मुझे क्रमसूचक संख्या चाहते हैं और यह यहाँ होगा 2 -> второй ।

मुझे इतालवी में उदाहरण के लिए 2 -> देय (यह कार्डिनल नंबर है), लेकिन मुझे क्रमिक संख्या चाहिए और यह 2 -> सेकंडो होगा।

अद्यतन:

मैं में फ्रेंच, स्पेन, जर्मन और कुछ अन्य भाषाओं में काम करता है के साथ एक समाधान पाया:

maskuline क्रमसूचक संख्या: %spellout-ordinal-maskuline

संज्ञा क्रमसूचक संख्या: %spellout-ordinal-feminine

रूसी और इतालवी संस्करण काम नहीं करता है और मैंने पहले से ही कोशिश की है- मास्कुलिन/-फैमिनाइन

$ru_ordinal = new NumberFormatter('ru', NumberFormatter::SPELLOUT); 
$ru_ordinal->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal"); 
+0

मेरे लिए 'प्रारूप (42)' परिणाम (क्रम में) को कॉल करने के लिए: "сорок два", "cuarenta y dos" और "quaranta देय" है। क्या यह अपेक्षित आउटपुट है? सुनिश्चित करें कि आपके पास intl इंस्टॉल है। – Maerlyn

+1

"сорок второй" नामक 42 के लिए क्रमिक संख्या, इतालवी में "cuadragésimo segundo", इतालवी में "quarantaduesimo – Grischa

+0

हाँ मैंने इसका परीक्षण किया '$ ru_ordinal-> प्रारूप (42);' रिटर्न ** сорок два ** ** के बजाय сорок второй **। यह अजीब – user1978142

उत्तर

11

नंबरफॉर्मेटर आईसीयू स्वरूपण का उपयोग कर रहा है।

आप यहाँ जाँच कर सकते हैं के रूप में: http://saxonica.com/html/documentation/extensibility/config-extend/localizing/ICU-numbering-dates/ICU-numbering.html

... रूसी (ru) निम्नलिखित स्वरूपण उपलब्ध है:

  • spellout-कार्डिनल-संज्ञा (एस सी एफ)
  • spellout-cardinal- मास्कुलिन (एससीएम)
  • स्पेलआउट-कार्डिनल-न्यूटर (स्कैन)
  • स्पेलआउट-नंबरिंग (एसएन)
  • स्पेलआउट-नंबरिंग-वर्ष (sny)

...और इतालवी (यह):

  • spellout-कार्डिनल-संज्ञा (एस सी एफ)
  • spellout-कार्डिनल-मर्दाना (SCM)
  • spellout-अंकन (एस.एन.)
  • spellout-अंकन साल (sny)
  • spellout-क्रमसूचक-संज्ञा (sOF)
  • spellout-क्रमसूचक-मर्दाना (som)

यही कारण है कि आप के लिए (ru) और कोड निम्नलिखित क्रमसूचक प्रारूप सेट करने के लिए सक्षम नहीं होगा: (propably) चाहते

string 'quaranta­duesima' (length=17) 
आप की तरह

:

$nFormat = new NumberFormatter('it', NumberFormatter::SPELLOUT); 
$nFormat->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-feminine"); 

var_dump($nFormat->format(42)); 

प्रिंट होगा।

संपादित करें: आईसीयू के लिए संदर्भ के साथ प्रयोग किया प्रारूपित करने के बारे

जानकारी: http://php.net/manual/en/numberformatter.create.php

पीएचपी 5.4.x और आईसीयू संस्करण के साथ परीक्षण किया गया => 51.2; आईसीयू डेटा संस्करण => 51.2। आप खोल आदेश का उपयोग कर सकते हैं:

$ php -i | grep ICU 

आईसीयू का कौन सा संस्करण आपके पास जांच करने के लिए।

नवीनतम आईसीयू संस्करण के लिए आप propably स्थापित करना चाहिए/अद्यतन php-intl पैकेज: http://php.net/manual/en/intl.installation.php

संपादित करें 2: NumberFormatter के लिए

मैं बनाया है विस्तार (अब तक पॉलिश ऑर्डिनल्स के साथ)। एक और भाषाओं का योगदान करने के लिए स्वतंत्र महसूस करें: https://github.com/arius86/number-formatter

+0

धन्यवाद। दुर्भाग्यवश मेरा होस्टर केवल हाल ही में PHP 5.4 और आईसीयू 4.4.1 में अपडेट किया गया है। मैंने http://phpfiddle.org/ पर अपना कोड चेक किया है और यहां मुझे क्रमिक संख्या के बजाय कार्डिनल नंबर मिलता है। – Grischa

+0

Phpfiddle PHP 5.3.29 का उपयोग करता है। मैंने 5.4.12 को इसका परीक्षण किया। मैंने कुछ addtional संदर्भ जोड़ा। मुझे लगता है कि विषय समाप्त होता है और वास्तव में अब इसके लिए कोई अन्य जवाब नहीं है इसलिए मुझे उम्मीद है कि आप इसे स्वीकार्य मानेंगे। शुभकामनाएँ! – Arius

+0

फिर से धन्यवाद, लेकिन मुझे पहले से ही addtional संदर्भ पता है। यह 5.4.36-1 पर भी काम नहीं करता है। यह PHP संस्करण मेरी वेबसाइट पर प्रयोग किया जाता है। – Grischa

2

बस एक सिफारिश, मुझे यकीन नहीं है कि यह इस समय काम करता है या अपाचे सेवाएं इस समय खुली है जब मैं कॉलेज में हूं, लेकिन आपने रूस के लिए आरयू-आरयू लगाने की कोशिश की है। PHP में मैं व्यक्तिगत रूप से एक सूची मैं कुछ मदद करने के लिए के साथ इंटरनेट पर पाया के रूप में "en-GB"

http://download1.parallels.com/SiteBuilder/Windows/docs/3.2/en_US/sitebulder-3.2-win-sdk-localization-pack-creation-guide/30801.htm

यहाँ है मेरी भाषा कोड डाल दिया।

+0

धन्यवाद, लेकिन मैंने फ्रांसीसी के लिए आरयू-आरयू और एफआर-एफआर की कोशिश की थी, स्पेनिश के लिए ईएस-ईएस, यह इतालवी के लिए आईटी है, यह केवल अंग्रेजी और जर्मन काम करता है। – Grischa

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