Features of languages and writing systems and their impact on implementation

There are functional differences in languages, not only in writing systems. This must be kept in mind when developing software that has anything to do with text elements on the UI. S60 has been localized into over 40 languages. In practice, this means that no design and implementation can be based solely on the English language. To allow for variation and localization into other languages, at least the points listed in the table below should be considered:

Table 3: Languages and writing systems and their impact on implementation

Features of languages or writing systems

Impact on implementation

Word order

  • Different languages have different word order rules.

  • Do not use run-time concatenation. Use complete phrases instead.

  • Use StringLoader.h to allow for dynamic ordering of parameter variables.

Singular vs. plural vs. dual forms

  • There are languages that do not have plural (e.g., Chinese and Japanese).

  • There are languages that have a different form for dual.

Allow room for text expansion in the layout design and in TBuf. Some languages need more space to indicate plurality and/or duality in order to convey the needed information.

Gender

  • There are languages that have gender (feminine, masculine, neutral).

  • There are languages that do not have gender (e.g., Finnish) or do not use it extensively (e.g., English).

Do not reuse text strings. The same term may not work in different context due to the gender of the base word.

Compound words

  • Some languages often form new words by combining existing words into new compound words (e.g., Finnish and Thai).

Allow for text expansion. The compound words tend to make terms longer than in English.

Casing (uppercase and lowercase letters)

  • There are writing systems that do not have casing. Basically only Latin, Cyrillic, and Greek writing systems have casing.

Do not use casing to indicate functionality or emphasis. Do not assume each writing system has got uppercase and lowercase letters.

Word boundaries

  • There are languages that do not use space as word boundaries (e.g., Thai, also Chinese and Japanese to some extent).

Different conventions for emphasizing words

  • Different writing systems and languages have different ways to indicate emphasized text; e.g., in Japanese katakana, script can be used to emphasize something.

Do not assume that a certain type face is always available. Not all writing systems use italic, bold, or underline type faces to indicate emphasis or importance.

Abbreviations

  • There are languages that do not allow abbreviating words, e.g., Chinese, Arabic.

Do not assume that all supported S60 languages can be abbreviated if the layout is not wide enough. Sometimes this is impossible.

Length of words

  • Most languages have longer words than English.

Do not assume that the layout is OK if a short English word fits in.

Direction of text flow

  • In S60 both left-to-right and right-to-left text flow is supported.

  • Arabic and Hebrew writing systems are essentially bidirectional, that is, the text can flow either from right to left or vice versa, depending on the characters' attributes.

  • Use the S60 and Symbian OS BiDi functions to allow for the directionality of the text flow.

Writing systems

  • Use AVKON components whenever possible since most of the writing system support is embedded in them.

  • Do not assume a certain character is always available in every language and every writing system.

  • Allow for different directions in text flow (unless feature-related standard dictates differently). For example, allow for the bidirectionality of Arabic script.

  • Do not assume that if your software functions properly in English, it will be OK also in other languages and writing systems.

Character sets and character repertoire

Do not assume a certain character is always available.

Multiple scripts within one writing system for one language

Do not assume that a language would use only one script in writing.

Ligature

  • Use the AVKON and Symbian OS functions for word and line wrapping

  • Use the AVKON cursor handling implementation.

Digits

Allow also for other than European digits (1,2,3, ...). Use the digit settings in the TLocale class.