Locale

Swarm is fully localized; with an appropriate language pack installation, Swarm can support users in multiple languages.

A language pack consists of gettext-style default.po and default.mo files, placed in a folder named for the locale they represent, within the language folder in the Swarm root directory. In addition, language packs contain two javascript files to provide translation strings for the in-browser UI, locale.js and locale.jsgz, which both appear in the SWARM_ROOT/public/build/language folder.

The following example illustrates the directory layout of a language pack:

SWARM_ROOT/
  language/
    locale/
      default.mo
      default.po
  public/
    build/
      language/
        locale.js
        locale.jsgz

You can configure certain localization behaviors with the translator configuration block in the SWARM_ROOT/data/config.php file. Here is an example:

<?php
    // this block should be a peer of 'p4'
    'translator' => array(
        'detect_locale'              => true,
        'locale'                     => "",
        'translation_file_patterns'  => array(),
    ),

The detect_locale key determines whether Swarm attempts to detect the browser's locale. The default value is true. Set the value to false to disable browser locale detection.

The locale key is a string specifying the default locale for Swarm. Alternately, an array of 2 strings can be used to specify the default locale, and a fallback locale. For example:

<?php
    // this block should be a peer of 'p4'
    'translator' => array(
        'locale'                     => array("en_GB", "en_US"),
    ),

The translation_file_patterns key allows you to customize Zend's translation infrastructure, which you might do if you are developing your own language pack. For details, see Zend\I18n.