I18n

The term i18n means internationalization - the separation of UI and content locale. Web developers apply i18n to their userscripts, to ensure the following: Internationalisation is followed by script localisation (numeronym: l10n) - the addition of locale-specific content into the UI.
 * 1) scripts will scale to FANDOM's locale ranges
 * 2) scripts can be adapted to different languages and regions

Locale
The locale is a language and region parameter that defines the user's preference. On FANDOM, wikis have set language codes and users have a language preference to reflect their locale. These can also be overridden by the  URL parameter.

i18n purpose
The goal of i18n is to adapt the underlying layout or UI logic in a script, so that it isn't locale specific. That makes it possible to accomodate locale-specific content down the line, like message translations.

In general however, locale differences could possibly change layout (reading direction) and measurement systems (metric and Imperial units), even though it is mostly important for translation on FANDOM.

i18n process
The i18n process involves dividing content by locale, and storing it separately from the UI in the script. This improves the user experience for developers and content translators.

i18n benefits
There are benefits to i18n:
 * Better semantics - it aligns with the separation of content and logic very neatly (ex. messages are cached properly for Dev scripts as JSON)
 * Less locale specific:
 * Increased maintainability - easier to modify and extend a script with new features
 * Increased capacity for locale-specific content

Purpose of l10n
The purpose of l10n is to ensure scripts are suitable for users from a specific locale. The i18n-js library has a message function that targets the user's locale automatically.

Note that l10n requires i18n, so that the UI is not partly or entirely fixed to the code author's language or region.

l10n process
The l10n process is longer than i18n - content is extended to fit a new locale, mainly through message translation. This is usually done through editing JSON or individual system messages.

Benefits of l10n
Here are some benefits to l10n:
 * Increases diversity by accomodating users with needs that aren't met by a different locale.
 * Prevent user confusion from missing locale support. For example, Mexican users don't see one English rail module header on a Spanish wiki's rail.

On this wiki
There are numerous wiki tools available for i18n deployment:
 * i18n-js library: facilitates script i18n, by offering load methods for messages (stored in JSON pages).
 * Special:BlankPage/i18nedit editor: interface for Dev translators to add language support to scripts.
 * Module:Languages package: Lua templating and link generation for language subpages.
 * Template:Languages: list of language subpages.
 * Template:LangSwitch: serve content by user language from  subpages.
 * Template:Documentation: template documentation container with translation support.