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.
Uygulamanızı yerelleştirmeyi başlatmak istediğiniz noktaya geliştirin.
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>
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
updateuid
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ş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:
Dinamik bağlantı kitaplığı (DLL) oluşturmak için HelloApp'i derleyin:
msbuild helloapp.csproj
Yeni oluşturulan ana uygulama derlemesi HelloApp.exe şu klasörde oluşturulur: C:\HelloApp\Bin\Debug
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
LocBaml derlemek için gereken tüm dosyalar WPF örneklerinde bulunur. LocBaml Araç Örneği'nden C# dosyalarını indirin.
Aracı oluşturmak için komut satırından proje dosyasını (locbaml.csproj) çalıştırın:
msbuild locbaml.csproj
Yeni oluşturulan yürütülebilir dosyayı (locbaml.exe) bulmak için Bin\Release dizinine gidin. Örnek: C:\LocBaml\Bin\Release\locbaml.exe
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.
LocBaml.exe dosyasını uygulamanızın ana uygulama derlemesinin oluşturulduğu bin\debug klasörüne kopyalayın.
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.
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:
BAML Adı. Kaynak dil uydu derlemesine göre 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 yerelleştirici tarafından okunup okunamayacağı. Bkz. Yerelleştirme Öznitelikleri ve Açıklamaları.
Değiştirilebilirlik. Değerin yerelleştirici tarafından değiştirilip değiştirilemeyeceği. Bkz. Yerelleştirme Öznitelikleri ve Açıklamaları.
Yorumlar. Bir değerin nasıl yerelleştirileceğini belirlemeye yardımcı olmak için değerin ek açıklaması. Bkz. Yerelleştirme Öznitelikleri ve Açıklamaları.
Değer. İstenen kültüre çevrilecek metin değeri.
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.
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.
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.
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.
"Merhaba Dünya" ve "Goodbye World" artık uygulamanızda çevrilmelidir.
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
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.
Oluşturulan uydu derlemesini yeni klasöre kopyalayın.
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.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin