Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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
updateuidçalıştırın:msbuild -t:updateuid helloapp.csprojEksik veya yinelenen Uid'leriniz 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ç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:
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 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
LocBaml derlemek için gereken tüm dosyalar WPF örneklerinde bulunur. LocBaml Aracı ÖrneğiC# dosyalarını indirin.
Aracı oluşturmak için komut satırından proje dosyasını (locbaml.csproj) çalıştırın:
msbuild locbaml.csprojYeni oluşturulan yürütülebilir dosyayı (locbaml.exe) bulmak için Kutusu\Yayın 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 Açıklama parseveya-pBaml, kaynaklar veya DLL dosyalarını ayrıştırarak bir .csv veya .txt dosyası oluşturur. generateveya-gÇevrilmiş bir dosya kullanarak yerelleştirilmiş ikili dosya oluşturur. outveya-o{filedirectory]Çıkış dosyası adı. cultureveya-cul{kültür]Çıktı derlemelerinin yerelleştirmesi. { translation]-transveyaÇevrilmiş veya yerelleştirilmiş dosya. asmpathveya-asmpath{filedirectory]XAML kodunuz özel denetimler içeriyorsa, özel denetim derlemesine asmpathsağlamanız gerekir.nologoLogo veya telif hakkı bilgisi görüntülemez. verboseAyrıntılı mod bilgilerini görüntüler. Uyarı
Aracı çalıştırırken seçeneklerin listesine ihtiyacınız varsa,
yazın ve enter 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 ayrıştırmak için bu aracı kullanmaya hazırsınız.
LocBaml.exe 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.csvUyarı
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.
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:
BAML Adı. Kaynak dilin 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 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.
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ştirilebilirlik 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
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.
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-USUyarı
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.
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.
"Hello World" 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-CAAna 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.
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 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
.NET Desktop feedback