Internationalization ( i18n ) : Do’s and Don’ts in software development before product localization

Given the constant competitive pressure on executives to expedite product time-to-market, many developers are given tight deadlines to deliver functional software. This software is often geared for localization once the source language version is ready for release.

Keeping these pressures in mind, developers can strive to ensure that basic internationalization principles are maintained while developing software to facilitate localization efforts – and meet time-to-market requirements for all the required languages, not just the source.

Here are 12 internationalization do’s and don’ts that all developers should read and apply in their work:

  1. Do externalize messages in Message Catalogs, resource files, and configuration files. Messages are textual objects that are translatable components. These catalogs or files, such as Java resource bundle message files or Microsoft resource files, are installed in a locale-specific location or named with a locale-specific suffix.
    This i18n practice will facilitate the localization process, since localizers can work on these resource bundles without the need to modify source code. It will also permit the use of a single source code for all languages, where only the resource bundles will have different language flavors.

  2. Don’t internationalize fixed textual objects. These are objects that should not be translated, such as comments, commands, and configuration settings. Only externalize the strings needing translation. If these objects appear in resource or configuration files, they should be marked "NOT_FOR_TRANSLATION.”
    Here are some examples of fixed textual objects not requiring i18n:
    • User names, group names, and passwords
    • System or host names
    • Names of terminals (/dev/tty*), printers, and special devices
    • Shell variables and environment variable names
    • Message queues, semaphores, and shared memory labels
    • UNIX commands and command line options (e.g., ls -l is still ls -l in all locales)
    • Commands such as /usr/bin/dos2unix and /usr/ccs/bin/gprof
    • Commands that are XPG4-compliant (in /usr/xpg4/bin/vi) and have equivalent non-XPG4 commands; non-XPG4 commands that are not fully internationalized. For example, /usr/bin/vi does not process non-EUC codesets, but /usr/xpg4/bin/vi is fully internationalized and can process characters in any locale.
    • Some GUI textual components, such as keyboard mnemonics and keyboard accelerators


  3. Do allow for text expansion in messages (especially for GUI items).
    Here are some Microsoft translations into German:

    • bullet    –>  Aufzählungszeichen
    • bundle  –>  Einzelvorgangsbündel
    • Link      –>  Verknüpfung
    • Login    –>  Anmeldung
    • Update –>  Aktualisierung
    • Undo     –>  Rückgängig (machen)
    • Geschäftsaktivitätsüberwachung replaces the acronym BAM (Business Activity Monitoring)!



    Apply the following expansion rules when possible during i18n. When the source text is:

    • 0 – 10 characters: The expansion required is from 101 – 200%.
    • 11 – 20 characters: 81 – 100%
    • 21 – 30 characters: 61 – 80%
    • 31 – 50 characters: 41 – 60%
    • 50 – 70 characters: 31 – 40%
    • Over 70 characters: 30%


    But keep the string length well below your limit (usually 254 characters) to account for the extra characters needed. 

    Try to place the labels above the controls, not beside them. The expansion of a label can increase the width of the form more than the expected resolution, which will force horizontal scroll bars or cause truncation. This also simplifies localizing applications required into bidirectional languages (languages that are read from different directions [RTL or LTR], such as Arabic and Hebrew).

  4. Don’t use variables when you can avoid them. Variables create questions in the translator’s mind as to the gender of the term to substitute, making it difficult to correctly translate the sentences that incorporate it. If variables are to be used, offer a list of replacements. Also allow for gender and plurals variations in the translation of the sentences that incorporate the variable.

    For example:
    if err = 400
    errtext = "server"
    else
    errtext = "connection"
    end if
    <P> The <%=errtext%> is currently unavailable </P>

    While this displays grammatically correct sentences in English, the translation in French will be problematic. In French, the word "server" is masculine, while the word "connection" is feminine. The translator cannot use the correct translation for the article "the" based on the translation of the differing genders of server and connection.

    The code should be instead:
    if err = 400
    <P> The server is currently unavailable </P>
    else
    <P> The connection is currently unavailable </P>
    end if

    At the same time and for similar reasons, don’t use composite strings. A composite string is an error message or other text that is dynamically generated from partial sentence segments and presented to the user in full sentence form. Use complete sentences instead, even at the expense of repeating segments. This will ensure the accuracy of the translation, regardless of gender, plurality, conjugation, or sentence structure.

    Also, avoid using the same placeholders when using multiple variables in the same string, since the sentence structure does change in different languages. For example, <Total %s, %s of %s> (as in Total 5, 1 of 5) might read "5 of 1, Total 5" in the translated text. Instead, use numbered placeholders (e.g., "Total %1, %2 of %3").

  5. Do perform pseudo-translation. Pseudo-translation is the process of replacing or adding characters to your software strings to detect character encoding issues and hard-coded text remaining in the source files.

    Here’s an example of a few strings from a C resource file, with their respective pseudo-translations in Japanese:

    IDS_TITLE_OPEN_SKIN "Select Device"
    IDS_TITLE_OPEN_SKIN "日本SlctDvcイ本日"

    IDS_MY_OPEN "&Open"
    IDS_MY_OPEN "日本&Opn"

    In these strings, Japanese characters replace the vowels in all English words. After compilation, testers can easily detect corrupt characters (junk characters replacing the Japanese characters) or strings that remain fully in English (source strings still embedded in the code).

  6. Don’t use IF Conditions or rely on a sort order in your code to evaluate a string value. For example, avoid (IF Gender = “Male” THEN). Always depend on enumeration or unique IDs.

  7. Do use Unicode functions and methods to support all scripts. Applications that store and retrieve text data need to accept and display the characters from any given language. Using Unicode encoding solves the problem of unsupported character sets and the display of junk characters.

  8. Don’t insert hard carriage returns in the middle of sentences. Translation memory tools key off hard returns and assume that the sentence has ended. Inserting them in the middle of a sentence leads to incomplete sentences in the translation database and corrupts the sentence structure in the target language files. Instead, replace hard returns with soft returns (or better yet, use a break tag of some sort, such as <BR>).

    Also be aware that sentence structures change in different languages, as well as the length of sentence parts. So, additional breaks may be needed in target languages.

  9. Do choose your third-party software provider carefully. Insist they support Unicode and comply with the above internationalization practices. Often problems are encountered with third-party software, and the fact that you don’t have control over their code to fix the problems makes the localization tasks particularly difficult.

  10. Don’t use text in icons and bitmaps. The translated text may be too long to fit. Also, avoid using symbols with cultural connotations and locale-specific idioms.

  11. Do use long dates or month abbreviations instead of numbers when identifying dates. Month vs. day orders in different parts of the world vary (e.g., mm/dd/yy in the US; dd/mm/yy in Europe).

  12. Don’t alphabetically sort strings in string tables and resource bundles. Try to offer as much context as you can with the externalized strings. This will help the translator better adapt the translation to that context. If context is non-existent, run-time QA will take much longer to correct the translations.
    For example: "Update" could be the action (to update) or the software itself. "Check" in a financial software could be the action (noun or verb), or the monetary equivalent. "Email" could be a verb or a noun.

Following these simple internationalization principles will expedite product localization and reduce testing, rework, and quality assurance costs – ultimately allowing you to meet the strict time-to-market requirements expected from companies selling products worldwide.

To get proactive assistance in addressing the above software i18n issues during product localization as well as any technical translation services, do not hesitate to contact our localization experts.

This entry was posted in Articles. Bookmark the permalink. Both comments and trackbacks are currently closed.
  • Our Clients

    • Alcohol Countermeasure Systems logo
    • Active Endpoints logo
    • AirVersent logo
    • Biomerica logo
    • Canspan Communications logo
    • Constant Contact logo
    • Zeiss logo
    • Daktronics logo
    • DigiLabs logo
    • Diversified logo
    • DYMO logo
    • Ecovation logo
    • GibbsCAM
    • Intuitive Surgical logo
    • Jarden Consumer Solutions logo
    • Northwest Aluminum Specialties logo
    • NWL logo
    • Questia logo
    • Shore View logo
    • SolidWorks logo
    • Spark Creative Services logo
    • Spatial logo
    • Star Trac logo
    • The Cavanaugh logo
    • UW  Center for AIDS and STD : CFAR logo
    • The Mathworks logo
    • Telephonics logo
    • Adecco Group logo
    • Ciena logo
    • Coeur logo
    •  Optical Research Association logo
    • iCAD logo
    • Kaz logo
    • nVision Global logo
    • IMSI Design logo
    • Siemens logo
    • cfDesign logo
  • Freebies



     Free Quote Free Webinar Newsletter White Papers Audit

    Referrer

    Requirements

  • Testimonials

    • Constant Contact logo“We have had a lot of success working with GlobalVision… They are very receptive to our feedback during the project, and delivered a translation localization that was careful and deliberate.”
    • Intuitive Surgical logo“GlobalVision has been a great fit for our translation localization needs. We deliver a technically complex, high-value product, and we need translation quality that reflects that value.”
    • Alcohol Countermeasure Systems logo“GlobalVision understands the ramifications of incorrect technical data to a company that does a lot of engineering. Fortunately, they seem to get it right every time.”
    • Active Endpoints logo“I’d like to thank you and your team for a job well done. Speaking on behalf of the team you’ve made this a pleasant, efficient and painless experience.”
    • AirVersent logo“… GlobalVision has been our sole translation partner for all major releases and service packs since then. They are very cost-competitive, with strong project management skills…”
    • Biomerica logo“We are very impressed with GlobalVision’s professional approach to localization. Our product-update localization efforts and costs have gone down by as much as 30%.”
    • Canspan Communications logo“Working with GlobalVision is a breeze, I wish all our suppliers had the same work ethic! I never have to worry about prompt delivery and they provide us with excellent and thoroughly checked translation services.”
    • Zeiss logo“I am quite positively impressed. You met a very demanding schedule with a minimum of fuss required on my part. That is a big bonus for me. I haven’t had to nurse this project along…”
    • Daktronics logo“GlobalVision’s attentiveness to our needs and wants has made them an easy choice for our company’s translations. We can send them a document and it comes back ready to use, no extra work on our end.”
    • DigiLabs logo“…we solely use GlobalVision for all our translation needs, software, marketing materials and product specs. The delivery was always on time (many times ahead of time)”
    • Diversified logo“Highly recommended! … They have always been a pleasure to work with, and have provided our company with high-quality finished products.”
    • DYMO logo“While GlobalVision has provided excellent translation work for us, they also have very strong project management that allows them to meet their commitments on cost and delivery.”
    • Ecovation logo“We have been extremely pleased that we have found the right company to go to as we expand into other international markets.”
    • GibbsCAM“GlobalVision have the experience, expertise and takes pride in what they do and it shows in their professionalism in managing the project and delivering quality results on time… Highly, Highly recommended!”
    • Jarden Consumer Solutions logo“Translation is often a very difficult and challenging endeavor. GlobalVision always takes on the task with a high degree of initiative, thoroughness and professionalism.”
    • Northwest Aluminum Specialties logo“The work completed by GlobalVision was done on time, in budget, and conducted in a very professional manner. We would highly recommend GlobalVision as a supplier to any company needing translation services…”
    • NWL logo“… Now that we have used GlobalVision to translate work into 13 differed languages our Customers tell us that they could not have done a better translation.”
    • Questia logo“GlobalVision was a key part of launching our company’s international strategy. Their superior team helped us translate key web pages into eight foreign languages quickly and professionally.”
    • Shore View logo“We do appreciate how easy they have made this entire effort. Also, they were exceptionally pleasant to work with. Thank you.”
    • SolidWorks logo“After ten years of partnership with GlobalVision, SolidWorks can clearly attest to the success of the working relationship… The quality of the language translations has been high…”
    • Spark Creative Services logo“I always recommend GlobalVision to both clients and colleagues because I know their translations are accurate… they have not let me or my clients down!”
    • Spatial logo“GlobalVision is a top-notch company who not only delivers quality translations that meet or often beat deadlines, but also gives peace of mind that you are always receiving the best value in the industry.”
    • Star Trac logo
      “The service and professionalism of the staff was A+ … the staff maintained continued contact until the job was 100% complete.”
    • The Cavanaugh logo“GlobalVision always showed professionalism along with a detailed status of how the job was progressing. Their pricing was very competitive and projects were done on time.”
    • UW  Center for AIDS and STD : CFAR logo“I have worked with several translation agencies before discovering GlobalVision, and I can attest that GlobalVision’s quality of customer service is unparalleled.”
    • cfDesign logo“Product section looks really good, I’m impressed by the good translations!”