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.
Jeśli ograniczasz dostępność produktu tylko do jednego języka, ograniczasz potencjalną bazę klientów do ułamka populacji 7,5 miliarda ludzi na świecie. Jeśli chcesz, aby aplikacje docierały do odbiorców globalnych, ekonomiczna lokalizacja produktu jest jednym z najlepszych i najbardziej ekonomicznych sposobów dotarcia do większej liczby klientów.
W tym omówieniu przedstawiono globalizację i lokalizację w programie Windows Presentation Foundation (WPF). Globalizacja to projektowanie i opracowywanie aplikacji, które działają w wielu lokalizacjach. Na przykład globalizacja obsługuje zlokalizowane interfejsy użytkownika i dane regionalne dla użytkowników w różnych kulturach. Platforma WPF udostępnia zglobalizowane funkcje projektowania, w tym automatyczne układy, zestawy satelitarne oraz zlokalizowane atrybuty i komentowanie.
Lokalizacja to tłumaczenie zasobów aplikacji na zlokalizowane wersje dla określonych kultur, które obsługuje aplikacja. Podczas lokalizowania w WPF korzystasz z interfejsów API w System.Windows.Markup.Localizer przestrzeni nazw. Te interfejsy API zasilają narzędzie wiersza polecenia LocBaml Tool Sample. Aby uzyskać informacje o sposobie kompilowania i używania metody LocBaml, zobacz Lokalizowanie aplikacji.
Ostrzeżenie
Narzędzie LocBaml działa tylko z WPF dla projektów .NET Framework, nie działa z WPF dla platformy .NET.
Najlepsze rozwiązania dotyczące globalizacji i lokalizacji w WPF
Większość funkcji globalizacji i lokalizacji wbudowanych w platformę WPF można wykorzystać, postępując zgodnie z poradami dotyczącymi projektowania i lokalizacji interfejsu użytkownika, które udostępnia ta sekcja.
Najlepsze rozwiązania dotyczące projektowania interfejsu użytkownika WPF
Podczas projektowania interfejsu użytkownika opartego na WPF rozważ zaimplementowanie następujących najlepszych rozwiązań:
Pisanie interfejsu użytkownika w języku XAML; unikaj tworzenia interfejsu użytkownika w kodzie. Podczas tworzenia interfejsu użytkownika przy użyciu języka XAML, udostępniasz go za pomocą wbudowanych interfejsów API lokalizacji.
Unikaj używania pozycji bezwzględnych i stałych rozmiarów do układania zawartości; Zamiast tego należy użyć względnego lub automatycznego określania rozmiaru.
Użyj SizeToContent i zachowaj szerokości i wysokości ustawionych na
Auto
.Unikaj używania Canvas do określania interfejsów użytkownika.
Użyj Grid i jego funkcji udostępniania rozmiaru.
Podaj dodatkowe miejsce na marginesach, ponieważ zlokalizowany tekst często wymaga więcej miejsca. Dodatkowe miejsce pozwala na ewentualne zwisające znaki.
Włącz TextWrapping na TextBlock, aby uniknąć przycinania.
Ustaw atrybut
xml:lang
. Ten atrybut opisuje kulturę określonego elementu i jego elementów podrzędnych. Wartość tej właściwości zmienia zachowanie kilku funkcji w WPF. Na przykład zmienia zachowanie dzielenia wyrazów, sprawdzania pisowni, podstawienia liczb, formatowania złożonych skryptów i zastępowania czcionek. Zobacz Globalizacja dla WPF, aby uzyskać więcej informacji na temat ustawiania xml:lang Handling w języku XAML.Utwórz niestandardową czcionkę złożoną, aby uzyskać lepszą kontrolę nad czcionkami używanymi w różnych językach. Domyślnie WPF używa czcionki GlobalUserInterface.composite w katalogu Windows\Fonts.
Podczas tworzenia aplikacji nawigacyjnych, które mogą być zlokalizowane w kulturze, gdzie tekst jest przedstawiany w formacie od prawej do lewej, jawnie ustaw FlowDirection dla każdej strony, aby upewnić się, że strona nie dziedziczy FlowDirection z NavigationWindow.
Podczas tworzenia samodzielnych aplikacji nawigacyjnych hostowanych poza przeglądarką, dla początkowej aplikacji ustaw StartupUri na NavigationWindow zamiast na stronę (na przykład
<Application StartupUri="NavigationWindow.xaml">
). Ten projekt umożliwia zmianę FlowDirection okna i paska nawigacyjnego. Aby uzyskać więcej informacji i przykład, zobacz Przykład strony głównej globalizacji.
Najlepsze rozwiązania dotyczące lokalizacji WPF
Podczas lokalizowania aplikacji opartych na WPF rozważ zaimplementowanie następujących najlepszych rozwiązań:
Użyj komentarzy lokalizacji, aby zapewnić dodatkowy kontekst dla lokalizatorów.
Użyj atrybutów lokalizacji, aby kontrolować lokalizację zamiast selektywnie pomijać Uid właściwości elementów. Aby uzyskać więcej informacji, zobacz Atrybuty lokalizacji i komentarze .
Użyj
msbuild -t:updateuid
i-t:checkuid
, aby dodać i sprawdzić Uid właściwości w języku XAML. Użyj Uid właściwości, aby śledzić zmiany między programowaniem a lokalizacją. Uid właściwości ułatwiają lokalizowanie nowych zmian programistycznych. Jeśli ręcznie dodasz Uid właściwości do interfejsu użytkownika, zadanie jest zazwyczaj żmudne i mniej dokładne.Nie edytuj ani nie zmieniaj Uid właściwości po rozpoczęciu lokalizacji.
Nie używaj zduplikowanych Uid właściwości (pamiętaj tę poradę podczas korzystania z polecenia kopiowania i wklejania).
Ustaw lokalizację
UltimateResourceFallback
w pliku AssemblyInfo.* , aby określić odpowiednią wersję językową dla języka awaryjnego (na przykład[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
).Jeśli zdecydujesz się dołączyć język źródłowy do głównego zestawu, pomijając
<UICulture>
tag w pliku projektu, ustaw lokalizacjęUltimateResourceFallback
jako główny zestaw zamiast satelity (na przykład[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.MainAssembly)]
).
Lokalizowanie aplikacji WPF
Podczas lokalizowania aplikacji WPF masz kilka opcji. Na przykład można powiązać zasoby lokalizowalne w aplikacji z plikiem XML, przechowywać lokalizowalny tekst w tabelach resx lub lokalizować pliki XAML. W tej sekcji opisano przepływ pracy lokalizacji, który korzysta z formularza BAML języka XAML, który zapewnia kilka korzyści:
Lokalizację można zlokalizować po kompilacji.
Możesz zaktualizować do nowszej wersji formatu BAML języka XAML przy użyciu lokalizacji ze starszej wersji formatu BAML języka XAML, aby można było lokalizować je w tym samym czasie.
Można zweryfikować oryginalne elementy źródłowe i semantyki w czasie kompilacji, ponieważ forma BAML XAML to skompilowana forma XAML.
Proces kompilacji lokalizacji
Podczas tworzenia aplikacji WPF proces kompilacji lokalizacji jest następujący:
Deweloper tworzy i globalizuje aplikację WPF. W pliku projektu deweloper ustawia się
<UICulture>en-US</UICulture>
tak, aby po skompilowaniu aplikacji generowany jest główny zestaw neutralny dla języka. Ten zestaw zawiera plik .resources.dll satelitarnej, który zawiera wszystkie zasoby lokalizowalne. Opcjonalnie możesz zachować język źródłowy w głównym zestawie, ponieważ nasze interfejsy API lokalizacji obsługują wyodrębnianie z głównego zestawu.Po skompilowaniu pliku w kompilacji kod XAML jest konwertowany na formę BAML XAML. Pliki neutralne
MyDialog.exe
kulturowo i zależne od kultury (angielski)MyDialog.resources.dll
są wydawane klientowi anglojęzycznemu.
Przepływ pracy lokalizacji
Proces lokalizacji rozpoczyna się po skompilowaniu nielokalizowanego MyDialog.resources.dll
pliku. Elementy interfejsu użytkownika i właściwości w oryginalnym języku XAML są wyodrębniane z formularza BAML języka XAML i przekształcane w pary klucz-wartość za pomocą interfejsów API znajdujących się pod System.Windows.Markup.Localizer. Lokalizatory używają par klucz-wartość do lokalizowania aplikacji. Nowe .resource.dll można wygenerować na podstawie nowych wartości po zakończeniu procesu lokalizacji.
Klucze par klucz-wartość to wartości x:Uid
umieszczone przez dewelopera w oryginalnym XAML. Te x:Uid
wartości umożliwiają interfejsowi API śledzenie i scalanie zmian występujących między deweloperem a lokalizatorem podczas lokalizacji. Jeśli na przykład deweloper zmieni interfejs użytkownika po rozpoczęciu pracy przez lokalizatora, możesz scalić zmianę wprowadzoną przez dewelopera z już ukończoną lokalizacją, aby utrata pracy tłumaczeniowej była minimalna.
Na poniższej ilustracji przedstawiono typowy przepływ pracy lokalizacji oparty na postaci BAML języka XAML. Na tym diagramie założono, że deweloper pisze aplikację w języku angielskim. Deweloper tworzy i globalizuje aplikację WPF. W pliku projektu deweloper ustawia <UICulture>en-US</UICulture>
tak, aby podczas kompilacji został wygenerowany główny zestaw neutralny językowo z satelitarnym .resources.dll, który zawiera wszystkie zasoby lokalizowalne. Alternatywnie można zachować język źródłowy w głównym zestawie, ponieważ interfejsy API lokalizacji WPF obsługują wyodrębnianie z głównego zestawu. Po zakończeniu procesu kompilacji kod XAML zostanie skompilowany w języku BAML. Neutralne kulturowo MyDialog.exe.resources.dll są wysyłane do klienta anglojęzycznego.
Przykłady lokalizacji WPF
Ta sekcja zawiera przykłady zlokalizowanych aplikacji, które ułatwiają zrozumienie sposobu tworzenia i lokalizowania aplikacji WPF.
Przykład uruchamiania okna dialogowego
Poniższa grafika przedstawia dane wyjściowe przykładowego okna dialogowego Uruchamianie .
Angielski:
Niemiecki:
Projektowanie globalnego okna dialogowego uruchamiania
Ten przykład tworzy okno dialogowe Uruchom przy użyciu WPF i XAML. To okno dialogowe jest równoważne oknu dialogowemu Uruchamianie, które jest dostępne z menu Start systemu Microsoft Windows.
Niektóre najważniejsze informacje dotyczące tworzenia globalnych okien dialogowych to:
Układ automatyczny
W pliku Window1.xaml:
<Window SizeToContent="WidthAndHeight">
Poprzednia właściwość Okno automatycznie zmienia rozmiar okna zgodnie z rozmiarem zawartości. Ta właściwość uniemożliwia odcinanie zawartości, która zwiększa rozmiar po lokalizacji; usuwa również niepotrzebne miejsce, gdy zawartość zmniejsza rozmiar po lokalizacji.
<Grid x:Uid="Grid_1">
Uid Właściwości są potrzebne, aby interfejsy API lokalizacji WPF działały poprawnie.
Są one używane przez interfejsy API lokalizacji WPF do monitorowania zmian między opracowywaniem a lokalizacją interfejsu użytkownika.
Uid właściwości umożliwiają scalanie nowszej wersji interfejsu użytkownika ze starszą lokalizacją interfejsu użytkownika. Dodaj właściwość Uid , uruchamiając msbuild -t:updateuid RunDialog.csproj
w powłoce poleceń. Jest to zalecana metoda dodawania Uid właściwości, ponieważ ręczne dodawanie ich jest zwykle czasochłonne i mniej dokładne. Możesz sprawdzić, czy Uid właściwości są poprawnie ustawione, uruchamiając polecenie msbuild -t:checkuid RunDialog.csproj
.
Interfejs użytkownika jest ustrukturyzowany przy użyciu kontrolki Grid , która jest przydatną kontrolką do korzystania z automatycznego układu w WPF. Należy pamiętać, że okno dialogowe jest podzielone na trzy wiersze i pięć kolumn. Nie jedna z definicji wierszy i kolumn ma stały rozmiar; w związku z tym elementy interfejsu użytkownika umieszczone w każdej komórce mogą dostosować się do wzrostu i spadku rozmiaru podczas lokalizacji.
<Grid.ColumnDefinitions>
<ColumnDefinition x:Uid="ColumnDefinition_1" />
<ColumnDefinition x:Uid="ColumnDefinition_2" />
Pierwsze dwie kolumny, w których etykieta Open: i ComboBox są umieszczone, używają 10 procent całkowitej szerokości interfejsu użytkownika.
<ColumnDefinition x:Uid="ColumnDefinition_3" SharedSizeGroup="Buttons" />
<ColumnDefinition x:Uid="ColumnDefinition_4" SharedSizeGroup="Buttons" />
<ColumnDefinition x:Uid="ColumnDefinition_5" SharedSizeGroup="Buttons" />
</Grid.ColumnDefinitions>
Należy pamiętać, że przykład używa funkcji shared-sizing elementu Grid. Ostatnie trzy kolumny wykorzystują to, umieszczając się w tym samym SharedSizeGroup. Jak można oczekiwać od nazwy właściwości, dzięki temu kolumny mogą dzielić ten sam rozmiar. Tak więc, gdy "Przeglądaj..." zostaje zlokalizowane jako dłuższy ciąg "Durchsuchen...", wszystkie przyciski zwiększają szerokość zamiast posiadania małego przycisku "OK" i nieproporcjonalnie dużego przycisku "Durchsuchen…".
xml:lang
xml:lang="en-US"
Zwróć uwagę na obsługę xml:lang w języku XAML umieszczonym w głównym elemenie interfejsu użytkownika. Ta właściwość opisuje kulturę danego elementu i jego dzieci. Ta wartość jest używana przez kilka funkcji w WPF i powinna zostać odpowiednio zmieniona podczas lokalizacji. Ta wartość określa, jaki słownik językowy jest używany do dzielenia wyrazów i sprawdzania pisowni. Ma to również wpływ na wyświetlanie cyfr i sposób, w jaki system rezerwowy czcionki wybiera czcionkę do użycia. Na koniec właściwość wpływa na sposób wyświetlania liczb i sposób kształtowania tekstów napisanych w złożonych skryptach. Wartość domyślna to "en-US".
Tworzenie zestawu zasobów satelitarnych
W pliku csproj:
.csproj
Edytuj plik i dodaj następujący tag do bezwarunkowego <PropertyGroup>
elementu :
<UICulture>en-US</UICulture>
Zwróć uwagę na dodanie wartości UICulture
. Po ustawieniu tej wartości na prawidłową CultureInfo wartość, taką jak en-US, kompilowanie projektu spowoduje wygenerowanie zestawu satelitarnego ze wszystkimi zasobami lokalizowalnymi w nim.
<Resource Include="RunIcon.JPG">
<Localizable>False</Localizable>
</Resource>
Element RunIcon.JPG
nie musi być zlokalizowany, ponieważ powinien być taki sam dla wszystkich kultur.
Localizable
jest ustawiony na false
, aby pozostał w neutralnym językowo głównym zestawie zamiast zestawu satelitarnego. Wartość domyślna wszystkich niekompilowalnych zasobów jest ustawiona na Localizable
.
Lokalizowanie okna dialogowego Uruchamiania
parsowanie
Po utworzeniu aplikacji pierwszym krokiem lokalizowania jest analizowanie zasobów lokalizowalnych z zestawu satelitarnego. Na potrzeby tego tematu użyj przykładowego narzędzia LocBaml, które można znaleźć w przykładzie narzędzia LocBaml. Należy pamiętać, że LocBaml to tylko przykładowe narzędzie, które ułatwia rozpoczęcie tworzenia narzędzia lokalizacji, które pasuje do procesu lokalizacji. Za pomocą LocBaml uruchom następujące polecenie, aby przeanalizować: LocBaml /parse RunDialog.resources.dll /out: i wygenerować plik CSVRunDialog.resources.dll.
Ostrzeżenie
Narzędzie LocBaml działa tylko z WPF dla projektów .NET Framework, nie działa z WPF dla platformy .NET.
Zlokalizować
Użyj ulubionego edytora CSV, który obsługuje kod Unicode, aby edytować ten plik. Odfiltruj wszystkie wpisy z kategorią lokalizacji "Brak". Powinny zostać wyświetlone następujące wpisy:
Klucz zasobu | Kategoria lokalizacji | Wartość |
---|---|---|
Button_1:System.Windows.Controls.Button.$Content | Przycisk | OK |
Button_2:System.Windows.Controls.Button.$Content | Przycisk | Anuluj |
Button_3:System.Windows.Controls.Button.$Content | Przycisk | Przeglądaj... |
ComboBox_1:System.Windows.Controls.ComboBox.$Content | kombinowane pole wyboru | |
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Tekst | Wpisz nazwę programu, folderu, dokumentu lub zasobu internetowego, a system Windows otworzy go dla Ciebie. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Tekst | Otwórz: |
Window_1:System.Windows.Window.Title | Nazwa | Biegnij |
Lokalizowanie aplikacji w języku niemieckim wymagałoby następujących tłumaczeń:
Klucz zasobu | Kategoria lokalizacji | Wartość |
---|---|---|
Button_1:System.Windows.Controls.Button.$Content | Przycisk | OK |
Button_2:System.Windows.Controls.Button.$Content | Przycisk | Anuluj |
Button_3:System.Windows.Controls.Button.$Content | Przycisk | Przeszukaj… |
ComboBox_1:System.Windows.Controls.ComboBox.$Content | kombinowane pole wyboru | |
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Tekst | Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetresource an. |
TextBlock_2:System.Windows.Controls.TextBlock.$Content | Tekst | Otwórz |
Window_1:System.Windows.Window.Title | Nazwa | Biegnij |
generowanie
Ostatnim krokiem lokalizacji jest utworzenie nowo zlokalizowanego zestawu satelitarnego. Można to zrobić za pomocą następującego polecenia LocBaml:
LocBaml.exe /generate RunDialog.resources.dll /trans:RunDialog.resources.dll. CSV /out: . /cul:de-DE
W niemieckim systemie Windows, jeśli ten resources.dll znajduje się w folderze de-DE obok głównego zestawu, zasób ten zostanie automatycznie załadowany zamiast tego znajdującego się w folderze en-US. Jeśli nie masz niemieckiej wersji systemu Windows, aby to przetestować, ustaw kulturę na kulturę odpowiadającą twojemu systemowi Windows (na przykład en-US
), a następnie zamień oryginalną bibliotekę DLL zasobów.
Ładowanie zasobów satelickich
MyDialog.exe | en-US\MyDialog.resources.dll | de-DE\MyDialog.resources.dll |
---|---|---|
Kod | Oryginalny angielski BAML | Zlokalizowany BAML |
Zasoby neutralne kulturowo | Inne zasoby w języku angielskim | Inne zasoby zlokalizowane w języku niemieckim |
Platforma .NET automatycznie wybiera zestaw zasobów satelitarnych do załadowania na podstawie Thread.CurrentUICulture aplikacji. Domyślnie jest to kultura systemu operacyjnego Windows. Jeśli używasz niemieckiego systemu Windows, plik de-DE\MyDialog.resources.dll zostanie załadowany. Jeśli używasz systemu Windows w języku angielskim, plik en-US\MyDialog.resources.dllzostanie załadowany. Możesz ustawić ostateczny zasób rezerwowy dla aplikacji, określając NeutralResourcesLanguage
atrybut w pliku AssemblyInfo projektu. Jeśli na przykład określisz:
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
następnie plik en-US\MyDialog.resources.dll jest używany z niemieckim systemem Windows, jeśli żaden z następujących plików nie jest dostępny: de-DE\MyDialog.resources.dll lub de\MyDialog.resources.dll.
Strona główna Arabii Saudyjskiej Firmy Microsoft
Poniższa grafika przedstawia stronę główną języka angielskiego i arabskiego. Aby uzyskać kompletny przykład, który tworzy te grafiki, zobacz Przykład strony głównej globalizacji.
Angielski:
Arabski:
Projektowanie globalnej strony głównej firmy Microsoft
Ta pozorowana witryna internetowa Microsoft Saudi Arabia ilustruje funkcje globalizacji oferowane dla języków RightToLeft. Języki, takie jak hebrajski i arabski, mają kolejność czytania od prawej do lewej, więc układ interfejsu użytkownika musi być często rozmieszczony zupełnie inaczej niż w językach od lewej do prawej, takich jak angielski. Lokalizowanie języka czytanego od lewej do prawej na język czytany od prawej do lewej lub odwrotnie może być dość trudne. WPF został zaprojektowany tak, aby takie lokalizacje były znacznie łatwiejsze.
Kierunek przepływu
Homepage.xaml:
<Page x:Uid="Page_1" x:Class="MicrosoftSaudiArabiaHomepage.Homepage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
FlowDirection="LeftToRight"
Localization.Comments="FlowDirection(This FlowDirection controls the actual content of the homepage)"
xml:lang="en-US">
Zwróć uwagę na właściwość FlowDirection na Page. Zmiana tej właściwości na RightToLeft spowoduje zmianę FlowDirection elementów podrzędnych Page, tak aby układ tego interfejsu użytkownika został odwrócony, stając się od prawej do lewej, jak oczekiwałby użytkownik arabski. Można zastąpić mechanizm dziedziczenia, określając wyraźnie FlowDirection dla dowolnego elementu. Właściwość FlowDirection jest dostępna dla dowolnego FrameworkElement elementu powiązanego z dokumentem lub i ma niejawną wartość LeftToRight.
Zwróć uwagę, że nawet pędzle gradientu tła są prawidłowo odwracane po zmianie elementu głównego FlowDirection
FlowDirection="LeftToRight"
Kierunek przepływu="Od prawej do lewej"
Unikaj używania stałych wymiarów dla paneli i kontrolek
Spójrz na stronę Homepage.xaml, zwróć uwagę, że oprócz stałej szerokości i wysokości określonej dla całego interfejsu użytkownika u góry DockPanel, nie ma innych stałych wymiarów. Unikaj używania stałych wymiarów, aby zapobiec wycinaniu zlokalizowanego tekstu, który może być dłuższy niż tekst źródłowy. Panele i kontrolki WPF automatycznie zmienią rozmiar na podstawie zawartości, którą zawierają. Większość kontrolek ma również minimalne i maksymalne wymiary, które można ustawić dla większej liczby kontrolek (na przykład MinWidth="20"). Za pomocą polecenia Grid można również ustawić względne szerokości i wysokości przy użyciu "*" (na przykład Width="0.25*"
) lub funkcji dzielenia rozmiaru komórki.
Komentarze lokalizacji
Istnieje wiele przypadków, w których zawartość może być niejednoznaczna i trudna do przetłumaczenia. Deweloper lub projektant ma możliwość zapewnienia dodatkowego kontekstu i komentarzy lokalizatorom za pośrednictwem komentarzy do lokalizacji. Na przykład w poniższym pliku Localization.Comments wyjaśniono użycie znaku '|'.
<TextBlock
x:Uid="TextBlock_2"
DockPanel.Dock="Right"
Foreground="White"
Margin="5,0,5,0"
Localization.Comments="$Content(This character is used as a decorative rule.)">
|
</TextBlock>
Ten komentarz staje się skojarzony z zawartością TextBlock_1, a w przypadku narzędzia LocBaml (zobacz Lokalizowanie aplikacji), można go zobaczyć w 6 kolumnie wiersza TextBlock_1 w pliku wyjściowym .csv:
Klucz zasobu | Kategoria | Czytelny | Można modyfikować | Komentarz | Wartość |
---|---|---|---|---|---|
TextBlock_1:System.Windows.Controls.TextBlock.$Content | Tekst | PRAWIDŁOWE | PRAWIDŁOWE | Ten znak jest używany jako reguła dekoracyjna. | | |
Komentarze można umieścić w zawartości lub właściwości dowolnego elementu przy użyciu następującej składni:
<TextBlock
x:Uid="TextBlock_1"
DockPanel.Dock="Right"
Foreground="White"
Margin="5,0,5,0"
Localization.Comments="$Content(This is a comment on the TextBlock's content.)
Margin(This is a comment on the TextBlock's Margin property.)">
|
</TextBlock>
Atrybuty lokalizacji
Często deweloper lub menedżer ds. lokalizacji chce mieć kontrolę nad tym, co osoby zajmujące się lokalizacją mogą odczytywać i modyfikować. Na przykład możesz nie chcieć, aby lokalizator przetłumaczył nazwę firmy lub sformułowanie prawne. WPF udostępnia atrybuty, które umożliwiają ustawianie czytelności, modyfikacji i kategorii zawartości lub właściwości elementu, których narzędzie lokalizacji może użyć do blokowania, ukrywania lub sortowania elementów. Aby uzyskać więcej informacji, zobacz Attributes. Na potrzeby tego przykładu narzędzie LocBaml po prostu generuje wartości tych atrybutów. Wszystkie kontrolki WPF mają wartości domyślne dla tych atrybutów, ale można je zastąpić. Na przykład poniższy przykład zastępuje domyślne atrybuty lokalizacji dla TextBlock_1
i ustawia zawartość jako czytelną, ale niezmodyfikalną dla lokalizatorów.
<TextBlock
x:Uid="TextBlock_1"
Localization.Attributes=
"$Content(Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
Oprócz atrybutów czytelności i modyfikacji, WPF zapewnia wyliczenie typowych kategorii interfejsu użytkownika (LocalizationCategory), które mogą służyć do nadania lokalizatorom większego kontekstu. Domyślne kategorie kontrolek platformy WPF można również zastąpić w języku XAML:
<TextBlock x:Uid="TextBlock_2">
<TextBlock.ToolTip>
<TextBlock
x:Uid="TextBlock_3"
Localization.Attributes=
"$Content(ToolTip Readable Unmodifiable)">
Microsoft Corporation
</TextBlock>
</TextBlock.ToolTip>
Windows Vista
</TextBlock>
Domyślne atrybuty lokalizacji, które udostępnia WPF, można również zastąpić za pomocą kodu, dzięki czemu można poprawnie ustawić odpowiednie wartości domyślne dla kontrolek niestandardowych. Przykład:
[Localizability(Readability = Readability.Readable, Modifiability=Modifiability.Unmodifiable, LocalizationCategory.None)]
public class CorporateLogo : TextBlock
{
// ...
}
Atrybuty na wystąpienie ustawione w języku XAML będą miały pierwszeństwo przed wartościami ustawionymi w kodzie dla kontrolek niestandardowych. Aby uzyskać więcej informacji na temat atrybutów i komentarzy, zobacz Atrybuty lokalizacji i komentarze.
Czcionki rezerwowe i czcionki złożone
Jeśli określisz czcionkę, która nie obsługuje danego zakresu kodu, program WPF automatycznie przełączy się na tę, która obsługuje, przy użyciu pliku Global User Interface.compositefont znajdującego się w katalogu Windows\Fonts. Czcionki złożone działają tak samo jak każda inna czcionka i mogą być używane jawnie przez ustawienie elementu FontFamily
(na przykład FontFamily="Global User Interface"
). Możesz określić własną preferencję rezerwową czcionki, tworząc własną czcionkę złożoną i określając czcionkę używaną dla określonych zakresów i języków punktów kodu.
Aby uzyskać więcej informacji na temat czcionek złożonych, zobacz FontFamily.
Lokalizowanie strony głównej firmy Microsoft
Aby zlokalizować tę aplikację, możesz postępować według tych samych kroków, co w przypadku przykładu okna dialogowego Uruchom. Zlokalizowany plik .csv dla języka arabskiego jest dostępny na przykładowej stronie głównej Globalizacji.
.NET Desktop feedback