WPF için Genelleştirme

Bu konu, küresel pazar için Windows Presentation Foundation (WPF) uygulamaları yazarken bilmeniz gereken sorunları tanıtır. Genelleştirme programlama öğeleri ad alanındaki .NET'te System.Globalization tanımlanır.

XAML Genelleştirmesi

Genişletilebilir Uygulama biçimlendirme dili (XAML) XML'yi temel alır ve XML belirtiminde tanımlanan genelleştirme desteğinden yararlanır. Aşağıdaki bölümlerde bilmeniz gereken bazı XAML özellikleri açıklanmaktadır.

Karakter Başvuruları

Karakter başvurusu, temsil ettiği belirli Unicode karakterinin UTF16 kod birimini ondalık veya onaltılık olarak verir. Aşağıdaki örnekte, COPTIC BÜYÜK HARF HORI veya 'Ϩ' için ondalık karakter başvurusu gösterilmektedir:

Ϩ

Aşağıdaki örnekte onaltılık karakter başvurusu gösterilmektedir. Onaltılık sayının önünde x işareti olduğuna dikkat edin.

Ϩ

Kodlama

XAML tarafından desteklenen kodlama ASCII, Unicode UTF-16 ve UTF-8'dir. Kodlama deyimi XAML belgesinin başındadır. Kodlama özniteliği yoksa ve bayt sırası yoksa ayrıştırıcı varsayılan olarak UTF-8 olarak ayarlanır. Tercih edilen kodlamalar UTF-8 ve UTF-16'dır. UTF-7 desteklenmez. Aşağıdaki örnek, bir XAML dosyasında UTF-8 kodlamasının nasıl belirtileceğini gösterir.

?xml encoding="UTF-8"?

Dil Özniteliği

XAML, bir öğenin dil özniteliğini temsil etmek için xml:lang kullanır. sınıfından CultureInfo yararlanmak için dil özniteliği değerinin tarafından CultureInfoönceden tanımlanmış kültür adlarından biri olması gerekir. xml:lang öğe ağacında devralınabilir (bağımlılık özelliği devralması nedeniyle xml kurallarına göre değil) ve açıkça atanmamışsa varsayılan değeri boş bir dizedir.

Dil özniteliği, bölgesel dilleri belirtmek için çok kullanışlıdır. Örneğin Fransızca'nın Fransa, Quebec, Belçika ve İsviçre'de farklı yazım, sözcük ve söylenişi vardır. Ayrıca Çince, Japonca ve Korece kod noktalarını Unicode olarak paylaşır, ancak ideografik şekiller farklıdır ve tamamen farklı yazı tipleri kullanırlar.

Aşağıdaki Genişletilebilir Uygulama Biçimlendirme Dili (XAML) örneği, Kanada Fransızcası fr-CA belirtmek için dil özniteliğini kullanır.

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

XAML, vekiller de dahil olmak üzere tüm Unicode özelliklerini destekler. Karakter kümesi Unicode ile eşlenebildiği sürece desteklenir. Örneğin, GB18030 Çince, Japonca ve Korece (CFK) uzantısı A ve B ile vekil çiftleriyle eşlenen bazı karakterleri tanıtır, bu nedenle tam olarak desteklenir. WPF uygulaması, vekil çiftleri olup olmadığını anlamadan dizeleri işlemek veya karakterleri birleştirmek için kullanabilir StringInfo .

XAML ile Uluslararası Kullanıcı Arabirimi Tasarlama

Bu bölümde, uygulama yazarken göz önünde bulundurmanız gereken kullanıcı arabirimi (UI) özellikleri açıklanmaktadır.

Uluslararası Metin

WPF, Microsoft .NET Framework tarafından desteklenen tüm yazma sistemleri için yerleşik işleme içerir.

Şu anda aşağıdaki betikler desteklenmektedir:

  • Arapça

  • Bengali

  • Devanagari

  • Kiril

  • Yunanca

  • Gucerat dili

  • Gürmukhi

  • İbranice

  • İdeografik betikler

  • Kannada dili

  • Lao

  • Latin

  • Malayalam dili

  • Moğolca

  • Odia

  • Süryani

  • Tamil dili

  • Telugu dili

  • Thaana

  • Tay dili*

  • Tibetçe

*Bu sürümde Tay dili metinlerin görüntülenmesi ve düzenlenmesi desteklenir; sözcüğün kırılması değildir.

Aşağıdaki betikler şu anda desteklenmiyor:

  • Khmer

  • Korece Eski Hangul

  • Myanmar

  • Seylanca

Tüm yazma sistemi altyapıları OpenType yazı tiplerini destekler. OpenType yazı tipleri, yazı tipi oluşturucularının daha iyi uluslararası ve üst düzey tipografik yazı tipleri tasarlamasını sağlayan OpenType düzen tablolarını içerebilir. OpenType yazı tipi düzeni tabloları, metin düzenini geliştirmek için metin işleme uygulamalarını etkinleştiren glif değiştirmeleri, glif konumlandırma, gerekçelendirme ve temel konumlandırma hakkında bilgi içerir.

OpenType yazı tipleri, Unicode kodlama kullanılarak büyük karakter kümelerinin işlenmesine olanak tanır. Bu tür kodlama, geniş uluslararası desteğin yanı sıra tipografik glif varyantları için de olanak sağlar.

WPF metin işleme, çözümleme bağımsızlığını destekleyen Microsoft ClearType alt piksel teknolojisi tarafından desteklenir. Bu, okunabilirliği önemli ölçüde artırır ve tüm betikler için yüksek kaliteli dergi stili belgeleri destekleme olanağı sağlar.

Uluslararası Düzen

WPF yatay, çift yönlü ve dikey düzenleri desteklemek için çok kullanışlı bir yol sağlar. Sunu çerçevesinde FlowDirection özelliği düzeni tanımlamak için kullanılabilir. Akış yönü desenleri şunlardır:

  • LeftToRight - Latin, Doğu Asya ve benzeri için yatay düzen.

  • RightToLeft - Arapça, İbranice vb. için çift yönlü.

Yerelleştirilebilir Uygulamalar Geliştirme

Genel tüketim için bir uygulama yazarken uygulamanın yerelleştirilebilir olması gerektiğini unutmayın. Aşağıdaki konular dikkate alınması gereken noktalara işaret ediyor.

Çok Dilde Kullanıcı Arabirimi

Çok Dilde Kullanıcı Arabirimi s (MUI), URI'leri bir dilden diğerine geçirmeye yönelik bir Microsoft desteğidir. WPF uygulaması, MUI'yi desteklemek için derleme modelini kullanır. Bir uygulama, dil bağımsız derlemelerinin yanı sıra dile bağımlı uydu kaynak derlemeleri içerir. Giriş noktası, ana derlemede yönetilen bir .EXE'dir. WPF kaynak yükleyicisi, kaynak aramayı ve geri dönüşü desteklemek için Framework'ün kaynak yöneticisinden yararlanır. Birden çok dil uydu derlemesi aynı ana derleme ile çalışır. Yüklenen kaynak derlemesi geçerli iş parçacığına CurrentUICulture bağlıdır.

Yerelleştirilebilir Kullanıcı Arabirimi

WPF uygulamaları, kullanıcı arabirimini tanımlamak için XAML kullanır. XAML, geliştiricilerin bir dizi özellik ve mantık içeren bir nesne hiyerarşisi belirtmesine olanak tanır. XAML'nin birincil kullanımı WPF uygulamaları geliştirmektir, ancak herhangi bir ortak dil çalışma zamanı (CLR) nesnesinin hiyerarşisini belirtmek için kullanılabilir. Geliştiricilerin çoğu XAML kullanarak uygulamalarının kullanıcı arabirimini belirtir ve kullanıcı etkileşimine tepki vermek için C# gibi bir programlama dili kullanır.

Kaynak açısından bakıldığında kullanıcı arabirimi bir kaynak öğesidir ve bu nedenle uluslararası dilleri desteklemek için son dağıtım biçimi yerelleştirilebilir olmalıdır. XAML olayları işleyemediğinden, birçok XAML uygulaması bunu yapmak için kod blokları içerir. Daha fazla bilgi için bkz . WPF'de XAML. Bir XAML dosyası XAML'nin BAML biçiminde belirteç haline getirildiğinde kod çıkarılır ve farklı ikili dosyalar halinde derilir. XAML dosyalarının, görüntülerinin ve diğer yönetilen kaynak nesnelerinin BAML biçimi, diğer dillere yerelleştirilebilen uydu kaynak derlemesine veya yerelleştirme gerekli olmadığında ana derlemeye eklenir.

Dekont

WPF uygulamaları dize tabloları, görüntüler vb. dahil olmak üzere tüm FrameworkCLR kaynaklarını destekler.

Yerelleştirilebilir Uygulamalar Oluşturma

Yerelleştirme, bir kullanıcı arabirimini farklı kültürlere uyarlamak anlamına gelir. Bir WPF uygulamasını yerelleştirilebilir hale getirmek için geliştiricilerin tüm yerelleştirilebilir kaynakları bir kaynak derlemesinde derlemesi gerekir. Kaynak derlemesi farklı dillerde yerelleştirilir ve arka planda kod yüklemek için kaynak yönetimi API'sini kullanır. WPF uygulaması için gereken dosyalardan biri proje dosyasıdır (.proj). Uygulamanızda kullandığınız tüm kaynaklar proje dosyasına eklenmelidir. Bir .csproj dosyasındaki aşağıdaki örnek bunun nasıl yapılacağını gösterir.

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

Uygulamanızda bir kaynak kullanmak için bir örneği ResourceManager oluşturun ve kullanmak istediğiniz kaynağı yükleyin. Aşağıdaki örnek bunun nasıl yapılacağını göstermektedir.

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

Yerelleştirilmiş Uygulamalarla ClickOnce Kullanma

ClickOnce, Visual Studio 2005 ile birlikte sunulacak yeni bir Windows Forms dağıtım teknolojisidir. Web uygulamalarının yüklenmesini ve yükseltilmesine olanak tanır. ClickOnce ile dağıtılan bir uygulama yerelleştirildiğinde, yalnızca yerelleştirilmiş kültürde görüntülenebilir. Örneğin, dağıtılan bir uygulama Japonca olarak yerelleştirilmişse, yalnızca Japonca Microsoft Windows'ta görüntülenebilir, İngilizce Windows'ta görüntülenmez. Japon kullanıcıların Windows'un İngilizce sürümünü çalıştırması yaygın bir senaryo olduğundan bu durum bir sorun oluşturur.

Bu sorunun çözümü, nötr dil geri dönüş özniteliğini ayarlamaktır. Uygulama geliştiricisi isteğe bağlı olarak kaynakları ana derlemeden kaldırabilir ve kaynakların belirli bir kültüre karşılık gelen bir uydu derlemesinde bulunabileceğini belirtebilir. Bu işlemi denetlemek için kullanın NeutralResourcesLanguageAttribute. sınıfının oluşturucusununNeutralResourcesLanguageAttribute, geri dönüş kaynaklarını ayıklaması gereken konumu ResourceManager belirtmek için bir UltimateResourceFallbackLocation parametre alan iki imzası vardır: ana derleme veya uydu derlemesi. Aşağıdaki örnekte özniteliğinin nasıl kullanılacağı gösterilmektedir. Son geri dönüş konumu için kod, şu anda yürütülmekte olan derlemenin dizininin "de" alt dizinindeki kaynakları aramasına neden olur ResourceManager .

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

Ayrıca bkz.