Skip to main content

Internationalization and Globalization Support within .Net

Assignment Manager

http://www.eweek.com/article2/0,1759,1372407,00.asp
http://msdn.microsoft.com/academic/techdown/sharedsource/ssassignmentmgr/getstartassignmgr/default.aspx
http://msdn.microsoft.com/academic/techdown/sharedsource/ssassignmentmgr/default.aspx

Assignment Manager is a student computer science project submittal and tracking software product written in C# Microsoft ships with the Academic SKU of Visual Studio. My firm was contracted by Microsoft to build the original Assignment Manager in early 2000-before .Net was even released. It was intended to serve as an example of how best to compile a solution of this nature. The product has since become shared source and has changed somewhat.
From the official description:

The Assignment Manager enables faculty to manage courses, track assignments, notify students of grades as well as student modules. And the Visual Studio .Net Academic Tools Source Licensing Program gives academic users access to source code for the Assignment Manager Server, Assignment Manager Faculty Client and Assignment Manager Student Client.

Assignment Manager was architected up front to support internationalization (or globalization) and unlimited localizations (languages). We began by utilizing dynamic label controls within user interfaces instead of hard-coding English strings.

All string output dynamically pulled from a satellite assembly. A satellite assembly houses translated strings referenced by a code (e.g. LOGIN_INPUT_LABEL = "click here to login"). An assembly exists to house strings for each supported language. In the previous example, the string supports United States English (en-US). To support Spain Spanish (es-ES), the string might resemble "chasque aquí a la conexión". This string would have the same identifier (LOGIN_INPUT_LABEL) as en-US but reside in a separate satellite assembly and obviously have a different value. .Net provides a facility called a ResourceManager to interrogate the target culture / language and retrieve the appropriate string from the associated satellite assembly.

(Note: because Assignment Manager is a product targeted to a single university setting, the language preference is chosen during installation. In contrast, a public web site providing multiple language support would want to expose this as a choice to the browsing user. )

Next, we utilized internationalization-aware formatting for all numeric, currency, and date output. Using the culture / language preference chosen by the end user, the solution leveraged facilities within .Net to output using the correct format. For example, a date of "2/17/2006" within the United States should appear as "17/2/2006" within the UK because they prefer the month appear before the day.

Next, we configured our ASP.Net pages to support Unicode setting their encoding to UTF-8. This enables the browser to support non-ASCII characters such as a Spanish upside down question mark. Or a letter with a tilde mark.

For maintaining dynamic content, we supplied an administrative interface which supported the input and output of Unicode characters. Therefore, regardless of the language or characters input, our ASP.Net facilities and SQL Server backend stored and retrieved content in it's original format. For content such as a new assignment, a professor could enter text using any language / character set and this would be saved into the database. When it came time for a student to retrieve content, that content was simply retrieved from the database and rendered in the browser without modification. If Spanish were input by the administrator, Spanish would output to the student.

To achieve the actual translated content, we utilized a 3rd party firm. This firm maintained resources adept at all the languages we needed to support. We simply shipped them the human-readable list of strings (the en-US satellite assembly) and they would return the list formatted exactly the same but with all strings translated. The strings were then compiled and available for use within the ASP.Net solution.

Finally, once the application was localized and internationalized, we again leveraged a 3rd party firm to review each and every page for each language / culture to ensure content appeared correctly for that language / culture. Because our team possessed at most command of two languages, we would not have known if a particular language / culture was not appearing correctly.

Comments

Popular posts from this blog

Hero Write-up: Now this is Customer Service!

My best friend Scott is president/C-everything of a small northeastern Ohio manufacturing concern, KirkKey Interlock . I hadn't spoken with him for a while and wanted to see how Canton fared with the Blizzard of '08 (that's what they're calling it...not me). I say, "So what's new?" He replies that on Tuesday his primary server (which essentially runs the business) came up with lame with not one, but [a statistically improbable] *two* physical disk failures on a RAID5 hardware array. My friend attempts the fix but gives up pretty quickly after seeing some Linux nasty-grams on the boot screen. His service provider is an old college buddy who lives down in Raleigh, Cerient Technologies led by Jason Tower . Scott couldn't email out because Exchange was on the toasted server. Being creative, Scott started Treo-emailing photos of the screen. Unfortunately, Jason couldn't receive email because a storm had knocked out a lot of local hosting. [Sigh] After...

Certified or Certifiable?

As a senior technology professional, I interview a lot of candidates. I also maintain solid relationships with other folks in the community. Frequently, the topic of certifications arises: A good investment? Valuable? A clear measurement of skill? Consensus appears to draw the line related to one's seniority. If you're (for example) just out of school and looking for an instant creditability boost, by all means pursue a certification. Likely, this credential will assist you in overcoming the "junior" tag and likely land you more interviews and client roles. (Note: I'm going to use the terms senior and junior here...no offense to either. Can't think of a better one word description. I was a junior once too.) In stark contrast, the value of certifications drops off the table around the 2-3 year mark. Some in my circles even perceive certifications as a negative for the senior professional. They think, "If this guy is so solid, why is he wasting valuable...

Consulting Exodus Trend?

Is it just me or have a significant number of 'A' players left our consulting firms? People come and people go. Ours is certainly not an industry of "lifers". However, within the past year or so, I've witnessed several of my consulting peers -- the folks I really look up to -- leave the consulting arena for [predominately] full-time technology product firms. A smaller number have left for full-time positions at businesses while an even smaller number left to start their own business|firm|freelance|etc. Their departure struck me as odd because these were the type of folks who [I thought] would eventually become owner / partners at their respective firms. Certainly, the firms will carry on and continue to perform well but the departure of these folks would result in nothing less than a severe case of the hiccups and quite possibly a minor cardiac event. You know who you are. Please comment. Do we [the consulting industry] have a brain drain issue? Is this a norm...