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.

Uyarı

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ğiGeniş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 updateuid çalıştırın:

    msbuild -t:updateuid helloapp.csproj

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

    msbuild -t:checkuid helloapp.csproj

    updateuidçalıştırdıktan sonra 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ştur

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 dil 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 Aracı ÖrneğiC# 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 Kutusu\Yayın 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 Açıklama
    parse veya -p Baml, kaynaklar veya DLL dosyalarını ayrıştırarak bir .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 {kültür] Çıktı derlemelerinin yerelleştirmesi.
    {translation] -trans veya Çevrilmiş veya yerelleştirilmiş dosya.
    asmpath veya -asmpath {filedirectory] XAML kodunuz özel denetimler içeriyorsa, özel denetim derlemesine asmpath sağlamanız gerekir.
    nologo Logo veya telif hakkı bilgisi görüntülemez.
    verbose Ayrıntılı mod bilgilerini görüntüler.

    Uyarı

    Aracı çalıştırırken seçeneklerin listesine ihtiyacınız varsa, yazın ve enterbası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 ayrıştırmak için bu aracı kullanmaya hazırsınız.

  1. LocBaml.exe 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

    Uyarı

    Eğer HelloApp.resources.dllgiriş dosyası, LocBaml.exe ile aynı dizinde değilse, her iki dosyayı da aynı dizine getirmek için dosyalardan birini taşıyın.

  3. Dosyaları ayrıştırmak için LocBaml'yi çalıştırdığınızda, çıktı virgülle (.csv dosyalar) veya sekmelerle (.txt dosyaları) ayrılmış yedi alandan oluşur. Aşağıda, HelloApp.resources.dlliç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,,Elveda Dünya

    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 Okunaklılık Değiştirilebilirlik Yorumlar Değer
    HelloApp.g.en-US.resources:window1.baml Stack1:System.Windows.Controls.StackPanel.$Content Yok say YANLIŞ YANLIŞ #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System.Windows.Controls.TextBlock.$Content Hiç kimse DOĞRU DOĞRU Merhaba Dünya
    HelloApp.g.en-US.resources:window1.baml Text2:System.Windows.Controls.TextBlock.$Content Hiç kimse DOĞRU DOĞRU Hoşça Kal Dünya

    Açıklamalar alanının tüm değerlerinin değer içermediğini; bir alanın değeri yoksa boş olur. Ayrıca, ilk satırdaki öğenin ne okunabilir ne de değiştirilebilir olduğuna ve Kategori değeri olarak "Yoksay" değerine sahip olduğuna ve bunların tümünün 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, Okunabilirlikve Değiştirilebilirlikgö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

LocBaml ile HelloApp.resources.dll ayrıştırılarak tanımlanan içerik çevrildi ve özgün uygulamayla yeniden birleştirilmelidir. Yeni bir .resources.dll dosyası oluşturmak için generate 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 belirtin.

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

    Uyarı

    Hello.csvgiriş dosyası yürütülebilir dosyayla aynı dizinde değilse, LocBaml.exedosyalardan 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. "Hello World" 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-CAolacaktı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 yoldan biriyle yapabilirsiniz:

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

    • Uygulamanızda, aşağıdaki kodu App.xaml.cs dosyasına 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 Kullanma İ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 bakınız