Achim Ruopp

Tales from the Crossroads of Internationalization and .NET

  • A new vocation

    After helping to ship Visual Studio 2005, making sure it can be used around the world (sorry, this took up a lot of my time and I didn't blog much in the last couple of months) I felt that the time was ripe for a new challenge - pursuing a masters degree in Computational Linguistics. For me logically processing text and speech is "just" the next level up from processing characters, which is what software internationalization is about a lot.
     
    To finish the program in a reasonable amount of time I decided to leave Microsoft and become a fulltime student. The first few weeks already turn out to be quite interesting (and challenging)! You can read about my new adventures on my new blog. I'm sure we'll run into each other offline or online sometime - internationalization makes a small world.
  • Internationalization virtual track at Tech·Ed 2005

    This year at Tech·Ed 2005 in Orlando, FL, USA we will not only have individual sessions covering internationalization, but a whole virtual track! We have everything from pre-conference sessions covering the basics for someone getting started to in-depth technical sessions about new Whidbey features. I'll be talking about custom cultures and international data together with Matt Ayers. And we aren't completely done planning yet - we might add hands-on labs and webcasts, stay tuned.

    I'm looking forward to meet you there, answer your questions and listen to your suggestions.

    Register before April 15 and get the Tech·Ed 2005 early-registration rate of just $1,695.

  • Upcoming presentations at the 27th Internationalization and Unicode Conference

    The program for the 27th Internationalization and Unicode Conference (in Berlin on April 6-8) was just published. I am going to present two talks on the improvements for the development of globalized and multi-lingual applications in Visual Studio 2005. The program looks as if it'll provide a very good cross-section of what is happening in internationalization these days - I'm looking forward to it. If you are going there make sure to say hi.
  • Whitepaper on ASP.NET 2.0 Localization Features

    Michele wrote a thorough whitepaper about our new ASP.NET 2.0 localization functionality. Great job! Thanks for the kudos!

    She also did a webcast on the same topic last week - mainly focusing on ASP.NET 1.x, but also covering the new features for v2.0. Michele is certainly providing the best guidance and up-to-date information on the ASP.NET Internationalization today.

  • Managed Resources on MSDN TV

    Ahmed and Brian are talking about using managed resources on MSDN TV. Resources and localization are of course joined at the hip, so you might want to check this out.
  • Localization of command line applications

    The command prompt in Windows has a number of limitations when it comes to dealing with Unicode – it does not support complex scripts (like Arabic, Hebrew, Indic languages), the raster font selected by default depends on the system locale and only supports glyphs for the current OEM system codepage, redirected output cannot be encoded in Unicode, TrueType fonts used in the command prompt do not do font linking etc. Therefore when you output a string with System.Console.Write[Line] it gets converted to the console codepage for the command prompt.

     

    When creating a multilingual command line application with .NET Framework v2.0 how can you make sure to load resources that are actually displayable? Here is code that demonstrates this (it is using some new features only available in Whidbey):

     

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Threading;

    using System.Globalization;

    using System.Resources;

    using System.Reflection;

     

    [assembly: NeutralResourcesLanguageAttribute("en")]

    namespace loccons

    {

           class Program

           {

                  static void Main(string[] args)

                  {

                         Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();

                         if ( (System.Console.OutputEncoding.CodePage != 65001) &&

                               (System.Console.OutputEncoding.CodePage !=

                               Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage) &&

                               (System.Console.OutputEncoding.CodePage !=

                               Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage) )

                         {

                               Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");

                         }

                         Console.WriteLine(loccons.strings.txtHello);

     

                  }

           }

    }

     

    This code assumes that you have added strongly typed resources with the base name strings to your project and that the default resources are in U.S. English (this could be any other language too). The resources need to contain a string resource with the name txtHello.

     

    The code first eliminates complex scripts from the UI culture by calling GetConsoleFallbackUI culture – this function falls back to a language most appropriate for complex script cultures, e.g. to French if Arabic (Morocco) was the original UI culture. For non-complex script UI cultures this line is a no-op.

     

    After that the code makes sure that the selected UI culture is actually displayable in the console the code is running in – if not it is falling back to the default UI culture.

     

    Some remarks on how you can actually tweak the console in a limited way to allow display of a language other than the one prescribed by the system locale:

    • In the properties of the command prompt and you can choose the TrueType font (more info on this can be found in Windows Help). In addition you have to set the appropriate OEM codepage by using the chcp or the mod con cp= command. Like this you can for example display Russian text on an English machine, but because the TrueType fonts are not font-linked you can only display languages that are supported by the selected font. A good tip is that you can actually create this customization for a shortcut to a command prompt by setting the property on this shortcut and calling chcp in a startup batch file.
    • In Windows 2000 or higher you can use chcp or mode con cp= to set the codepage to 65001 (UTF-8) – this is an unsupported feature. Like this no characters will be replaced with the standard replacement character ‘?’, but the font display limitations are of course still there.
  • Language and alphabet trees for Indo-European languages

    Via Jon Udell diagrams of language and alphabet trees for Indo-European languages - interesting. I wonder if something like this is available for other language families.
  • Internationalization Sessions at Tech·Ed 2004 Europe

    If you are going to Amsterdam next week and are interested in globalization/localization check out these sessions:

    • DEV392: “.NET Framework: Building Applications with Globalization in Mind“ by Michele Leroux Bustamante giving architectural recommendations and showing how to implement them in Visual Studio.NET 2003
    • DEV404: “Creating a Klingon Culture – More about Globalization and Resource Management“ by Christian Nagel presenting some new features in Visual Studio 2005
    • MBL311: “Building Localized/Globalized Applications for Windows Mobile Devices“ by Goskin Bakir

    You can read more detailed descriptions here (hm, why don't they allow deep linking to the session descriptions?)

  • Non-English TV Ads in the US

    Yesterday in the morning I saw a new Cisco ad on TV advertising their newest color IP phone - in Italian with English subtitles. It seems to be a trend these days to do non-English ads. Does this mean the US becomes more multi-lingual now? Beats me, the advertisers must know something I don't - then again, they always do. My favorite non-English TV ad is still the Chinese Office ad by FedEx with no subtitles at all!

    Compare this to the mostly English ads that you see in Europe - maybe people aren't so scared of globalization after all.

  • New MSDN article on writing world-ready .NET CF applications

    Christian Forsberg wrote an article on how to create multi-lingual and globalized .NET CF applications. Nice. The sample application looks a bit similar to the WorldClock sample application I wrote a while ago, but of course with more info and without using complicated to set up custom controls.

    Note that you can also use the form properties Localizable and Language in the designer to create multi-lingual forms. What that doesn't provide by default is a language switching menu and a dynamic refresh of the form with a newly selected language. You can resize the forms in the designer though and the language user interface switches along with the device language on multi-lingual Windows Mobile 2003 devices.

  • i18n

    I've been playing with the idea to blog for a while - now I'm in it and it wasn't too difficult to get started. I think the hardest thing is to consider what to blog about. I plan to blog about the thing I care about most in computing - internationalization and how it relates to .NET: writing globalized code that works world-wide, making applications localizable, translating them etc. I'll probably also track interesting developments in the industry, requirements for certain countries/regions, the digital divide, the “world-wide“ in WWW, but none of these posts should be understood as Microsoft making a preference - these will be my own purely subjective personal selections.

    So what does the post title mean? i18n = internationalization


© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker