Nasıl: Uygulamayı yerelleştirme

Bu öğreticide, LocBaml aracını kullanarak yerelleştirilmiş uygulama oluşturma açıkmektedir.

Not

LocBaml aracı üretime hazır bir uygulama değildir. Bazı yerelleştirme API'lerini kullanan bir örnek olarak sunulmuştur ve bir yerelleştirme aracını nasıl yazabilirsiniz?

Genel Bakış

Bu makale, bir uygulamayı yerelleştirmeye adım adım bir yaklaşım sağlar. İlk olarak, çevrilecek metnin ayıklanana kadar uygulamasını hazırlarsiniz. Metin çevrildikten sonra, çevrilmiş metni özgün uygulamanın yeni bir kopyasıyla birleştirin.

Örnek uygulama oluşturma

Bu adımda, uygulamalarınızı yerelleştirme için hazırlarsiniz. Örnek Windows Presentation Foundation (WPF) örneklerde, bu tartışmada kod örnekleri için kullanılacak bir HelloApp örneği sağlanır. Bu örneği kullanmak için LocBamlAraç Extensible Application Markup Language (XAML) dosyalarını indirin.

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

  2. Proje dosyasında geliştirme dilini belirtin; böylece MSBuild bağımsız dil kaynaklarını içermesi için bir ana derleme ve bir uydu derlemesi (.resources.dll uzantısına sahip bir dosya) oluşturulur. HelloApp örneğinde proje dosyası HelloApp.csproj'dır. Bu dosyada, aşağıdaki gibi tanımlanan geliştirme dilini bulabilirsiniz:

    <UICulture>en-US</UICulture>

  3. XAML dosyalarınıza Uids ekleyin. Uids, dosyalarda yapılan değişiklikleri izlemek ve çevrilen öğeleri tanımlamak için kullanılır. Dosyalarınıza Uids eklemek için proje updateuid dosyanız üzerinde çalıştırın:

    msbuild -t:updateuid helloapp.csproj

    Eksik veya yinelenen Uids 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çermeli. Örneğin HelloApp'in Pane1.xaml dosyasında aşağıdakini 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>
    

Bağımsız dil kaynakları uydu derlemesi oluşturma

Uygulama nötr dil kaynakları uydu derlemesi oluşturmak üzere yapılandırıldığında, uygulamayı derlemek. Bu, ana uygulama derlemesi ve yerelleştirme için LocBaml tarafından gereken nötr dil kaynakları uydu derlemesi üretir.

Uygulamayı derlemek için:

  1. Bir 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 bağımsız 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 örneklerde bulunur. LocBamlAraç Örneğinden C# dosyalarını indirin.

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

    msbuild locbaml.csproj

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

  4. LocBaml'i çalıştırarak belirtebilirsiniz seçenekler aşağıdaki gibidir.

    Seçenek Açıklama
    parse veya -p Bir dosya oluşturmak için Baml, kaynaklar veya DLL .csv veya .txt ayrıştırır.
    generate veya -g Çevrilmiş bir dosya kullanarak yerelleştirilmiş bir ikili dosya üretir.
    out veya -o {filedirectory] Çıktı dosyası adı.
    culture veya -cul {culture] Çıkış derlemelerinin yereli.
    translation veya -trans {translation.csv] Çevrilmiş veya yerelleştirilmiş dosya.
    asmpath veya -asmpath {filedirectory] XAML kodunuz özel denetimler içeriyorsa, özel denetim asmpath derlemesi için kaynağınız gerekir.
    nologo Logo veya telif hakkı bilgisi görüntülemez.
    verbose Ayrıntılı mod bilgilerini görüntüler.

    Not

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

Bir dosyayı ayrıştırmak için LocBaml kullanma

LocBaml aracını oluşturduğunuza göre, yerelleştirilmiş metin içeriğini ayıklamak HelloApp.resources.dll için bu aracı kullanabilirsiniz.

  1. Bu LocBaml.exe ana uygulama derlemenin oluşturularak uygulamanın bin\debug klasörüne kopyalayın.

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

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

    Not

    Giriş dosyası HelloApp.resources.dll, her iki dosyanın da aynı dizinde olması LocBaml.exe dosyalardan birini taşımak için dosyalardan birini taşımak için aynı dizinde değildir.

  3. Dosyaları ayrıştırmak için LocBaml dosyasını çalıştırarak, çıktı virgülle (.csv dosyaları) veya sekmeler (dosya dosyaları) ile ayrılmış yedi .txt oluşur. Aşağıda, dosyanın ayrıştır .csv dosyası HelloApp.resources.dll:

    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 şu şekildedir:

    Aşağıdaki tabloda bu alanların dosyanın sınırlandırılmış değerleriyle nasıl eş .csv gösterilir:

    BAML adı Kaynak anahtarı Kategori Okunabilirlik Modifiability Yorumlar Değer
    HelloApp.g.en-US.resources:window1.baml Stack1:System. Windows. Controls.StackPanel.$Content Yoksayma FALSE FALSE #Text1;#Text2
    HelloApp.g.en-US.resources:window1.baml Text1:System. Windows. Controls.TextBlock.$Content Hiçbiri TRUE TRUE Hello World
    HelloApp. g. en-US. resources: Window1. BAML Metin2: sistem. Windows. Controls. TextBlock. $Content Hiçbiri TRUE TRUE Güle dünya

    Comments alanı için tüm değerlerin değer içermediğini unutmayın; bir alanın değeri yoksa, boştur. Ayrıca, ilk satırdaki öğenin okunabilir ve değiştirilebilir olmadığından ve Kategori değeri olarak "Yoksay" değerine sahip olduğuna dikkat edin; hepsi değerin yerelleştirilemeyen olmadığını gösterir.

  4. Özellikle büyük dosyalarda, ayrıştırılmış dosyalardaki yerelleştirilebilir öğelerin bulunmasını kolaylaştırmak için öğeleri kategoriye, okunabilirlik ve modifime göre sıralayabilir veya filtreleyebilirsiniz. Örneğin, okunamaz ve değiştirilemeyen değerleri filtreleyebilirsiniz.

Yerelleştirilebilir içeriği çevir

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 Microsoft Excel ' de görüntülemek ve son sütunda (değer) çeviri değişiklikleri yapmak.

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

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

  1. Yeni bir HelloApp.resources.dll dosyası oluşturmak için aşağıdaki sözdizimini 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

    Not

    Hello.csv giriş dosyası yürütülebilir dosya ile aynı dizinde değilse, LocBaml.exe her iki dosyanın aynı dizinde olması için dosyalardan birini taşıyın.

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

  3. "Merhaba Dünya" ve "gücüde Dünya" Artık uygulamanıza çevrilmelidir.

  4. Farklı bir kültüre çevirmek için, çevirinizin bulunduğu dilin kültürünü kullanın. Aşağıdaki örnek, Fransızca-Kanada 'ya nasıl çevrileceğini gösterir:

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

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

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

  7. Yeni uydu derlemesini test etmek için uygulamanızın ç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, App. xaml. cs ' ye 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ı derlemelerin LocBaml yerel dizinine kopyalanması veya GAC 'ye yüklenmesi gerekir. Bu gereklidir çünkü yerelleştirme API 'sinin, ikili XAML (BAML) okurken bağımlı derlemelere erişimi olması gerekir.

  • Ana derleme imzalanmışsa, oluşturulan kaynak DLL 'nin yüklenmesi için de imzalı olmalıdır.

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

Ayrıca bkz.