Aracılığıyla paylaş


Nasıl yapılır: Uygulamayı yerelleştirme

Bu öğreticide LocBaml aracını kullanarak yerelleştirilmiş bir uygulamanın nasıl oluşturulacağı açıklanır.

Dekont

LocBaml aracı üretime hazır bir uygulama değildir. Yerelleştirme API'lerinden bazılarını kullanan ve yerelleştirme aracını nasıl yazabileceğinizi gösteren bir örnek olarak sunulur.

Genel Bakış

Bu makale, bir uygulamayı yerelleştirmeye yönelik adım adım bir yaklaşım sunar. İlk olarak, çevrilecek metnin ayıklanması için uygulamanızı hazırlarsınız. Metin çevrildikten sonra, çevrilen metni özgün uygulamanın yeni bir kopyasıyla birleştirirsiniz.

Örnek uygulama oluşturma

Bu adımda, uygulamanızı yerelleştirme için hazırlarsınız. Windows Presentation Foundation (WPF) örneklerinde, bu tartışmadaki kod örnekleri için kullanılacak bir HelloApp örneği sağlanır. Bu örneği kullanmak isterseniz LocBaml Araç Örneği'nden Genişletilebilir Uygulama Biçimlendirme Dili (XAML) dosyalarını indirin.

  1. Uygulamanızı yerelleştirmeyi başlatmak istediğiniz noktaya geliştirin.

  2. MSBuild'in nötr dil kaynaklarını içerecek bir ana derleme ve bir uydu derlemesi (.resources.dll uzantısına sahip bir dosya) oluşturması için proje dosyasında geliştirme dilini belirtin. HelloApp örneğindeki proje dosyası HelloApp.csproj şeklindedir. Bu dosyada, geliştirme dilinin aşağıdaki gibi tanımlandığını göreceksiniz:

    <UICulture>en-US</UICulture>

  3. XAML dosyalarınıza Uid'ler ekleyin. Uid'ler, dosyalarda yapılan değişiklikleri izlemek ve çevrilmesi gereken öğeleri tanımlamak için kullanılır. Dosyalarınıza Uid eklemek için proje dosyanızda komutunu çalıştırın updateuid :

    msbuild -t:updateuid helloapp.csproj

    Eksik veya yinelenen Uid'leriniz olmadığını doğrulamak için komutunu çalıştırın checkuid:

    msbuild -t:checkuid helloapp.csproj

    çalıştırdıktan updateuidsonra dosyalarınız Uids içermelidir. Örneğin, HelloApp'in Pane1.xaml dosyasında aşağıdakileri bulmanız gerekir:

    <StackPanel x:Uid="StackPanel_1">
      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>
      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>
    </StackPanel>
    

Nötr dil kaynakları uydu derlemesini oluşturma

Uygulama nötr dilli kaynaklar uydu derlemesi oluşturacak şekilde yapılandırıldıktan sonra uygulamayı oluşturursunuz. Bu, ana uygulama derlemesinin yanı sıra yerelleştirme için LocBaml tarafından gerekli olan nötr dilli kaynaklar uydu derlemesini oluşturur.

Uygulamayı derlemek için:

  1. Dinamik bağlantı kitaplığı (DLL) oluşturmak için HelloApp'i derleyin:

    msbuild helloapp.csproj

  2. Yeni oluşturulan ana uygulama derlemesi HelloApp.exe şu klasörde oluşturulur: C:\HelloApp\Bin\Debug

  3. Yeni oluşturulan nötr dilli kaynaklar uydu derlemesi HelloApp.resources.dll şu klasörde oluşturulur: C:\HelloApp\Bin\Debug\en-US

LocBaml aracını oluşturma

  1. LocBaml derlemek için gereken tüm dosyalar WPF örneklerinde bulunur. LocBaml Araç Örneği'nden C# dosyalarını indirin.

  2. Aracı oluşturmak için komut satırından proje dosyasını (locbaml.csproj) çalıştırın:

    msbuild locbaml.csproj

  3. Yeni oluşturulan yürütülebilir dosyayı (locbaml.exe) bulmak için Bin\Release dizinine gidin. Örnek: C:\LocBaml\Bin\Release\locbaml.exe

  4. LocBaml'i çalıştırdığınızda belirtebileceğiniz seçenekler aşağıdaki gibidir.

    Seçenek Tanım
    parse veya -p Baml, kaynaklar veya DLL dosyalarını ayrıştırarak .csv veya .txt dosyası oluşturur.
    generate veya -g Çevrilmiş bir dosya kullanarak yerelleştirilmiş ikili dosya oluşturur.
    out veya -o {filedirectory] Çıkış dosyası adı.
    culture veya -cul {culture] Çıkış derlemelerinin yerel ayarı.
    translation veya -trans {translation.csv] Çevrilmiş veya yerelleştirilmiş dosya.
    asmpath veya -asmpath {filedirectory] XAML kodunuz özel denetimler içeriyorsa, öğesini özel denetim derlemesine sağlamanız asmpath gerekir.
    nologo Logo veya telif hakkı bilgisi görüntülemez.
    verbose Ayrıntılı mod bilgilerini görüntüler.

    Dekont

    Aracı çalıştırırken seçeneklerin listesine ihtiyacınız varsa girin LocBaml.exe ve Enter tuşuna basın.

Dosyayı ayrıştırmak için LocBaml kullanma

LocBaml aracını oluşturduğunuza göre, yerelleştirilecek metin içeriğini ayıklamak için HelloApp.resources.dll dosyasını ayrıştırmak için bu aracı kullanmaya hazırsınız.

  1. LocBaml.exe dosyasını uygulamanızın ana uygulama derlemesinin oluşturulduğu bin\debug klasörüne kopyalayın.

  2. Uydu derleme dosyasını ayrıştırmak ve çıkışı .csv dosyası olarak depolamak için aşağıdaki komutu kullanın:

    LocBaml.exe /parse HelloApp.resources.dll /out:Hello.csv

    Dekont

    Giriş dosyası olan HelloApp.resources.dll dosyası LocBaml.exe ile aynı dizinde değilse, her iki dosya da aynı dizinde olacak şekilde dosyalardan birini taşır.

  3. Dosyaları ayrıştırmak için LocBaml çalıştırdığınızda, çıktı virgül (.csv dosyaları) veya sekmelerle (.txt dosyaları) ayrılmış yedi alandan oluşur. Aşağıda HelloApp.resources.dll için ayrıştırılmış .csv dosyası gösterilmektedir:

    Ayrıştırılmış .csv dosyası
    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,#Text1;#Text2;
    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,Merhaba Dünya
    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,Goodbye World

    Yedi alan şunlardır:

    Aşağıdaki tabloda, bu alanların .csv dosyasının sınırlandırılmış değerleriyle nasıl eşlendiği gösterilmektedir:

    BAML adı Kaynak anahtarı Kategori Okuna -bilir -lik Modifiability Açıklamalar Değer
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Yoksay FALSE FALSE #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content None DOĞRU DOĞRU Hello World
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content None DOĞRU DOĞRU Güle Güle Dünya

    Açıklamalar alanının tüm değerlerinin değer içermediğini, bir alanın değeri yoksa boş olduğuna dikkat edin. Ayrıca, ilk satırdaki öğenin ne okunabilir ne de değiştirilebilir olduğuna ve Kategori değeri olarak "Yoksay"a sahip olduğuna ve bunların tümü değerin yerelleştirilebilir olmadığını gösterdiğine dikkat edin.

  4. Ayrıştırılmış dosyalarda, özellikle de büyük dosyalarda yerelleştirilebilir öğelerin bulunmasını kolaylaştırmak için, öğeleri Kategori, Okunabilirlik ve Değiştirilebilirliğe göre sıralayabilir veya filtreleyebilirsiniz. Örneğin, okunamayan ve değiştirilemez değerleri filtreleyebilirsiniz.

Yerelleştirilebilir içeriği çevirme

Ayıklanan içeriği çevirmek için kullanabileceğiniz herhangi bir aracı kullanın. Bunu yapmanın iyi bir yolu, kaynakları bir .csv dosyasına yazmak ve bunları Microsoft Excel'de görüntüleyerek son sütunda (değer) çeviri değişiklikleri yapmaktır.

Yeni bir .resources.dll dosyası oluşturmak için LocBaml kullanma

HelloApp.resources.dll dosyası LocBaml ile ayrıştırılarak tanımlanan içerik çevrildi ve özgün uygulamayla yeniden birleştirilmelidir. generate Yeni bir .resources.dll dosyası oluşturmak için veya -g seçeneğini kullanın.

  1. Yeni bir HelloApp.resources.dll dosyası oluşturmak için aşağıdaki söz dizimini kullanın. Kültürü en-US (/cul:en-US) olarak işaretleyin.

    LocBaml.exe /generate HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    Dekont

    Giriş dosyası olan Hello.csv dosyası yürütülebilir dosya olan LocBaml.exe ile aynı dizinde değilse, dosyalardan birini taşıyın; böylece her iki dosya da aynı dizinde olur.

  2. C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll dizinindeki eski HelloApp.resources.dll dosyasını yeni oluşturduğunuz HelloApp.resources.dll dosyanızla değiştirin.

  3. "Merhaba Dünya" ve "Goodbye World" artık uygulamanızda çevrilmelidir.

  4. Farklı bir kültüre çevirmek için, çeviri yaptığınız dilin kültürünü kullanın. Aşağıdaki örnekte Fransızca-Kanada diline nasıl çevrildiği gösterilmektedir:

    LocBaml.exe /generate HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. Ana uygulama derlemesi ile aynı derlemede, yeni uydu derlemesini barındıracak kültüre özgü yeni bir klasör oluşturun. Fransızca-Kanada için klasör fr-CA olacaktır.

  6. Oluşturulan uydu derlemesini yeni klasöre kopyalayın.

  7. Yeni uydu derlemesini test etmek için uygulamanızın altında çalıştırılacağı kültürü değiştirmeniz gerekir. Bunu iki şekilde yapabilirsiniz:

    • İşletim sisteminizin bölgesel ayarlarını değiştirin.

    • Uygulamanızda App.xaml.cs dosyasına aşağıdaki kodu ekleyin:

      <Application
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      
      using System.Windows;
      using System.Globalization;
      using System.Threading;
      
      namespace SDKSample
      {
          public partial class App : Application
          {
              public App()
              {
                  // Change culture under which this application runs
                  CultureInfo ci = new CultureInfo("fr-CA");
                  Thread.CurrentThread.CurrentCulture = ci;
                  Thread.CurrentThread.CurrentUICulture = ci;
              }
          }
      }
      
      
      Imports System.Windows
      Imports System.Globalization
      Imports System.Threading
      
      Namespace SDKSample
          Partial Public Class App
              Inherits Application
              Public Sub New()
                  ' Change culture under which this application runs
                  Dim ci As New CultureInfo("fr-CA")
                  Thread.CurrentThread.CurrentCulture = ci
                  Thread.CurrentThread.CurrentUICulture = ci
              End Sub
          End Class
      End Namespace
      

LocBaml Kullanmak için İpuçları

  • Özel denetimleri tanımlayan tüm bağımlı derlemeler LocBaml'in yerel dizinine kopyalanmalıdır veya GAC'ye yüklenmelidir. Yerelleştirme API'sinin, ikili XAML'yi (BAML) okurken bağımlı derlemelere erişimi olması gerektiğinden bu gereklidir.

  • Ana derleme imzalıysa, yüklenmesi için oluşturulan kaynak DLL'sinin de imzalanması gerekir.

  • Yerelleştirilmiş kaynak DLL'sinin sürümünün ana derlemeyle eşitlenmesi gerekir.

Ayrıca bkz.