Ben bir ürün sipariş için küçük bir form var Zend Framework (Almanca ve İngilizce) ile çok dilli bir proje üzerinde çalışıyorum. Kullanıcı gerekir:
- Ürün fiyatlarının için yaptığı tercih edilen para birimi değiştirme
- Bütün web sitesi için yaptığı tercih edilen dilini değiştirme
Şu anda ben kullanıcının yerel almak Zend_Locale :: findLocale () kullanın. Benim tarayıcı ayarları ile ben 'de_CH' almak ve iyi çalışıyor. Ancak bazı sorunlar kısa sürede vardır:
- Kullanıcı sadece bana (bunun yerine 'de_CH' of 'de') dil kodunu vermek onun tarayıcısını yapılandırdı
- Kullanıcı benim web sitesi tarafından desteklenen bir dil tercih
- Kullanıcı onlar benim ürün sipariş formunu tarafından desteklenmeyen bir para var, bir ülkeden bir
Just the language code The language code is enough to handle Zend_Translate, but Zend_Currency needs more information. I think there is no solution to get the full locale with the country code from every possible user. My question is: how do you handle these situations? Do you check in your bootstrap's _initLocale() if a country code is missing and use a default country code? Are there any Zend Framework methods to do that?
An unsupported language If the users language is 'fr', I would like to use a default language because our website doesn't support french. Is there a better possibility than to add a whitelist array in bootstrap? For example a method from Zend_Translate?
An unsupported currency What if the user's language is supported, but not his currency? Should I change the locale in bootstrap or should I make a copy of the locale and change it for Zend_Currency?
The main problem I think my main problem is that I'm not sure how to handle all these different locale issues. My prefered approach would be to verify the locale set in bootstrap's _initLocale(), so I can be sure that I can support it's language and currency.
Lütfen danışmanlık için teşekkür ederiz.
Best regards, Nico
Editing 1 I have made myself some more thoughts about a way to handle these issues. What do you think about this approach?
Zend_Locale()
: (ülke kodu olmadan) tüm kısa yerel ayarlar filtre ve dillerde uygulama desteği (sadece dil kodu) ile bir beyaz liste kullanır. Eşleşen yoksa, uygulama tarafından verilen varsayılan kullanın.Zend_Translate
: yerelin gelen dil kodu ile başlar. Ancak kullanıcının tercih ettiği dili değiştirirse, olduğu gibi yerel bırakın (belki de hiçbir eşleşen yerel yeni dil kodu ve eski ülke koduna göre orada) ve sadeceZend_Translate
dil kodunu değiştirmek.Zend_Currency
: varsayılan olarak yerel kullanın. Kullanıcı tercih edilen para birimi değiştirirse, sadece para değil, yerel değiştirin. Para değişimi kullanıcı aynı zamanda onun yereli değiştirmek istiyor anlamına gelmez, çünkü böylece biçimlendirme eski yerel göre kalacaktı.
Bu yaklaşım kabul edilebilir olacaktır? Tarayıcılar yerel böyle ayarlandığında, adım 1 ile bir sorun var:
- de
- tr
Belki uygulama Alman desteklemiyor, ama kısa bir yerel olduğu için, uygulama yerine tr kullanacaktır. Ben tam bir yerele kısa yerel 'yükseltme' olamaz çünkü Ama, bu sorunu çözmek hangi çözüm bilmiyorum.