'English', 'de' => 'German', 'es' => 'Spanish', 'fr' => 'French', 'it' => 'Italian', 'ja' => 'Japanese', 'pl' => 'Polish', 'pt_BR' => 'Brazilian Portuguese', 'ro' => 'Romanian', 'ru' => 'Russian', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'zh' => 'Chinese (Simplified)', ]; /** * The following languages are inactive, which means they will not: * - Show up via the language select box at php.net * - Be selectable via my.php * - Accept redirections to the translation, despite ACCEPT_LANGUAGE * - Be listed at php.net/docs or php.net/download-docs * However, translation status for these languages is available at: * - https://doc.php.net/ */ public const INACTIVE_ONLINE_LANGUAGES = [ 'pl' => 'Polish', 'ro' => 'Romanian', ]; public const ACTIVE_ONLINE_LANGUAGES = [ 'en' => 'English', 'de' => 'German', 'es' => 'Spanish', 'fr' => 'French', 'it' => 'Italian', 'ja' => 'Japanese', 'pt_BR' => 'Brazilian Portuguese', 'ru' => 'Russian', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'zh' => 'Chinese (Simplified)', ]; /** * Convert between language codes back and forth * * Uses non-standard languages codes and so conversion is needed when communicating with the outside world. * * Fall back to English if the language is not available. */ public function convert(string $languageCode): string { return match ($languageCode) { 'zh_cn', 'zh_CN' => 'zh', 'pt_br', 'pt_BR' => 'pt_BR', default => array_key_exists($languageCode, self::LANGUAGES) ? $languageCode : 'en', }; } }