While getting an application ready to ship, I switched the locale of my WP7 device to Danish. Fingers crossed, my app will magically display Pi as 3,14159
Alas, that’s not what happens. When I put up a text box, and enter 3,14159, my software actually gets a value of 314159 instead.
Posting a query on Culture to the WP7 Forums got no result, so I dug into Laurent Bugnion’s excellent Silverlight 4 Unleashed book, and found that he suggests in Listing 6.10 that you set the Language on the Page. I didn’t really want to build a page for every language, as I’ll never hit them all, so instead modified the constructor of my FrameworkElement classes as follows:
InitializeComponent();
this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentUICulture.Name);
Eventually I tracked down several sources for why this is the case:
http://www.pedrolamas.com/2011/07/28/cuidado-com-o-frameworkelement-language/
http://connect.microsoft.com/VisualStudio/feedback/details/442569/wpf-binding-uses-the-wrong-currentculture-by-default
I also attempted to make it easier for the user to enter numbers into my window, using the InputScope attribute of my TextBoxes, I assumed that InputScope=”Number” would be what I wanted. How Naive. The image on the left shows how unsuitable this is.
In the Danish Locale, we really want a comma on the keyboard, not a decimal point. In addition, there is no negative sign.
The best compromise I could find (after randomly trying many of the InputScope values that looked appropriate was Time, which gives the keyboard on the right.
Now I just need to come up with a strategy for translating the Validation Exceptions that I’m currently displaying in the UI.
No comments:
Post a Comment