From 196148705515e2b1d8dd705106f1af11284ebbfb Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 10 Mar 2024 06:17:31 +0100 Subject: [PATCH] Reformat code. --- .ci/all.sh | 3 + .../Models/Rule/ExpressionController.php | 6 +- .../Models/Rule/ValidateExpressionRequest.php | 7 +- .../V2/Request/Model/Account/IndexRequest.php | 14 +- .../Extensions/CollectorProperties.php | 2 +- app/Http/Controllers/Auth/LoginController.php | 1 + app/Models/Account.php | 14 +- app/Models/RuleAction.php | 13 +- app/Providers/FireflyServiceProvider.php | 1 + app/Rules/IsValidActionExpression.php | 10 +- app/Support/Search/OperatorQuerySearch.php | 4 +- .../Expressions/ActionExpression.php | 116 +-- .../ActionExpressionLanguageProvider.php | 4 +- app/Validation/FireflyValidator.php | 1 - bootstrap/app.php | 6 +- config/auth.php | 1 + config/breadcrumbs.php | 1 + config/database.php | 2 - config/services.php | 1 + resources/lang/en_US/config.php | 50 +- resources/lang/en_US/locales.json | 886 +++++++++--------- 21 files changed, 572 insertions(+), 571 deletions(-) diff --git a/.ci/all.sh b/.ci/all.sh index e8a7f272e4..3ce406bc90 100755 --- a/.ci/all.sh +++ b/.ci/all.sh @@ -22,6 +22,9 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +echo "Running PHP CS Fixer" $SCRIPT_DIR/phpcs.sh +echo "Running PHPStan" $SCRIPT_DIR/phpstan.sh +echo "Running PHPMD" $SCRIPT_DIR/phpmd.sh diff --git a/app/Api/V1/Controllers/Models/Rule/ExpressionController.php b/app/Api/V1/Controllers/Models/Rule/ExpressionController.php index 8019919161..a7dd1d07e1 100644 --- a/app/Api/V1/Controllers/Models/Rule/ExpressionController.php +++ b/app/Api/V1/Controllers/Models/Rule/ExpressionController.php @@ -36,16 +36,12 @@ class ExpressionController extends Controller * This endpoint is documented at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/validateExpression * - * @param ValidateExpressionRequest $request - * - * @return JsonResponse - * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function validateExpression(ValidateExpressionRequest $request): JsonResponse { return response()->json([ - "valid" => true, + 'valid' => true, ]); } } diff --git a/app/Api/V1/Requests/Models/Rule/ValidateExpressionRequest.php b/app/Api/V1/Requests/Models/Rule/ValidateExpressionRequest.php index b0ef5a3998..680823b6f9 100644 --- a/app/Api/V1/Requests/Models/Rule/ValidateExpressionRequest.php +++ b/app/Api/V1/Requests/Models/Rule/ValidateExpressionRequest.php @@ -45,10 +45,7 @@ class ValidateExpressionRequest extends FormRequest /** * Handle a failed validation attempt. * - * @param \Illuminate\Contracts\Validation\Validator $validator - * @return void - * - * @throws \Illuminate\Validation\ValidationException + * @throws ValidationException */ protected function failedValidation(Validator $validator): void { @@ -58,7 +55,7 @@ class ValidateExpressionRequest extends FormRequest $validator, response()->json([ 'valid' => false, - 'error' => $error + 'error' => $error, ], 200) ); } diff --git a/app/Api/V2/Request/Model/Account/IndexRequest.php b/app/Api/V2/Request/Model/Account/IndexRequest.php index e9c7b3039d..320cb0c6db 100644 --- a/app/Api/V2/Request/Model/Account/IndexRequest.php +++ b/app/Api/V2/Request/Model/Account/IndexRequest.php @@ -42,6 +42,13 @@ class IndexRequest extends FormRequest use ConvertsDataTypes; use GetSortInstructions; + public function getAccountTypes(): array + { + $type = (string)$this->get('type', 'default'); + + return $this->mapAccountTypes($type); + } + /** * Get all data from the request. */ @@ -50,13 +57,6 @@ class IndexRequest extends FormRequest return $this->getCarbonDate('date'); } - public function getAccountTypes(): array - { - $type = (string)$this->get('type', 'default'); - - return $this->mapAccountTypes($type); - } - /** * The rules that the incoming request must be matched against. */ diff --git a/app/Helpers/Collector/Extensions/CollectorProperties.php b/app/Helpers/Collector/Extensions/CollectorProperties.php index f23b33c7ba..81aa7fca10 100644 --- a/app/Helpers/Collector/Extensions/CollectorProperties.php +++ b/app/Helpers/Collector/Extensions/CollectorProperties.php @@ -36,7 +36,7 @@ trait CollectorProperties public const string TEST = 'Test'; /** @var array */ - public array $sorting; + public array $sorting; private ?int $endRow; private bool $expandGroupSearch; private array $fields; diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 5a3b018d48..f6b1f5d32b 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Auth; +use Cookie; use FireflyIII\Events\ActuallyLoggedIn; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Http\Controllers\Controller; diff --git a/app/Models/Account.php b/app/Models/Account.php index e3ff91e3ca..9892f9b19e 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -122,13 +122,13 @@ class Account extends Model protected $casts = [ - 'created_at' => 'datetime', - 'updated_at' => 'datetime', - 'user_id' => 'integer', - 'deleted_at' => 'datetime', - 'active' => 'boolean', - 'encrypted' => 'boolean', - ]; + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + 'user_id' => 'integer', + 'deleted_at' => 'datetime', + 'active' => 'boolean', + 'encrypted' => 'boolean', + ]; protected $fillable = ['user_id', 'user_group_id', 'account_type_id', 'name', 'active', 'virtual_balance', 'iban']; diff --git a/app/Models/RuleAction.php b/app/Models/RuleAction.php index a6f8d44c71..c21100db2c 100644 --- a/app/Models/RuleAction.php +++ b/app/Models/RuleAction.php @@ -76,6 +76,13 @@ class RuleAction extends Model protected $fillable = ['rule_id', 'action_type', 'action_value', 'order', 'active', 'stop_processing']; + public function getValue(array $journal): string + { + $expr = new ActionExpression($this->action_value); + + return $expr->evaluate($journal); + } + public function rule(): BelongsTo { return $this->belongsTo(Rule::class); @@ -94,10 +101,4 @@ class RuleAction extends Model get: static fn ($value) => (int)$value, ); } - - public function getValue(array $journal): string - { - $expr = new ActionExpression($this->action_value); - return $expr->evaluate($journal); - } } diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index ff7a4f6d30..681670511d 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -208,6 +208,7 @@ class FireflyServiceProvider extends ServiceProvider static function () { $expressionLanguage = new ExpressionLanguage(); $expressionLanguage->registerProvider(new ActionExpressionLanguageProvider()); + return $expressionLanguage; } ); diff --git a/app/Rules/IsValidActionExpression.php b/app/Rules/IsValidActionExpression.php index 3022043fa7..c4a7078bf7 100644 --- a/app/Rules/IsValidActionExpression.php +++ b/app/Rules/IsValidActionExpression.php @@ -25,27 +25,27 @@ declare(strict_types=1); namespace FireflyIII\Rules; -use Closure; -use Illuminate\Contracts\Validation\ValidationRule; use FireflyIII\TransactionRules\Expressions\ActionExpression; +use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Translation\PotentiallyTranslatedString; class IsValidActionExpression implements ValidationRule { /** * Check that the given action expression is syntactically valid. * - * @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail + * @param \Closure(string): PotentiallyTranslatedString $fail * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ - public function validate(string $attribute, mixed $value, Closure $fail): void + public function validate(string $attribute, mixed $value, \Closure $fail): void { $value ??= ''; $expr = new ActionExpression($value); if (!$expr->isValid()) { $fail('validation.rule_action_expression')->translate([ - 'error' => $expr->getValidationError()->getMessage() + 'error' => $expr->getValidationError()->getMessage(), ]); } } diff --git a/app/Support/Search/OperatorQuerySearch.php b/app/Support/Search/OperatorQuerySearch.php index d71498a67f..23c127ead2 100644 --- a/app/Support/Search/OperatorQuerySearch.php +++ b/app/Support/Search/OperatorQuerySearch.php @@ -72,9 +72,9 @@ class OperatorQuerySearch implements SearchInterface private GroupCollectorInterface $collector; private CurrencyRepositoryInterface $currencyRepository; private array $excludeTags; - private array $includeAnyTags; + private array $includeAnyTags; // added to fix #8632 - private array $includeTags; + private array $includeTags; private array $invalidOperators; private int $limit; private Collection $operators; diff --git a/app/TransactionRules/Expressions/ActionExpression.php b/app/TransactionRules/Expressions/ActionExpression.php index 59b9770e14..85785118ce 100644 --- a/app/TransactionRules/Expressions/ActionExpression.php +++ b/app/TransactionRules/Expressions/ActionExpression.php @@ -29,57 +29,57 @@ use Symfony\Component\ExpressionLanguage\SyntaxError; class ActionExpression { - private static array $NAMES = array( - "transaction_group_id", - "user_id", - "user_group_id", - "created_at", - "updated_at", - "transaction_group_title", - "group_created_at", - "group_updated_at", - "transaction_journal_id", - "transaction_type_id", - "description", - "date", - "order", - "transaction_type_type", - "source_transaction_id", - "source_account_id", - "reconciled", - "amount", - "currency_id", - "currency_code", - "currency_name", - "currency_symbol", - "currency_decimal_places", - "foreign_amount", - "foreign_currency_id", - "foreign_currency_code", - "foreign_currency_name", - "foreign_currency_symbol", - "foreign_currency_decimal_places", - "destination_account_id", - "source_account_name", - "source_account_iban", - "source_account_type", - "destination_account_name", - "destination_account_iban", - "destination_account_type", - "category_id", - "category_name", - "budget_id", - "budget_name", - "tags", - "attachments", - "interest_date", - "payment_date", - "invoice_date", - "book_date", - "due_date", - "process_date", - "destination_transaction_id" - ); + private static array $NAMES = [ + 'transaction_group_id', + 'user_id', + 'user_group_id', + 'created_at', + 'updated_at', + 'transaction_group_title', + 'group_created_at', + 'group_updated_at', + 'transaction_journal_id', + 'transaction_type_id', + 'description', + 'date', + 'order', + 'transaction_type_type', + 'source_transaction_id', + 'source_account_id', + 'reconciled', + 'amount', + 'currency_id', + 'currency_code', + 'currency_name', + 'currency_symbol', + 'currency_decimal_places', + 'foreign_amount', + 'foreign_currency_id', + 'foreign_currency_code', + 'foreign_currency_name', + 'foreign_currency_symbol', + 'foreign_currency_decimal_places', + 'destination_account_id', + 'source_account_name', + 'source_account_iban', + 'source_account_type', + 'destination_account_name', + 'destination_account_iban', + 'destination_account_type', + 'category_id', + 'category_name', + 'budget_id', + 'budget_name', + 'tags', + 'attachments', + 'interest_date', + 'payment_date', + 'invoice_date', + 'book_date', + 'due_date', + 'process_date', + 'destination_transaction_id', + ]; private ExpressionLanguage $expressionLanguage; private string $expr; @@ -89,15 +89,15 @@ class ActionExpression public function __construct(string $expr) { $this->expressionLanguage = app(ExpressionLanguage::class); - $this->expr = $expr; + $this->expr = $expr; - $this->isExpression = self::isExpression($expr); - $this->validationError = $this->validate(); + $this->isExpression = self::isExpression($expr); + $this->validationError = $this->validate(); } private static function isExpression(string $expr): bool { - return str_starts_with($expr, "="); + return str_starts_with($expr, '='); } private function validate(): ?SyntaxError @@ -108,6 +108,7 @@ class ActionExpression try { $this->lint(); + return null; } catch (SyntaxError $e) { return $e; @@ -130,7 +131,7 @@ class ActionExpression public function isValid(): bool { - return $this->validationError === null; + return null === $this->validationError; } public function getValidationError(): ?SyntaxError @@ -141,7 +142,8 @@ class ActionExpression private function evaluateExpression(string $expr, array $journal): string { $result = $this->expressionLanguage->evaluate($expr, $journal); - return strval($result); + + return (string) $result; } public function evaluate(array $journal): string diff --git a/app/TransactionRules/Expressions/ActionExpressionLanguageProvider.php b/app/TransactionRules/Expressions/ActionExpressionLanguageProvider.php index 2c54752b00..f8451e1c6c 100644 --- a/app/TransactionRules/Expressions/ActionExpressionLanguageProvider.php +++ b/app/TransactionRules/Expressions/ActionExpressionLanguageProvider.php @@ -32,8 +32,8 @@ class ActionExpressionLanguageProvider implements ExpressionFunctionProviderInte public function getFunctions(): array { return [ - ExpressionFunction::fromPhp("substr"), - ExpressionFunction::fromPhp("strlen") + ExpressionFunction::fromPhp('substr'), + ExpressionFunction::fromPhp('strlen'), ]; } } diff --git a/app/Validation/FireflyValidator.php b/app/Validation/FireflyValidator.php index 9a554d79b4..a54f3d452f 100644 --- a/app/Validation/FireflyValidator.php +++ b/app/Validation/FireflyValidator.php @@ -35,7 +35,6 @@ use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Services\Password\Verifier; use FireflyIII\Support\ParseDateString; -use FireflyIII\TransactionRules\Expressions\ActionExpression; use FireflyIII\User; use Illuminate\Validation\Validator; use PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException; diff --git a/bootstrap/app.php b/bootstrap/app.php index f17a7fe025..5da0446b16 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -36,12 +36,12 @@ bcscale(12); if (!function_exists('envNonEmpty')) { /** - * @param string $key - * @param string|int|bool|null $default + * @param string $key + * @param string|int|bool|null $default * * @return mixed|null */ - function envNonEmpty(string $key, string|int|bool|null $default = null) + function envNonEmpty(string $key, string | int | bool | null $default = null) { $result = env($key, $default); if ('' === $result) { diff --git a/config/auth.php b/config/auth.php index 523a326e2f..8277bd62e1 100644 --- a/config/auth.php +++ b/config/auth.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + use FireflyIII\User; if ('ldap' === strtolower((string)env('AUTHENTICATION_GUARD'))) { diff --git a/config/breadcrumbs.php b/config/breadcrumbs.php index d725919eb6..0990173a93 100644 --- a/config/breadcrumbs.php +++ b/config/breadcrumbs.php @@ -21,6 +21,7 @@ */ declare(strict_types=1); + use Diglactic\Breadcrumbs\Generator; use Diglactic\Breadcrumbs\Manager; diff --git a/config/database.php b/config/database.php index 67410f7f7d..15cf5594ca 100644 --- a/config/database.php +++ b/config/database.php @@ -21,8 +21,6 @@ declare(strict_types=1); -use Illuminate\Support\Str; - $databaseUrl = getenv('DATABASE_URL'); $host = ''; $username = ''; diff --git a/config/services.php b/config/services.php index 382f69a808..accdd9d851 100644 --- a/config/services.php +++ b/config/services.php @@ -20,6 +20,7 @@ */ declare(strict_types=1); + use FireflyIII\User; return [ diff --git a/resources/lang/en_US/config.php b/resources/lang/en_US/config.php index 3305d22568..71ee2f23a0 100644 --- a/resources/lang/en_US/config.php +++ b/resources/lang/en_US/config.php @@ -25,51 +25,51 @@ declare(strict_types=1); return [ - 'html_language' => 'en', - 'locale' => 'en, English, en_US.utf8, en_US.UTF-8', + 'html_language' => 'en', + 'locale' => 'en, English, en_US.utf8, en_US.UTF-8', // 'month' => '%B %Y', - 'month_js' => 'MMMM YYYY', + 'month_js' => 'MMMM YYYY', // 'month_and_day' => '%B %e, %Y', - 'month_and_day_moment_js' => 'MMM D, YYYY', - 'month_and_day_fns' => 'MMMM d, y', - 'month_and_day_js' => 'MMMM Do, YYYY', + 'month_and_day_moment_js' => 'MMM D, YYYY', + 'month_and_day_fns' => 'MMMM d, y', + 'month_and_day_js' => 'MMMM Do, YYYY', // 'month_and_date_day' => '%A %B %e, %Y', - 'month_and_date_day_js' => 'dddd MMMM Do, YYYY', + 'month_and_date_day_js' => 'dddd MMMM Do, YYYY', // 'month_and_day_no_year' => '%B %e', - 'month_and_day_no_year_js' => 'MMMM Do', + 'month_and_day_no_year_js' => 'MMMM Do', // Ignore this comment // 'date_time' => '%B %e, %Y, @ %T', - 'date_time_js' => 'MMMM Do, YYYY, @ HH:mm:ss', - 'date_time_fns' => 'MMMM do, yyyy @ HH:mm:ss', - 'date_time_fns_short' => 'MMMM do, yyyy @ HH:mm', + 'date_time_js' => 'MMMM Do, YYYY, @ HH:mm:ss', + 'date_time_fns' => 'MMMM do, yyyy @ HH:mm:ss', + 'date_time_fns_short' => 'MMMM do, yyyy @ HH:mm', // 'specific_day' => '%e %B %Y', - 'specific_day_js' => 'D MMMM YYYY', + 'specific_day_js' => 'D MMMM YYYY', // 'week_in_year' => 'Week %V, %G', - 'week_in_year_js' => '[Week] W, GGGG', - 'week_in_year_fns' => "'Week' w, yyyy", + 'week_in_year_js' => '[Week] W, GGGG', + 'week_in_year_fns' => "'Week' w, yyyy", // 'year' => '%Y', - 'year_js' => 'YYYY', + 'year_js' => 'YYYY', // 'half_year' => '%B %Y', - 'half_year_js' => '\QQ YYYY', + 'half_year_js' => '\QQ YYYY', - 'quarter_fns' => "'Q'Q, yyyy", - 'half_year_fns' => "'H{half}', yyyy", - 'dow_1' => 'Monday', - 'dow_2' => 'Tuesday', - 'dow_3' => 'Wednesday', - 'dow_4' => 'Thursday', - 'dow_5' => 'Friday', - 'dow_6' => 'Saturday', - 'dow_7' => 'Sunday', + 'quarter_fns' => "'Q'Q, yyyy", + 'half_year_fns' => "'H{half}', yyyy", + 'dow_1' => 'Monday', + 'dow_2' => 'Tuesday', + 'dow_3' => 'Wednesday', + 'dow_4' => 'Thursday', + 'dow_5' => 'Friday', + 'dow_6' => 'Saturday', + 'dow_7' => 'Sunday', ]; // Ignore this comment diff --git a/resources/lang/en_US/locales.json b/resources/lang/en_US/locales.json index 179d3c4654..1a860532e4 100644 --- a/resources/lang/en_US/locales.json +++ b/resources/lang/en_US/locales.json @@ -1,444 +1,444 @@ { - "af_NA": "Afrikaans (Namibia)", - "af_ZA": "Afrikaans (South Africa)", - "ak_GH": "Akan (Ghana)", - "sq_AL": "Albanian (Albania)", - "sq_XK": "Albanian (Kosovo)", - "sq_MK": "Albanian (Macedonia)", - "am_ET": "Amharic (Ethiopia)", - "ar_DZ": "Arabic (Algeria)", - "ar_BH": "Arabic (Bahrain)", - "ar_TD": "Arabic (Chad)", - "ar_KM": "Arabic (Comoros)", - "ar_DJ": "Arabic (Djibouti)", - "ar_EG": "Arabic (Egypt)", - "ar_ER": "Arabic (Eritrea)", - "ar_IQ": "Arabic (Iraq)", - "ar_IL": "Arabic (Israel)", - "ar_JO": "Arabic (Jordan)", - "ar_KW": "Arabic (Kuwait)", - "ar_LB": "Arabic (Lebanon)", - "ar_LY": "Arabic (Libya)", - "ar_MR": "Arabic (Mauritania)", - "ar_MA": "Arabic (Morocco)", - "ar_OM": "Arabic (Oman)", - "ar_PS": "Arabic (Palestinian Territories)", - "ar_QA": "Arabic (Qatar)", - "ar_SA": "Arabic (Saudi Arabia)", - "ar_SO": "Arabic (Somalia)", - "ar_SS": "Arabic (South Sudan)", - "ar_SD": "Arabic (Sudan)", - "ar_SY": "Arabic (Syria)", - "ar_TN": "Arabic (Tunisia)", - "ar_AE": "Arabic (United Arab Emirates)", - "ar_EH": "Arabic (Western Sahara)", - "ar_YE": "Arabic (Yemen)", - "hy_AM": "Armenian (Armenia)", - "as_IN": "Assamese (India)", - "az_AZ": "Azerbaijani (Azerbaijan)", - "az_Cyrl_AZ": "Azerbaijani (Cyrillic, Azerbaijan)", - "az_Cyrl": "Azerbaijani (Cyrillic)", - "az_Latn_AZ": "Azerbaijani (Latin, Azerbaijan)", - "az_Latn": "Azerbaijani (Latin)", - "bm_Latn_ML": "Bambara (Latin, Mali)", - "bm_Latn": "Bambara (Latin)", - "eu_ES": "Basque (Spain)", - "be_BY": "Belarusian (Belarus)", - "bn_BD": "Bengali (Bangladesh)", - "bn_IN": "Bengali (India)", - "bs_BA": "Bosnian (Bosnia & Herzegovina)", - "bs_Cyrl_BA": "Bosnian (Cyrillic, Bosnia & Herzegovina)", - "bs_Cyrl": "Bosnian (Cyrillic)", - "bs_Latn_BA": "Bosnian (Latin, Bosnia & Herzegovina)", - "bs_Latn": "Bosnian (Latin)", - "br_FR": "Breton (France)", - "bg_BG": "Bulgarian (Bulgaria)", - "my_MM": "Burmese (Myanmar (Burma))", - "ca_AD": "Catalan (Andorra)", - "ca_FR": "Catalan (France)", - "ca_IT": "Catalan (Italy)", - "ca_ES": "Catalan (Spain)", - "zh_CN": "Chinese (China)", - "zh_HK": "Chinese (Hong Kong SAR China)", - "zh_MO": "Chinese (Macau SAR China)", - "zh_Hans_CN": "Chinese (Simplified, China)", - "zh_Hans_HK": "Chinese (Simplified, Hong Kong SAR China)", - "zh_Hans_MO": "Chinese (Simplified, Macau SAR China)", - "zh_Hans_SG": "Chinese (Simplified, Singapore)", - "zh_Hans": "Chinese (Simplified)", - "zh_SG": "Chinese (Singapore)", - "zh_TW": "Chinese (Taiwan)", - "zh_Hant_HK": "Chinese (Traditional, Hong Kong SAR China)", - "zh_Hant_MO": "Chinese (Traditional, Macau SAR China)", - "zh_Hant_TW": "Chinese (Traditional, Taiwan)", - "zh_Hant": "Chinese (Traditional)", - "kw_GB": "Cornish (United Kingdom)", - "hr_BA": "Croatian (Bosnia & Herzegovina)", - "hr_HR": "Croatian (Croatia)", - "cs_CZ": "Czech (Czech Republic)", - "da_DK": "Danish (Denmark)", - "da_GL": "Danish (Greenland)", - "nl_AW": "Dutch (Aruba)", - "nl_BE": "Dutch (Belgium)", - "nl_BQ": "Dutch (Caribbean Netherlands)", - "nl_CW": "Dutch (Cura\u00e7ao)", - "nl_NL": "Dutch (Netherlands)", - "nl_SX": "Dutch (Sint Maarten)", - "nl_SR": "Dutch (Suriname)", - "dz_BT": "Dzongkha (Bhutan)", - "en_AS": "English (American Samoa)", - "en_AI": "English (Anguilla)", - "en_AG": "English (Antigua & Barbuda)", - "en_AU": "English (Australia)", - "en_BS": "English (Bahamas)", - "en_BB": "English (Barbados)", - "en_BE": "English (Belgium)", - "en_BZ": "English (Belize)", - "en_BM": "English (Bermuda)", - "en_BW": "English (Botswana)", - "en_IO": "English (British Indian Ocean Territory)", - "en_VG": "English (British Virgin Islands)", - "en_CM": "English (Cameroon)", - "en_CA": "English (Canada)", - "en_KY": "English (Cayman Islands)", - "en_CX": "English (Christmas Island)", - "en_CC": "English (Cocos (Keeling) Islands)", - "en_CK": "English (Cook Islands)", - "en_DG": "English (Diego Garcia)", - "en_DM": "English (Dominica)", - "en_ER": "English (Eritrea)", - "en_FK": "English (Falkland Islands)", - "en_FJ": "English (Fiji)", - "en_GM": "English (Gambia)", - "en_GH": "English (Ghana)", - "en_GI": "English (Gibraltar)", - "en_GD": "English (Grenada)", - "en_GU": "English (Guam)", - "en_GG": "English (Guernsey)", - "en_GY": "English (Guyana)", - "en_HK": "English (Hong Kong SAR China)", - "en_IN": "English (India)", - "en_IE": "English (Ireland)", - "en_IM": "English (Isle of Man)", - "en_JM": "English (Jamaica)", - "en_JE": "English (Jersey)", - "en_KE": "English (Kenya)", - "en_KI": "English (Kiribati)", - "en_LS": "English (Lesotho)", - "en_LR": "English (Liberia)", - "en_MO": "English (Macau SAR China)", - "en_MG": "English (Madagascar)", - "en_MW": "English (Malawi)", - "en_MY": "English (Malaysia)", - "en_MT": "English (Malta)", - "en_MH": "English (Marshall Islands)", - "en_MU": "English (Mauritius)", - "en_FM": "English (Micronesia)", - "en_MS": "English (Montserrat)", - "en_NA": "English (Namibia)", - "en_NR": "English (Nauru)", - "en_NZ": "English (New Zealand)", - "en_NG": "English (Nigeria)", - "en_NU": "English (Niue)", - "en_NF": "English (Norfolk Island)", - "en_MP": "English (Northern Mariana Islands)", - "en_PK": "English (Pakistan)", - "en_PW": "English (Palau)", - "en_PG": "English (Papua New Guinea)", - "en_PH": "English (Philippines)", - "en_PN": "English (Pitcairn Islands)", - "en_PR": "English (Puerto Rico)", - "en_RW": "English (Rwanda)", - "en_WS": "English (Samoa)", - "en_SC": "English (Seychelles)", - "en_SL": "English (Sierra Leone)", - "en_SG": "English (Singapore)", - "en_SX": "English (Sint Maarten)", - "en_SB": "English (Solomon Islands)", - "en_ZA": "English (South Africa)", - "en_SS": "English (South Sudan)", - "en_SH": "English (St. Helena)", - "en_KN": "English (St. Kitts & Nevis)", - "en_LC": "English (St. Lucia)", - "en_VC": "English (St. Vincent & Grenadines)", - "en_SD": "English (Sudan)", - "en_SZ": "English (Swaziland)", - "en_TZ": "English (Tanzania)", - "en_TK": "English (Tokelau)", - "en_TO": "English (Tonga)", - "en_TT": "English (Trinidad & Tobago)", - "en_TC": "English (Turks & Caicos Islands)", - "en_TV": "English (Tuvalu)", - "en_UM": "English (U.S. Outlying Islands)", - "en_VI": "English (U.S. Virgin Islands)", - "en_UG": "English (Uganda)", - "en_GB": "English (United Kingdom)", - "en_US": "English (United States)", - "en_VU": "English (Vanuatu)", - "en_ZM": "English (Zambia)", - "en_ZW": "English (Zimbabwe)", - "et_EE": "Estonian (Estonia)", - "ee_GH": "Ewe (Ghana)", - "ee_TG": "Ewe (Togo)", - "fo_FO": "Faroese (Faroe Islands)", - "fi_FI": "Finnish (Finland)", - "fr_DZ": "French (Algeria)", - "fr_BE": "French (Belgium)", - "fr_BJ": "French (Benin)", - "fr_BF": "French (Burkina Faso)", - "fr_BI": "French (Burundi)", - "fr_CM": "French (Cameroon)", - "fr_CA": "French (Canada)", - "fr_CF": "French (Central African Republic)", - "fr_TD": "French (Chad)", - "fr_KM": "French (Comoros)", - "fr_CG": "French (Congo - Brazzaville)", - "fr_CD": "French (Congo - Kinshasa)", - "fr_CI": "French (C\u00f4te d\u2019Ivoire)", - "fr_DJ": "French (Djibouti)", - "fr_GQ": "French (Equatorial Guinea)", - "fr_FR": "French (France)", - "fr_GF": "French (French Guiana)", - "fr_PF": "French (French Polynesia)", - "fr_GA": "French (Gabon)", - "fr_GP": "French (Guadeloupe)", - "fr_GN": "French (Guinea)", - "fr_HT": "French (Haiti)", - "fr_LU": "French (Luxembourg)", - "fr_MG": "French (Madagascar)", - "fr_ML": "French (Mali)", - "fr_MQ": "French (Martinique)", - "fr_MR": "French (Mauritania)", - "fr_MU": "French (Mauritius)", - "fr_YT": "French (Mayotte)", - "fr_MC": "French (Monaco)", - "fr_MA": "French (Morocco)", - "fr_NC": "French (New Caledonia)", - "fr_NE": "French (Niger)", - "fr_RE": "French (R\u00e9union)", - "fr_RW": "French (Rwanda)", - "fr_SN": "French (Senegal)", - "fr_SC": "French (Seychelles)", - "fr_BL": "French (St. Barth\u00e9lemy)", - "fr_MF": "French (St. Martin)", - "fr_PM": "French (St. Pierre & Miquelon)", - "fr_CH": "French (Switzerland)", - "fr_SY": "French (Syria)", - "fr_TG": "French (Togo)", - "fr_TN": "French (Tunisia)", - "fr_VU": "French (Vanuatu)", - "fr_WF": "French (Wallis & Futuna)", - "ff_CM": "Fulah (Cameroon)", - "ff_GN": "Fulah (Guinea)", - "ff_MR": "Fulah (Mauritania)", - "ff_SN": "Fulah (Senegal)", - "gl_ES": "Galician (Spain)", - "lg_UG": "Ganda (Uganda)", - "ka_GE": "Georgian (Georgia)", - "de_AT": "German (Austria)", - "de_BE": "German (Belgium)", - "de_DE": "German (Germany)", - "de_LI": "German (Liechtenstein)", - "de_LU": "German (Luxembourg)", - "de_CH": "German (Switzerland)", - "el_CY": "Greek (Cyprus)", - "el_GR": "Greek (Greece)", - "gu_IN": "Gujarati (India)", - "ha_GH": "Hausa (Ghana)", - "ha_Latn_GH": "Hausa (Latin, Ghana)", - "ha_Latn_NE": "Hausa (Latin, Niger)", - "ha_Latn_NG": "Hausa (Latin, Nigeria)", - "ha_Latn": "Hausa (Latin)", - "ha_NE": "Hausa (Niger)", - "ha_NG": "Hausa (Nigeria)", - "he_IL": "Hebrew (Israel)", - "hi_IN": "Hindi (India)", - "hu_HU": "Hungarian (Hungary)", - "is_IS": "Icelandic (Iceland)", - "ig_NG": "Igbo (Nigeria)", - "id_ID": "Indonesian (Indonesia)", - "ga_IE": "Irish (Ireland)", - "it_IT": "Italian (Italy)", - "it_SM": "Italian (San Marino)", - "it_CH": "Italian (Switzerland)", - "ja_JP": "Japanese (Japan)", - "kl_GL": "Kalaallisut (Greenland)", - "kn_IN": "Kannada (India)", - "ks_Arab_IN": "Kashmiri (Arabic, India)", - "ks_Arab": "Kashmiri (Arabic)", - "ks_IN": "Kashmiri (India)", - "kk_Cyrl_KZ": "Kazakh (Cyrillic, Kazakhstan)", - "kk_Cyrl": "Kazakh (Cyrillic)", - "kk_KZ": "Kazakh (Kazakhstan)", - "km_KH": "Khmer (Cambodia)", - "ki_KE": "Kikuyu (Kenya)", - "rw_RW": "Kinyarwanda (Rwanda)", - "ko_KP": "Korean (North Korea)", - "ko_KR": "Korean (South Korea)", - "ky_Cyrl_KG": "Kyrgyz (Cyrillic, Kyrgyzstan)", - "ky_Cyrl": "Kyrgyz (Cyrillic)", - "ky_KG": "Kyrgyz (Kyrgyzstan)", - "lo_LA": "Lao (Laos)", - "lv_LV": "Latvian (Latvia)", - "ln_AO": "Lingala (Angola)", - "ln_CF": "Lingala (Central African Republic)", - "ln_CG": "Lingala (Congo - Brazzaville)", - "ln_CD": "Lingala (Congo - Kinshasa)", - "lt_LT": "Lithuanian (Lithuania)", - "lu_CD": "Luba-Katanga (Congo - Kinshasa)", - "lb_LU": "Luxembourgish (Luxembourg)", - "mk_MK": "Macedonian (Macedonia)", - "mg_MG": "Malagasy (Madagascar)", - "ms_BN": "Malay (Brunei)", - "ms_Latn_BN": "Malay (Latin, Brunei)", - "ms_Latn_MY": "Malay (Latin, Malaysia)", - "ms_Latn_SG": "Malay (Latin, Singapore)", - "ms_Latn": "Malay (Latin)", - "ms_MY": "Malay (Malaysia)", - "ms_SG": "Malay (Singapore)", - "ml_IN": "Malayalam (India)", - "mt_MT": "Maltese (Malta)", - "gv_IM": "Manx (Isle of Man)", - "mr_IN": "Marathi (India)", - "mn_Cyrl_MN": "Mongolian (Cyrillic, Mongolia)", - "mn_Cyrl": "Mongolian (Cyrillic)", - "mn_MN": "Mongolian (Mongolia)", - "ne_IN": "Nepali (India)", - "ne_NP": "Nepali (Nepal)", - "nd_ZW": "North Ndebele (Zimbabwe)", - "se_FI": "Northern Sami (Finland)", - "se_NO": "Northern Sami (Norway)", - "se_SE": "Northern Sami (Sweden)", - "no_NO": "Norwegian (Norway)", - "nb_NO": "Norwegian Bokm\u00e5l (Norway)", - "nb_SJ": "Norwegian Bokm\u00e5l (Svalbard & Jan Mayen)", - "nn_NO": "Norwegian Nynorsk (Norway)", - "or_IN": "Oriya (India)", - "om_ET": "Oromo (Ethiopia)", - "om_KE": "Oromo (Kenya)", - "os_GE": "Ossetic (Georgia)", - "os_RU": "Ossetic (Russia)", - "ps_AF": "Pashto (Afghanistan)", - "fa_AF": "Persian (Afghanistan)", - "fa_IR": "Persian (Iran)", - "pl_PL": "Polish (Poland)", - "pt_AO": "Portuguese (Angola)", - "pt_BR": "Portuguese (Brazil)", - "pt_CV": "Portuguese (Cape Verde)", - "pt_GW": "Portuguese (Guinea-Bissau)", - "pt_MO": "Portuguese (Macau SAR China)", - "pt_MZ": "Portuguese (Mozambique)", - "pt_PT": "Portuguese (Portugal)", - "pt_ST": "Portuguese (S\u00e3o Tom\u00e9 & Pr\u00edncipe)", - "pt_TL": "Portuguese (Timor-Leste)", - "pa_Arab_PK": "Punjabi (Arabic, Pakistan)", - "pa_Arab": "Punjabi (Arabic)", - "pa_Guru_IN": "Punjabi (Gurmukhi, India)", - "pa_Guru": "Punjabi (Gurmukhi)", - "pa_IN": "Punjabi (India)", - "pa_PK": "Punjabi (Pakistan)", - "qu_BO": "Quechua (Bolivia)", - "qu_EC": "Quechua (Ecuador)", - "qu_PE": "Quechua (Peru)", - "ro_MD": "Romanian (Moldova)", - "ro_RO": "Romanian (Romania)", - "rm_CH": "Romansh (Switzerland)", - "rn_BI": "Rundi (Burundi)", - "ru_BY": "Russian (Belarus)", - "ru_KZ": "Russian (Kazakhstan)", - "ru_KG": "Russian (Kyrgyzstan)", - "ru_MD": "Russian (Moldova)", - "ru_RU": "Russian (Russia)", - "ru_UA": "Russian (Ukraine)", - "sg_CF": "Sango (Central African Republic)", - "gd_GB": "Scottish Gaelic (United Kingdom)", - "sr_BA": "Serbian (Bosnia & Herzegovina)", - "sr_Cyrl_BA": "Serbian (Cyrillic, Bosnia & Herzegovina)", - "sr_Cyrl_XK": "Serbian (Cyrillic, Kosovo)", - "sr_Cyrl_ME": "Serbian (Cyrillic, Montenegro)", - "sr_Cyrl_RS": "Serbian (Cyrillic, Serbia)", - "sr_Cyrl": "Serbian (Cyrillic)", - "sr_XK": "Serbian (Kosovo)", - "sr_Latn_BA": "Serbian (Latin, Bosnia & Herzegovina)", - "sr_Latn_XK": "Serbian (Latin, Kosovo)", - "sr_Latn_ME": "Serbian (Latin, Montenegro)", - "sr_Latn_RS": "Serbian (Latin, Serbia)", - "sr_Latn": "Serbian (Latin)", - "sr_ME": "Serbian (Montenegro)", - "sr_RS": "Serbian (Serbia)", - "sh_BA": "Serbo-Croatian (Bosnia & Herzegovina)", - "sn_ZW": "Shona (Zimbabwe)", - "ii_CN": "Sichuan Yi (China)", - "si_LK": "Sinhala (Sri Lanka)", - "sk_SK": "Slovak (Slovakia)", - "sl_SI": "Slovenian (Slovenia)", - "so_DJ": "Somali (Djibouti)", - "so_ET": "Somali (Ethiopia)", - "so_KE": "Somali (Kenya)", - "so_SO": "Somali (Somalia)", - "es_AR": "Spanish (Argentina)", - "es_BO": "Spanish (Bolivia)", - "es_IC": "Spanish (Canary Islands)", - "es_EA": "Spanish (Ceuta & Melilla)", - "es_CL": "Spanish (Chile)", - "es_CO": "Spanish (Colombia)", - "es_CR": "Spanish (Costa Rica)", - "es_CU": "Spanish (Cuba)", - "es_DO": "Spanish (Dominican Republic)", - "es_EC": "Spanish (Ecuador)", - "es_SV": "Spanish (El Salvador)", - "es_GQ": "Spanish (Equatorial Guinea)", - "es_GT": "Spanish (Guatemala)", - "es_HN": "Spanish (Honduras)", - "es_MX": "Spanish (Mexico)", - "es_NI": "Spanish (Nicaragua)", - "es_PA": "Spanish (Panama)", - "es_PY": "Spanish (Paraguay)", - "es_PE": "Spanish (Peru)", - "es_PH": "Spanish (Philippines)", - "es_PR": "Spanish (Puerto Rico)", - "es_ES": "Spanish (Spain)", - "es_US": "Spanish (United States)", - "es_UY": "Spanish (Uruguay)", - "es_VE": "Spanish (Venezuela)", - "sw_KE": "Swahili (Kenya)", - "sw_TZ": "Swahili (Tanzania)", - "sw_UG": "Swahili (Uganda)", - "sv_AX": "Swedish (\u00c5land Islands)", - "sv_FI": "Swedish (Finland)", - "sv_SE": "Swedish (Sweden)", - "tl_PH": "Tagalog (Philippines)", - "ta_IN": "Tamil (India)", - "ta_MY": "Tamil (Malaysia)", - "ta_SG": "Tamil (Singapore)", - "ta_LK": "Tamil (Sri Lanka)", - "te_IN": "Telugu (India)", - "th_TH": "Thai (Thailand)", - "bo_CN": "Tibetan (China)", - "bo_IN": "Tibetan (India)", - "ti_ER": "Tigrinya (Eritrea)", - "ti_ET": "Tigrinya (Ethiopia)", - "to_TO": "Tongan (Tonga)", - "tr_CY": "Turkish (Cyprus)", - "tr_TR": "Turkish (Turkey)", - "uk_UA": "Ukrainian (Ukraine)", - "ur_IN": "Urdu (India)", - "ur_PK": "Urdu (Pakistan)", - "ug_Arab_CN": "Uyghur (Arabic, China)", - "ug_Arab": "Uyghur (Arabic)", - "ug_CN": "Uyghur (China)", - "uz_AF": "Uzbek (Afghanistan)", - "uz_Arab_AF": "Uzbek (Arabic, Afghanistan)", - "uz_Arab": "Uzbek (Arabic)", - "uz_Cyrl_UZ": "Uzbek (Cyrillic, Uzbekistan)", - "uz_Cyrl": "Uzbek (Cyrillic)", - "uz_Latn_UZ": "Uzbek (Latin, Uzbekistan)", - "uz_Latn": "Uzbek (Latin)", - "uz_UZ": "Uzbek (Uzbekistan)", - "vi_VN": "Vietnamese (Vietnam)", - "cy_GB": "Welsh (United Kingdom)", - "fy_NL": "Western Frisian (Netherlands)", - "yo_BJ": "Yoruba (Benin)", - "yo_NG": "Yoruba (Nigeria)", - "zu_ZA": "Zulu (South Africa)" -} \ No newline at end of file + "af_NA": "Afrikaans (Namibia)", + "af_ZA": "Afrikaans (South Africa)", + "ak_GH": "Akan (Ghana)", + "sq_AL": "Albanian (Albania)", + "sq_XK": "Albanian (Kosovo)", + "sq_MK": "Albanian (Macedonia)", + "am_ET": "Amharic (Ethiopia)", + "ar_DZ": "Arabic (Algeria)", + "ar_BH": "Arabic (Bahrain)", + "ar_TD": "Arabic (Chad)", + "ar_KM": "Arabic (Comoros)", + "ar_DJ": "Arabic (Djibouti)", + "ar_EG": "Arabic (Egypt)", + "ar_ER": "Arabic (Eritrea)", + "ar_IQ": "Arabic (Iraq)", + "ar_IL": "Arabic (Israel)", + "ar_JO": "Arabic (Jordan)", + "ar_KW": "Arabic (Kuwait)", + "ar_LB": "Arabic (Lebanon)", + "ar_LY": "Arabic (Libya)", + "ar_MR": "Arabic (Mauritania)", + "ar_MA": "Arabic (Morocco)", + "ar_OM": "Arabic (Oman)", + "ar_PS": "Arabic (Palestinian Territories)", + "ar_QA": "Arabic (Qatar)", + "ar_SA": "Arabic (Saudi Arabia)", + "ar_SO": "Arabic (Somalia)", + "ar_SS": "Arabic (South Sudan)", + "ar_SD": "Arabic (Sudan)", + "ar_SY": "Arabic (Syria)", + "ar_TN": "Arabic (Tunisia)", + "ar_AE": "Arabic (United Arab Emirates)", + "ar_EH": "Arabic (Western Sahara)", + "ar_YE": "Arabic (Yemen)", + "hy_AM": "Armenian (Armenia)", + "as_IN": "Assamese (India)", + "az_AZ": "Azerbaijani (Azerbaijan)", + "az_Cyrl_AZ": "Azerbaijani (Cyrillic, Azerbaijan)", + "az_Cyrl": "Azerbaijani (Cyrillic)", + "az_Latn_AZ": "Azerbaijani (Latin, Azerbaijan)", + "az_Latn": "Azerbaijani (Latin)", + "bm_Latn_ML": "Bambara (Latin, Mali)", + "bm_Latn": "Bambara (Latin)", + "eu_ES": "Basque (Spain)", + "be_BY": "Belarusian (Belarus)", + "bn_BD": "Bengali (Bangladesh)", + "bn_IN": "Bengali (India)", + "bs_BA": "Bosnian (Bosnia & Herzegovina)", + "bs_Cyrl_BA": "Bosnian (Cyrillic, Bosnia & Herzegovina)", + "bs_Cyrl": "Bosnian (Cyrillic)", + "bs_Latn_BA": "Bosnian (Latin, Bosnia & Herzegovina)", + "bs_Latn": "Bosnian (Latin)", + "br_FR": "Breton (France)", + "bg_BG": "Bulgarian (Bulgaria)", + "my_MM": "Burmese (Myanmar (Burma))", + "ca_AD": "Catalan (Andorra)", + "ca_FR": "Catalan (France)", + "ca_IT": "Catalan (Italy)", + "ca_ES": "Catalan (Spain)", + "zh_CN": "Chinese (China)", + "zh_HK": "Chinese (Hong Kong SAR China)", + "zh_MO": "Chinese (Macau SAR China)", + "zh_Hans_CN": "Chinese (Simplified, China)", + "zh_Hans_HK": "Chinese (Simplified, Hong Kong SAR China)", + "zh_Hans_MO": "Chinese (Simplified, Macau SAR China)", + "zh_Hans_SG": "Chinese (Simplified, Singapore)", + "zh_Hans": "Chinese (Simplified)", + "zh_SG": "Chinese (Singapore)", + "zh_TW": "Chinese (Taiwan)", + "zh_Hant_HK": "Chinese (Traditional, Hong Kong SAR China)", + "zh_Hant_MO": "Chinese (Traditional, Macau SAR China)", + "zh_Hant_TW": "Chinese (Traditional, Taiwan)", + "zh_Hant": "Chinese (Traditional)", + "kw_GB": "Cornish (United Kingdom)", + "hr_BA": "Croatian (Bosnia & Herzegovina)", + "hr_HR": "Croatian (Croatia)", + "cs_CZ": "Czech (Czech Republic)", + "da_DK": "Danish (Denmark)", + "da_GL": "Danish (Greenland)", + "nl_AW": "Dutch (Aruba)", + "nl_BE": "Dutch (Belgium)", + "nl_BQ": "Dutch (Caribbean Netherlands)", + "nl_CW": "Dutch (Cura\u00e7ao)", + "nl_NL": "Dutch (Netherlands)", + "nl_SX": "Dutch (Sint Maarten)", + "nl_SR": "Dutch (Suriname)", + "dz_BT": "Dzongkha (Bhutan)", + "en_AS": "English (American Samoa)", + "en_AI": "English (Anguilla)", + "en_AG": "English (Antigua & Barbuda)", + "en_AU": "English (Australia)", + "en_BS": "English (Bahamas)", + "en_BB": "English (Barbados)", + "en_BE": "English (Belgium)", + "en_BZ": "English (Belize)", + "en_BM": "English (Bermuda)", + "en_BW": "English (Botswana)", + "en_IO": "English (British Indian Ocean Territory)", + "en_VG": "English (British Virgin Islands)", + "en_CM": "English (Cameroon)", + "en_CA": "English (Canada)", + "en_KY": "English (Cayman Islands)", + "en_CX": "English (Christmas Island)", + "en_CC": "English (Cocos (Keeling) Islands)", + "en_CK": "English (Cook Islands)", + "en_DG": "English (Diego Garcia)", + "en_DM": "English (Dominica)", + "en_ER": "English (Eritrea)", + "en_FK": "English (Falkland Islands)", + "en_FJ": "English (Fiji)", + "en_GM": "English (Gambia)", + "en_GH": "English (Ghana)", + "en_GI": "English (Gibraltar)", + "en_GD": "English (Grenada)", + "en_GU": "English (Guam)", + "en_GG": "English (Guernsey)", + "en_GY": "English (Guyana)", + "en_HK": "English (Hong Kong SAR China)", + "en_IN": "English (India)", + "en_IE": "English (Ireland)", + "en_IM": "English (Isle of Man)", + "en_JM": "English (Jamaica)", + "en_JE": "English (Jersey)", + "en_KE": "English (Kenya)", + "en_KI": "English (Kiribati)", + "en_LS": "English (Lesotho)", + "en_LR": "English (Liberia)", + "en_MO": "English (Macau SAR China)", + "en_MG": "English (Madagascar)", + "en_MW": "English (Malawi)", + "en_MY": "English (Malaysia)", + "en_MT": "English (Malta)", + "en_MH": "English (Marshall Islands)", + "en_MU": "English (Mauritius)", + "en_FM": "English (Micronesia)", + "en_MS": "English (Montserrat)", + "en_NA": "English (Namibia)", + "en_NR": "English (Nauru)", + "en_NZ": "English (New Zealand)", + "en_NG": "English (Nigeria)", + "en_NU": "English (Niue)", + "en_NF": "English (Norfolk Island)", + "en_MP": "English (Northern Mariana Islands)", + "en_PK": "English (Pakistan)", + "en_PW": "English (Palau)", + "en_PG": "English (Papua New Guinea)", + "en_PH": "English (Philippines)", + "en_PN": "English (Pitcairn Islands)", + "en_PR": "English (Puerto Rico)", + "en_RW": "English (Rwanda)", + "en_WS": "English (Samoa)", + "en_SC": "English (Seychelles)", + "en_SL": "English (Sierra Leone)", + "en_SG": "English (Singapore)", + "en_SX": "English (Sint Maarten)", + "en_SB": "English (Solomon Islands)", + "en_ZA": "English (South Africa)", + "en_SS": "English (South Sudan)", + "en_SH": "English (St. Helena)", + "en_KN": "English (St. Kitts & Nevis)", + "en_LC": "English (St. Lucia)", + "en_VC": "English (St. Vincent & Grenadines)", + "en_SD": "English (Sudan)", + "en_SZ": "English (Swaziland)", + "en_TZ": "English (Tanzania)", + "en_TK": "English (Tokelau)", + "en_TO": "English (Tonga)", + "en_TT": "English (Trinidad & Tobago)", + "en_TC": "English (Turks & Caicos Islands)", + "en_TV": "English (Tuvalu)", + "en_UM": "English (U.S. Outlying Islands)", + "en_VI": "English (U.S. Virgin Islands)", + "en_UG": "English (Uganda)", + "en_GB": "English (United Kingdom)", + "en_US": "English (United States)", + "en_VU": "English (Vanuatu)", + "en_ZM": "English (Zambia)", + "en_ZW": "English (Zimbabwe)", + "et_EE": "Estonian (Estonia)", + "ee_GH": "Ewe (Ghana)", + "ee_TG": "Ewe (Togo)", + "fo_FO": "Faroese (Faroe Islands)", + "fi_FI": "Finnish (Finland)", + "fr_DZ": "French (Algeria)", + "fr_BE": "French (Belgium)", + "fr_BJ": "French (Benin)", + "fr_BF": "French (Burkina Faso)", + "fr_BI": "French (Burundi)", + "fr_CM": "French (Cameroon)", + "fr_CA": "French (Canada)", + "fr_CF": "French (Central African Republic)", + "fr_TD": "French (Chad)", + "fr_KM": "French (Comoros)", + "fr_CG": "French (Congo - Brazzaville)", + "fr_CD": "French (Congo - Kinshasa)", + "fr_CI": "French (C\u00f4te d\u2019Ivoire)", + "fr_DJ": "French (Djibouti)", + "fr_GQ": "French (Equatorial Guinea)", + "fr_FR": "French (France)", + "fr_GF": "French (French Guiana)", + "fr_PF": "French (French Polynesia)", + "fr_GA": "French (Gabon)", + "fr_GP": "French (Guadeloupe)", + "fr_GN": "French (Guinea)", + "fr_HT": "French (Haiti)", + "fr_LU": "French (Luxembourg)", + "fr_MG": "French (Madagascar)", + "fr_ML": "French (Mali)", + "fr_MQ": "French (Martinique)", + "fr_MR": "French (Mauritania)", + "fr_MU": "French (Mauritius)", + "fr_YT": "French (Mayotte)", + "fr_MC": "French (Monaco)", + "fr_MA": "French (Morocco)", + "fr_NC": "French (New Caledonia)", + "fr_NE": "French (Niger)", + "fr_RE": "French (R\u00e9union)", + "fr_RW": "French (Rwanda)", + "fr_SN": "French (Senegal)", + "fr_SC": "French (Seychelles)", + "fr_BL": "French (St. Barth\u00e9lemy)", + "fr_MF": "French (St. Martin)", + "fr_PM": "French (St. Pierre & Miquelon)", + "fr_CH": "French (Switzerland)", + "fr_SY": "French (Syria)", + "fr_TG": "French (Togo)", + "fr_TN": "French (Tunisia)", + "fr_VU": "French (Vanuatu)", + "fr_WF": "French (Wallis & Futuna)", + "ff_CM": "Fulah (Cameroon)", + "ff_GN": "Fulah (Guinea)", + "ff_MR": "Fulah (Mauritania)", + "ff_SN": "Fulah (Senegal)", + "gl_ES": "Galician (Spain)", + "lg_UG": "Ganda (Uganda)", + "ka_GE": "Georgian (Georgia)", + "de_AT": "German (Austria)", + "de_BE": "German (Belgium)", + "de_DE": "German (Germany)", + "de_LI": "German (Liechtenstein)", + "de_LU": "German (Luxembourg)", + "de_CH": "German (Switzerland)", + "el_CY": "Greek (Cyprus)", + "el_GR": "Greek (Greece)", + "gu_IN": "Gujarati (India)", + "ha_GH": "Hausa (Ghana)", + "ha_Latn_GH": "Hausa (Latin, Ghana)", + "ha_Latn_NE": "Hausa (Latin, Niger)", + "ha_Latn_NG": "Hausa (Latin, Nigeria)", + "ha_Latn": "Hausa (Latin)", + "ha_NE": "Hausa (Niger)", + "ha_NG": "Hausa (Nigeria)", + "he_IL": "Hebrew (Israel)", + "hi_IN": "Hindi (India)", + "hu_HU": "Hungarian (Hungary)", + "is_IS": "Icelandic (Iceland)", + "ig_NG": "Igbo (Nigeria)", + "id_ID": "Indonesian (Indonesia)", + "ga_IE": "Irish (Ireland)", + "it_IT": "Italian (Italy)", + "it_SM": "Italian (San Marino)", + "it_CH": "Italian (Switzerland)", + "ja_JP": "Japanese (Japan)", + "kl_GL": "Kalaallisut (Greenland)", + "kn_IN": "Kannada (India)", + "ks_Arab_IN": "Kashmiri (Arabic, India)", + "ks_Arab": "Kashmiri (Arabic)", + "ks_IN": "Kashmiri (India)", + "kk_Cyrl_KZ": "Kazakh (Cyrillic, Kazakhstan)", + "kk_Cyrl": "Kazakh (Cyrillic)", + "kk_KZ": "Kazakh (Kazakhstan)", + "km_KH": "Khmer (Cambodia)", + "ki_KE": "Kikuyu (Kenya)", + "rw_RW": "Kinyarwanda (Rwanda)", + "ko_KP": "Korean (North Korea)", + "ko_KR": "Korean (South Korea)", + "ky_Cyrl_KG": "Kyrgyz (Cyrillic, Kyrgyzstan)", + "ky_Cyrl": "Kyrgyz (Cyrillic)", + "ky_KG": "Kyrgyz (Kyrgyzstan)", + "lo_LA": "Lao (Laos)", + "lv_LV": "Latvian (Latvia)", + "ln_AO": "Lingala (Angola)", + "ln_CF": "Lingala (Central African Republic)", + "ln_CG": "Lingala (Congo - Brazzaville)", + "ln_CD": "Lingala (Congo - Kinshasa)", + "lt_LT": "Lithuanian (Lithuania)", + "lu_CD": "Luba-Katanga (Congo - Kinshasa)", + "lb_LU": "Luxembourgish (Luxembourg)", + "mk_MK": "Macedonian (Macedonia)", + "mg_MG": "Malagasy (Madagascar)", + "ms_BN": "Malay (Brunei)", + "ms_Latn_BN": "Malay (Latin, Brunei)", + "ms_Latn_MY": "Malay (Latin, Malaysia)", + "ms_Latn_SG": "Malay (Latin, Singapore)", + "ms_Latn": "Malay (Latin)", + "ms_MY": "Malay (Malaysia)", + "ms_SG": "Malay (Singapore)", + "ml_IN": "Malayalam (India)", + "mt_MT": "Maltese (Malta)", + "gv_IM": "Manx (Isle of Man)", + "mr_IN": "Marathi (India)", + "mn_Cyrl_MN": "Mongolian (Cyrillic, Mongolia)", + "mn_Cyrl": "Mongolian (Cyrillic)", + "mn_MN": "Mongolian (Mongolia)", + "ne_IN": "Nepali (India)", + "ne_NP": "Nepali (Nepal)", + "nd_ZW": "North Ndebele (Zimbabwe)", + "se_FI": "Northern Sami (Finland)", + "se_NO": "Northern Sami (Norway)", + "se_SE": "Northern Sami (Sweden)", + "no_NO": "Norwegian (Norway)", + "nb_NO": "Norwegian Bokm\u00e5l (Norway)", + "nb_SJ": "Norwegian Bokm\u00e5l (Svalbard & Jan Mayen)", + "nn_NO": "Norwegian Nynorsk (Norway)", + "or_IN": "Oriya (India)", + "om_ET": "Oromo (Ethiopia)", + "om_KE": "Oromo (Kenya)", + "os_GE": "Ossetic (Georgia)", + "os_RU": "Ossetic (Russia)", + "ps_AF": "Pashto (Afghanistan)", + "fa_AF": "Persian (Afghanistan)", + "fa_IR": "Persian (Iran)", + "pl_PL": "Polish (Poland)", + "pt_AO": "Portuguese (Angola)", + "pt_BR": "Portuguese (Brazil)", + "pt_CV": "Portuguese (Cape Verde)", + "pt_GW": "Portuguese (Guinea-Bissau)", + "pt_MO": "Portuguese (Macau SAR China)", + "pt_MZ": "Portuguese (Mozambique)", + "pt_PT": "Portuguese (Portugal)", + "pt_ST": "Portuguese (S\u00e3o Tom\u00e9 & Pr\u00edncipe)", + "pt_TL": "Portuguese (Timor-Leste)", + "pa_Arab_PK": "Punjabi (Arabic, Pakistan)", + "pa_Arab": "Punjabi (Arabic)", + "pa_Guru_IN": "Punjabi (Gurmukhi, India)", + "pa_Guru": "Punjabi (Gurmukhi)", + "pa_IN": "Punjabi (India)", + "pa_PK": "Punjabi (Pakistan)", + "qu_BO": "Quechua (Bolivia)", + "qu_EC": "Quechua (Ecuador)", + "qu_PE": "Quechua (Peru)", + "ro_MD": "Romanian (Moldova)", + "ro_RO": "Romanian (Romania)", + "rm_CH": "Romansh (Switzerland)", + "rn_BI": "Rundi (Burundi)", + "ru_BY": "Russian (Belarus)", + "ru_KZ": "Russian (Kazakhstan)", + "ru_KG": "Russian (Kyrgyzstan)", + "ru_MD": "Russian (Moldova)", + "ru_RU": "Russian (Russia)", + "ru_UA": "Russian (Ukraine)", + "sg_CF": "Sango (Central African Republic)", + "gd_GB": "Scottish Gaelic (United Kingdom)", + "sr_BA": "Serbian (Bosnia & Herzegovina)", + "sr_Cyrl_BA": "Serbian (Cyrillic, Bosnia & Herzegovina)", + "sr_Cyrl_XK": "Serbian (Cyrillic, Kosovo)", + "sr_Cyrl_ME": "Serbian (Cyrillic, Montenegro)", + "sr_Cyrl_RS": "Serbian (Cyrillic, Serbia)", + "sr_Cyrl": "Serbian (Cyrillic)", + "sr_XK": "Serbian (Kosovo)", + "sr_Latn_BA": "Serbian (Latin, Bosnia & Herzegovina)", + "sr_Latn_XK": "Serbian (Latin, Kosovo)", + "sr_Latn_ME": "Serbian (Latin, Montenegro)", + "sr_Latn_RS": "Serbian (Latin, Serbia)", + "sr_Latn": "Serbian (Latin)", + "sr_ME": "Serbian (Montenegro)", + "sr_RS": "Serbian (Serbia)", + "sh_BA": "Serbo-Croatian (Bosnia & Herzegovina)", + "sn_ZW": "Shona (Zimbabwe)", + "ii_CN": "Sichuan Yi (China)", + "si_LK": "Sinhala (Sri Lanka)", + "sk_SK": "Slovak (Slovakia)", + "sl_SI": "Slovenian (Slovenia)", + "so_DJ": "Somali (Djibouti)", + "so_ET": "Somali (Ethiopia)", + "so_KE": "Somali (Kenya)", + "so_SO": "Somali (Somalia)", + "es_AR": "Spanish (Argentina)", + "es_BO": "Spanish (Bolivia)", + "es_IC": "Spanish (Canary Islands)", + "es_EA": "Spanish (Ceuta & Melilla)", + "es_CL": "Spanish (Chile)", + "es_CO": "Spanish (Colombia)", + "es_CR": "Spanish (Costa Rica)", + "es_CU": "Spanish (Cuba)", + "es_DO": "Spanish (Dominican Republic)", + "es_EC": "Spanish (Ecuador)", + "es_SV": "Spanish (El Salvador)", + "es_GQ": "Spanish (Equatorial Guinea)", + "es_GT": "Spanish (Guatemala)", + "es_HN": "Spanish (Honduras)", + "es_MX": "Spanish (Mexico)", + "es_NI": "Spanish (Nicaragua)", + "es_PA": "Spanish (Panama)", + "es_PY": "Spanish (Paraguay)", + "es_PE": "Spanish (Peru)", + "es_PH": "Spanish (Philippines)", + "es_PR": "Spanish (Puerto Rico)", + "es_ES": "Spanish (Spain)", + "es_US": "Spanish (United States)", + "es_UY": "Spanish (Uruguay)", + "es_VE": "Spanish (Venezuela)", + "sw_KE": "Swahili (Kenya)", + "sw_TZ": "Swahili (Tanzania)", + "sw_UG": "Swahili (Uganda)", + "sv_AX": "Swedish (\u00c5land Islands)", + "sv_FI": "Swedish (Finland)", + "sv_SE": "Swedish (Sweden)", + "tl_PH": "Tagalog (Philippines)", + "ta_IN": "Tamil (India)", + "ta_MY": "Tamil (Malaysia)", + "ta_SG": "Tamil (Singapore)", + "ta_LK": "Tamil (Sri Lanka)", + "te_IN": "Telugu (India)", + "th_TH": "Thai (Thailand)", + "bo_CN": "Tibetan (China)", + "bo_IN": "Tibetan (India)", + "ti_ER": "Tigrinya (Eritrea)", + "ti_ET": "Tigrinya (Ethiopia)", + "to_TO": "Tongan (Tonga)", + "tr_CY": "Turkish (Cyprus)", + "tr_TR": "Turkish (Turkey)", + "uk_UA": "Ukrainian (Ukraine)", + "ur_IN": "Urdu (India)", + "ur_PK": "Urdu (Pakistan)", + "ug_Arab_CN": "Uyghur (Arabic, China)", + "ug_Arab": "Uyghur (Arabic)", + "ug_CN": "Uyghur (China)", + "uz_AF": "Uzbek (Afghanistan)", + "uz_Arab_AF": "Uzbek (Arabic, Afghanistan)", + "uz_Arab": "Uzbek (Arabic)", + "uz_Cyrl_UZ": "Uzbek (Cyrillic, Uzbekistan)", + "uz_Cyrl": "Uzbek (Cyrillic)", + "uz_Latn_UZ": "Uzbek (Latin, Uzbekistan)", + "uz_Latn": "Uzbek (Latin)", + "uz_UZ": "Uzbek (Uzbekistan)", + "vi_VN": "Vietnamese (Vietnam)", + "cy_GB": "Welsh (United Kingdom)", + "fy_NL": "Western Frisian (Netherlands)", + "yo_BJ": "Yoruba (Benin)", + "yo_NG": "Yoruba (Nigeria)", + "zu_ZA": "Zulu (South Africa)" +}