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...

Lab Management in Visual Studio 2010 Released

In my experience, there's a lot of animosity and poor communication between Development and QA . It's not that they don't appreciate one another so much as they never seem to stay on the same page. QA : "What's the status on defect #4874?" Dev: "Done." QA : "Done?" Dev: "Yeah, I fixed that Tuesday." QA : "Err, ok . Well where is it? I mean where can I verify it?" Dev: "No clue. I committed it Tuesday. It passed unit tests and built successfully." QA : "Alright. I'll track it down." Invariably , QA speaks with the build manager (if there is one) to find the build in which that defect was repaired. After discovering the correct build, now QA needs an environment stood up to house that build. But wait, the UAT environment is currently testing the next release. It can't be disturbed for another week. At this point, the QA person's blood pressure heads for unsafe levels and the Dice.com bro...