Как локализовать поток документов - PullRequest
1 голос
/ 17 октября 2010

Я хочу реализовать контекстную справку для приложения View на основе потоковых документов.Например, пользователь нажимает Ctrl + F1 и контекстная справка о текущем представлении появляется поверх этого представления.Содержание справки должно быть локализовано.

В окне разметка может выглядеть следующим образом:

<Window x:Class="UdkppReports.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window2" Height="300" Width="300">
<Grid>
    <ContentControl x:Name="View"/>
    <ContentControl x:Name="Help" Visibility="Collapsed">
        <ContentControl.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding CurrentView.HelpContent}" Value="{x:Null}">
                        <Setter Property="Grid.Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>
</Grid>

Свойство View.HelpContent является экземпляром UserControl со встроенным FlowDocumentScrollViewer.,В нелокализованном приложении для каждого класса View я создам один класс HelpContent.Как насчет локализованного приложения?

В настоящее время присутствует одна-единственная идея - для каждого класса View должно быть создано столько классов HelpContent, сколько поддерживает приложение многих культур.Например, для класса SomeView у меня есть:

  • класс SomeViewHelp (по умолчанию)
  • класс SomeViewHelp_fr
  • класс SomeViewHelp_it
  • и так далее

и в пользовательской команде SomeView.LoadHelp (или в пользовательском событии Loadhelp или в другом месте) мне нужно динамически определить имя класса справки, например

string lang = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
string helpClassShortName = "SomeView_" + lang;

, и дополнительно получить полное имя классапопробуйте динамически создать экземпляр класса справки и присвоить этому экземпляру свойство View.HelpContent.Это должно работать, но может ли существовать стандартный подход к локализации документооборота?

Ответы [ 2 ]

0 голосов
/ 10 июля 2013

На мой взгляд, лучший способ сделать это - использовать WPF Localization Extension . Посмотрите обсуждение поддержки потоковых документов с автором этой библиотеки click me

0 голосов
/ 18 октября 2010

Вы пробовали использовать инструмент LocBaml для локализации? Каждый элемент xaml поддерживает атрибут x: Uid, поэтому вы можете использовать это решение . Также есть статья о локализации в MS Exam 70-502 Training Kit.

...