Internationalization with Visual Basic is designed to get the Visual Basic developer into the realm of applications that can run in different locales and even process data from multiple locales.
Internationalization with Visual Basic explains how to create a Visual Basic application that will support the international marketplace. The readers will learn the important differences between globalization, multinationalization, and localization and how each affects their application. The book explains these concepts in detail while teaching the reader how to build an international application in Visual Basic. Readers will learn the importance basic user interface issues as well as going beyond the default language setting to handle these global issues. Included at the end of the book is an extensive reference section that will include valuable resources and links, character references, language identifiers, and various currency, date, and calendar formats.
1. Getting Started.
Thinking Globally: The Earth Is Round. Speaking the Same Language (in This Book!).
Internationalization (i18N). Multinationalization (M18N). Translation. Localization. Code Pages. Unicode: UCS-2, UCS-4, UTF-7, UTF-8, UTF-16, and So On. Glyphs. Fonts. Strings and BSTRs. Character Sets. Language and Locale. Locale ID (LCID). Primary Language Identifier (PRIMARYLANGID). Sublanguage Identifier (SUBLANGID). Language Identifier (LANGID). Sort Identifier (SORTID). Sort Version (SORTVERSION). Worldwide EXE. Input Method Editor (IME).
I. GLOBALIZATION.2. Working with Number, Date, and Currency Formats.
Handling Dates. Date/Time Formats.
COM and Evil Date Guessing. Are Time Zones a Problem? Wrapping Up Dates.
Handling Numbers and Currency.
Locale-Specific Numbers. The Euro: Farewell to “One Currency to a Customer.”3. Calendars.
The Gregorian Calendar. Using the DateTimePicker and MonthView Controls in VB. Creating a Calendar Control Without Using DTPicker or MonthView. The Hijri Calendar. The Thai Calendar. Other Calendars.4. User Interface Issues.
Basic User Interface Issues. All About Fonts.
Installing Fonts. Using Fonts. Font Character Sets.
Enough Space to Type. Sorting Data.
European Language Sorting Differences. Asian Language Sorting Differences.
Advanced UI Issues.
Bi-Directional (BiDi) Support for Hebrew, Arabic, and Farsi. Integrating the Input Method Editor (IME) for Asian Languages. Using the IME. Handling “Unicode-Only” Languages Such As Hindi, Tamil, and Georgian.5. Regional Settings.
Different Systems of Measurement. Handling Changes to the Regional Settings. Working with LCIDs. Intrinsic Visual Basic Functions.
II. MULTINATIONALIZATION.6. VB—Is It ANSI or Unicode?
A Brief History of Microsoft Products and Unicode.
16-Bit Windows (Windows 3.0, 3.1, and 3.1x). COM in the 16-Bit World. Visual Basic in the 16-Bit World. Windows NT. Windows 95. COM in the 32-Bit World. Windows 98. Windows Millennium Edition (Windows Me). Data Storage Engines. Data Access Methods. Microsoft Office. Windows 2000. Windows CE.
Visual Basic in the 32-Bit World. Looking at Future Versions of Visual Basic.7. Understanding the Code Page Barrier.
Why Call It a Barrier?
Barriers as Immaterial (Theoretical) Hindrances. Barriers as Material (Real) Hindrances. Okay, It's a Barrier of One or Both Sorts. Why Cross It?
Using Unicode to Handle All These Languages.
The Many Faces of the StrConv Function. Using API Calls. Why You Should Not Try to Do It Yourself.
File I/O Functions. API Declarations. Windows 95/98/Me ANSI Dependencies. Where Does MLang Fit In? Handling Complex Scripts.
Problems with Calling Uniscribe. The Standard ScriptUniscribe APIs. The ScriptStringAPIs. A Real-World Example: A Multilingual Edit Control.8. Handling VB Forms and Formats.
Using COM to Circumvent VB's Fear of Other Locales.
Keeping It Simple with VariantChangeTypeEx. Handling Time Zones.
Right Back to Calendars.
A “Do It Yourself” MonthView Control. Creating Your Own Calendar Without VB or the Windows Common Controls.
“Ruby” Forms in Visual Basic.
VB Edit Controls. VB Static Controls. Ruby Label Controls. Using the MSForms 2.0 (Forms3) Controls. The Windowless Controls from the Visual Basic CD. Displaying ToolTips. Handling Menu Items. Third-Party RichEdit Controls.
III. LOCALIZATION.9. Building the Localized Application.
Translation Versus Localization. Keeping UI Elements in Resource Files.
Windows Resource Files. Using Multiple Resource Files. How Windows Decides What Resources to Load. Using Resources in VB Code.
Keeping Localize-able Resources in a Jet Database.10. Handling Localized Resources with Satellite DLLs.
The Worldwide EXE. Choosing a Language.
The Default System Locale. The Default User Locale. The Windows 2000 UI Language. The Office 2000 UI Language. User-Selected Locale.
Dealing with the Actual Resources You Have Chosen to Use.
Release Scheduling. Code Maintenance and Upgrading.
Localizing an Existing Product That Was Never Designed with Such Issues in Mind. Writing Your UI Strings.
Poor Source Language Knowledge. Jargon. Poor Technical Knowledge.
Defining Resources Properly (Word Order, When to Reuse Text, Avoiding Concatenation).
Word Order. Reusing Text. Concatenating Phrases. Using Placeholder Tokens in Text.
Avoiding Machine Translation. Beyond String Tables (Localizing Whole Dialogs).
Dealing with BiDi Issues in Your Localized Forms.
Glossaries—Why Localizers Use Them, Why You Should Help Define Them. Outsourcing Localization.
Selecting a Localization Company. Working with a Localization Company.
Third-Party Localization Products for Visual Basic. The Trigeminal Software Win32Dialog Tools.
The TsiWin32Dialog.dll Add-in. Using the Win32Dialog Framework. The Runtime Win32Dialog Components.
IV. DATABASES.11. Handling External Formats.
Handling User Data That Might Not Be in Their Locale.
Getting Data into a Database. Storing Your Data. Getting Data Out of a Database.
Using VB's Data Controls to Display the Data. Working with Text and HTML Files.
Reading Text/HTML Files into a Database. Specify International Options in a schema.ini File. Where Do the Text and HTML "Specifications" in Microsoft Access Fit In?
Dealing with XML and Other Internet Formats.12. Jet, SQL Server, and Other Databases.
Database Schema Issues. Using Jet 4.0 and SQL Server 7.0/2000—Unicode (UCS-2) and Spanning Code Pages. Using Jet 3.5 and SQL Server 6.5—One Code Page at a Time. When the Database Is Not Jet, and Not SQL Server.
Oracle and Sybase. FoxPro. Excel.
Collation Orders: Just One Sort at a Time, Even with Unicode.
Problems with Case Sensitivity in ADO and DAO. Sorting/Searching Within a Given Collation Order. Handling Unicode Strings in SQL Queries. Sorting Outside of a Given Collation Order.
Handling More than One Locale per Database.
More on SQL Server 2000 International Features. Using Sort Keys (and Creating Your Own).
Using Replication to Use the Same Data Under Multiple Sort Orders.
Unique Indexes on Text Fields. Jet Partial Replicas and SQL Server Partitioned Replicas.
Case-Sensitive SQL Servers, ADO, and DAO. The i18N Issues with Dates and Databases.
Jet Dates. SQL Server Dates.
V. INTERNET APPLICATIONS AND COMPONENTS.13. Web Interface Issues.
Basic Web Interface Issues.
ASPCodePage and the Metabase. CODEPAGE. Session.CodePage. charset. Getting Multilingual Text In and Out of a Database on a Web Site. LCID. Session.LCID. GetLocale/SetLocale.
The Role of VBScript and JScript on the Server Side. The Role of Client-Side Scripting. Fitting XML into the Mix. Server Issues: Operating System, Software, and Other Decisions.
What Operating System to Use? What Software Needs to Be on the Server?14. Extending Web Applications with VB Components and Services.
Visual Basic's Role in International Web Applications. Extending ASP with Visual Basic Components. Providing Locale-Dependent Services. Creating Locale-Independent Components. The i18N Implications of Page Navigation and Inclusion.
Response.Redirect. Server-Side Includes. Server.Transfer. Server.Execute.
Using Third Party Components.
VI. APPLICATION CONTENT AND HELP SYSTEMS.15. Extending Localization and Globalization Concepts.
Some Examples of Locale-Specific Misunderstandings. Spell Checking and Synonym Lookups with Different Languages. Holidays and Other Content-Based Calendar Issues. Issues to Look Out for in Your Content.
Keep Examples from Being Locale Specific. Keeping Geography Out of It. Humor Is Often Not the Way to Make Users Comfortable.
Bad Usability Assumptions for Localized Applications. The HTML Help Workshop and Other Languages. Dangerous Assumptions to Make in Applications. Paper Sizes. At a Minimum Testing (and Possibly Developing and/or Deploying) on Windows 2000. Names, Addresses, Phone Numbers, Postal Codes, and Other Formats That Can Change from Place to Place.16. Testing International Software.
Planning Out What to Test?
Category 1: Regional Settings. Category 2: Input Locales and Data Storage. Category 3: Default System Language. Category 4: Faux-Localized Operating System. Category 5: Truly Localized Operating System.
Choosing Which Category from Table 16.1 to Support. Language Tiers. Installation of the Application Under Test (AUT). Execution of Your International Test Cases.
Things to Keep in Mind for i18N. Things to Keep in Mind for L10N. Things to Keep in Mind for Complex Scripts.
VII. REFERENCE.Appendix A. Resources and Links.
Interesting and Important Web Sites. Books.Appendix B. Code Pages.
Font Character Sets. Unicode 2.0/3.0 Character Ranges and Beyond. General Scripts Area. Symbols Area. CJK Phonetics and Symbols Area. Braille. CJK Ideographs Area. Hangul Syllables Area. Surrogates Area. Private Use Area. Compatibility Areas and Specials.Appendix C. Locale IDs (LCIDs).
Removed LCIDs. User-Defined LCIDs. Primary Language Identifiers (PRIMARYLANGIDs). User-Defined Primary Language Identifiers. Sublanguage Identifiers (SUBLANGIDs). User-Defined Sublanguage Identifiers. Sort Identifiers. Country Codes.Appendix D. Formats.
Currency Formats. Date/Time Formats. Address Formats.Appendix E. International Keyboard Layouts.