2016-02-07 19 views
5

Son zamanlarda bir sorunla karşılaşıyorum - açısal uygulamamın bazı bölümlerinde MMMM yyyy ve Angular UI Bootstrap çerçevesinin bazı bileşenlerinde tarihi aşağıdaki biçimde göstermeliyim.Ay isimleri nasıl kullanılır? - Açısal tarih yerelleştirmesi

Temel sorun bazı dillerde yalın ve hâli durumunda ay farklı yazılmış olmasıdır. Benim durumumda bu Polonya, Ukrayna ve Rus olacaktı. Varsayılan olarak görünüyor gibi

MMMM genellikle mantıklı hâli durumunda, ay adı gelecektir.

Russian ve Polish dilleri için açısal yerel ayar dosyalarında bunu fark ettim, ancak, gördüğüm gibi, ay içinde adın temsilci olduğu anlamına gelen STANDALONEMONTH. O üzerinde kullanımını nasıl çekeceğinizi pek emin değilim rağmen

(Ukrainian için olsa dosya bu bölümü eksik). Temel önerim, dateFilter için bir dekoratörle gitmek olacaktır.

Soru yani - $locale kullanarak üçüncü parti kütüphaneleri uygun ay adı kullanır, böylece, ay adı açısal işleme dönüm veya yaygın olarak kullanılan geçici bir çözüm için standart bir yol olup olmadığını.

Örnek

date: '2016-01-20' 

en-us: 
'dd MMMM yyyy' -> '20 January 2016' 
'MMMM yyyy' -> 'January 2016'  

uk-ua: 
'dd MMMM yyyy' -> '20 січня 2016' // genitive case - it is fine 
'MMMM yyyy' -> 'січня 2016'  // wrong: should be 'січень 2016' 

pl-pl: 
'dd MMMM yyyy' -> '20 stycznia 2016' // genitive case - it is fine 
'MMMM yyyy' -> 'stycznia 2016' // wrong: should be 'styczeń 2016' 

Gördüğünüz - Ukrayna ve Polonya için ayın adı bu iki durumda da farklı bir sonla olmalıdır. Lehçe ve Rusça için de açısal yerel dosyalarda (STANDALONEMONTH) uygun durumda bir ay adı vardır. Her yerde kullanıldıklarından emin değilim - kullanım bulamadı, ya da belki bir şey eksik.

+0

Gerçekten net Uygun değerleri neden görmediklerini. Bir demo muhtemelen – charlietfl

+0

@charlietfl'e uygun değerler elde etmemde yardımcı olacaktır. Elbette bir şekilde. Haklısın, örnekler ekleyeceğim. Teşekkürler. – danyloid

+0

Şahsen bu dil nüanslarını bile bilmiyorum. Birçok başkalarının buna karıştığını hayal ediyorum. Github konularını kontrol ettin mi? – charlietfl

cevap

1

Bir zamanlar Angular 1.3'te benzer bir konuda çalışırken, yerleşik yerel ayar hizmetinde hiçbir şey bulamadım, bu yüzden el ile uygun bir şekilde çevirileri olan bir listeyi oluşturarak bunları çözerek bunları çözdüm. Ay numarasına göregibi var monthNamesNominative = ['Январь', 'Февраль', ...] gibi bir şey. Buradaki ek avantaj, dizge üzerinde doğrudan kontrol sahibi olmanız ve biraz farklı bir büyük harf kullanımına ihtiyacınız varsa ekstra atlatma yapmak zorunda kalmamanızdır.

Eğik 1.5'te yerel hizmet yalın halde bulunan ay adıyla LLLL simgesi var, söyledikten ve sürüm 1.5 dan bu soruyu sordu dört gün sonra onun doğru kullanımını engelledi açısal içinde bug sabit olduğunu görünür ve .1 ileride bunun yerine muhtemelen daha iyi. Doğru `$ locale` kaynaklar dahil ettik eğer