Q2L & TTT - Internationalization

Overview

Process

General

Trecker

Implementation

General

General

Motivation

accessibility
convenience

General

Motivation

potential global userbase
enable foreign speakers
international business transactions

General

Definitions

Internationalization (i18n)
"Internationalization is the design and development pf a product, application or document content that enables easy location for a target audiences that vary in culture, region or language."

https://www.w3.org/International/questions/qa-i18n

General

Definitions

"Location refers to the adaption of a product, application or document content to meet the language, cultural and other requirements of a specific target market (a 'locale')."
Localization (l10n)

https://www.w3.org/International/questions/qa-i18n

General

Aspects

Language
text content
writing direction
alphabets / characters
text in media (images, video, audio)
spelling variances

General

Aspects

Cultural
colors
address
measurements
currencies

General

Aspects

Regulations
time format
number format
writing conventions

Process

Process

Challenges

translation context
pluralization
multiple platforms
conjungations

Process

Preparation

check requirements (services, tools)
define approach
choose libraries

Details

Text
select language
provide translations
reference fragments
ensure encoding
Data
apply restrictions
dynamic values

Process

Testing

proofread texts
detect changes
view state variations

Process

Trecker

Trecker

extensibility

Plan

coverage
scopes

Trecker

Cedric

Plan

Implementation

Implementation

Android?

Systems

iOS?

Implementation

gettext

Common

PO files
#: modules/user/views_handler_filter_user_name.inc:29
msgid "Enter a comma separated list of user names."
msgstr "Eine kommagetrennte Liste von Benutzernamen."

#: modules/user/views_handler_filter_user_name.inc:112
msgid "Unable to find user: @users"
msgid_plural "Unable to find users: @users"
msgstr[0] "Benutzer konnte nicht gefunden werden: @users"
msgstr[1] "Benutzer konnten nicht gefunden werden: @users"

Implementation

Common

ICU message format (CLDR)
keybased
```js
"{gender_of_host, select, "
  "female {"
    "{num_guests, plural, offset:1 "
      "=0 {{host} does not give a party.}"
      "=1 {{host} invites {guest} to her party.}"
      "=2 {{host} invites {guest} and one other person to her party.}"
      "other {{host} invites {guest} and # other people to her party.}}}"
  "male {"
    "{num_guests, plural, offset:1 "
      "=0 {{host} does not give a party.}"
      "=1 {{host} invites {guest} to his party.}"
      "=2 {{host} invites {guest} and one other person to his party.}"
      "other {{host} invites {guest} and # other people to his party.}}}"
  "other {"
    "{num_guests, plural, offset:1 "
      "=0 {{host} does not give a party.}"
      "=1 {{host} invites {guest} to their party.}"
      "=2 {{host} invites {guest} and one other person to their party.}"
      "other {{host} invites {guest} and # other people to their party.}}}}"
```

Implementation

Tools

Implementation

Usage

context provider
higher order component
decoupled references

Implementation

Structure

Implementation

Steps

2.) npm script to generate POT files
    (extract and convert references)
4.) update components with texts
1.) initial setup for react-18next
3.) npm script to generate json files
    (based on language specific POs)
*.) translate strings and store the PO

Questions

Trecker Tech Talk - Internationalization

By Stefan

Trecker Tech Talk - Internationalization

Overview about 'internationalization' in software and at trecker.com.

  • 735