Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono problemy, o których należy pamiętać podczas pisania aplikacji Windows Presentation Foundation (WPF) na rynku globalnym. Elementy programowania globalizacji są definiowane w .NET w przestrzeni nazw System.Globalization.
Globalizacja XAML
Język XAML (Extensible Application Markup Language) jest oparty na kodzie XML i korzysta z obsługi globalizacji zdefiniowanej w specyfikacji XML. W poniższych sekcjach opisano niektóre funkcje XAML, o których należy pamiętać.
Referencje dotyczące charakteru
Referencja znaku podaje jednostkę kodową UTF16 określonego znaku Unicode, który reprezentuje, w formacie dziesiętnym lub szesnastkowym. W poniższym przykładzie przedstawiono odwołanie do dziesiętnego zapisu znaku KOPTYJSKIEJ WIELKIEJ LITERY HORI lub "Ϩ".
Ϩ
W poniższym przykładzie przedstawiono odwołanie do kodu znakowego w systemie szesnastkowym. Zwróć uwagę, że ma wartość x przed szesnastkowym numerem.
Ϩ
Kodowanie
Kodowanie obsługiwane przez język XAML to ASCII, Unicode UTF-16 i UTF-8. Instrukcja kodowania znajduje się na początku dokumentu XAML. Jeśli atrybut kodowania nie istnieje i nie ma kolejności bajtów, analizator domyślnie ma wartość UTF-8. Kodowanie UTF-8 i UTF-16 to preferowane kodowanie. UtF-7 nie jest obsługiwany. W poniższym przykładzie pokazano, jak określić kodowanie UTF-8 w pliku XAML.
?xml encoding="UTF-8"?
Atrybut języka
Język XAML używa xml:lang do reprezentowania atrybutu języka elementu. Aby móc korzystać z klasy, wartość atrybutu CultureInfo języka musi być jedną z nazw kultur wstępnie zdefiniowanych przez CultureInfo. xml:lang jest dziedziczony w drzewie elementów (według reguł XML, niekoniecznie ze względu na dziedziczenie właściwości zależności), a jego wartość domyślna jest pustym ciągiem, jeśli nie jest przypisany jawnie.
Atrybut języka jest bardzo przydatny do określania języków regionalnych. Na przykład francuski ma różne pisownię, słownictwo i wymowę we Francji, Quebecu, Belgii i Szwajcarii. Ponadto chiński, japoński i koreański współdzielą punkty kodu w standardzie Unicode, ale kształty ideograficzne są różne i używają zupełnie różnych czcionek.
Poniższy przykład Extensible Application Markup Language (XAML) używa atrybutu fr-CA
języka do określenia kanadyjskiej odmiany języka francuskiego.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
Język XAML obsługuje wszystkie funkcje Unicode, w tym zastępcze. Tak długo, jak zestaw znaków można odwzorować na Unicode, zestaw ten jest obsługiwany. Na przykład GB18030 wprowadza niektóre znaki mapowane na chińskie, japońskie i koreańskie (CFK) rozszerzenia A i B oraz pary zastępcze, dlatego jest w pełni obsługiwane. Aplikacja WPF może używać StringInfo do manipulowania ciągami bez zrozumienia, czy mają pary zastępcze, czy też łączą znaki.
Projektowanie międzynarodowego interfejsu użytkownika przy użyciu języka XAML
W tej sekcji opisano funkcje interfejsu użytkownika, które należy wziąć pod uwagę podczas pisania aplikacji.
Tekst międzynarodowy
WPF obejmuje wbudowane przetwarzanie dla wszystkich systemów pisania obsługiwanych przez program Microsoft .NET Framework.
Obecnie obsługiwane są następujące skrypty:
Arabski język
Bengalski
Dewanagari
Cyrylica
Grecki
Gudżarati
Gurmukhi
Hebrajski
Skrypty ideograficzne
Kannada
Język laotański
Łacina
Malayalam
Mongolski
Orija
Syryjski
język tamilski
Telugu
Thaana
Tajski*
Tybetański
W tej wersji obsługiwane są wyświetlanie i edytowanie tekstu tajskiego: dzielenie wyrazów nie jest obsługiwane.
Następujące skrypty nie są obecnie obsługiwane:
język khmerski
Koreański Stary Hangul
Myanmar
Sinhala
Wszystkie aparaty systemu zapisu obsługują czcionki OpenType. Czcionki OpenType mogą zawierać tabele układu OpenType, które umożliwiają twórcom czcionek projektowanie lepszych czcionek międzynarodowych i wysokiej klasy czcionek typograficznych. Tabele układu czcionek OpenType zawierają informacje o podstawianiu glifów, pozycjonowaniu glifów, wyrównaniu i pozycjonowaniu linii bazowej, co umożliwia aplikacjom do przetwarzania tekstu poprawę układu tekstu.
Czcionki OpenType umożliwiają obsługę dużych zestawów glyph przy użyciu kodowania Unicode. Takie kodowanie umożliwia szerokie wsparcie międzynarodowe oraz typograficzne warianty glifów.
Renderowanie tekstu WPF jest obsługiwane przez technologię subpikselową Microsoft ClearType, która obsługuje niezależność od rozdzielczości. Znacznie poprawia to czytelność i zapewnia możliwość obsługi dokumentów w stylu magazynu wysokiej jakości dla wszystkich skryptów.
Układ międzynarodowy
WPF zapewnia bardzo wygodny sposób obsługi układów poziomych, dwukierunkowych i pionowych. W ramach prezentacji właściwość FlowDirection może być użyta do definiowania układu. Wzorce kierunku przepływu to:
LeftToRight — układ poziomy dla łacińskich, wschodnioazjatyckich itd.
RightToLeft — dwukierunkowe dla języka arabskiego, hebrajskiego itd.
Tworzenie aplikacji lokalizowalnych
Podczas pisania aplikacji do użycia globalnego należy pamiętać, że aplikacja musi być lokalizowalna. Tematy poniżej wskazują kwestie, które należy wziąć pod uwagę.
Wielojęzyczny interfejs użytkownika
Wielojęzyczne interfejsy użytkownika (MUI) to obsługa przełączania interfejsów użytkownika z jednego języka na inny. Aplikacja WPF używa modelu zestawu do obsługi interfejsu MUI. Jedna aplikacja zawiera zestawy neutralne dla języka, a także zestawy zasobów satelitarnych zależne od języka. Punkt wejścia jest zarządzanym .EXE w zestawie głównym. Moduł ładujący zasobów WPF korzysta z menedżera zasobów platformy do obsługi wyszukiwania i zapasowego znajdowania zasobów. Wiele zestawów satelickich językowych współpracuje z tym samym zestawem głównym. Załadowany zestaw zasobów zależy od CurrentUICulture bieżącego wątku.
Lokalizowalny interfejs użytkownika
Aplikacje WPF używają języka XAML do definiowania interfejsu użytkownika. Język XAML umożliwia deweloperom określenie hierarchii obiektów z zestawem właściwości i logiki. Podstawowym zastosowaniem języka XAML jest opracowywanie aplikacji WPF, ale może służyć do określania hierarchii dowolnych obiektów środowiska uruchomieniowego języka wspólnego (CLR). Większość deweloperów używa języka XAML do określania interfejsu użytkownika aplikacji i używania języka programowania, takiego jak C#, aby reagować na interakcję użytkownika.
Z punktu widzenia zasobu interfejs użytkownika jest elementem zasobu i dlatego jego ostateczny format dystrybucji musi być lokalizowalny, aby obsługiwać języki międzynarodowe. Ponieważ język XAML nie może obsługiwać zdarzeń wielu aplikacji XAML zawiera bloki kodu w tym celu. Aby uzyskać więcej informacji, zobacz XAML w WPF. Kod jest wyodrębniany i kompilowany w różne postacie binarne, gdy plik XAML jest tokenizowany i przekształcany do formatu BAML. Forma BAML plików, obrazów i innych typów zarządzanych obiektów zasobów jest osadzona w zestawie zasobów satelitarnych, które mogą być zlokalizowane w innych językach lub głównym zestawie, gdy lokalizacja nie jest wymagana.
Uwaga / Notatka
Aplikacje WPF obsługują wszystkie zasoby frameworkCLR, w tym tabele ciągów, obrazy itd.
Tworzenie aplikacji lokalizowalnych
Lokalizacja oznacza dostosowanie interfejsu użytkownika do różnych kultur. Aby można było lokalizować aplikację WPF, deweloperzy muszą utworzyć wszystkie zasoby lokalizowalne w zestawie zasobów. Zestaw zasobów jest zlokalizowany w różnych językach, a kod zaplecza korzysta z interfejsu API zarządzania zasobami do ładowania. Jednym z plików wymaganych dla aplikacji WPF jest plik projektu (.proj). Wszystkie zasoby używane w aplikacji powinny być uwzględnione w pliku projektu. Poniższy przykład z pliku csproj pokazuje, jak to zrobić.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
Aby użyć zasobu w aplikacji, utwórz wystąpienie ResourceManager i załaduj wybrany zasób. W poniższym przykładzie pokazano, jak to zrobić.
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
Używanie technologii ClickOnce z zlokalizowanymi aplikacjami
ClickOnce to nowa technologia wdrażania formularzy systemu Windows, która będzie dostarczana z programem Visual Studio 2005. Umożliwia instalowanie i uaktualnianie aplikacji internetowych. Po zlokalizowaniu aplikacji wdrożonej za pomocą technologii ClickOnce można ją wyświetlić tylko w zlokalizowanej kulturze. Jeśli na przykład wdrożona aplikacja jest zlokalizowana w języku japońskim, może być widoczna tylko w japońskim systemie Microsoft Windows, a nie w angielskim systemie Windows. Jest to problem, ponieważ jest to typowy scenariusz dla japońskich użytkowników do uruchamiania angielskiej wersji systemu Windows.
Rozwiązaniem tego problemu jest ustawienie neutralnego atrybutu rezerwowego języka. Deweloper aplikacji może opcjonalnie usunąć zasoby z głównego zestawu i określić, że zasoby można znaleźć w zestawie satelitarnym odpowiadającym określonej kulturze. Aby kontrolować ten proces, użyj polecenia NeutralResourcesLanguageAttribute. Konstruktor klasy NeutralResourcesLanguageAttribute ma dwie sygnatury, jedna z nich przyjmuje parametr UltimateResourceFallbackLocation aby określić lokalizację, z której zasoby rezerwowe powinny zostać wyodrębnione: zestaw główny lub zestaw satelitarny. W poniższym przykładzie pokazano, jak używać atrybutu . W przypadku ostatecznej lokalizacji rezerwowej kod powoduje, że ResourceManager wyszukuje zasoby w podkatalogu "de" w katalogu aktualnie wykonywanego zestawu.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]
Zobacz także
.NET Desktop feedback