abstract public function getLocaleCode()
Get the local identifier code, like "en_US".
| string | Locale identifier code. |
abstract public function getLocaleName()
Get the human-readable locale name, like "English (US)".
| string | Human-readable locale name. |
public function getFallbackLocaleCode()
Set a fallback locale which can be used as a default if this locale is missing translations.
For locales like "English (Great Britain)", missing translations can be sourced from "English (US)".
| string|null | Locale code of fallback locale, or null if there is no fallback locale. |
public function selectGenderVariant($variant, $translations)
Select a gender variant for this locale. By default, locales use a simple rule with two gender variants, listed in "<male, female>" order.
| const | $variant | `PhutilPerson` gender constant. |
| list<wild> | $translations | List of variants. |
| string | Variant for use. |
public function selectPluralVariant($variant, $translations)
Select a plural variant for this locale. By default, locales use a simple rule with two plural variants, listed in "<singular, plural>" order.
| int | $variant | Plurality of the value. |
| list<wild> | $translations | List of variants. |
| string | Variant for use. |
public function isSillyLocale()
Flags a locale as silly, like "English (Pirate)".
These locales are fun but disastrously inappropriate for serious businesses.
| bool | True if this locale is silly. |
public function isTestLocale()
Flags a locale as a testing locale, like "English (US, ALL CAPS)". These locales are useful for translation development, but not for normal users.
| bool | True if this is a locale for testing or development. |
public function shouldPostProcessTranslations()
Indicates that the translator should post-process translations in this locale by calling didTranslateString().
Doing this incurs a performance penalty, and is not useful for most languages. However, it can be used to implement test translations like "English (US, ALL CAPS)".
| bool | True to postprocess strings. |
public function didTranslateString($raw_pattern, $translated_pattern, $args, $result_text)
Callback for post-processing translations.
By default, this callback is not invoked. To activate it, return true from shouldPostProcessTranslations(). Activating this callback incurs a performance penalty.
| string | $raw_pattern | The raw input pattern. |
| string | $translated_pattern | The selected translation pattern. |
| list<wild> | $args | The raw input arguments. |
| string | $result_text | The translated string. |
| string | Post-processed translation string. |
public static function loadAllLocales()
Load all available locales.
| map<string, PhutilLocale> | Map from codes to locale objects. |
public static function loadLocale($locale_code)
Load a specific locale using a locale code.
| string | $locale_code | Locale code. |
| PhutilLocale | Locale object. |
private static function checkLocaleFallback($map, $locale, $seen)
Recursively check locale fallbacks for cycles.
| map<string, | $map | PhutilLocale> Map of locales. |
| PhutilLocale | $locale | Current locale. |
| map<string, | $seen | string> Map of visited locales. |
| void |