Writing
International Applications with .NET Framework
Host: Deepak Gulati, Applications Developer, Microsoft India
May
16, 2002
KunalS_MS: Good afternoon to all present
KunalS_MS: Today's expert chat is on Developing International Applications
on .NET Framework and our expert host is Deepak Gulati
KunalS_MS: Deepak is an Applications Developer in Microsoft and develops
internal tools for Microsoft.
Deepak[MS]: Hi Everyone
KunalS_MS: Today Deepak shall be sharing with you his experience of
developing applications used across multiple international regions
and what it takes to develop them in the .NET Framework
Guest: I would like to know about .NET's built in support for Indian
languages?
Deepak[MS]: Ok .NET framework has support for over 130
cultures... Indian language support is just a part of that
Deepak[MS]: .net defines 3 types of cultures - the invariant
culture, the neutral culture and the specific culture
Deepak[MS]: invariant culture is used for storing/displaying
data in a culture independent manner, neutral culture usually refers
to just the language
Deepak[MS]: specific culture is where all the languages
and regions come into play
Deepak[MS]: you can start by looking at CultureInfo class
Guest: How to explore it?
Deepak[MS]: first make sure that you have Indic support
installed with your OS
Deepak[MS]: Once you have OS ready, you can start using
CultureInfo class with Indian cultures
Deepak[MS]: The framework docs list all the cultures
that are supported - depending on which region in India you are targetting,
you could use an appropriate culture
Guest: What impact does a language have on software development?
Deepak[MS]: Well there are 2 kinds of issues that you
will run into - "Globalization" issues and "Localization" issues
Deepak[MS]: Globalization issues will typically mean
that you cannot handle date/time/currency etc. for a different culture
correctly
Deepak[MS]: e.g. an app done for US will fail for England
- although the language is the same
Deepak[MS]: localization would involve enabling the UI
of the app for a particular language
Deepak[MS]: here is something I developed using ASP.NET
to demonstrate Indian language support
Guest: Do u have a sample app which we guys can explore ?
Deepak[MS]: when you visit this page - you will see a
normal page with english UI, you can then click on the language name
to toggle the UI for each language Guest: We develop applications
for the middle east market , one question that keeps coming up is
do we save the data in the database in that particular language or
unicode, how will .NETaddress this?
Deepak[MS]: First thing you need to make sure is that
your data is being stored correctly...
Guest: How is developing internet applications with .NET is different
from the previous ones?
Deepak[MS]: The .NET globalization support is phenomenal!
.NET framework was written with typical globalization/localization
people face in mind
Deepak[MS]: All the date/time/number formatting functions
are culture aware - plus .net makes it very easy to take a culture
and extend it
Deepak[MS]: e.g. if you come across a new culture where
you have * symbol used as thousand separator, you can modify the NumberFormatInfo
to make it use as thousand separator
Guest: It means that we can make culture neutral applications which
would adapt to the culture they are deployed, right?
Deepak[MS]: Yup - as long as you explicitly set the culture
for your app - it shouldn't break in a new culture
Guest: I have Win NT on my notebook which i am using, any ideas if
i can get Indic on that?
Deepak[MS]: I am not sure if NT supports Indic cultures
out of the box - you should be looking at upgrading to Win2k at least
Guest: So would that be a limitation if my clients have Win NT boxes?
Deepak[MS]: Yup - it could be - but let me verify this
for you.. I have personally not seen NT in last 3 years - and I don't
think its a supported platform for asp.net
Deepak[MS]: Actually IE supports Unicode, so with the
right fonts installed it should work for NT clients - 95,98 things
might get a little messy
Guest: How do I set the FrontPage Extensions on my Win2000 Server?
Please give the path to it?
Deepak[MS]: FrontPage extensions can be installed from
Control Panel -> Add Remove Programs -> Add Remove Windows Components..
and please keep your questions relevant to chat topic
Guest: When I am deploying .NET based apps which were developed suppose
in Arabic do I need to tell my customers that they need to upgrade
their workstations too to Win 2000?
Deepak[MS]: Installing appropriate fonts for Arabic on
your clients should take care of it
Deepak[MS]: I haven't verified this - but give it a try
and let me know
Guest: But is there any way that u can write the control panel settings
of Indic Support with the help of Codes?
Deepak[MS]: Nope - but this can be done as part of the
setup - you can automate the setup to make sure Indic support is installed
Guest: What are the Limitations of writing International application
with .NET right now?
Deepak[MS]: None that I can think of! As long as you
have the appropriate culture installed - it¡¦s a breeze!
Deepak[MS]: Ok may be one - we don't yet support localized
digits in calendar.. e.g. Hindi has its own characters for digits
- they are not yet supported
Deepak[MS]: the same is true for many other Indic and
Arabic culture
Guest: I want to develop the site for charity organization in Gujrati
on windows 2000. Content is available in softcopy and some of the
content needs to be prepared by typing on my PC. Can you guide how
can i do this with windows 2000 server?
Deepak[MS]: You are in Good Luck - Gujarati is supported
by .NET - just have the appropriate Indic culture installed and you
should be able to use it.
Deepak[MS]: for typing in Gujarati content you can use
Word 2000/XP with appropriate Input Method Editor
Guest: Dynamic Fonts creation using WEFT tool of Microsoft is still
supported? Any similar thing is available in .NET without downloading
the dynamic fonts to client?
Deepak[MS]: Your clients will need Indic support installed..
I will get back to you on WEFT tool offline
Guest: Are these internationalization principles available to ASP.NET
apps too?
Deepak[MS]: Most of what is applicable to Windows applications,
is also relevant to ASP.NET as well
Guest: Are there any examples of Sites which have been developed using
Globalization?
Deepak[MS]: Yes, almost all the content on Microsoft.com
is localized!
Guest: If I have multiple culture in my application, will i have to
use multithreading?
Deepak[MS]: Nope, you just need multiple cultureinfo
objects - you can remain single threaded and handle multiple cultures
Guest: As far as Hindi is concerned what all would I need to install
on client workstations which have Win 95, etc and who would be accessing
ASP.NET pages?
Deepak[MS]: You will need Indic support on workstations..
I'll need to check if we support systems older than Win2K.. Windows
95 is not supported by MS any longer
Guest: If I want to develop the German application what I need to
do? I do not have the German content which needs to be prepared by
key in? Can i store the German content in SQL Server? Do i require
anything on client end? What is WEFT?
Deepak[MS]: Ok - you can use appropriate German culture
(de- ) to make sure you are formatting date, time, currency etc. correctly
Deepak[MS]: for localizing the UI, you'll need to store
your strings as resources - you'll need someone who knows German to
do that
Deepak[MS]: German can be stored in SQL Server - German
can be used without Unicode - check out SQL books online
Deepak[MS]: you can even try sp_helplanguage proc to
get a list of all the supported collations
Deepak[MS]: WEFT - is a tool that allows you to do dynamic
fonts and embed them in your .htm pages so that if a client without
that font hits your page, they are automatically downloaded
Guest: I went to www.microsoft.com/china it asked me to download the
component for Chinese support. But the component download failed.
[Comment]
Deepak[MS]: Not sure why it should fail - if you want
to browse Chinese correctly - you should install support for East
Asian languages from control panel -> Regional options
Guest: Is there any way to find the server LCID programmatically,
so that when it is served from UK i will have dd/mm/yyyy and if it
is from US I will have mm/dd/yyyy?
Deepak[MS]: Yes you can inspect CurrentCulture of Thread.CurrentThread
to get LCID
Deepak[MS]: though its lot easier to remember if you
use the ISO names
Deepak[MS]: look at the LCID property of cultureinfo
Guest: I have a .NET Remoting server application which talks to existing
Java client, of course using SOAP, HttpChannel, etc. When I decide
to make my application as international but without affecting any
existing clients...
Guest: ...does it have any facility like dynamic fonts or say anything
else?
Deepak[MS]: Well depends on what your application does..
lets say its an mpeg compression algorithm - then you don't need to
localize! Think what parts are exposed to users and then localize
Deepak[MS]: There is something called font-linking..
Deepak[MS]: lets say you are using Verdana - now Verdana
might not have all the characters for all the languages - in this
case it can "borrow" characters from other appropriate fonts and display
Deepak[MS]: you'll need the proper fonts installed though
Deepak[MS]: it happens behind the scene - without you
having to do anything...
Deepak[MS]: it happens on client side.. yup
Guest: It happens on client side only?
Deepak[MS]: but its best to have the font name coded
appropriately if you work with Far Eastern Languages
Deepak[MS]: there is a common region in Unicode CJK region
Chinese Japanese Korean - which share some characters
Deepak[MS]: so the system might pick a Chinese font when
it encounters a character form CJK region while rest of your string
could be in Japanese
Deepak[MS]: not very pretty
Guest: Can u tell me where I can find these font files and how do
i code for autodownload? Any URL might help.
Guest: CultureInfo.Calender supports any of the Indian Calendars?
Deepak[MS]: Nope... no Indian calendars are supported
- though you can customize Gregorian calendar to use day/month names
in Indian languages
Deepak[MS]: Gregorian Calendar, Hebrew Calendar, Hijri
Calendar, Japanese Calendar, Julian Calendar, Korean Calendar, Taiwan
Calendar and Thai Buddhist Calendar are supported currently
Guest: For internationalization, what are all the classes in the framework
we have to look into?
Deepak[MS]: These namespaces have classes that you should
look into Guest: Will WEFT download the German and Gujrati fonts on
client side if not available on client end?
Deepak[MS]: Yup.. It would.. as long as you package it
correctly http://www.microsoft.com/india/office/
- look at the pages in local languages they do something similar
Deepak[MS]: you'll need to give the url in your style
tag correctly for this to work.. WEFT's documentation should cover
that
Deepak[MS]: Ok there were two aspects to it
Deepak[MS]: the front end localization was done using
resources in different languages.. I knew Hindi so it was simple,
I took help of a friend for doing Tamil Resources
Deepak[MS]: the backend is SQL Server and is using NVarChar
to hold the data
Deepak[MS]: those of you who tried the demo, would have
seen the SQL statement that was used for inserting data
Deepak[MS]: I'll share the source code of this demo application
with all of you soon