2009-12-12 16 views
6

C# ile yazdığım bir uygulamayı yerelleştirmek için çalışıyorum..NET Küreselleşme ve Uydu DLL'sinin

Ancak uygulama dizinleri yükler anlamına gelir dilleri oldukça çok sayıda gerektirir sonuçta olacaktır:

şey (http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx Bu eğitimde göre) her formun dizeleri çevirmek için uydu kaynak meclisleri kullanarak, güzel çalışıyor görünüyor çalışma dizinimde (örneğin/zh-tw,/zh-cn,/fr-FR,/ja-JP vb.). Bunları bir/diller veya/alt kaynakları alt dizininde bularak bunu biraz temizlemek istiyorum (diğer bir deyişle, "uydu meclisleri için temel yolu"). Ama yüksek ve alçak arama yaptım ve bu uydu meclislerinin yerini kişiselleştirmenin herhangi bir yolunu bulamadım.

Herhangi bir ipucu çok takdir edilecektir!

cevap

11

bir daha da kolay bir çözüm bulundu! Bir post-build olay ayrıca kullanışlı derleme sonra orada onları otomatik kopya :)

1

IMHO, burada herhangi bir değişiklik olmaz. NET'te, uydu depoları ve bu alt dizinlere dayanan yerelleştirme için standart bir mekanizma vardır. Örneğin, yerelleştirme için bir araç kullanırsanız. Passolo, aynı zamanda bu yapıyı ve başka hiçbir şeyi desteklemeyecek.

Çok sayıda alt dizin bulunacak ... yani ne? Her şey oldukça karmaşık olacak.

<configuration> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath=".;Lang" /> 
    </assemblyBinding> 
</runtime> 
</configuration> 

Sonra sadece "Lang" alt dizinindeki tüm bu dizinleri atmak olabilir ve kutunun dışında sağ çalışacağız: app.config -

0

(yani * .resx)/Kaynak klasörü tüm kaynak dosyaları ekleyin ve aşağıdaki gibi ResourceManager nesne oluşturmak

System.Resources.ResourceManager rm = new System.Resources.ResourceManager ("ApplicationName.Resources.MyResource", Assembly.GetExecutingAssembly());

lang de-DE için buradaki resx dosyanızın adı MyResource.de-DE.resx

olarak adlandırılacaktır.