Многоязычная проверка орфографии в WPF richtextbox - PullRequest
5 голосов
/ 16 апреля 2010

Мне нужно включить проверку орфографии для richtextbox и установить язык, который пользователь выбрал из выпадающего списка. Сейчас я просто тестирую его, создавая richtextbox в xaml и предоставляя язык для атрибута языка xaml.

Я прочитал два разных ресурса, и один говорит, что мне нужно установить атрибут языка, а другой говорит, что мне нужно установить атрибут xml: lang. Ни то, ни другое не работает. Я попытался установить любой из них «es» для испанского, и я также попытался установить оба «es». Я также пробовал французский, установив их в «fr-FR», но безуспешно. Единственное, что происходит, это то, что английские слова не помечены, но слова на других языках помечены как написанные с ошибками.

Я также прочитал, что мне нужно изменить язык клавиатуры. Это было бы проблемой для моего приложения, поскольку язык в приложении должен переключаться на лету, поэтому проблема заключается в том, чтобы конечный пользователь переключился на свои настройки клавиатуры, чтобы проверка орфографии работала. Однако я изменил настройки клавиатуры, и проверка орфографии по-прежнему не работает должным образом. На этот раз он ничего не помечает как неправильно написанные, даже неправильно написанные английские слова.

Чего мне не хватает?

Edit: некоторые ссылки на мои ссылки выше http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck(v=VS.100).aspx

http://www.dev102.com/2008/03/25/customize-spellcheck-on-wpf-text-controls/

http://books.google.com/books?id=clLc5BBHqRMC&pg=PA121&lpg=PA121&dq=C%23+wpf+enable+spellcheck&source=bl&ots=_r59pZRDjP&sig=yHMBc39EHKK5gaRMzxlBaEsY890&hl=en&ei=oXnIS8zWH4G88gaq48yGBw&sa=X&oi=book_result&ct=result&resnum=6&ved=0CBMQ6AEwBQ#v=onepage&q&f=false

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

Я не уверен, где проблема для вас, но это определенно работает на моей машине:

    <StackPanel>
        <TextBox SpellCheck.IsEnabled="True"
            Language="{Binding SelectedItem.Content, ElementName=lg, ConverterCulture=en-us}">

            Turtle tortue tortuga Schildkröte 

        </TextBox>
        <ComboBox Name="lg">
            <ComboBoxItem Selector.IsSelected="True">en-US</ComboBoxItem>
            <ComboBoxItem>fr-FR</ComboBoxItem>
            <ComboBoxItem>es-ES</ComboBoxItem>
            <ComboBoxItem>de-DE</ComboBoxItem>
        </ComboBox>
    </StackPanel>

Редактировать работает в 3.5, а не в 4.0. Интересно.

В 3.5 все поддерживаемые словари работают нормально. В 4.0 WPF проверка орфографии работает только для английского языка.

Редактировать 2

Кажется, что он работает только на 3.5, потому что я на Windows 7, поэтому мне не нужны языковые пакеты.

Другая проблема заключается в том, что он работает только потому, что текст задан заранее. Любой введенный вами текст получит свой язык из текущих пользовательских настроек.

Я полагаю, что решение вашей проблемы состояло бы в том, чтобы просмотреть весь контент и изменить его свойства языка каждый раз, когда пользователь выбирает язык.

1 голос
/ 21 апреля 2010

Из форума MSDN:

"Во-первых, нам нужны именно компоненты, чтобы WPF включил проверку орфографии для английского / испанского / немецкого / французского языков?

NetFx 3.5 SP1

Windows XP (языковые пакеты); Windows Vista (из коробки); Windows 7 (из коробки)

NetFx 4 Windows XP (языковые пакеты); Windows Vista (языковые пакеты); Windows 7 (языковые пакеты)

Здесь «языковые пакеты» означает, что вам нужно установить соответствующие языковые пакеты .NET Framework. Например, если вы хотите включить проверку орфографии на испанском языке в Windows XP и .NET Framework 3.5 с пакетом обновления 1 (SP1), установите пакет испанского языка .NET Framework 3.5 с пакетом обновления 1 (SP1). А если вы хотите включить проверку немецкой орфографии в .NET Framework 4.0, установите пакет немецкого языка .NET Framework 4.0.

Языковые пакеты для .NET Framework 4.0 будут доступны в ближайшее время.

«Из коробки» означает, что вам не нужно ничего делать, и проверка орфографии для четырех языков автоматически доступна.

Если вы развертываете свое приложение через ClickOnce, вы можете включить соответствующие языковые пакеты в качестве предварительных условий. Для получения справки о включении языковых пакетов в развертывание ClickOnce можно использовать форум проектов ClickOnce и Setup & Deployment.

Во-вторых, как элемент управления RichTextBox определяет язык для проверки?

Если элемент Run помечен определенным языком, проверка орфографии будет использовать его:

Uno Dos Tres Cuatrro один два три четыре

Во время выполнения для проверки орфографии используется язык ввода, который использовался для ввода слов, как описано в предыдущем посте.

1042 * *http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/06a2cc61-f2ae-4534-b35a-6c676bc2bcb2/?prof=required
...