2009-02-04 14 views
6

Küresel bir pazar için olan ve yerelleştirilebilir olması gereken bir uygulamam var. Gelişim sırasında, uydu meclislerim, yerimi değiştirdiğimde bile hiç alınmamış gibi görünüyordu. Bazı araştırmalardan sonra şimdi bunun neden olduğunu ve CurrentUICulture'ı kodda belirleyerek test edebildiğimi anlıyorum ve şeylerin beklendiği gibi çalıştığını doğruladım.Uygulamamda Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture varsayılanını ayarlamalı mıyım?

Şimdi, uygulamanın başlatılması için uygulamayı paketlemeye geliyorum ve uygulamam başladığında geçerli iş parçacığı için Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture ayarlanmasının iyi bir fikir olup olmadığından emin değilim. Artı tarafta benim app bölgesel ayarları değiştirerek (bu bir üst tarafı ise) yerelleştirilebilir olacaktır, ama bunun için dezavantajları olabilir endişeleniyorum. Aklıma hemen akan bir şey, yaptığım şey benim için iyi ve iyi olsa da, uygulamam tarafından oluşturulan herhangi bir ileti dizisine (burada ve etrafından okumaktan anladığım kadarıyla) geçerli olmayacaktır. Ben CurrentUICulture'ı da bunlara ayarlıyorum veya kullandığım herhangi bir bileşenle kendi iş parçacığı oluşturabilirim.

Başka sorunlar olabilir mi? CurrentCultures'ı standart uygulama veya aynı zamanda çatık olan bir şeyle aynı mı olacak şekilde ayarlıyor?

Bir karar vermeden önce iniş ve çıkışlar hakkında bilgi sahibi olmak istiyorum. Eğer ne yaptığınızı gerçekten emin olmadıkça

Teşekkür

Sam

cevap

5

Sam onunla oynama.

WinForms'i burada konuştuğumuzu kabul edeceğim. Çerçeve, tartışmasız en iyi ayarları sistemden alır (kullanıcı tarafından yapılandırıldığı gibi). Sorunuzdan sadece bir test problemi olabilir. Test amacıyla bir yer seçimi yapmak için #if DEBUG’ten sonra düzenli olarak bir kod koydum.

Durumumda kendi durumum: yerel ayarlarım Hollandalı (nl-NL) ama genellikle Windows'un ingilizce sürümlerini çalıştırıyorum. Eğer CurrentUICulture'ı geçersiz kılarsanız, genellikle OK olan Hollandalı versiyonu (varsa) alırdım. Ancak, bazı kontrollerin/eklentilerin İngilizce'de (ShowMessage kutuları ve std Dialog'lar dahil) kalmaya devam edeceğini epierce biliyorum. Kombinasyon çirkin.

Ayrıca CurrentCulture ile eşleşen uyduları eklemediğinizde durumu dikkate alın. Kullanıcı UI kültürü daha iyi bir seçenek olsa da, sistem programınızda varsayılan değere geri düşecektir. Tüm geri dönüş kurallarını bilmiyorum ama muhtemelen aşağıdaki gibi bir şey alabilirsiniz:

Kullanıcı fr-FR pencerelerinde fr-CA ayarlarını çalıştırır. Programınız en-ABD'ye geri döndü, kullanıcı n'est pas mutlu.

Benim tavsiyem:

  • Eğer geçersiz kılma inşa yoksa o zaman app.config
+0

Teşekkürler, tüm yararlı bilgiler. İlkelere katılıyorum ve seçeneğin açılıp kapanmasına izin verecek bir yaklaşım kullanacağımızı düşünüyorum. –

2

Eski soru anahtarı kullanın

  • bazı tarla testlerini, ancak gelen bazı yorumlar yapmak kullanıcı ve geliştirici:

    • Ben Norveçliyim, fakat bir sebepten dolayı bir İngilizce işletim sistemim var. Bölgesel ayarlarım Norveççe olduğu için başvurular Norveç'te ortaya çıktığında nefret ediyorum.
    • Thread.CurrentThread.CurrentCulture'u daha önce kullandım ve ilk başta iyi çalışıyor gibi gözükür ... sonra birdenbire yeni bir iş parçacığını ateşleyen bir şey var ... (benim uygulamam, ancak benim raporlarımda değil (örneğin raporlarımda)
  • İlgili konular