<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Localization Tool &#187; Renate</title>
	<atom:link href="http://www.the-localization-tool.com/?feed=rss2&#038;author=2" rel="self" type="application/rss+xml" />
	<link>http://www.the-localization-tool.com</link>
	<description>Articles around software localization with Sisulizer by its users, friends, and makers</description>
	<lastBuildDate>Thu, 09 Sep 2010 12:57:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Resourcing hard coded strings in Delphi</title>
		<link>http://www.the-localization-tool.com/?p=1537</link>
		<comments>http://www.the-localization-tool.com/?p=1537#comments</comments>
		<pubDate>Fri, 28 May 2010 15:17:08 +0000</pubDate>
		<dc:creator>Renate</dc:creator>
				<category><![CDATA[Software Localization]]></category>

		<guid isPermaLink="false">http://www.the-localization-tool.com/?p=1537</guid>
		<description><![CDATA[Software localization tools like our Sisulizer localizes binaries, like executables (.exe) or library files (.dll). That has many advantages like You do not need to give third-parties like translators access to your source code Your source code will not be changed itself Less files need to be exchanged with your translators to name a few. [...]]]></description>
			<content:encoded><![CDATA[<p>Software localization tools like our Sisulizer localizes binaries, like executables (.exe) or library files (.dll). That has many advantages like</p>
<ul>
<li>You do not need to give third-parties like translators access to your source code</li>
<li>Your source code will not be changed itself</li>
<li>Less files need to be exchanged with your translators</li>
</ul>
<p>to name a few.<br />
This works fine when your strings are stored in string tables of Windows resources. Luckily this is very easy in Delphi. Just use a <strong>resourcestring <span style="font-weight: normal;">block </span></strong>instead of hard-coding the string.</p>
<h4>Don&#8217;t use hard coded strings like</h4>
<pre><strong>procedure</strong> TForm1.FormCreate(Sender: TObject);

<strong>begin</strong>

  Label2.Caption := <span style="color: #ff0000;">'Click the above button to process data'</span>; 

<strong>end;</strong></pre>
<h4>Use Delphi resourcestring blocks like</h4>
<pre><strong>procedure</strong> TForm1.FormCreate(Sender: TObject);

<strong>resourcestring</strong>

  SClickButton = <span style="color: #0000ff;">'Click the above button to process data'</span>;

<strong>begin</strong>

  Label2.Caption := SClickButton;

<strong>end;</strong></pre>
<p>Use unique and descriptive names as resource strings. That gives you and your translator a much better idea of the context of the string, and a way better chance for a fast and good translation.</p>
<h4>What if you have hard coded strings in 100k+ lines of Delphi code</h4>
<p>What do you want to hear? Bad luck, internationalization tools are very expensive, chances a good that you have a lot of stupid work in front of you? I fear I have given too much people answers more of less like these. Shame on me.<br />
First, you are not alone. And even better there is a great tool around that will help you through that job. And all this at a very competitive price.</p>
<h4>Resourcing with CodeExplorer</h4>
<p>CodeExplorer provides a whole set of ways to convert your hard coded strings to resources.</p>
<ul>
<li>Converting a hard coded string at the cursor.</li>
<li>Converting all hard coded strings of an entire file, or even multiple files with sophisticated wizards</li>
<li>Converting hard coded strings by using the command line tool</li>
</ul>
<p>And it comes with various options for scanning, and converting, I.e. it helps you to identify strings that do not need to be localized at all, or do need special attention like SQL statements. It also provides warning mechanism for units.<br />
CodeExplorer is made by our Dutch Embarcadero CodeGear Technology Partner fellow Modelmaker Tools. Prices start at EUR 99. Read more about <a href="http://esd.element5.com/affiliate.html?affiliateid=200046972&amp;publisherid=22886&amp;target=http%3A%2F%2Fwww.modelmakertools.com%2Farticles%2Fhard-coded-strings.html">resource string conversion with CodeExplorer</a> on their web site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-localization-tool.com/?feed=rss2&amp;p=1537</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi Developer Days</title>
		<link>http://www.the-localization-tool.com/?p=1478</link>
		<comments>http://www.the-localization-tool.com/?p=1478#comments</comments>
		<pubDate>Sat, 08 May 2010 00:16:12 +0000</pubDate>
		<dc:creator>Renate</dc:creator>
				<category><![CDATA[Localization Tools]]></category>

		<guid isPermaLink="false">http://www.the-localization-tool.com/?p=1478</guid>
		<description><![CDATA[Are you developing in Delphi, and want to take a look beyond software localization? Delphi Developer Days 2010 is a five-city tour in the United States and UK/Europe this May – June 2010. We are proud sponsor of these interesting event from top Delphi experts Marco Cantù and Cary Jensen. Hurry, to get one of [...]]]></description>
			<content:encoded><![CDATA[<p>Are you developing in Delphi, and want to take a look beyond software localization? Delphi Developer Days 2010 is a five-city tour in the United States and UK/Europe this May – June 2010. We are proud sponsor of these interesting event from top Delphi experts Marco Cantù and Cary Jensen. Hurry, to get one of the last seats in London or Frankfurt.<br />
London, UK: 26-27 May, 2010<br />
Frankfurt, Germany: 31 May-1 June, 2010<br />
This one-of-a-kind event includes both joint sessions, presented by Marco and Cary together, as well as simultaneous tracks, where Marco and Cary break out into separate rooms to present individual topics. Whether you are using the latest version of Delphi, Delphi Prism, or are developing with an older Delphi version, you will come away with loads of information that will improve your development and make you more productive. Complete descriptions and a schedule are at: <a href="http://www.DelphiDeveloperDays.com/descriptions.html" target="_blank" title="Developing Delphi">www.DelphiDeveloperDays.com/descriptions.html</a><br />
There web site is in any case worth a visit because of its nice list of Delphi resources like user groups.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-localization-tool.com/?feed=rss2&amp;p=1478</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online Help Localization</title>
		<link>http://www.the-localization-tool.com/?p=10</link>
		<comments>http://www.the-localization-tool.com/?p=10#comments</comments>
		<pubDate>Tue, 06 Mar 2007 15:53:10 +0000</pubDate>
		<dc:creator>Renate</dc:creator>
				<category><![CDATA[Software Localization]]></category>

		<guid isPermaLink="false">http://www.delphi-localization-tool.com/?p=10</guid>
		<description><![CDATA[Localizing windows software has an easy phase and a hard phase. Usually, the user interface elements, such as the menu and dialogs, are easy. In most cases, the amount of translatable text is minimal. This leads many companies to the conclusion: &#8220;OK, let’s go for other language versions of our software.&#8221; If the process involves [...]]]></description>
			<content:encoded><![CDATA[<p>Localizing windows software has an easy phase and a hard phase. Usually, the user interface elements, such as the menu and dialogs, are easy. In most cases, the amount of translatable text is minimal. This leads many companies to the conclusion: &#8220;OK, let’s go for other language versions of our software.&#8221; If the process involves one language, you might not even consider using a localization tool.</p>
<p><strong>The hard job</strong></p>
<p>Does your software have a large online Help file? Guess what is the hard part? Translating the initial language version can be expensive; however,  this part of the process is not difficult. The difficult part comes when you improve your software and online Help. Finding the differences between the original Help file and the updated Help can be hard, especially as you want to keep your translation costs low and the translation process efficient.</p>
<p><strong>No tools</strong></p>
<p>Why is that so? When we began localizing software from English to German, back in 1995, no tools existed for online Help localization. Computer-aided translation tools focused on documents for printed manuals; software localization tools ignored online Help. And no online Help authoring tool had real localization support.</p>
<p><strong>Localizing with HAT</strong></p>
<p>You can use the same process we did: we translated online Help in the same online Help authoring tool that is used to create the software’s original Help by copying the original project.  We did that easily because we used a tool we know ell, ForeHelp. But with every new version, we had difficulties in determing what needed changing. Fortunately, the Help authoring tool was extended with a functionality that listed the changed and new topics. Unfortunately, we found that determing what changed in a Help topic was still very tedious work.</p>
<p><strong>Localizing with HTML Editor</strong></p>
<p>Later on, with the introduction of HTML-based online Help, html editors, like Dreamweaver or FrontPage, became very popular for creating the translated versions. But, even with these tools, determing changes is difficult. This is because changing the layout of an html Help page usually changes the file date too. Therefore, you might that the page needs updating, when it really doesn&#8217;t. You might have to read an entire page, sentence by sentence, to determine this. Even a file diff tool does not help much because it usually does not see the difference between html tags and real content.</p>
<p><strong>HATs with localization support</strong></p>
<p>A few years ago, the first online Help authoring tools offered localization support. Often, this kind of feature exports xml file(s). Surprisingly these tools are either topic based or process such small chunks of text that it is hard to determine the context. The context is usually in a separate file. None of these Help authoring tools (HATs) offer built-in translation memory support.</p>
<p><strong>Localization Tools with HTML Help support</strong></p>
<p>The newest generation of localization tools like Sisulizer, finally integrates online help localization in a software localization process. Whenever you implement changes in the software, and/or html help, just rescan, and your translator sees exactly the strings that must be translated. And, because the text is segmented in linguistic sentences, instead of splitting at html tags, the context is always clear. At long last, you have access to a tool that allows all parts of your application to share the same translation memory.</p>
<p>You may want to give this tool a try. Click the following link to get a 30-day full evaluation version: <a href="http://www.sisulizer.com/downloads.shtml">Sisulizer Localization Tool Evaluation</a>. During the Setup process, please choose Sisulizer Enterprise.</p>
<p>— Renate Reinartz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-localization-tool.com/?feed=rss2&amp;p=10</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Software developers and localization tools</title>
		<link>http://www.the-localization-tool.com/?p=11</link>
		<comments>http://www.the-localization-tool.com/?p=11#comments</comments>
		<pubDate>Tue, 06 Mar 2007 15:07:13 +0000</pubDate>
		<dc:creator>Renate</dc:creator>
				<category><![CDATA[Software Localization]]></category>

		<guid isPermaLink="false">http://www.delphi-localization-tool.com/?p=11</guid>
		<description><![CDATA[In the past, I have worked with many software companies, and they all have one problem in common: Software developers like home-brewed solutions, independent from the development language they use. The reason is this: Software developers are all brilliant in their job! And there is nothing on earth they cannot code in a few hours, [...]]]></description>
			<content:encoded><![CDATA[<p>In the past, I have worked with many software companies, and they all have one problem in common: Software developers like home-brewed solutions, independent from the development language they use.</p>
<p>The reason is this: Software developers are all brilliant in their job! And there is nothing on earth they cannot code in a few hours, especially if the code concerns exporting and importing strings. Don&#8217;t take me wrong: I have falling into this coding trap many times.</p>
<p>A developer may think that having all strings in one format can do the job. However, the context for the strings can be lost in one file format. He/she may produce a text file, Microsoft Office&reg; document, database, or xml file(s). If the programmer plans in advance, he/she might even export only changed or new strings; or, even better, add this kind of information to the translatable text. But have ever considered working with translation memory. Usually, money is not the issue: even successful software companies resist spending money on a localization tool.</p>
<p>The funny thing is that software developers love to automate their work and hate to code the same thing twice. That is exactly the point where you can get them.</p>
<p>Life is like that: if you haven’t done it, you can hardly imagine doing it. To be honest, if you never have localized software on your own, especially for more than one release, you hardly know anything about the complexity of the process.</p>
<p>No translator enjoys translating the same strings again and again. And translating text out of context is just guessing. trust me: you should not hire a professional software translator for that kind of work.</p>
<p>Markus article <a href="http://www.delphi-localization-tool.com/?cat=1">A beginner’s guide to Windows software localization</a> provides more detailed information about these issues.</p>
<p>— Renate Reinartz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-localization-tool.com/?feed=rss2&amp;p=11</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skip the typical software localization beginner&#8217;s traps</title>
		<link>http://www.the-localization-tool.com/?p=6</link>
		<comments>http://www.the-localization-tool.com/?p=6#comments</comments>
		<pubDate>Tue, 26 Sep 2006 20:40:43 +0000</pubDate>
		<dc:creator>Renate</dc:creator>
				<category><![CDATA[Software Localization]]></category>

		<guid isPermaLink="false">http://www.delphi-localization-tool.com/?p=6</guid>
		<description><![CDATA[Localized software opens new markets and creates more revenue. This concept sounds great; however, what does it mean for you, as a software developer? How can you write software that you can easily localize? And what does localization mean for your day-to-day work? You might consider the following: What is different in other cultures? The [...]]]></description>
			<content:encoded><![CDATA[<p>Localized software opens new markets and creates more revenue. This concept    sounds great; however, what does it mean for you, as a software developer? How    can you write software that you can easily localize? And what does localization    mean for your day-to-day work?</p>
<p>You might consider the following: What is different in other cultures? The    differences include many areas:</p>
<p><a href="#address">Address</a>, <a href="#charset">character sets</a>, <a href="#codepage">code    pages</a>, <a href="#currency">currency</a>, <a href="#date">date</a>, <a href="#language">language</a>,    <a href="#list">list separators</a>, <a href="#measurement">measurements</a>,    <a href="#number">numbers</a>, <a href="#paper">paper sizes</a>, <a href="#phone">phone    numbers</a>, <a href="#sort">sort order</a>, <a href="#tax">taxes</a>, <a href="#time">time</a></p>
<p><a /></p>
<h2><a name="language"></a>Languages</h2>
<p><a name="language"></a><a name="language"></a>Your first consideration is most likely the language. At the very least, you    must think about how to translate all strings in the application user interface.    Usually, these are strings for menu entries, dialog boxes, message boxes, the    status bar, and error messages.</p>
<p><a name="language"></a><a name="language"></a>If you want to send all strings to a translator, you must consistently separate    strings from source code. Start this process now. Don’t wait until you    are under pressure to meet a deadline. All major development languages for Windows    support resource files. You have no excuse! You can easily read strings from    resources, such as in classic Visual Basic with LoadResString or LoadStr in    a VCL application.</p>
<p><a name="language"></a><a name="language"></a>Solution: Store all strings in Windows standard resource files; or, if you    develop with Microsoft .Net, use ResX.</p>
<p><a name="language"></a></p>
<h2><a name="charset"></a>Character Sets</h2>
<p><a name="charset"></a><a name="charset"></a>Using a different language often means you must consider another character    set. Especially if English is your first language, you might think that you    need only 128 characters. However, many languages use special characters:</p>
<p><a name="charset"></a></p>
<ul><a name="charset"></a></p>
<li><a name="charset"></a>French accents, like in à, é, î, and ç,</li>
<p><a name="charset"></a></p>
<li><a name="charset"></a>Spanish punctuation, like the reverse question mark ¿,</li>
<p><a name="charset"></a></p>
<li><a name="charset"></a>Umlauts, like ß, ä, ö and ü in Germany or Finland,</li>
<p><a name="charset"></a></p>
<li><a name="charset"></a>Other umlauts, like æ and å used in Denmark, Norway      or Sweden.</li>
<p><a name="charset"></a></ul>
<p><a name="charset"></a><a name="charset"></a>The list is endless. So how would you feel if you couldn&#8217;t use characters from    your own native alphabet? What if your name is <strong>Henry</strong>, and you    couldn&#8217;t write your name, because a Russian software developer would not support    the letter <strong>H</strong> as his/her language does not use that letter?    Would you write <strong>enry</strong> instead? Or would you directly uninstall    the application?</p>
<p><a name="charset"></a><a name="charset"></a>Solution: You should use Unicode string handling in your application, whenever    possible. This allows you to support all languages and character sets. The Unicode    Windows API can help you accomplish this. If your development environment does    support ANSI character sets, you should ensure that you do not restrict your    input to the first 128 characters.</p>
<p><a name="charset"></a></p>
<h2><a name="codepage"></a>Code Pages</h2>
<p><a name="codepage"></a><a name="codepage"></a>Unfortunately, few development systems support Unicode in their visual components.    This is the case in Visual C++ and .NET languages like C#, Visual Basic .NET.    Many others, such as VCL Delphi and classic Visual Basic development systems,    do not have built-in Unicode support for the GUI. In these cases, your program    will start with the code page the user set for non-Unicode applications in the    system. You cannot influence this setting from within your application. If you    exchange data with your translator or user, make sure that you know how to handle    code pages (read more).</p>
<p><a name="codepage"></a><a name="codepage"></a>Solution: Use a localization tool that handles all languages and streamlines    the data exchange process. Search for a localization tool that supports double-byte    and left-to-right code, so that you don&#8217;t have problems later.</p>
<p><a name="codepage"></a></p>
<h2><a name="number"></a>Numbers</h2>
<p><a name="number"></a><a name="number"></a>A number is a number is a number, you might suppose. Wrong. Numbers are formatted.    Two things differ between countries: the decimal and the thousand separator.    Some countries, like the USA, use a comma to separate thousands and a point    as a decimal separator. Therefore, one thousand and two cents are 1,000.02.    Other languages, such as German, use a comma and a point in the opposite way,    so 1.000,02 displays the same as the previous example. In Switzerland, it is    1&#8217;000,02 because the Swiss use the quote sign as the thousand separator.</p>
<p><a name="number"></a><a name="number"></a>Solution: Do not store numbers internally, in databases, or in files as formatted    strings. Always use a numeric variable type like Long or Float. When you display    numbers, format them with the right system setting for the thousand and decimal    separators. The Windows API provides functions to get the appropriate values.    In .Net, check the culture name space. When you allow user input, make sure    that the user knows which format is required.</p>
<p><a name="number"></a></p>
<h2><a name="currency"></a>Currencies</h2>
<p><a name="currency"></a><a name="currency"></a>The currency used in a country affects your application, too. Most currencies    have their own currency symbol. Examples are € for Euro in Europe, £    for the British pound, or Italian lira (outdated), ¥ for the Japanese yen    or Chinese Yuan, and $ for the dollar used in Australia, Canada, Jamaica, New    Zealand, USA, and many others. The currency symbol is defined in the character    set used in the country. The symbol is also defined in the regional settings    of the Windows control panel.</p>
<p><a name="currency"></a><a name="currency"></a>Because the symbol does not fully specify the currency as shown in the previous    examples, you should use the international three-character currency codes derived    from ISO 4217, like USD for US dollar, EUR for Euro and so on. If your application    handles more than one currency, you should save the currency code, too. You    should be careful when you define a currency field, and exchange data with a    spreadsheet or database application, like Excel or Access. These applications    use the system setting. The monetary difference is quite large in the conversion,    such as going from the Japanese Yen (JPY) to the US $ (USD) without currency    conversion.</p>
<p><a name="currency"></a><a name="currency"></a>In addition, you should be aware that the currency code might be placed in    front of, or behind, the currency value.</p>
<p><a name="currency"></a><a name="currency"></a>Solution: Be sure to check the system settings for the default currency and    symbol placement. The Windows API provides functions to get the appropriate    values. In .Net, check the culture name space. Be prepared and use the international    currency codes. When you allow user input, make sure that the user knows which    format is required.</p>
<p><a name="currency"></a></p>
<h2><a name="date"></a>Dates</h2>
<p><a name="date"></a><a name="date"></a>You should never hard-code date values. The date order is different between    countries. In the short date format, the USA uses mm/dd/yyyy where m is the    month, d is the day, and y is the year. Germany uses dd.mm.yyyy. If you do not    take care of this, for example, in Visual Basic, a date string like 12/9/2006    can be interpreted as 9th December or 12th September. If you use medium or long    date formats, the day and month names must also be translated. If you use format    routines, you should ensure that your development system supports date format    in the way that you require. If you need to calculate with dates, store them    in a format that is system independent like the ISO 8601 format yyyy-mm-ddThh:mm:ss;    you can also convert the dates to a system-independent date number format, such    as date serial. This makes dates sorting easy.</p>
<p><a name="date"></a><a name="date"></a>Solution: Be sure to store dates internally and in files without using a format.    Use the data type for your programming language. If you allow user input, collect    the day, month and year in separate fields, and internally build a date data    type from these fields. When you display dates, format them with the right system    settings. The Windows API provides functions to get the appropriate values.    In .Net, check the culture name space. When you allow user input, make sure    that the user knows which format is required.</p>
<p><a name="date"></a></p>
<h2><a name="list"></a>List Separators</h2>
<p><a name="list"></a><a name="list"></a>Who needs list separators? You do, trust me. You should consider list separators    whenever you handle a string array in multi-column list boxes, memory, or comma    separated values files (.csv). .Csv files are only comma separated for languages    that use a comma as list separator. However, many languages do use a comma    to separate decimals in numbers, that&#8217;s why they use a semi-colon (;) to separate string    arrays.</p>
<p><a name="list"></a><a name="list"></a>Solution: Get the list separator setting of the user system. The Windows API    provides functions to get the appropriate values. In .Net, check the culture    name space.</p>
<p><a name="list"></a></p>
<h2><a name="measurement"></a>Measurements</h2>
<p><a name="measurement"></a><a name="measurement"></a>You should never hard-code local measurements, like inches and miles. Whenever    possible, you should use the metric standards, such as centimeter and kilometer.    You can take the same approach for weight: instead of pounds, use kilograms.    In addition, the liter is more popular than pint or gallons. The metric system    differs in other countries. Moreover, ISO favors the metric system now. Even    kilobyte is no longer 1024 bytes in ISO; kilobyte is 1000 bytes, because average    people are accustomed to counting metrics. I am personally humbled and embarrassed    that I missed that for seven years. On a more serious note, in some European    Union (EU) countries, placing ads with non-metric measurements is against the    law.</p>
<p><a name="measurement"></a><a name="measurement"></a>Solution: Don&#8217;t hard-code measurements and be prepared to select and convert    them.</p>
<p><a name="measurement"></a></p>
<h2><a name="paper"></a>Paper Formats</h2>
<p><a name="paper"></a><a name="paper"></a>If you print many documents, you might have wondered how many odd formats your    printer driver can handle. Not surprisingly, paper sheets come in many more    sizes than just the standard letter and A4 paper.</p>
<p><a name="paper"></a><a name="paper"></a>Solution: If you must format the printout, check the paper format. You can    get this information from the Windows API or directly from the printer object    or class in your development language. Do not expect only one of these sizes    because user-defined types might be used. For example, professional output devices    might have sizes like A4+ for borderless A4 output.</p>
<p><a name="paper"></a></p>
<h2><a name="phone"></a>Phone Numbers</h2>
<p><a name="phone"></a><a name="phone"></a>Usually, an international phone number has three parts after the leading plus    sign: country calling code, area code, and local phone number. A country calling    code consists of one to three digits; for example, 1 for USA and Canada, 32    for Belgium, 420 for Czech Republic, and 86 for China. However, many countries,    such as Denmark, do not have an area code. The number of area code digits also    differs. Sometimes it is a defined number, like three in the USA; however, in    Germany, the area code can have three to five digits after the leading zero.    German callers do not use the leading zero in international calls from Germany.    This contrasts with Italy, where you must dial the leading zero in international    calls. The digit number for the local number also differs. In Germany, local    numbers can contain three to seven digits, sometimes even eight for numbers    to a pbx. In some countries like the USA, phone numbers can also contain an    extension at the end, separated by a hash #, which is used only by the pbx of    the phone holder. The only consistent aspect of a telephone format is that an    international phone number can&#8217;t be more than 15 digits.</p>
<p><a name="phone"></a><a name="phone"></a>Solution: To be safe, internally save international phone numbers. Don&#8217;t accept    input that is only in your local phone format. You should always accept international    numbers. For example, don&#8217;t limit the area code to three digits or require seven    digits for local numbers.</p>
<p><a name="phone"></a></p>
<h2><a name="sort"></a>Sort Order</h2>
<p><a name="sort"></a><a name="sort"></a>As described in the previous information about character sets, different countries    or languages have different lists of characters, or, in other words, different    alphabets. Thus, the languages can have additional characters like umlauts or    accents, such as in German, French, Danish, Swedish, Norwegian, Finnish, Turkish,    and so on. Some languages don&#8217;t support some of our favorite characters, like    h in Russian, x in Greek, and many more. All these languages sort their characters    differently. If you do alphabetical sorts in your application, you should at    least think about supporting the sort order in the localized language. Amazingly,    even large or popular applications do not support sort order in their localized    applications, at least in the past. Supporting different sort orders depends    on the importance of your users alphabetizing their data. For example, if you    have an application that handles addresses, contact information, or other large    amounts of data, your user will definitely miss this feature.</p>
<p><a name="sort"></a><a name="sort"></a>Solution: In .Net, you can check the culture name space for the sort order.    In other development systems, you must check your string sorting routines; and,    for your own implementation, you may have to collect the data on the web first.</p>
<p><a name="sort"></a></p>
<h2><a name="state"></a>States</h2>
<p><a name="state"></a><a name="state"></a>If you design an online contact form, you should never force your user to enter    a state, or, even worse, select one of the 50 US states. Not all users live    in the USA and are used to providing the state they live in. Some users might    live in countries that use other systems, like departments in France or counties    in Great Britain.</p>
<p><a name="state"></a></p>
<h2><a name="tax"></a>Tax System</h2>
<p><a name="tax"></a><a name="tax"></a>If you produce an accounting application, keep in mind that tax systems are    different in many countries. In the EU, for example, a gross tax is named a    value-added tax, but no local sales tax.</p>
<p><a name="tax"></a></p>
<h2><a name="time"></a>Time</h2>
<p><a name="time"></a><a name="time"></a>If you use time, you must consider the twelve and twenty-four hour models over    the world. Twelve-hour systems, as used in the United Kingdom or USA, use am    and pm to define whether the time is before or after lunch. You must ensure    that time zones are reflected in your application. Which time coding do you    need? Local times, like Eastern Standard Time (EST) in New York, Mountain Standard    Time (MST) in Colorado, or Pacific Standard Time (PST) in California, USA? Greenwich    Mean Time (GMT) is international time and is the basis for the world time clock.    GMT is the preferred time if you exchange data in other countries. This time    system is based on the local time in the English city Greenwich (GMT+0). All    time differences are given in GMT+x or GMT-x. For example, France, Germany,    and the Netherlands show GMT+1, PST is GMT-8, EST is GMT-5, and Japan is GMT+9.    Differences may also occur in summer and winter. Most countries have summer    time savings, although Japan does not. There is another time system, Zulu or    UTC. If you need to code time, such as in e-mail or Internet formats, you can    check the related RFCs to store time.</p>
<p><a name="time"></a><a name="time"></a>Solution: Make sure that you store time internally and always use the same    time zone in files. When you display a time format , use the correct system    settings. The Windows API provides functions to get the appropriate values.    In .Net, check the culture name space. Use GMT time coding, instead of local    formats, such as MST and PST. These time formats are not common outside the    USA, and a US user probably has no clue as to what CET (Central European Time)    means.</p>
<p><a name="time"></a></p>
<h2><a name="other"></a>Other traps</h2>
<p><a name="other"></a><a name="other"></a>Depending on your application, you should check legal issues, cultural differences,    standards, and more. These issues may result in logical changes to your source    code. For example, accounting rules differ between the USA and Germany and popular    payment methods can vary.</p>
<p><a name="other"></a><a name="other"></a>Cultural differences can bring you serious trouble or kick your product completely    out of the market. I&#8217;m sure that you don&#8217;t want to offend your users. You should    never use certain colors, body parts, or animals. Different cultures see these    things differently. There is a rumor about Borland from the very early days.    In Germany, Borland used a pig in the Turbo Pascal ads. These ads were very    popular: a pig brings luck and can represent speed in Germany. The rumor is    that the Borland founder and former CEO, Philippe Kahn, stopped the German ads.    As a native Frenchman, he did not want a pig associated with his products.</p>
<p><a name="other"></a></p>
<h2><a name="other"></a>Conclusion</h2>
<p><a name="other"></a><a name="other"></a>Don&#8217;t be shocked about the number of differences in our many global cultures.    Most of the differences are easy to address in your application code. Other    software companies have tackled these problems, so you don&#8217;t need to reinvent    the wheel. Many fine tools are available. In particular, the Windows API provides    all of the tools you need. Moreover, if you are already using .NET, you are    a top priority with Microsoft, because Microsoft knows they must appeal to the    global programmer and provide you with the right tools&#8212;at the beginning of    your software development process, when it matters most.</p>
<p><a name="other"></a><a name="other"></a>When you write flexible code, localization is a snap. However, if you have    hard-coded some of the items mentioned in this article, you have much work to    do. Take the chance to implement this article’s recommendations in the    beginning of your project. Plan a bit more in advance. This will save you time    and money.</p>
<p><a name="other"></a><a name="other"></a>Most developers who have hard-coded strings are afraid of converting their    application to string resources. Yes, if you have a large application with many    strings, this process can cost you a few extra days. However, you will save    more time and money when you start the localization process. All your hard work    will pay off, as you can process every language and every update easily and    efficiently. Remember to ensure that your resource files are Unicode-aware,    so that you are prepared for the future.</p>
<p><a name="other"></a></p>
<p>&#8212; Renate Reinartz</p>
<p><a name="winapi"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-localization-tool.com/?feed=rss2&amp;p=6</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
