How to change input method in WPF? - wpf

I want to plug in a Spanish or German keyboard and I would like the textbox in my WPF application to recognize the German or Spanish characters.
This can be achieved by changing locale of the system through regional settings and picking up a Spanish or a German keyboard as IME. But I need to change the locale of the system programmatically rather than manually.

Just a shot in the dark, but there's a Language Property for TextBox.
<TextBox Language="{Binding}">
http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.language.aspx
So you could bind that Property to a locale attribute in your code.

You can use following statement for changing the keyboard language programatically
InputLanguageManager.SetInputLanguage(this, new CultureInfo("en-US"));
(Or)
InputLanguageManager.SetInputLanguage(this, CultureInfo.CreateSpecificCulture("en-US"));
Here you can use any language code instead of en-US

Related

Input non english characters into WPF Combobox

I am using .net framework 4.5
I have a WPF project, and I use WPF combobox. The property IsEditable is set to true to allow input values.
But when I input non English character such as "â" (I have to type "aa" to make "â", it becomes "aâ".
When I set property IsTextSearchEnabled = "False", "aa" becomes "â" (This is correct behavior).
Does anyone have solution for this when set IsTextSearchEnabled = "True" for WPF combo box?
Firstly, I don't get this behaviour when I type into a ComboBox. If you have something particular about your ComboBox or your computer that gives you this behaviour, you need to share it with us, so that we can better help you.
All the same, I don't know about typing "aa" to make "â", but I do know that if you press 0226 while holding the Alt key down, it will also give you "â". Maybe you could try using that instead?
You can find out more accent codes from the Windows - Alt Key Numeric Codes page on the PennState University website.

Language change in textbox in silverlight 4

I am new in silverlight ,I have more than two textbox in a UI, what i want to do is there will be a textbox with a label secondary name,on that text box when user type anything it should come in arabic language!
I mean when users focused on a textbox control the default language need to change to arabic.
I have seen same questions in this stackoverklow,but the answer i saw was saying how to do resource switching of languages of labels,buttons etc. but my question is how can i change the language when i type in a textbox control,Hope u get my point.
Thank you in advance.
You can do this through an API call if you're trying to put the translated text into the label. This link shows example code on how to use the Bing Translation API in Silverlight.

Incorrect bidi behaviour in WPF?

I experience strange things when setting the "Language" property in WPF:
Set FlowDirection to "RightToLeft" on a Window or textbox/textblock
Set the Language property to "fa-IR"
Set the text to one of the sample texts below (A, B)
A. This text does not render correctly in WPF 3.5:
فاکس: ‎+44 1908 215040
It works with WinForms and Silverlight. Note that it contains a 'LEFT-TO-RIGHT MARK' (U+200E)
Here is a HTML version of the above with numeric character references to LRM, to visualize where the LRM is inserted:
فاکس: ‎+44 1908 215040
B. This text does render correctly in WPF:
فاکس: ‎+‎44‎ ‎1908‎ ‎210210
But it contains (I believe) unncessary LRM characters. I put together the text in a trial-and-error fashion.
Here is the HTML version with the extra LRM characters
فاکس: ‎+‎44‎ ‎1908‎ ‎215040‎
Why are the extra characters needed / what am I doing wrong with the original text?
Note: The problem occurs IFF setting the Language property, either explicitly in XAML or code (like Language="fa-IR") or by overriding the default value of the Language property in code (assuming current culture being "fa-IR") as so:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
If I leave the language property as en-US, the text renders correctly in WPF, but I really need to set the Language to have value conversions work without having to set the ConverterCulture explicitly on each and every data binding that could be binding to some culture dependent data.
There are also other problems, like LRO ('LEFT-TO-RIGHT OVERRIDE' (U+202D)) being ignored.
I really need help understanding what is going on, as this could turn out to be a show stopper for localizing my application to Persian and Arabic.
I suspect that I am the one doing something wrong, as I fail to google for the problem.
Here is a a related post on MS Connect, but no one has so far confirmed the behaviour as a bug:
http://connect.microsoft.com/WPF/feedback/details/682784/incorrect-unicode-bidi-behaviour#
Note: I am not that familiar with the BiDi algorithm in general and know even less of the actual implementation in WPF. I have a basic understanding of Unicode.

WinForms - Localization - UI controls positions different in additional Culture

I did my UI settings.Original language is English. After that I set Localizable property to True. Copied original resx file to frmMain.de-De.resx (for example). Translated all strings. Everything works.
But now I would like to change positions of controls. After that changes are visible only for original/primary Culture (En). When I change Culture to de-De then UI controls are on the "old positions"(?!)
Is this normal behaviour? :O I'm unable to change controls positions on my form after localization?
Can someone explain me this and give some best solution. I really have to change UI design but I don't want to manual copy all translated strings again.
If my description is not clear then I can post source code, just please let me know. I use VS 2008.
Greetz!
If you select the form itself in the designer, and look at the properties there should be a field Language.
Leave this to default when designing the form: this is the default layout for languages without a specific layout. Now, if you want a different layout or even different labels for another language, select the correct culture from the Language property and start designing your form.
By doing so, making changes to the default (in your case english) layout will not be reflected on the specific language's form. This is the way it is supposed to work, the layout of languages is completely separate.

Does WPF's TextBox support spell-check dictionaries for the Netherlands?

The RichTextBox supports a spellcheck option which is very nice. (SpellCheck.IsEnabled = true)
But I cannot seem to get it to another language. (I live in the Netherlands.. ;))
Does any of you have an experience with the SpellCheck option of TextBox?
I know it can be change by changing the keyboard settings, but I want to change it in the application.
What I have tried so far (and did not work):
Changing the CurrentCulture on the current Thread.
Changing the Language property in xaml in "nl-NL"
Changing the Language property in code with the XmlLanguage.GetLanguage("nl-NL");
You should not get any spelling errors with the following line:
"Dit is een Nederlandse tekst."
The RFC 3066 language key of my language is "nl-NL"
Many thanks,
Rick
Spelling support for WPF is limited to just 4 languages; English, Spanish, French, and German.
Using a custom dictionary will only add "special words" to the current dictionary. It will not allow a new language dictionary.

Resources