WPF - Yerelleştirme

Yerelleştirme, uygulamanın desteklediği belirli kültürler için uygulama kaynaklarının yerelleştirilmiş sürümlere dönüştürülmesidir.

Uygulamanızı geliştirdiğinizde ve uygulamanız yalnızca tek bir dilde mevcut olduğunda, müşterilerinizin sayısını ve işletmenizin boyutunu sınırlamış olursunuz. İşinizi de artıracak müşteri tabanınızı genişletmek istiyorsanız, ürününüzün küresel bir kitleye erişilebilir ve erişilebilir olması gerekir. Uygun maliyetlilocalization daha fazla müşteriye ulaşmanın en iyi ve en ekonomik yollarından biridir.

WPF'de, yerelleştirilebilir uygulamaların oluşturulması çok kolaydır resxyerelleştirme için en basit çözüm olan dosya. Nasıl çalıştığını anlamak için basit bir örnek alalım -

  • Adıyla yeni bir WPF projesi oluşturun WPFLocalization.

  • Çözüm gezgininizde, Özellikler klasörü altında Resources.resx dosyasını göreceksiniz.

  • Erişim değiştiriciyi içten genel olarak değiştirin, böylece XAML dosyasında erişilebilir.

  • Şimdi uygulamamızda kullanacağımız aşağıdaki dizenin adını ve değerlerini ekleyin.

  • Resources.en.resx ve Resources.ru-RU.resx adlarıyla Resources.resx dosyasının iki kopyasını oluşturun. Bunlar, dile ve ülke / bölge adına özgü adlandırma kurallarıdır ve Ulusal Dil Desteği (NLS) API Başvurusu'nda bulunabilir (https://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ) sayfası.

  • Resources.ru-RU.resx'teki değerleri aşağıda gösterildiği gibi Rusça kelimelere değiştirin.

  • Tasarım penceresine gidip üç metin kutusunu, üç etiketi ve üç düğmeyi sürükleyelim.

  • XAML dosyasında, önce kaynakları yerelleştirme xmlns kullanmak için ad alanı bildirimini ekleyin : p = "clr-namespace: WPFLocalization.Properties"

  • Tüm kontrollerin özelliklerini aşağıda gösterildiği gibi ayarlayın. Bu örnekte, XAML dosyasındaki pencerenin etiketlerinin, düğmelerinin ve Başlığının içeriği için kodlanmış dizeleri kullanmayacağız. * .Resx dosyalarında tanımlanan dizeleri kullanacağız. Örneğin, pencerenin Başlığı için, "Title =" {x: Static p: Resources.Title} "" gibi * .resx dosyasında tanımlanan Başlık dizesini kullanırız.

  • Burada, denetimlerin oluşturulduğu ve farklı özelliklerle başlatıldığı XAML dosyası.

<Window x:Class = "WPFLocalization.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:local = "clr-namespace:WPFLocalization" 
   xmlns:p = "clr-namespace:WPFLocalization.Properties"
   Title = "{x:Static p:Resources.Title}" Height = "350" Width = "604">
	
   <Grid> 
      <TextBox x:Name = "textBox" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,45,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "304"/>
			
      <Label x:Name = "label" Content = "{x:Static p:Resources.Name}"
         HorizontalAlignment = "Left" Margin = "52,45,0,0" VerticalAlignment = "Top" Width = "86"/>
			 
      <TextBox x:Name = "textBox1" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,102,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "304"/> 
			
      <Label x:Name = "label1" Content = "{x:Static p:Resources.Address}" 
         HorizontalAlignment = "Left" Margin = "52,102,0,0" VerticalAlignment = "Top" Width = "86"/>
			
      <TextBox x:Name = "textBox2" HorizontalAlignment = "Left" Height = "23" 
         Margin = "128,157,0,0" TextWrapping = "Wrap" VerticalAlignment = "Top" Width = "80"/>
			
      <Label x:Name = "label2" Content = "{x:Static p:Resources.Age}" 
         HorizontalAlignment = "Left" Margin = "52,157,0,0" VerticalAlignment = "Top" Width = "86"/>
			
      <Button x:Name = "button" Content = "{x:Static p:Resources.OK_Button}" 
         HorizontalAlignment = "Left" Margin = "163,241,0,0" VerticalAlignment = "Top" Width = "75"/> 
			
      <Button x:Name = "button1" Content = "{x:Static p:Resources.Cancel_Button}" 
         HorizontalAlignment = "Left" Margin = "282,241,0,0" VerticalAlignment = "Top" Width = "75"/>
			
      <Button x:Name = "button2" Content = "{x:Static p:Resources.Help_Button}" 
         HorizontalAlignment = "Left" Margin = "392,241,0,0" VerticalAlignment = "Top" Width = "75"/> 
   </Grid> 
	
 </Window>
  • Yukarıdaki kod derlendiğinde ve çalıştırıldığında, farklı kontroller içeren aşağıdaki pencereyi göreceksiniz.

  • Varsayılan olarak, program varsayılan Resources.resx'i kullanır. Resources.ru-RU.resx dosyasında tanımlanan metni Rusça olarak göstermek istiyorsanız, aşağıda gösterildiği gibi program App.xaml dosyasında başladığında kültürü açıkça ayarlamanız gerekecektir.

using System.Windows;

namespace WPFLocalization {
   /// <summary> 
      /// Interaction logic for App.xaml 
   /// </summary> 
	
   public partial class App : Application {
	
      App() { 
         System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ru-RU");
         //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en"); 
      } 
   } 
}

Uygulamanızı çalıştırdığınızda, tüm metni Rusça olarak göreceksiniz.

Yukarıdaki kodu çalıştırmanızı ve diğer kültürler için de resx dosyaları oluşturmanızı öneririz.