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.
Uygulamalarınızı yerelleştirmeyi başlatmak istediğiniz noktaya geliştirin.
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>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
updateuiddosyanız üzerinde çalıştırın:msbuild -t:updateuid helloapp.csprojEksik veya yinelenen Uids olmadığını doğrulamak için
checkuidçalıştırın:msbuild -t:checkuid helloapp.csprojupdateuidç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:
Bir dinamik bağlantı kitaplığı (DLL) oluşturmak için HelloApp'i derleyin:
msbuild helloapp.csprojYeni oluşturulan ana uygulama derlemesi HelloApp.exe şu klasörde oluşturulur: C:\HelloApp\Bin\Debug
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
LocBaml derlemek için gereken tüm dosyalar WPF örneklerde bulunur. LocBamlAraç Örneğinden C# dosyalarını indirin.
Aracı derlemek için komut satırına proje dosyasını (locbaml.csproj) çalıştırın:
msbuild locbaml.csprojYeni oluşturulan yürütülebilir dosyayı bulmak için Bin\Release dizinine gidin (locbaml.exe). Örnek: C:\LocBaml\Bin\Release\locbaml.exe
LocBaml'i çalıştırarak belirtebilirsiniz seçenekler aşağıdaki gibidir.
Seçenek Açıklama parseveya-pBir dosya oluşturmak için Baml, kaynaklar veya DLL .csv veya .txt ayrıştırır. generateveya-gÇevrilmiş bir dosya kullanarak yerelleştirilmiş bir ikili dosya üretir. outveya-o{filedirectory]Çıktı dosyası adı. cultureveya-cul{culture]Çıkış derlemelerinin yereli. translationveya-trans{translation.csv]Çevrilmiş veya yerelleştirilmiş dosya. asmpathveya-asmpath{filedirectory]XAML kodunuz özel denetimler içeriyorsa, özel denetim asmpathderlemesi için kaynağınız gerekir.nologoLogo veya telif hakkı bilgisi görüntülemez. verboseAyrıntılı mod bilgilerini görüntüler. Not
Aracı çalıştırarak seçeneklerin listesine ihtiyacınız varsa girin ve
LocBaml.exeEnter 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.
Bu LocBaml.exe ana uygulama derlemenin oluşturularak uygulamanın bin\debug klasörüne kopyalayın.
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.csvNot
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.
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:
BAML Adı. Kaynak dil uydu derlemesi ile ilgili BAML kaynağının adı.
Kaynak Anahtarı. Yerelleştirilmiş kaynak tanımlayıcısı.
Kategori. Değer türü. Bkz. Yerelleştirme Öznitelikleri ve Açıklamalar.
Okunabilirlik. Değerin bir yerelleştirici tarafından okunıp okunamayıp okunmay silinip okunamayyrı. Bkz. Yerelleştirme Öznitelikleri ve Açıklamalar.
Değiştirilebilirlik. Değerin bir yerelleştirici tarafından değiştirilip değiştirilileyilip değiştirilileyilip değiştirilileyil olmadığı. Bkz. Yerelleştirme Öznitelikleri ve Açıklamalar.
Açıklamalar . Bir değerin nasıl yerelleştirilmiş olduğunu belirlemeye yardımcı olmak için değerin ek açıklaması. Bkz. Yerelleştirme Öznitelikleri ve Açıklamalar.
Değer. İstenen kültüre çevrilen metin değeri.
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.
Ö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.
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-USNot
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.
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.
"Merhaba Dünya" ve "gücüde Dünya" Artık uygulamanıza çevrilmelidir.
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-CAAna 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.
Oluşturulan uydu derlemesini yeni klasöre kopyalayın.
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.