Merge branch '4.4'

* 4.4:
  [Form][Validator][Intl] Fix tests
  [Messenger] return empty envelopes when RetryableException occurs
  [Intl] Excludes locale from language codes (split localized language names)
  [FrameworkBundle] WebTestCase KernelBrowser::getContainer null return type
  [Intl] Fix compile type errors
  [Validator] Accept underscores in the URL validator as the URL will resolve correctly
  [Translation] Collect original locale in case of fallback translation
  Add types to constructors and private/final/internal methods (Batch I)
  [HttpFoundation] optimize normalization of headers
  Replace REMOTE_ADDR in trusted proxies with the current REMOTE_ADDR
  [ErrorHandler] Forward \Throwable
  Fix toolbar load when GET params are present in "_wdt" route
This commit is contained in:
Nicolas Grekas 2019-09-27 16:25:24 +02:00
commit 4a9926aa68
264 changed files with 2717 additions and 2195 deletions

View File

@ -60,7 +60,7 @@ DependencyInjection
```php
new Definition('%my_class%');
```
DoctrineBridge
--------------
* Deprecated injecting `ClassMetadataFactory` in `DoctrineExtractor`, an instance of `EntityManagerInterface` should be
@ -96,7 +96,7 @@ FrameworkBundle
* Deprecated `routing.loader.service`, use `routing.loader.container` instead.
* Not tagging service route loaders with `routing.route_loader` has been deprecated.
* Overriding the methods `KernelTestCase::tearDown()` and `WebTestCase::tearDown()` without the `void` return-type is deprecated.
HttpClient
----------
@ -139,7 +139,7 @@ HttpKernel
}
```
As many bundles must be compatible with a range of Symfony versions, the current
As many bundles must be compatible with a range of Symfony versions, the current
directory convention is not deprecated yet, but it will be in the future.
* Deprecated the second and third argument of `KernelInterface::locateResource`
@ -148,6 +148,7 @@ HttpKernel
fallback directories. Resources like service definitions are usually loaded relative to the
current directory or with a glob pattern. The fallback directories have never been advocated
so you likely do not use those in any app based on the SF Standard or Flex edition.
* Getting the container from a non-booted kernel is deprecated
Lock
----
@ -171,7 +172,7 @@ MonologBridge
--------------
* The `RouteProcessor` has been marked final.
Process
-------
@ -195,14 +196,14 @@ Security
* Implementations of `PasswordEncoderInterface` and `UserPasswordEncoderInterface` should add a new `needsRehash()` method
* Deprecated returning a non-boolean value when implementing `Guard\AuthenticatorInterface::checkCredentials()`. Please explicitly return `false` to indicate invalid credentials.
* Deprecated passing more than one attribute to `AccessDecisionManager::decide()` and `AuthorizationChecker::isGranted()` (and indirectly the `is_granted()` Twig and ExpressionLanguage function)
**Before**
```php
if ($this->authorizationChecker->isGranted(['ROLE_USER', 'ROLE_ADMIN'])) {
// ...
}
```
**After**
```php
if ($this->authorizationChecker->isGranted(new Expression("has_role('ROLE_USER') or has_role('ROLE_ADMIN')"))) {}
@ -230,18 +231,18 @@ TwigBridge
* Deprecated to pass `$rootDir` and `$fileLinkFormatter` as 5th and 6th argument respectively to the
`DebugCommand::__construct()` method, swap the variables position.
* Deprecated accepting STDIN implicitly when using the `lint:twig` command, use `lint:twig -` (append a dash) instead to make it explicit.
TwigBundle
----------
* Deprecated `twig.exception_controller` configuration option, set it to "null" and use `framework.error_controller` instead:
Before:
```yaml
twig:
exception_controller: 'App\Controller\MyExceptionController'
```
After:
```yaml
twig:
@ -250,36 +251,36 @@ TwigBundle
framework:
error_controller: 'App\Controller\MyExceptionController'
```
The new default exception controller will also change the error response content according to
The new default exception controller will also change the error response content according to
https://tools.ietf.org/html/rfc7807 for `json`, `xml`, `atom` and `txt` formats:
Before:
```json
{
"error": {
"code": 404,
"message": "Sorry, the page you are looking for could not be found"
}
{
"error": {
"code": 404,
"message": "Sorry, the page you are looking for could not be found"
}
}
```
After:
```json
{
{
"title": "Not Found",
"status": 404,
"status": 404,
"detail": "Sorry, the page you are looking for could not be found"
}
```
* Deprecated the `ExceptionController` and `PreviewErrorController` controllers, use `ErrorController` from the HttpKernel component instead
* Deprecated all built-in error templates, use the error renderer mechanism of the `ErrorRenderer` component
* Deprecated loading custom error templates in non-html formats. Custom HTML error pages based on Twig keep working as before:
* Deprecated loading custom error templates in non-html formats. Custom HTML error pages based on Twig keep working as before:
Before (`templates/bundles/TwigBundle/Exception/error.jsonld.twig`):
```twig
{
{
"@id": "https://example.com",
"@type": "error",
"@context": {
@ -289,7 +290,7 @@ TwigBundle
}
}
```
After (`App\ErrorRenderer\JsonLdErrorRenderer`):
```php
class JsonLdErrorRenderer implements ErrorRendererInterface
@ -298,7 +299,7 @@ TwigBundle
{
return 'jsonld';
}
public function render(FlattenException $exception): string
{
return json_encode([
@ -323,7 +324,7 @@ Validator
* Deprecated using anything else than a `string` as the code of a `ConstraintViolation`, a `string` type-hint will
be added to the constructor of the `ConstraintViolation` class and to the `ConstraintViolationBuilder::setCode()`
method in 5.0.
* Deprecated passing an `ExpressionLanguage` instance as the second argument of `ExpressionValidator::__construct()`.
* Deprecated passing an `ExpressionLanguage` instance as the second argument of `ExpressionValidator::__construct()`.
Pass it as the first argument instead.
* The `Length` constraint expects the `allowEmptyString` option to be defined
when the `min` option is used.
@ -343,7 +344,7 @@ WebServerBundle
---------------
* The bundle is deprecated and will be removed in 5.0.
Yaml
----

View File

@ -288,6 +288,7 @@ HttpFoundation
use `Symfony\Component\Mime\FileinfoMimeTypeGuesser` instead.
* `ApacheRequest` has been removed, use the `Request` class instead.
* The third argument of the `HeaderBag::get()` method has been removed, use method `all()` instead.
* Getting the container from a non-booted kernel is not possible anymore.
HttpKernel
----------

View File

@ -174,10 +174,8 @@ class Application extends BaseApplication
if ($bundle instanceof Bundle) {
try {
$bundle->registerCommands($this);
} catch (\Exception $e) {
$this->registrationErrors[] = $e;
} catch (\Throwable $e) {
$this->registrationErrors[] = new FatalThrowableError($e);
$this->registrationErrors[] = $e;
}
}
}
@ -192,10 +190,8 @@ class Application extends BaseApplication
if (!isset($lazyCommandIds[$id])) {
try {
$this->add($container->get($id));
} catch (\Exception $e) {
$this->registrationErrors[] = $e;
} catch (\Throwable $e) {
$this->registrationErrors[] = new FatalThrowableError($e);
$this->registrationErrors[] = $e;
}
}
}
@ -211,6 +207,10 @@ class Application extends BaseApplication
(new SymfonyStyle($input, $output))->warning('Some commands could not be registered:');
foreach ($this->registrationErrors as $error) {
if (!$error instanceof \Exception) {
$error = new FatalThrowableError($error);
}
$this->doRenderException($error, $output);
}
}

View File

@ -125,11 +125,15 @@ abstract class KernelTestCase extends TestCase
protected static function ensureKernelShutdown()
{
if (null !== static::$kernel) {
$container = static::$kernel->getContainer();
static::$kernel->shutdown();
static::$booted = false;
if ($container instanceof ResetInterface) {
$container->reset();
$isBooted = (new \ReflectionClass(static::$kernel))->getProperty('booted');
$isBooted->setAccessible(true);
if ($isBooted->getValue(static::$kernel)) {
$container = static::$kernel->getContainer();
static::$kernel->shutdown();
static::$booted = false;
if ($container instanceof ResetInterface) {
$container->reset();
}
}
}
static::$container = null;

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\app;
use Psr\Log\NullLogger;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\Kernel;
@ -96,4 +97,13 @@ class AppKernel extends Kernel
return $parameters;
}
public function getContainer(): ContainerInterface
{
if (!$this->booted) {
throw new \LogicException('Cannot access the container on a non-booted kernel. Did you forget to boot it?');
}
return parent::getContainer();
}
}

View File

@ -12,6 +12,7 @@
namespace Symfony\Bundle\SecurityBundle\Tests\Functional\app;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\Kernel;
@ -98,4 +99,13 @@ class AppKernel extends Kernel
return $parameters;
}
public function getContainer(): ContainerInterface
{
if (!$this->booted) {
throw new \LogicException('Cannot access the container on a non-booted kernel. Did you forget to boot it?');
}
return parent::getContainer();
}
}

View File

@ -13,7 +13,7 @@
{% set text %}
<div class="sf-toolbar-info-piece">
<b>Locale</b>
<b>Default locale</b>
<span class="sf-toolbar-status">
{{ collector.locale|default('-') }}
</span>
@ -61,7 +61,7 @@
<div class="metrics">
<div class="metric">
<span class="value">{{ collector.locale|default('-') }}</span>
<span class="label">Locale</span>
<span class="label">Default locale</span>
</div>
<div class="metric">
<span class="value">{{ collector.fallbackLocales|join(', ')|default('-') }}</span>
@ -126,7 +126,7 @@
</div>
{% else %}
{% block fallback_messages %}
{{ helper.render_table(messages_fallback) }}
{{ helper.render_table(messages_fallback, true) }}
{% endblock %}
{% endif %}
</div>
@ -162,11 +162,14 @@
{% endblock %}
{% macro render_table(messages) %}
{% macro render_table(messages, is_fallback) %}
<table data-filters>
<thead>
<tr>
<th data-filter="locale">Locale</th>
{% if is_fallback %}
<th>Fallback locale</th>
{% endif %}
<th data-filter="domain">Domain</th>
<th>Times used</th>
<th>Message ID</th>
@ -177,6 +180,9 @@
{% for message in messages %}
<tr data-filter-locale="{{ message.locale }}" data-filter-domain="{{ message.domain }}">
<td class="font-normal text-small nowrap">{{ message.locale }}</td>
{% if is_fallback %}
<td class="font-normal text-small nowrap">{{ message.fallbackLocale|default('-') }}</td>
{% endif %}
<td class="font-normal text-small text-bold nowrap">{{ message.domain }}</td>
<td class="font-normal text-small nowrap">{{ message.count }}</td>
<td>

View File

@ -429,7 +429,7 @@
newToken = (newToken || token);
this.load(
'sfwdt' + token,
'{{ path("_wdt", { "token": "xxxxxx" }) }}'.replace(/xxxxxx/, newToken),
'{{ path("_wdt", { "token": "xxxxxx" })|escape('js') }}'.replace(/xxxxxx/, newToken),
function(xhr, el) {
/* Evaluate in global scope scripts embedded inside the toolbar */
@ -532,7 +532,7 @@
sfwdt.innerHTML = '\
<div class="sf-toolbarreset">\
<div class="sf-toolbar-icon"><svg width="26" height="28" xmlns="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" viewBox="0 0 26 28" enable-background="new 0 0 26 28" xml:space="preserve"><path fill="#FFFFFF" d="M13 0C5.8 0 0 5.8 0 13c0 7.2 5.8 13 13 13c7.2 0 13-5.8 13-13C26 5.8 20.2 0 13 0z M20 7.5 c-0.6 0-1-0.3-1-0.9c0-0.2 0-0.4 0.2-0.6c0.1-0.3 0.2-0.3 0.2-0.4c0-0.3-0.5-0.4-0.7-0.4c-2 0.1-2.5 2.7-2.9 4.8l-0.2 1.1 c1.1 0.2 1.9 0 2.4-0.3c0.6-0.4-0.2-0.8-0.1-1.3C18 9.2 18.4 9 18.7 8.9c0.5 0 0.8 0.5 0.8 1c0 0.8-1.1 2-3.3 1.9 c-0.3 0-0.5 0-0.7-0.1L15 14.1c-0.4 1.7-0.9 4.1-2.6 6.2c-1.5 1.8-3.1 2.1-3.8 2.1c-1.3 0-2.1-0.6-2.2-1.6c0-0.9 0.8-1.4 1.3-1.4 c0.7 0 1.2 0.5 1.2 1.1c0 0.5-0.2 0.6-0.4 0.7c-0.1 0.1-0.3 0.2-0.3 0.4c0 0.1 0.1 0.3 0.4 0.3c0.5 0 0.9-0.3 1.2-0.5 c1.3-1 1.7-2.9 2.4-6.2l0.1-0.8c0.2-1.1 0.5-2.3 0.8-3.5c-0.9-0.7-1.4-1.5-2.6-1.8c-0.8-0.2-1.3 0-1.7 0.4C8.4 10 8.6 10.7 9 11.1 l0.7 0.7c0.8 0.9 1.3 1.7 1.1 2.7c-0.3 1.6-2.1 2.8-4.3 2.1c-1.9-0.6-2.2-1.9-2-2.7c0.2-0.6 0.7-0.8 1.2-0.6 c0.5 0.2 0.7 0.8 0.6 1.3c0 0.1 0 0.1-0.1 0.3C6 15 5.9 15.2 5.9 15.3c-0.1 0.4 0.4 0.7 0.8 0.8c0.8 0.3 1.7-0.2 1.9-0.9 c0.2-0.6-0.2-1.1-0.4-1.2l-0.8-0.9c-0.4-0.4-1.2-1.5-0.8-2.8c0.2-0.5 0.5-1 0.9-1.4c1-0.7 2-0.8 3-0.6c1.3 0.4 1.9 1.2 2.8 1.9 c0.5-1.3 1.1-2.6 2-3.8c0.9-1 2-1.7 3.3-1.8C20 4.8 21 5.4 21 6.3C21 6.7 20.8 7.5 20 7.5z"/></svg></div>\
An error occurred while loading the web debug toolbar. <a href="{{ path("_profiler_home") }}' + newToken + '>Open the web profiler.</a>\
An error occurred while loading the web debug toolbar. <a href="{{ path("_profiler_home")|escape('js') }}' + newToken + '>Open the web profiler.</a>\
</div>\
';
sfwdt.setAttribute('class', 'sf-toolbar sf-error-toolbar');

View File

@ -68,6 +68,9 @@ class Package implements PackageInterface
return $this->versionStrategy;
}
/**
* @return bool
*/
protected function isAbsoluteUrl(string $url)
{
return false !== strpos($url, '://') || '//' === substr($url, 0, 2);

View File

@ -50,7 +50,7 @@ class JsonManifestVersionStrategy implements VersionStrategyInterface
return $this->getManifestPath($path) ?: $path;
}
private function getManifestPath(string $path)
private function getManifestPath(string $path): ?string
{
if (null === $this->manifestData) {
if (!file_exists($this->manifestPath)) {

View File

@ -100,7 +100,7 @@ class ReflectionClassResource implements SelfCheckingResourceInterface
} while ($class = $class->getParentClass());
}
private function computeHash()
private function computeHash(): string
{
if (null === $this->classReflector) {
try {
@ -119,7 +119,7 @@ class ReflectionClassResource implements SelfCheckingResourceInterface
return hash_final($hash);
}
private function generateSignature(\ReflectionClass $class)
private function generateSignature(\ReflectionClass $class): iterable
{
yield $class->getDocComment();
yield (int) $class->isFinal();

View File

@ -120,7 +120,7 @@ class Application implements ResetInterface
$output = new ConsoleOutput();
}
$renderException = function ($e) use ($output) {
$renderException = function (\Throwable $e) use ($output) {
if (!$e instanceof \Exception) {
$e = class_exists(FatalThrowableError::class) ? new FatalThrowableError($e) : new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
}
@ -1090,12 +1090,12 @@ class Application implements ResetInterface
/**
* @internal
*/
public function isSingleCommand()
public function isSingleCommand(): bool
{
return $this->singleCommand;
}
private function splitStringByWidth(string $string, int $width)
private function splitStringByWidth(string $string, int $width): array
{
// str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly.
// additionally, array_slice() is not enough as some character has doubled width.

View File

@ -76,10 +76,7 @@ EOF
]);
}
/**
* {@inheritdoc}
*/
private function createDefinition()
private function createDefinition(): InputDefinition
{
return new InputDefinition([
new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'),

View File

@ -173,7 +173,7 @@ class MarkdownDescriptor extends Descriptor
}
}
private function getApplicationTitle(Application $application)
private function getApplicationTitle(Application $application): string
{
if ('UNKNOWN' !== $application->getName()) {
if ('UNKNOWN' !== $application->getVersion()) {

View File

@ -77,7 +77,7 @@ class ErrorListener implements EventSubscriberInterface
];
}
private static function getInputString(ConsoleEvent $event)
private static function getInputString(ConsoleEvent $event): ?string
{
$commandName = $event->getCommand() ? $event->getCommand()->getName() : null;
$input = $event->getInput();

View File

@ -129,7 +129,7 @@ class ProcessHelper extends Helper
};
}
private function escapeString(string $str)
private function escapeString(string $str): string
{
return str_replace('<', '\\<', $str);
}

View File

@ -188,7 +188,7 @@ class ProgressIndicator
}, $this->format));
}
private function determineBestFormat()
private function determineBestFormat(): string
{
switch ($this->output->getVerbosity()) {
// OutputInterface::VERBOSITY_QUIET: display is disabled anyway
@ -215,12 +215,12 @@ class ProgressIndicator
}
}
private function getCurrentTimeInMilliseconds()
private function getCurrentTimeInMilliseconds(): float
{
return round(microtime(true) * 1000);
}
private static function initPlaceholderFormatters()
private static function initPlaceholderFormatters(): array
{
return [
'indicator' => function (self $indicator) {
@ -238,7 +238,7 @@ class ProgressIndicator
];
}
private static function initFormats()
private static function initFormats(): array
{
return [
'normal' => ' %indicator% %message%',

View File

@ -336,7 +336,7 @@ class QuestionHelper extends Helper
return $fullChoice;
}
private function mostRecentlyEnteredValue(string $entered)
private function mostRecentlyEnteredValue(string $entered): string
{
// Determine the most recent value that the user entered
if (false === strpos($entered, ',')) {

View File

@ -456,7 +456,7 @@ class Table
/**
* Renders vertical column separator.
*/
private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE)
private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string
{
$borders = $this->style->getBorderChars();
@ -489,7 +489,7 @@ class Table
/**
* Renders table cell with padding.
*/
private function renderCell(array $row, int $column, string $cellFormat)
private function renderCell(array $row, int $column, string $cellFormat): string
{
$cell = isset($row[$column]) ? $row[$column] : '';
$width = $this->effectiveColumnWidths[$column];
@ -534,7 +534,7 @@ class Table
$this->numberOfColumns = max($columns);
}
private function buildTableRows(array $rows)
private function buildTableRows(array $rows): TableRows
{
/** @var WrappableOutputFormatterInterface $formatter */
$formatter = $this->output->getFormatter();
@ -568,7 +568,7 @@ class Table
}
}
return new TableRows(function () use ($rows, $unmergedRows) {
return new TableRows(function () use ($rows, $unmergedRows): \Traversable {
foreach ($rows as $rowKey => $row) {
yield $this->fillCells($row);
@ -772,7 +772,7 @@ class Table
$this->numberOfColumns = null;
}
private static function initStyles()
private static function initStyles(): array
{
$borderless = new TableStyle();
$borderless
@ -819,7 +819,7 @@ class Table
];
}
private function resolveStyle($name)
private function resolveStyle($name): TableStyle
{
if ($name instanceof TableStyle) {
return $name;

View File

@ -124,7 +124,7 @@ class TableStyle
*
* @internal
*/
public function getBorderChars()
public function getBorderChars(): array
{
return [
$this->horizontalOutsideBorderChar,

View File

@ -449,7 +449,7 @@ class SymfonyStyle extends OutputStyle
$this->bufferedOutput->write(substr($message, -4), $newLine, $type);
}
private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false)
private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false): array
{
$indentLength = 0;
$prefixLength = Helper::strlenWithoutDecoration($this->getFormatter(), $prefix);

View File

@ -160,6 +160,9 @@ trait TesterTrait
}
}
/**
* @return resource
*/
private static function createStream(array $inputs)
{
$stream = fopen('php://memory', 'r+', false);

View File

@ -367,7 +367,7 @@ final class Dotenv
}
}
private function resolveCommands(string $value)
private function resolveCommands(string $value): string
{
if (false === strpos($value, '$')) {
return $value;
@ -414,7 +414,7 @@ final class Dotenv
}, $value);
}
private function resolveVariables(string $value)
private function resolveVariables(string $value): string
{
if (false === strpos($value, '$')) {
return $value;

View File

@ -14,7 +14,6 @@ namespace Symfony\Component\ErrorHandler;
use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use Symfony\Component\ErrorHandler\Exception\FatalErrorException;
use Symfony\Component\ErrorHandler\Exception\FatalThrowableError;
use Symfony\Component\ErrorHandler\Exception\OutOfMemoryException;
use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext;
use Symfony\Component\ErrorHandler\FatalErrorHandler\ClassNotFoundFatalErrorHandler;
@ -266,7 +265,7 @@ class ErrorHandler
if ($flush) {
foreach ($this->bootstrappingLogger->cleanLogs() as $log) {
$type = $log[2]['exception'] instanceof \ErrorException ? $log[2]['exception']->getSeverity() : E_ERROR;
$type = ThrowableUtils::getSeverity($log[2]['exception']);
if (!isset($flush[$type])) {
$this->bootstrappingLogger->log($log[0], $log[1], $log[2]);
} elseif ($this->loggers[$type][0]) {
@ -281,7 +280,7 @@ class ErrorHandler
/**
* Sets a user exception handler.
*
* @param callable|null $handler A handler that will be called on Exception
* @param callable|null $handler A handler that must support \Throwable instances that will be called on Exception
*
* @return callable|null The previous exception handler
*/
@ -539,57 +538,64 @@ class ErrorHandler
/**
* Handles an exception by logging then forwarding it to another handler.
*
* @param \Exception|\Throwable $exception An exception to handle
* @param array $error An array as returned by error_get_last()
* @param array $error An array as returned by error_get_last()
*
* @internal
*/
public function handleException($exception, array $error = null)
public function handleException(\Throwable $exception, array $error = null)
{
if (null === $error) {
self::$exitCode = 255;
}
if (!$exception instanceof \Exception) {
$exception = new FatalThrowableError($exception);
}
$type = $exception instanceof FatalErrorException ? $exception->getSeverity() : E_ERROR;
$type = ThrowableUtils::getSeverity($exception);
$handlerException = null;
if (($this->loggedErrors & $type) || $exception instanceof FatalThrowableError) {
if (($this->loggedErrors & $type) || $exception instanceof \Error) {
if (false !== strpos($message = $exception->getMessage(), "class@anonymous\0")) {
$message = $this->parseAnonymousClass($message);
}
if ($exception instanceof FatalErrorException) {
if ($exception instanceof FatalThrowableError) {
$error = [
'type' => $type,
'message' => $message,
'file' => $exception->getFile(),
'line' => $exception->getLine(),
];
} else {
$message = 'Fatal '.$message;
}
$message = 'Fatal '.$message;
} elseif ($exception instanceof \ErrorException) {
$message = 'Uncaught '.$message;
} elseif ($exception instanceof \Error) {
$error = [
'type' => $type,
'message' => $message,
'file' => $exception->getFile(),
'line' => $exception->getLine(),
];
$message = 'Uncaught Error: '.$message;
} else {
$message = 'Uncaught Exception: '.$message;
}
}
if ($this->loggedErrors & $type) {
try {
$this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]);
} catch (\Throwable $handlerException) {
}
}
// temporary until fatal error handlers rework
$originalException = $exception;
if (!$exception instanceof \Exception) {
$exception = new FatalErrorException($exception->getMessage(), $exception->getCode(), $type, $exception->getFile(), $exception->getLine(), null, true, $exception->getTrace());
}
if ($exception instanceof FatalErrorException && !$exception instanceof OutOfMemoryException && $error) {
foreach ($this->getFatalErrorHandlers() as $handler) {
if ($e = $handler->handleError($error, $exception)) {
$exception = $e;
$convertedException = $e;
break;
}
}
}
$exception = $convertedException ?? $originalException;
$exceptionHandler = $this->exceptionHandler;
if ((!\is_array($exceptionHandler) || !$exceptionHandler[0] instanceof self || 'sendPhpResponse' !== $exceptionHandler[1]) && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
$this->exceptionHandler = [$this, 'sendPhpResponse'];

View File

@ -11,6 +11,8 @@
namespace Symfony\Component\ErrorHandler\Exception;
use Symfony\Component\ErrorHandler\ThrowableUtils;
/**
* Fatal Throwable Error.
*
@ -24,18 +26,10 @@ class FatalThrowableError extends FatalErrorException
{
$this->originalClassName = \get_class($e);
if ($e instanceof \ParseError) {
$severity = E_PARSE;
} elseif ($e instanceof \TypeError) {
$severity = E_RECOVERABLE_ERROR;
} else {
$severity = E_ERROR;
}
\ErrorException::__construct(
$e->getMessage(),
$e->getCode(),
$severity,
ThrowableUtils::getSeverity($e),
$e->getFile(),
$e->getLine(),
$e->getPrevious()

View File

@ -118,7 +118,7 @@ class DebugClassLoaderTest extends TestCase
/**
* @dataProvider provideDeprecatedSuper
*/
public function testDeprecatedSuper($class, $super, $type)
public function testDeprecatedSuper(string $class, string $super, string $type)
{
set_error_handler(function () { return false; });
$e = error_reporting(0);
@ -140,7 +140,7 @@ class DebugClassLoaderTest extends TestCase
$this->assertSame($xError, $lastError);
}
public function provideDeprecatedSuper()
public function provideDeprecatedSuper(): array
{
return [
['DeprecatedInterfaceClass', 'DeprecatedInterface', 'implements'],

View File

@ -382,18 +382,19 @@ class ErrorHandlerTest extends TestCase
restore_error_handler();
}
public function testHandleException()
/**
* @dataProvider handleExceptionProvider
*/
public function testHandleException(string $expectedMessage, \Throwable $exception)
{
try {
$logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
$handler = ErrorHandler::register();
$exception = new \Exception('foo');
$logArgCheck = function ($level, $message, $context) {
$this->assertSame('Uncaught Exception: foo', $message);
$logArgCheck = function ($level, $message, $context) use ($expectedMessage, $exception) {
$this->assertSame($expectedMessage, $message);
$this->assertArrayHasKey('exception', $context);
$this->assertInstanceOf(\Exception::class, $context['exception']);
$this->assertInstanceOf(\get_class($exception), $context['exception']);
};
$logger
@ -407,7 +408,7 @@ class ErrorHandlerTest extends TestCase
try {
$handler->handleException($exception);
$this->fail('Exception expected');
} catch (\Exception $e) {
} catch (\Throwable $e) {
$this->assertSame($exception, $e);
}
@ -422,6 +423,15 @@ class ErrorHandlerTest extends TestCase
}
}
public function handleExceptionProvider(): array
{
return [
['Uncaught Exception: foo', new \Exception('foo')],
['Uncaught Error: bar', new \Error('bar')],
['Uncaught ccc', new \ErrorException('ccc')],
];
}
public function testBootstrappingLogger()
{
$bootLogger = new BufferingLogger();
@ -572,7 +582,7 @@ class ErrorHandlerTest extends TestCase
/**
* @dataProvider errorHandlerWhenLoggingProvider
*/
public function testErrorHandlerWhenLogging($previousHandlerWasDefined, $loggerSetsAnotherHandler, $nextHandlerIsDefined)
public function testErrorHandlerWhenLogging(bool $previousHandlerWasDefined, bool $loggerSetsAnotherHandler, bool $nextHandlerIsDefined)
{
try {
if ($previousHandlerWasDefined) {
@ -612,7 +622,7 @@ class ErrorHandlerTest extends TestCase
}
}
public function errorHandlerWhenLoggingProvider()
public function errorHandlerWhenLoggingProvider(): iterable
{
foreach ([false, true] as $previousHandlerWasDefined) {
foreach ([false, true] as $loggerSetsAnotherHandler) {

View File

@ -41,7 +41,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase
/**
* @dataProvider provideClassNotFoundData
*/
public function testHandleClassNotFound($error, $translatedMessage, $autoloader = null)
public function testHandleClassNotFound(array $error, string $translatedMessage, callable $autoloader = null)
{
if ($autoloader) {
// Unregister all autoloaders to ensure the custom provided
@ -67,7 +67,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase
$this->assertSame($error['line'], $exception->getLine());
}
public function provideClassNotFoundData()
public function provideClassNotFoundData(): array
{
$autoloader = new ComposerClassLoader();
$autoloader->add('Symfony\Component\ErrorHandler\Exception\\', realpath(__DIR__.'/../../Exception'));

View File

@ -20,7 +20,7 @@ class UndefinedFunctionFatalErrorHandlerTest extends TestCase
/**
* @dataProvider provideUndefinedFunctionData
*/
public function testUndefinedFunction($error, $translatedMessage)
public function testUndefinedFunction(array $error, string $translatedMessage)
{
$handler = new UndefinedFunctionFatalErrorHandler();
$exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
@ -33,7 +33,7 @@ class UndefinedFunctionFatalErrorHandlerTest extends TestCase
$this->assertSame($error['line'], $exception->getLine());
}
public function provideUndefinedFunctionData()
public function provideUndefinedFunctionData(): array
{
return [
[

View File

@ -20,7 +20,7 @@ class UndefinedMethodFatalErrorHandlerTest extends TestCase
/**
* @dataProvider provideUndefinedMethodData
*/
public function testUndefinedMethod($error, $translatedMessage)
public function testUndefinedMethod(array $error, string $translatedMessage)
{
$handler = new UndefinedMethodFatalErrorHandler();
$exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line']));
@ -32,7 +32,7 @@ class UndefinedMethodFatalErrorHandlerTest extends TestCase
$this->assertSame($error['line'], $exception->getLine());
}
public function provideUndefinedMethodData()
public function provideUndefinedMethodData(): array
{
return [
[

View File

@ -0,0 +1,35 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\ErrorHandler;
/**
* @internal
*/
class ThrowableUtils
{
public static function getSeverity(\Throwable $throwable): int
{
if ($throwable instanceof \ErrorException) {
return $throwable->getSeverity();
}
if ($throwable instanceof \ParseError) {
return E_PARSE;
}
if ($throwable instanceof \TypeError) {
return E_RECOVERABLE_ERROR;
}
return E_ERROR;
}
}

View File

@ -292,7 +292,7 @@ class FlattenException
return $this;
}
private function flattenArgs(array $args, int $level = 0, int &$count = 0)
private function flattenArgs(array $args, int $level = 0, int &$count = 0): array
{
$result = [];
foreach ($args as $key => $value) {
@ -328,7 +328,7 @@ class FlattenException
return $result;
}
private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value)
private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string
{
$array = new \ArrayObject($value);

View File

@ -26,7 +26,7 @@ class HtmlErrorRendererTest extends TestCase
$this->assertStringMatchesFormat($expected, $errorRenderer->render($exception));
}
public function getRenderData()
public function getRenderData(): iterable
{
$expectedDebug = <<<HTML
<!-- Foo (500 Internal Server Error) -->

View File

@ -26,7 +26,7 @@ class JsonErrorRendererTest extends TestCase
$this->assertStringMatchesFormat($expected, $errorRenderer->render($exception));
}
public function getRenderData()
public function getRenderData(): iterable
{
$expectedDebug = <<<JSON
{

View File

@ -26,7 +26,7 @@ class TxtErrorRendererTest extends TestCase
$this->assertStringMatchesFormat($expected, $errorRenderer->render($exception));
}
public function getRenderData()
public function getRenderData(): iterable
{
$expectedDebug = <<<TXT
[title] Internal Server Error

View File

@ -26,7 +26,7 @@ class XmlErrorRendererTest extends TestCase
$this->assertStringMatchesFormat($expected, $errorRenderer->render($exception));
}
public function getRenderData()
public function getRenderData(): iterable
{
$expectedDebug = <<<XML
<?xml version="1.0" encoding="UTF-8" ?>

View File

@ -227,7 +227,7 @@ class FlattenExceptionTest extends TestCase
);
}
public function flattenDataProvider()
public function flattenDataProvider(): array
{
return [
[new \Exception('test', 123), 'Exception'],
@ -381,7 +381,7 @@ class FlattenExceptionTest extends TestCase
$this->assertSame($exception->__toString(), $flattened->getAsString());
}
private function createException($foo)
private function createException($foo): \Exception
{
return new \Exception();
}

View File

@ -31,8 +31,6 @@ class LanguageTypeTest extends BaseTypeTest
->createView()->vars['choices'];
$this->assertContainsEquals(new ChoiceView('en', 'en', 'English'), $choices);
$this->assertContainsEquals(new ChoiceView('en_GB', 'en_GB', 'British English'), $choices);
$this->assertContainsEquals(new ChoiceView('en_US', 'en_US', 'American English'), $choices);
$this->assertContainsEquals(new ChoiceView('fr', 'fr', 'French'), $choices);
$this->assertContainsEquals(new ChoiceView('my', 'my', 'Burmese'), $choices);
}
@ -50,7 +48,6 @@ class LanguageTypeTest extends BaseTypeTest
// Don't check objects for identity
$this->assertContainsEquals(new ChoiceView('en', 'en', 'англійська'), $choices);
$this->assertContainsEquals(new ChoiceView('en_US', 'en_US', 'англійська (США)'), $choices);
$this->assertContainsEquals(new ChoiceView('fr', 'fr', 'французька'), $choices);
$this->assertContainsEquals(new ChoiceView('my', 'my', 'бірманська'), $choices);
}

View File

@ -18,6 +18,9 @@ namespace Symfony\Component\HttpFoundation;
*/
class HeaderBag implements \IteratorAggregate, \Countable
{
protected const UPPER = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
protected const LOWER = '-abcdefghijklmnopqrstuvwxyz';
protected $headers = [];
protected $cacheControl = [];
@ -62,9 +65,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
public function all(string $key = null)
{
if (null !== $key) {
$key = str_replace('_', '-', strtolower($key));
return $this->headers[$key] ?? [];
return $this->headers[strtr($key, self::UPPER, self::LOWER)] ?? [];
}
return $this->headers;
@ -127,7 +128,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
*/
public function set(string $key, $values, bool $replace = true)
{
$key = str_replace('_', '-', strtolower($key));
$key = strtr($key, self::UPPER, self::LOWER);
if (\is_array($values)) {
$values = array_values($values);
@ -157,7 +158,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
*/
public function has(string $key)
{
return \array_key_exists(str_replace('_', '-', strtolower($key)), $this->all());
return \array_key_exists(strtr($key, self::UPPER, self::LOWER), $this->all());
}
/**
@ -175,7 +176,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
*/
public function remove(string $key)
{
$key = str_replace('_', '-', strtolower($key));
$key = strtr($key, self::UPPER, self::LOWER);
unset($this->headers[$key]);

View File

@ -539,7 +539,7 @@ class Request
foreach ($this->headers->all() as $key => $value) {
$key = strtoupper(str_replace('-', '_', $key));
if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH'])) {
if (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
$_SERVER[$key] = implode(', ', $value);
} else {
$_SERVER['HTTP_'.$key] = implode(', ', $value);
@ -565,14 +565,22 @@ class Request
*
* You should only list the reverse proxies that you manage directly.
*
* @param array $proxies A list of trusted proxies
* @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
* @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
*
* @throws \InvalidArgumentException When $trustedHeaderSet is invalid
*/
public static function setTrustedProxies(array $proxies, int $trustedHeaderSet)
{
self::$trustedProxies = $proxies;
self::$trustedProxies = array_reduce($proxies, function ($proxies, $proxy) {
if ('REMOTE_ADDR' !== $proxy) {
$proxies[] = $proxy;
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$proxies[] = $_SERVER['REMOTE_ADDR'];
}
return $proxies;
}, []);
self::$trustedHeaderSet = $trustedHeaderSet;
}

View File

@ -51,7 +51,7 @@ class ResponseHeaderBag extends HeaderBag
{
$headers = [];
foreach ($this->all() as $name => $value) {
$headers[isset($this->headerNames[$name]) ? $this->headerNames[$name] : $name] = $value;
$headers[$this->headerNames[$name] ?? $name] = $value;
}
return $headers;
@ -93,7 +93,7 @@ class ResponseHeaderBag extends HeaderBag
$headers = parent::all();
if (null !== $key) {
$key = str_replace('_', '-', strtolower($key));
$key = strtr($key, self::UPPER, self::LOWER);
return 'set-cookie' !== $key ? $headers[$key] ?? [] : array_map('strval', $this->getCookies());
}
@ -110,7 +110,7 @@ class ResponseHeaderBag extends HeaderBag
*/
public function set(string $key, $values, bool $replace = true)
{
$uniqueKey = str_replace('_', '-', strtolower($key));
$uniqueKey = strtr($key, self::UPPER, self::LOWER);
if ('set-cookie' === $uniqueKey) {
if ($replace) {
@ -141,7 +141,7 @@ class ResponseHeaderBag extends HeaderBag
*/
public function remove(string $key)
{
$uniqueKey = str_replace('_', '-', strtolower($key));
$uniqueKey = strtr($key, self::UPPER, self::LOWER);
unset($this->headerNames[$uniqueKey]);
if ('set-cookie' === $uniqueKey) {

View File

@ -28,13 +28,10 @@ class ServerBag extends ParameterBag
public function getHeaders()
{
$headers = [];
$contentHeaders = ['CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true];
foreach ($this->parameters as $key => $value) {
if (0 === strpos($key, 'HTTP_')) {
$headers[substr($key, 5)] = $value;
}
// CONTENT_* are not prefixed with HTTP_
elseif (isset($contentHeaders[$key])) {
} elseif (\in_array($key, ['CONTENT_TYPE', 'CONTENT_LENGTH', 'CONTENT_MD5'], true)) {
$headers[$key] = $value;
}
}

View File

@ -2307,6 +2307,26 @@ class RequestTest extends TestCase
$this->assertSame(80, $request->getPort());
}
/**
* @dataProvider trustedProxiesRemoteAddr
*/
public function testTrustedProxiesRemoteAddr($serverRemoteAddr, $trustedProxies, $result)
{
$_SERVER['REMOTE_ADDR'] = $serverRemoteAddr;
Request::setTrustedProxies($trustedProxies, Request::HEADER_X_FORWARDED_ALL);
$this->assertSame($result, Request::getTrustedProxies());
}
public function trustedProxiesRemoteAddr()
{
return [
['1.1.1.1', ['REMOTE_ADDR'], ['1.1.1.1']],
['1.1.1.1', ['REMOTE_ADDR', '2.2.2.2'], ['1.1.1.1', '2.2.2.2']],
[null, ['REMOTE_ADDR'], []],
[null, ['REMOTE_ADDR', '2.2.2.2'], ['2.2.2.2']],
];
}
}
class RequestContentProxy extends Request

View File

@ -40,6 +40,7 @@ CHANGELOG
so you likely do not use those in any app based on the SF Standard or Flex edition.
* Marked all dispatched event classes as `@final`
* Added `ErrorController` to enable the preview and error rendering mechanism
* Getting the container from a non-booted kernel is deprecated.
4.3.0
-----

View File

@ -16,6 +16,7 @@ use Symfony\Component\Console\ConsoleEvents;
use Symfony\Component\Console\Event\ConsoleEvent;
use Symfony\Component\Console\Output\ConsoleOutputInterface;
use Symfony\Component\ErrorHandler\ErrorHandler;
use Symfony\Component\ErrorHandler\Exception\FatalThrowableError;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
use Symfony\Component\HttpKernel\Event\KernelEvent;
@ -41,7 +42,7 @@ class DebugHandlersListener implements EventSubscriberInterface
private $hasTerminatedWithException;
/**
* @param callable|null $exceptionHandler A handler that will be called on Exception
* @param callable|null $exceptionHandler A handler that must support \Throwable instances that will be called on Exception
* @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants
* @param int|null $throwAt Thrown errors in a bit field of E_* constants, or null to keep the current value
* @param bool $scream Enables/disables screaming mode, where even silenced errors are logged
@ -105,10 +106,15 @@ class DebugHandlersListener implements EventSubscriberInterface
if (method_exists($kernel = $event->getKernel(), 'terminateWithException')) {
$request = $event->getRequest();
$hasRun = &$this->hasTerminatedWithException;
$this->exceptionHandler = static function (\Exception $e) use ($kernel, $request, &$hasRun) {
$this->exceptionHandler = static function (\Throwable $e) use ($kernel, $request, &$hasRun) {
if ($hasRun) {
throw $e;
}
if (!$e instanceof \Exception) {
$e = new FatalThrowableError($e);
}
$hasRun = true;
$kernel->terminateWithException($e, $request);
};

View File

@ -300,6 +300,10 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
*/
public function getContainer()
{
if (!$this->booted) {
@trigger_error('Getting the container from a non-booted kernel is deprecated since Symfony 4.4.', E_USER_DEPRECATED);
}
return $this->container;
}

View File

@ -107,7 +107,7 @@ interface KernelInterface extends HttpKernelInterface
/**
* Gets the current container.
*
* @return ContainerInterface|null A ContainerInterface instance or null when the Kernel is shutdown
* @return ContainerInterface
*/
public function getContainer();

View File

@ -45,6 +45,17 @@ class KernelTest extends TestCase
$this->assertEquals($debug, $kernel->isDebug());
$this->assertFalse($kernel->isBooted());
$this->assertLessThanOrEqual(microtime(true), $kernel->getStartTime());
}
/**
* @group legacy
* @expectedDeprecation Getting the container from a non-booted kernel is deprecated since Symfony 4.4.
*/
public function testGetContainerForANonBootedKernel()
{
$kernel = new KernelForTest('test_env', true);
$this->assertFalse($kernel->isBooted());
$this->assertNull($kernel->getContainer());
}
@ -60,7 +71,6 @@ class KernelTest extends TestCase
$this->assertEquals($debug, $clone->isDebug());
$this->assertFalse($clone->isBooted());
$this->assertLessThanOrEqual(microtime(true), $clone->getStartTime());
$this->assertNull($clone->getContainer());
}
public function testClassNameValidityGetter()
@ -397,6 +407,18 @@ EOF;
$kernel->terminate(Request::create('/'), new Response());
}
/**
* @group legacy
* @expectedDeprecation Getting the container from a non-booted kernel is deprecated since Symfony 4.4.
*/
public function testDeprecatedNullKernel()
{
$kernel = $this->getKernel();
$kernel->shutdown();
$this->assertNull($kernel->getContainer());
}
public function testTerminateDelegatesTerminationOnlyForTerminableInterface()
{
// does not implement TerminableInterface

View File

@ -11,6 +11,7 @@ CHANGELOG
* excluded language code `root`
* added to both `Countries` and `Languages` the methods `getAlpha3Codes`, `getAlpha3Code`, `getAlpha2Code`, `alpha3CodeExists`, `getAlpha3Name` and `getAlpha3Names`
* excluded localized languages (e.g. `en_US`) from `Languages` in `getLanguageCodes()` and `getNames()`
4.3.0
-----

View File

@ -25,18 +25,14 @@ trait FallbackTrait
private $generatingFallback = false;
/**
* @return array|null
*
* @see AbstractDataGenerator::generateDataForLocale()
*/
abstract protected function generateDataForLocale(BundleEntryReaderInterface $reader, string $tempDir, string $displayLocale);
abstract protected function generateDataForLocale(BundleEntryReaderInterface $reader, string $tempDir, string $displayLocale): ?array;
/**
* @return array|null
*
* @see AbstractDataGenerator::generateDataForRoot()
*/
abstract protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir);
abstract protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir): ?array;
private function generateFallbackData(BundleEntryReaderInterface $reader, string $tempDir, string $displayLocale): array
{

View File

@ -132,13 +132,22 @@ class LanguageDataGenerator extends AbstractDataGenerator
// isset() on \ResourceBundle returns true even if the value is null
if (isset($localeBundle['Languages']) && null !== $localeBundle['Languages']) {
$names = [];
$localizedNames = [];
foreach (self::generateLanguageNames($localeBundle) as $language => $name) {
if (false === strpos($language, '_')) {
$this->languageCodes[] = $language;
$names[$language] = $name;
} else {
$localizedNames[$language] = $name;
}
}
$data = [
'Version' => $localeBundle['Version'],
'Names' => self::generateLanguageNames($localeBundle),
'Names' => $names,
'LocalizedNames' => $localizedNames,
];
$this->languageCodes = array_merge($this->languageCodes, array_keys($data['Names']));
return $data;
}
@ -150,6 +159,7 @@ class LanguageDataGenerator extends AbstractDataGenerator
*/
protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir): ?array
{
return null;
}
/**

View File

@ -135,6 +135,7 @@ class LocaleDataGenerator extends AbstractDataGenerator
*/
protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir): ?array
{
return null;
}
/**

View File

@ -133,6 +133,7 @@ class RegionDataGenerator extends AbstractDataGenerator
*/
protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir): ?array
{
return null;
}
/**

View File

@ -86,6 +86,7 @@ class ScriptDataGenerator extends AbstractDataGenerator
*/
protected function generateDataForRoot(BundleEntryReaderInterface $reader, string $tempDir): ?array
{
return null;
}
/**

View File

@ -52,11 +52,25 @@ final class Languages extends ResourceBundle
/**
* Gets the language name from its alpha2 code.
*
* A full locale may be passed to obtain a more localized language name, e.g. "American English" for "en_US".
*
* @throws MissingResourceException if the language code does not exist
*/
public static function getName(string $language, string $displayLocale = null): string
{
return self::readEntry(['Names', $language], $displayLocale);
try {
return self::readEntry(['Names', $language], $displayLocale);
} catch (MissingResourceException $e) {
try {
return self::readEntry(['LocalizedNames', $language], $displayLocale);
} catch (MissingResourceException $e) {
if (false !== $i = strrpos($language, '_')) {
return self::getName(substr($language, 0, $i), $displayLocale);
}
throw $e;
}
}
}
/**

View File

@ -17,7 +17,6 @@
"an": "Aragonees",
"anp": "Angika",
"ar": "Arabies",
"ar_001": "Moderne Standaardarabies",
"arc": "Aramees",
"arn": "Mapuche",
"arp": "Arapaho",
@ -71,7 +70,6 @@
"dar": "Dakota",
"dav": "Taita",
"de": "Duits",
"de_CH": "Switserse hoog-Duits",
"dgr": "Dogrib",
"dje": "Zarma",
"dsb": "Benedesorbies",
@ -87,8 +85,6 @@
"eka": "Ekajuk",
"el": "Grieks",
"en": "Engels",
"en_GB": "Engels (VK)",
"en_US": "Engels (VSA)",
"eo": "Esperanto",
"es": "Spaans",
"et": "Estnies",
@ -252,14 +248,12 @@
"nb": "Boeknoors",
"nd": "Noord-Ndebele",
"nds": "Lae Duits",
"nds_NL": "Nedersaksies",
"ne": "Nepalees",
"new": "Newari",
"ng": "Ndonga",
"nia": "Nias",
"niu": "Niueaans",
"nl": "Nederlands",
"nl_BE": "Vlaams",
"nmg": "Kwasio",
"nn": "Nuwe Noors",
"nnh": "Ngiemboon",
@ -394,10 +388,18 @@
"yue": "Kantonees",
"zgh": "Standaard Marokkaanse Tamazight",
"zh": "Sjinees",
"zh_Hans": "Chinees (Vereenvoudig)",
"zh_Hant": "Chinees (Tradisioneel)",
"zu": "Zoeloe",
"zun": "Zuni",
"zza": "Zaza"
},
"LocalizedNames": {
"ar_001": "Moderne Standaardarabies",
"de_CH": "Switserse hoog-Duits",
"en_GB": "Engels (VK)",
"en_US": "Engels (VSA)",
"nds_NL": "Nedersaksies",
"nl_BE": "Vlaams",
"zh_Hans": "Chinees (Vereenvoudig)",
"zh_Hant": "Chinees (Tradisioneel)"
}
}

View File

@ -45,5 +45,6 @@
"yo": "Yoruba",
"zh": "Kyaena kasa",
"zu": "Zulu"
}
},
"LocalizedNames": []
}

View File

@ -21,7 +21,6 @@
"an": "አራጎንስ",
"anp": "አንጊካ",
"ar": "ዓረብኛ",
"ar_001": "ዘመናዊ መደበኛ ዓረብኛ",
"arc": "አራማይክ",
"arn": "ማፑቼ",
"aro": "አራኦና",
@ -107,8 +106,6 @@
"dar": "ዳርግዋ",
"dav": "ታይታኛ",
"de": "ጀርመን",
"de_AT": "የኦስትሪያ ጀርመን",
"de_CH": "የስዊዝ ከፍተኛ ጀርመንኛ",
"del": "ዳላዌር",
"dgr": "ዶግሪብ",
"din": "ዲንካ",
@ -129,15 +126,8 @@
"eka": "ኤካጁክ",
"el": "ግሪክኛ",
"en": "እንግሊዝኛ",
"en_AU": "የአውስትራሊያ እንግሊዝኛ",
"en_CA": "የካናዳ እንግሊዝኛ",
"en_GB": "የብሪቲሽ እንግሊዝኛ",
"en_US": "የአሜሪካ እንግሊዝኛ",
"eo": "ኤስፐራንቶ",
"es": "ስፓንሽኛ",
"es_419": "የላቲን አሜሪካ ስፓኒሽ",
"es_ES": "የአውሮፓ ስፓንሽኛ",
"es_MX": "የሜክሲኮ ስፓንሽኛ",
"esu": "ሴንተራል ዩፒክ",
"et": "ኢስቶኒያንኛ",
"eu": "ባስክኛ",
@ -150,8 +140,6 @@
"fo": "ፋሮኛ",
"fon": "ፎን",
"fr": "ፈረንሳይኛ",
"fr_CA": "የካናዳ ፈረንሳይኛ",
"fr_CH": "የስዊዝ ፈረንሳይኛ",
"frc": "ካጁን ፍሬንች",
"frp": "አርፒታን",
"fur": "ፍሩሊያን",
@ -303,7 +291,6 @@
"nb": "የኖርዌይ ቦክማል",
"nd": "ሰሜን ንዴብሌ",
"nds": "የታችኛው ጀርመን",
"nds_NL": "የታችኛው ሳክሰን",
"ne": "ኔፓሊኛ",
"new": "ኒዋሪ(ኔፓል)",
"ng": "ንዶንጋ",
@ -311,7 +298,6 @@
"niu": "ኒዩአንኛ",
"njo": "ኦ ናጋ",
"nl": "ደች",
"nl_BE": "ፍሌሚሽ",
"nmg": "ክዋሲዮ",
"nn": "የኖርዌይ ናይኖርስክ",
"nnh": "ኒጊምቡን",
@ -339,8 +325,6 @@
"prg": "ፐሩሳንኛ",
"ps": "ፓሽቶኛ",
"pt": "ፖርቹጋልኛ",
"pt_BR": "የብራዚል ፖርቹጋልኛ",
"pt_PT": "የአውሮፓ ፖርቹጋልኛ",
"qu": "ኵቿኛ",
"quc": "ኪቼ",
"qug": "ቺምቦራዞ ሃይላንድ ኩቹዋ",
@ -349,7 +333,6 @@
"rm": "ሮማንሽ",
"rn": "ሩንዲኛ",
"ro": "ሮማኒያን",
"ro_MD": "ሞልዳቪያንኛ",
"rof": "ሮምቦ",
"ru": "ራሽያኛ",
"rup": "አሮማንያን",
@ -397,7 +380,6 @@
"suk": "ሱኩማ",
"sv": "ስዊድንኛ",
"sw": "ስዋሂሊኛ",
"sw_CD": "ኮንጎ ስዋሂሊ",
"swb": "ኮሞሪያን",
"syc": "ክላሲክ ኔይራ",
"syr": "ሲሪያክ",
@ -457,10 +439,30 @@
"zbl": "ብሊስይምቦልስ",
"zgh": "መደበኛ የሞሮኮ ታማዚግት",
"zh": "ቻይንኛ",
"zh_Hans": "ቀለል ያለ ቻይንኛ",
"zh_Hant": "ባህላዊ ቻይንኛ",
"zu": "ዙሉኛ",
"zun": "ዙኒ",
"zza": "ዛዛ"
},
"LocalizedNames": {
"ar_001": "ዘመናዊ መደበኛ ዓረብኛ",
"de_AT": "የኦስትሪያ ጀርመን",
"de_CH": "የስዊዝ ከፍተኛ ጀርመንኛ",
"en_AU": "የአውስትራሊያ እንግሊዝኛ",
"en_CA": "የካናዳ እንግሊዝኛ",
"en_GB": "የብሪቲሽ እንግሊዝኛ",
"en_US": "የአሜሪካ እንግሊዝኛ",
"es_419": "የላቲን አሜሪካ ስፓኒሽ",
"es_ES": "የአውሮፓ ስፓንሽኛ",
"es_MX": "የሜክሲኮ ስፓንሽኛ",
"fr_CA": "የካናዳ ፈረንሳይኛ",
"fr_CH": "የስዊዝ ፈረንሳይኛ",
"nds_NL": "የታችኛው ሳክሰን",
"nl_BE": "ፍሌሚሽ",
"pt_BR": "የብራዚል ፖርቹጋልኛ",
"pt_PT": "የአውሮፓ ፖርቹጋልኛ",
"ro_MD": "ሞልዳቪያንኛ",
"sw_CD": "ኮንጎ ስዋሂሊ",
"zh_Hans": "ቀለል ያለ ቻይንኛ",
"zh_Hant": "ባህላዊ ቻይንኛ"
}
}

View File

@ -21,7 +21,6 @@
"ang": "الإنجليزية القديمة",
"anp": "الأنجيكا",
"ar": "العربية",
"ar_001": "العربية الرسمية الحديثة",
"arc": "الآرامية",
"arn": "المابودونغونية",
"arp": "الأراباهو",
@ -100,8 +99,6 @@
"dar": "الدارجوا",
"dav": "تيتا",
"de": "الألمانية",
"de_AT": "الألمانية النمساوية",
"de_CH": "الألمانية العليا السويسرية",
"del": "الديلوير",
"den": "السلافية",
"dgr": "الدوجريب",
@ -124,16 +121,9 @@
"el": "اليونانية",
"elx": "الإمايت",
"en": "الإنجليزية",
"en_AU": "الإنجليزية الأسترالية",
"en_CA": "الإنجليزية الكندية",
"en_GB": "الإنجليزية البريطانية",
"en_US": "الإنجليزية الأمريكية",
"enm": "الإنجليزية الوسطى",
"eo": "الإسبرانتو",
"es": "الإسبانية",
"es_419": "الإسبانية أمريكا اللاتينية",
"es_ES": "الإسبانية الأوروبية",
"es_MX": "الإسبانية المكسيكية",
"et": "الإستونية",
"eu": "الباسكية",
"ewo": "الإيوندو",
@ -147,8 +137,6 @@
"fo": "الفاروية",
"fon": "الفون",
"fr": "الفرنسية",
"fr_CA": "الفرنسية الكندية",
"fr_CH": "الفرنسية السويسرية",
"frc": "الفرنسية الكاجونية",
"frm": "الفرنسية الوسطى",
"fro": "الفرنسية القديمة",
@ -332,14 +320,12 @@
"nb": "النرويجية بوكمال",
"nd": "النديبيل الشمالية",
"nds": "الألمانية السفلى",
"nds_NL": "السكسونية السفلى",
"ne": "النيبالية",
"new": "النوارية",
"ng": "الندونجا",
"nia": "النياس",
"niu": "النيوي",
"nl": "الهولندية",
"nl_BE": "الفلمنكية",
"nmg": "كواسيو",
"nn": "النرويجية نينورسك",
"nnh": "لغة النجيمبون",
@ -380,8 +366,6 @@
"pro": "البروفانسية القديمة",
"ps": "البشتو",
"pt": "البرتغالية",
"pt_BR": "البرتغالية البرازيلية",
"pt_PT": "البرتغالية الأوروبية",
"qu": "الكويتشوا",
"quc": "الكيشية",
"raj": "الراجاسثانية",
@ -390,7 +374,6 @@
"rm": "الرومانشية",
"rn": "الرندي",
"ro": "الرومانية",
"ro_MD": "المولدوفية",
"rof": "الرومبو",
"rom": "الغجرية",
"ru": "الروسية",
@ -448,7 +431,6 @@
"sux": "السومارية",
"sv": "السويدية",
"sw": "السواحلية",
"sw_CD": "الكونغو السواحلية",
"swb": "القمرية",
"syc": "سريانية تقليدية",
"syr": "السريانية",
@ -522,10 +504,30 @@
"zen": "الزيناجا",
"zgh": "التمازيغية المغربية القياسية",
"zh": "الصينية",
"zh_Hans": "الصينية المبسطة",
"zh_Hant": "الصينية التقليدية",
"zu": "الزولو",
"zun": "الزونية",
"zza": "زازا"
},
"LocalizedNames": {
"ar_001": "العربية الرسمية الحديثة",
"de_AT": "الألمانية النمساوية",
"de_CH": "الألمانية العليا السويسرية",
"en_AU": "الإنجليزية الأسترالية",
"en_CA": "الإنجليزية الكندية",
"en_GB": "الإنجليزية البريطانية",
"en_US": "الإنجليزية الأمريكية",
"es_419": "الإسبانية أمريكا اللاتينية",
"es_ES": "الإسبانية الأوروبية",
"es_MX": "الإسبانية المكسيكية",
"fr_CA": "الفرنسية الكندية",
"fr_CH": "الفرنسية السويسرية",
"nds_NL": "السكسونية السفلى",
"nl_BE": "الفلمنكية",
"pt_BR": "البرتغالية البرازيلية",
"pt_PT": "البرتغالية الأوروبية",
"ro_MD": "المولدوفية",
"sw_CD": "الكونغو السواحلية",
"zh_Hans": "الصينية المبسطة",
"zh_Hant": "الصينية التقليدية"
}
}

View File

@ -2,5 +2,6 @@
"Version": "2.1.49.36",
"Names": {
"da": "الدنماركية"
}
},
"LocalizedNames": []
}

View File

@ -8,7 +8,9 @@
"sh": "الكرواتية الصربية",
"sma": "سامي الجنوبية",
"sw": "السواحيلية",
"sw_CD": "السواحيلية الكونغولية",
"ti": "التيغرينية"
},
"LocalizedNames": {
"sw_CD": "السواحيلية الكونغولية"
}
}

View File

@ -8,8 +8,10 @@
"sh": "الكرواتية الصربية",
"sma": "سامي الجنوبية",
"sw": "السواحيلية",
"sw_CD": "السواحيلية الكونغولية",
"te": "التيلوجو",
"ti": "التيغرينية"
},
"LocalizedNames": {
"sw_CD": "السواحيلية الكونغولية"
}
}

View File

@ -16,7 +16,6 @@
"an": "আৰ্গোনিজ",
"anp": "আঙ্গিকা",
"ar": "আৰবী",
"ar_001": "আধুনিক মানক আৰবী",
"arn": "মাপুচে",
"arp": "আৰাপাহো",
"as": "অসমীয়া",
@ -68,8 +67,6 @@
"dar": "দাৰ্গৱা",
"dav": "তেইতা",
"de": "জাৰ্মান",
"de_AT": "অষ্ট্ৰেলিয়ান জাৰ্মান",
"de_CH": "ছুইচ হাই জাৰ্মান",
"dgr": "ডোগ্ৰিব",
"dje": "ঝাৰ্মা",
"dsb": "ল’ৱাৰ ছোৰ্বিয়ান",
@ -84,15 +81,8 @@
"eka": "একাজুক",
"el": "গ্ৰীক",
"en": "ইংৰাজী",
"en_AU": "অষ্ট্ৰেলিয়ান ইংৰাজী",
"en_CA": "কানাডিয়ান ইংৰাজী",
"en_GB": "ব্ৰিটিছ ইংৰাজী",
"en_US": "আমেৰিকান ইংৰাজী",
"eo": "এস্পেৰান্তো",
"es": "স্পেনিচ",
"es_419": "লেটিন আমেৰিকান স্পেনিচ",
"es_ES": "ইউৰোপীয়ান স্পেনিচ",
"es_MX": "মেক্সিকান স্পেনিচ",
"et": "এষ্টোনিয়",
"eu": "বাস্ক",
"ewo": "ইওন্দো",
@ -104,8 +94,6 @@
"fo": "ফাৰোইজ",
"fon": "ফ’ন",
"fr": "ফ্ৰেন্স",
"fr_CA": "কানাডিয়ান ফ্ৰেন্স",
"fr_CH": "ছুইচ ফ্ৰেন্স",
"fur": "ফ্ৰিউলিয়ান",
"fy": "ৱেষ্টাৰ্ণ ফ্ৰিছিয়ান",
"ga": "আইৰিচ",
@ -251,7 +239,6 @@
"nia": "নিয়াছ",
"niu": "নিয়ুৱান",
"nl": "ডাচ",
"nl_BE": "ফ্লেমিচ",
"nmg": "কোৱাছিঅ’",
"nn": "নৰৱেজিয়ান নায়নোৰ্স্ক",
"nnh": "নিয়েম্বোন",
@ -277,8 +264,6 @@
"prg": "প্ৰুছিয়ান",
"ps": "পুস্ত",
"pt": "পৰ্তুগীজ",
"pt_BR": "ব্ৰাজিলিয়ান পৰ্তুগীজ",
"pt_PT": "ইউৰোপীয়ান পৰ্তুগীজ",
"qu": "কুৱেচুৱা",
"quc": "কিচিয়ে",
"rap": "ৰাপানুই",
@ -286,7 +271,6 @@
"rm": "ৰোমানচ",
"rn": "ৰুন্দি",
"ro": "ৰোমানীয়",
"ro_MD": "মোল্ডাভিয়ান",
"rof": "ৰোম্বো",
"ru": "ৰাছিয়ান",
"rup": "আৰোমানীয়",
@ -330,7 +314,6 @@
"suk": "ছুকুমা",
"sv": "ছুইডিচ",
"sw": "স্বাহিলি",
"sw_CD": "কঙ্গো স্বাহিলি",
"swb": "কোমোৰিয়ান",
"syr": "চিৰিয়াক",
"ta": "তামিল",
@ -383,10 +366,29 @@
"yue": "কেণ্টোনীজ",
"zgh": "ষ্টেণ্ডাৰ্ড মোৰোক্কান তামাজাইট",
"zh": "চীনা",
"zh_Hans": "সৰলীকৃত চীনা",
"zh_Hant": "পৰম্পৰাগত চীনা",
"zu": "ঝুলু",
"zun": "ঝুনি",
"zza": "ঝাঝা"
},
"LocalizedNames": {
"ar_001": "আধুনিক মানক আৰবী",
"de_AT": "অষ্ট্ৰেলিয়ান জাৰ্মান",
"de_CH": "ছুইচ হাই জাৰ্মান",
"en_AU": "অষ্ট্ৰেলিয়ান ইংৰাজী",
"en_CA": "কানাডিয়ান ইংৰাজী",
"en_GB": "ব্ৰিটিছ ইংৰাজী",
"en_US": "আমেৰিকান ইংৰাজী",
"es_419": "লেটিন আমেৰিকান স্পেনিচ",
"es_ES": "ইউৰোপীয়ান স্পেনিচ",
"es_MX": "মেক্সিকান স্পেনিচ",
"fr_CA": "কানাডিয়ান ফ্ৰেন্স",
"fr_CH": "ছুইচ ফ্ৰেন্স",
"nl_BE": "ফ্লেমিচ",
"pt_BR": "ব্ৰাজিলিয়ান পৰ্তুগীজ",
"pt_PT": "ইউৰোপীয়ান পৰ্তুগীজ",
"ro_MD": "মোল্ডাভিয়ান",
"sw_CD": "কঙ্গো স্বাহিলি",
"zh_Hans": "সৰলীকৃত চীনা",
"zh_Hant": "পৰম্পৰাগত চীনা"
}
}

View File

@ -21,7 +21,6 @@
"ang": "qədim ingilis",
"anp": "angika",
"ar": "ərəb",
"ar_001": "müasir standart ərəb",
"arc": "aramik",
"arn": "mapuçe",
"arp": "arapaho",
@ -33,7 +32,6 @@
"awa": "avadhi",
"ay": "aymara",
"az": "azərbaycan",
"az_Arab": "cənubi azərbaycan",
"ba": "başqırd",
"bal": "baluc",
"ban": "bali",
@ -93,8 +91,6 @@
"dar": "darqva",
"dav": "taita",
"de": "alman",
"de_AT": "Avstriya almancası",
"de_CH": "İsveçrə yüksək almancası",
"del": "delaver",
"den": "slavey",
"dgr": "doqrib",
@ -117,16 +113,9 @@
"el": "yunan",
"elx": "elamit",
"en": "ingilis",
"en_AU": "Avstraliya ingiliscəsi",
"en_CA": "Kanada ingiliscəsi",
"en_GB": "Britaniya ingiliscəsi",
"en_US": "Amerika ingiliscəsi",
"enm": "orta ingilis",
"eo": "esperanto",
"es": "ispan",
"es_419": "Latın Amerikası ispancası",
"es_ES": "Kastiliya ispancası",
"es_MX": "Meksika ispancası",
"et": "eston",
"eu": "bask",
"ewo": "evondo",
@ -140,8 +129,6 @@
"fo": "farer",
"fon": "fon",
"fr": "fransız",
"fr_CA": "Kanada fransızcası",
"fr_CH": "İsveçrə fransızcası",
"frm": "orta fransız",
"fro": "qədim fransız",
"frr": "şimali fris",
@ -320,14 +307,12 @@
"nb": "bokmal norveç",
"nd": "şimali ndebele",
"nds": "aşağı alman",
"nds_NL": "aşağı sakson",
"ne": "nepal",
"new": "nevari",
"ng": "ndonqa",
"nia": "nias",
"niu": "niyuan",
"nl": "holland",
"nl_BE": "flamand",
"nmg": "kvasio",
"nn": "nünorsk norveç",
"nnh": "ngiemboon",
@ -367,8 +352,6 @@
"pro": "qədim provansal",
"ps": "puştu",
"pt": "portuqal",
"pt_BR": "Braziliya portuqalcası",
"pt_PT": "Portuqaliya portuqalcası",
"qu": "keçua",
"quc": "kiçe",
"raj": "racastani",
@ -377,7 +360,6 @@
"rm": "romanş",
"rn": "rundi",
"ro": "rumın",
"ro_MD": "moldav",
"rof": "rombo",
"rom": "roman",
"ru": "rus",
@ -433,7 +415,6 @@
"sux": "sumeryan",
"sv": "isveç",
"sw": "suahili",
"sw_CD": "Konqo suahilicəsi",
"swb": "komor",
"syr": "suriya",
"ta": "tamil",
@ -506,10 +487,31 @@
"zen": "zenaqa",
"zgh": "tamazi",
"zh": "çin",
"zh_Hans": "sadələşmiş çin",
"zh_Hant": "ənənəvi çin",
"zu": "zulu",
"zun": "zuni",
"zza": "zaza"
},
"LocalizedNames": {
"ar_001": "müasir standart ərəb",
"az_Arab": "cənubi azərbaycan",
"de_AT": "Avstriya almancası",
"de_CH": "İsveçrə yüksək almancası",
"en_AU": "Avstraliya ingiliscəsi",
"en_CA": "Kanada ingiliscəsi",
"en_GB": "Britaniya ingiliscəsi",
"en_US": "Amerika ingiliscəsi",
"es_419": "Latın Amerikası ispancası",
"es_ES": "Kastiliya ispancası",
"es_MX": "Meksika ispancası",
"fr_CA": "Kanada fransızcası",
"fr_CH": "İsveçrə fransızcası",
"nds_NL": "aşağı sakson",
"nl_BE": "flamand",
"pt_BR": "Braziliya portuqalcası",
"pt_PT": "Portuqaliya portuqalcası",
"ro_MD": "moldav",
"sw_CD": "Konqo suahilicəsi",
"zh_Hans": "sadələşmiş çin",
"zh_Hant": "ənənəvi çin"
}
}

View File

@ -16,7 +16,6 @@
"an": "арагон",
"anp": "анҝика",
"ar": "әрәб",
"ar_001": "мүасир стандарт әрәб",
"arn": "арауканҹа",
"arp": "арапаһо",
"as": "ассам",
@ -67,8 +66,6 @@
"dar": "даргва",
"dav": "таита",
"de": "алман",
"de_AT": "Австрија алманҹасы",
"de_CH": "Исвечрә јүксәк алманҹасы",
"dgr": "догриб",
"dje": "зарма",
"dsb": "ашағы сорб",
@ -83,15 +80,8 @@
"eka": "екаҹук",
"el": "јунан",
"en": "инҝилис",
"en_AU": "Австралија инҝилисҹәси",
"en_CA": "Канада инҝилисҹәси",
"en_GB": "Британија инҝилисҹәси",
"en_US": "Америка инҝилисҹәси",
"eo": "есперанто",
"es": "испан",
"es_419": "Латын Америкасы испанҹасы",
"es_ES": "Кастилија испанҹасы",
"es_MX": "Мексика испанҹасы",
"et": "естон",
"eu": "баск",
"ewo": "евондо",
@ -103,8 +93,6 @@
"fo": "фарер",
"fon": "фон",
"fr": "франсыз",
"fr_CA": "Канада франсызҹасы",
"fr_CH": "Исвечрә франсызҹасы",
"fur": "фриул",
"fy": "гәрби фриз",
"ga": "ирланд",
@ -242,14 +230,12 @@
"naq": "нама",
"nb": "бокмал норвеч",
"nd": "шимали ндебеле",
"nds_NL": "ашағы саксон",
"ne": "непал",
"new": "невари",
"ng": "ндонга",
"nia": "ниас",
"niu": "нијуан",
"nl": "һолланд",
"nl_BE": "фламанд",
"nmg": "квасио",
"nn": "нүнорск норвеч",
"nnh": "нҝиембоон",
@ -275,8 +261,6 @@
"prg": "прусс",
"ps": "пушту",
"pt": "португал",
"pt_BR": "Бразилија португалҹасы",
"pt_PT": "Португалија португалҹасы",
"qu": "кечуа",
"quc": "киче",
"rap": "рапануи",
@ -327,7 +311,6 @@
"suk": "сукума",
"sv": "исвеч",
"sw": "суаһили",
"sw_CD": "Конго суаһилиҹәси",
"swb": "комор",
"syr": "сурија",
"ta": "тамил",
@ -380,10 +363,29 @@
"yue": "кантон",
"zgh": "тамази",
"zh": "чин",
"zh_Hans": "садәләшмиш чин",
"zh_Hant": "әнәнәви чин",
"zu": "зулу",
"zun": "зуни",
"zza": "заза"
},
"LocalizedNames": {
"ar_001": "мүасир стандарт әрәб",
"de_AT": "Австрија алманҹасы",
"de_CH": "Исвечрә јүксәк алманҹасы",
"en_AU": "Австралија инҝилисҹәси",
"en_CA": "Канада инҝилисҹәси",
"en_GB": "Британија инҝилисҹәси",
"en_US": "Америка инҝилисҹәси",
"es_419": "Латын Америкасы испанҹасы",
"es_ES": "Кастилија испанҹасы",
"es_MX": "Мексика испанҹасы",
"fr_CA": "Канада франсызҹасы",
"fr_CH": "Исвечрә франсызҹасы",
"nds_NL": "ашағы саксон",
"nl_BE": "фламанд",
"pt_BR": "Бразилија португалҹасы",
"pt_PT": "Португалија португалҹасы",
"sw_CD": "Конго суаһилиҹәси",
"zh_Hans": "садәләшмиш чин",
"zh_Hant": "әнәнәви чин"
}
}

View File

@ -247,7 +247,6 @@
"nb": "нарвежская (букмол)",
"nd": "паўночная ндэбеле",
"nds": "ніжненямецкая",
"nds_NL": "ніжнесаксонская",
"ne": "непальская",
"new": "неўары",
"ng": "ндонга",
@ -285,8 +284,6 @@
"pro": "стараправансальская",
"ps": "пушту",
"pt": "партугальская",
"pt_BR": "бразільская партугальская",
"pt_PT": "еўрапейская партугальская",
"qu": "кечуа",
"quc": "кічэ",
"raj": "раджастханская",
@ -295,7 +292,6 @@
"rm": "рэтараманская",
"rn": "рундзі",
"ro": "румынская",
"ro_MD": "малдаўская",
"rof": "ромба",
"ru": "руская",
"rup": "арумунская",
@ -343,7 +339,6 @@
"sux": "шумерская",
"sv": "шведская",
"sw": "суахілі",
"sw_CD": "кангалезская суахілі",
"swb": "каморская",
"syr": "сірыйская",
"ta": "тамільская",
@ -398,10 +393,17 @@
"zap": "сапатэк",
"zgh": "стандартная мараканская тамазіхт",
"zh": "кітайская",
"zh_Hans": "кітайская (спрошчаныя іерогліфы)",
"zh_Hant": "кітайская (традыцыйныя іерогліфы)",
"zu": "зулу",
"zun": "зуні",
"zza": "зазакі"
},
"LocalizedNames": {
"nds_NL": "ніжнесаксонская",
"pt_BR": "бразільская партугальская",
"pt_PT": "еўрапейская партугальская",
"ro_MD": "малдаўская",
"sw_CD": "кангалезская суахілі",
"zh_Hans": "кітайская (спрошчаныя іерогліфы)",
"zh_Hant": "кітайская (традыцыйныя іерогліфы)"
}
}

View File

@ -21,7 +21,6 @@
"ang": "староанглийски",
"anp": "ангика",
"ar": "арабски",
"ar_001": "съвременен стандартен арабски",
"arc": "арамейски",
"arn": "мапуче",
"arp": "арапахо",
@ -113,7 +112,6 @@
"el": "гръцки",
"elx": "еламитски",
"en": "английски",
"en_US": "английски (САЩ)",
"enm": "средновековен английски",
"eo": "есперанто",
"es": "испански",
@ -305,14 +303,12 @@
"nb": "норвежки (букмол)",
"nd": "северен ндебеле",
"nds": "долнонемски",
"nds_NL": "долносаксонски",
"ne": "непалски",
"new": "неварски",
"ng": "ндонга",
"nia": "ниас",
"niu": "ниуеан",
"nl": "нидерландски",
"nl_BE": "фламандски",
"nmg": "квасио",
"nn": "норвежки (нюношк)",
"nnh": "нгиембун",
@ -361,7 +357,6 @@
"rm": "реторомански",
"rn": "рунди",
"ro": "румънски",
"ro_MD": "молдовски",
"rof": "ромбо",
"rom": "ромски",
"ru": "руски",
@ -417,7 +412,6 @@
"sux": "шумерски",
"sv": "шведски",
"sw": "суахили",
"sw_CD": "конгоански суахили",
"swb": "коморски",
"syc": "класически сирийски",
"syr": "сирийски",
@ -490,9 +484,17 @@
"zen": "зенага",
"zgh": "стандартен марокански тамазигт",
"zh": "китайски",
"zh_Hans": "китайски (опростен)",
"zu": "зулуски",
"zun": "зуни",
"zza": "заза"
},
"LocalizedNames": {
"ar_001": "съвременен стандартен арабски",
"en_US": "английски (САЩ)",
"nds_NL": "долносаксонски",
"nl_BE": "фламандски",
"ro_MD": "молдовски",
"sw_CD": "конгоански суахили",
"zh_Hans": "китайски (опростен)"
}
}

View File

@ -46,5 +46,6 @@
"yo": "yorubakan",
"zh": "siniwakan",
"zu": "zulukan"
}
},
"LocalizedNames": []
}

View File

@ -21,7 +21,6 @@
"ang": "প্রাচীন ইংরেজী",
"anp": "আঙ্গিকা",
"ar": "আরবী",
"ar_001": "আধুনিক আদর্শ আরবী",
"arc": "আরামাইক",
"arn": "মাপুচি",
"arp": "আরাপাহো",
@ -91,8 +90,6 @@
"dar": "দার্গওয়া",
"dav": "তাইতা",
"de": "জার্মান",
"de_AT": "অস্ট্রিয়ান জার্মান",
"de_CH": "সুইস হাই জার্মান",
"del": "ডেলাওয়ের",
"den": "স্ল্যাভ",
"dgr": "দোগ্রীব",
@ -115,16 +112,9 @@
"el": "গ্রিক",
"elx": "এলামাইট",
"en": "ইংরেজি",
"en_AU": "অস্ট্রেলীয় ইংরেজি",
"en_CA": "কানাডীয় ইংরেজি",
"en_GB": "ব্রিটিশ ইংরেজি",
"en_US": "আমেরিকার ইংরেজি",
"enm": "মধ্য ইংরেজি",
"eo": "এস্পেরান্তো",
"es": "স্প্যানিশ",
"es_419": "ল্যাটিন আমেরিকান স্প্যানিশ",
"es_ES": "ইউরোপীয় স্প্যানিশ",
"es_MX": "ম্যাক্সিকান স্প্যানিশ",
"et": "এস্তোনীয়",
"eu": "বাস্ক",
"ewo": "ইওন্ডো",
@ -138,8 +128,6 @@
"fo": "ফারোস",
"fon": "ফন",
"fr": "ফরাসি",
"fr_CA": "কানাডীয় ফরাসি",
"fr_CH": "সুইস ফরাসি",
"frc": "কাজুন ফরাসি",
"frm": "মধ্য ফরাসি",
"fro": "প্রাচীন ফরাসি",
@ -321,14 +309,12 @@
"nb": "নরওয়েজিয়ান বোকমাল",
"nd": "উত্তর এন্দেবিলি",
"nds": "নিম্ন জার্মানি",
"nds_NL": "লো স্যাক্সন",
"ne": "নেপালী",
"new": "নেওয়ারি",
"ng": "এন্দোঙ্গা",
"nia": "নিয়াস",
"niu": "নিউয়ান",
"nl": "ওলন্দাজ",
"nl_BE": "ফ্লেমিশ",
"nmg": "কোয়াসিও",
"nn": "নরওয়েজীয়ান নিনর্স্ক",
"nnh": "নিঙ্গেম্বুন",
@ -369,8 +355,6 @@
"pro": "প্রাচীন প্রোভেনসাল",
"ps": "পুশতু",
"pt": "পর্তুগীজ",
"pt_BR": "ব্রাজিলের পর্তুগীজ",
"pt_PT": "ইউরোপের পর্তুগীজ",
"qu": "কেচুয়া",
"quc": "কি‘চে",
"raj": "রাজস্থানী",
@ -379,7 +363,6 @@
"rm": "রোমান্স",
"rn": "রুন্দি",
"ro": "রোমানীয়",
"ro_MD": "মলদাভিয়",
"rof": "রম্বো",
"rom": "রোমানি",
"ru": "রুশ",
@ -435,7 +418,6 @@
"sux": "সুমেরীয়",
"sv": "সুইডিশ",
"sw": "সোয়াহিলি",
"sw_CD": "কঙ্গো সোয়াহিলি",
"swb": "কমোরিয়ান",
"syc": "প্রাচীন সিরিও",
"syr": "সিরিয়াক",
@ -509,10 +491,30 @@
"zen": "জেনাগা",
"zgh": "আদর্শ মরক্কোন তামাজিগাত",
"zh": "চীনা",
"zh_Hans": "সরলীকৃত চীনা",
"zh_Hant": "ঐতিহ্যবাহি চীনা",
"zu": "জুলু",
"zun": "জুনি",
"zza": "জাজা"
},
"LocalizedNames": {
"ar_001": "আধুনিক আদর্শ আরবী",
"de_AT": "অস্ট্রিয়ান জার্মান",
"de_CH": "সুইস হাই জার্মান",
"en_AU": "অস্ট্রেলীয় ইংরেজি",
"en_CA": "কানাডীয় ইংরেজি",
"en_GB": "ব্রিটিশ ইংরেজি",
"en_US": "আমেরিকার ইংরেজি",
"es_419": "ল্যাটিন আমেরিকান স্প্যানিশ",
"es_ES": "ইউরোপীয় স্প্যানিশ",
"es_MX": "ম্যাক্সিকান স্প্যানিশ",
"fr_CA": "কানাডীয় ফরাসি",
"fr_CH": "সুইস ফরাসি",
"nds_NL": "লো স্যাক্সন",
"nl_BE": "ফ্লেমিশ",
"pt_BR": "ব্রাজিলের পর্তুগীজ",
"pt_PT": "ইউরোপের পর্তুগীজ",
"ro_MD": "মলদাভিয়",
"sw_CD": "কঙ্গো সোয়াহিলি",
"zh_Hans": "সরলীকৃত চীনা",
"zh_Hant": "ঐতিহ্যবাহি চীনা"
}
}

View File

@ -2,5 +2,6 @@
"Version": "2.1.47.69",
"Names": {
"ksh": "কোলোনিয়ান"
}
},
"LocalizedNames": []
}

View File

@ -4,14 +4,16 @@
"bo": "བོད་སྐད་",
"dz": "རྫོང་ཁ",
"en": "དབྱིན་ཇིའི་སྐད།",
"en_CA": "དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)",
"en_GB": "དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)",
"en_US": "དབྱིན་ཇིའི་སྐད། (ཨ་རི་)",
"hi": "ཧིན་དི",
"ja": "ཉི་ཧོང་སྐད་",
"ne": "ནེ་པ་ལི",
"ru": "ཨུ་རུ་སུ་སྐད་",
"zh": "རྒྱ་སྐད་",
"zza": "ཟ་ཟའ་སྐད།"
},
"LocalizedNames": {
"en_CA": "དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)",
"en_GB": "དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)",
"en_US": "དབྱིན་ཇིའི་སྐད། (ཨ་རི་)"
}
}

View File

@ -24,7 +24,6 @@
"ang": "hensaozneg",
"anp": "angika",
"ar": "arabeg",
"ar_001": "arabeg modern",
"arc": "arameeg",
"arn": "araoukaneg",
"aro": "araona",
@ -100,8 +99,6 @@
"dar": "dargwa",
"dav": "taita",
"de": "alamaneg",
"de_AT": "alamaneg Aostria",
"de_CH": "alamaneg uhel Suis",
"del": "delaware",
"dgr": "dogrib",
"din": "dinka",
@ -123,16 +120,9 @@
"el": "gresianeg",
"elx": "elameg",
"en": "saozneg",
"en_AU": "saozneg Aostralia",
"en_CA": "saozneg Kanada",
"en_GB": "saozneg Breizh-Veur",
"en_US": "saozneg Amerika",
"enm": "krennsaozneg",
"eo": "esperanteg",
"es": "spagnoleg",
"es_419": "spagnoleg Amerika latin",
"es_ES": "spagnoleg Europa",
"es_MX": "spagnoleg Mecʼhiko",
"et": "estoneg",
"eu": "euskareg",
"ewo": "ewondo",
@ -147,8 +137,6 @@
"fo": "faeroeg",
"fon": "fon",
"fr": "galleg",
"fr_CA": "galleg Kanada",
"fr_CH": "galleg Suis",
"frc": "galleg cajun",
"frm": "krenncʼhalleg",
"fro": "hencʼhalleg",
@ -331,7 +319,6 @@
"nb": "norvegeg bokmål",
"nd": "ndebele an Norzh",
"nds": "alamaneg izel",
"nds_NL": "saksoneg izel",
"ne": "nepaleg",
"new": "newari",
"ng": "ndonga",
@ -339,7 +326,6 @@
"niu": "niue",
"njo": "aoeg",
"nl": "nederlandeg",
"nl_BE": "flandrezeg",
"nmg": "ngoumbeg",
"nn": "norvegeg nynorsk",
"nnh": "ngiemboon",
@ -384,8 +370,6 @@
"pro": "henbrovañseg",
"ps": "pachto",
"pt": "portugaleg",
"pt_BR": "portugaleg Brazil",
"pt_PT": "portugaleg Europa",
"qu": "kechuaeg",
"quc": "kʼicheʼ",
"qug": "kichuaeg Chimborazo",
@ -396,7 +380,6 @@
"rm": "romañcheg",
"rn": "rundi",
"ro": "roumaneg",
"ro_MD": "moldoveg",
"rof": "rombo",
"rom": "romanieg",
"ru": "rusianeg",
@ -451,7 +434,6 @@
"sux": "sumereg",
"sv": "svedeg",
"sw": "swahili",
"sw_CD": "swahili Kongo",
"swb": "komoreg",
"syc": "sirieg klasel",
"syr": "sirieg",
@ -533,10 +515,30 @@
"zen": "zenaga",
"zgh": "tamacheg Maroko standart",
"zh": "sinaeg",
"zh_Hans": "sinaeg eeunaet",
"zh_Hant": "sinaeg hengounel",
"zu": "zouloueg",
"zun": "zuni",
"zza": "zazakeg"
},
"LocalizedNames": {
"ar_001": "arabeg modern",
"de_AT": "alamaneg Aostria",
"de_CH": "alamaneg uhel Suis",
"en_AU": "saozneg Aostralia",
"en_CA": "saozneg Kanada",
"en_GB": "saozneg Breizh-Veur",
"en_US": "saozneg Amerika",
"es_419": "spagnoleg Amerika latin",
"es_ES": "spagnoleg Europa",
"es_MX": "spagnoleg Mecʼhiko",
"fr_CA": "galleg Kanada",
"fr_CH": "galleg Suis",
"nds_NL": "saksoneg izel",
"nl_BE": "flandrezeg",
"pt_BR": "portugaleg Brazil",
"pt_PT": "portugaleg Europa",
"ro_MD": "moldoveg",
"sw_CD": "swahili Kongo",
"zh_Hans": "sinaeg eeunaet",
"zh_Hant": "sinaeg hengounel"
}
}

View File

@ -21,7 +21,6 @@
"ang": "staroengleski",
"anp": "angika",
"ar": "arapski",
"ar_001": "moderni standardni arapski",
"arc": "aramejski",
"arn": "mapuški",
"arp": "arapaho",
@ -99,7 +98,6 @@
"dar": "dargva",
"dav": "taita",
"de": "njemački",
"de_CH": "gornjonjemački (Švicarska)",
"del": "delaver",
"den": "slave",
"dgr": "dogrib",
@ -318,14 +316,12 @@
"nb": "norveški (Bokmal)",
"nd": "sjeverni ndebele",
"nds": "donjonjemački",
"nds_NL": "donjosaksonski",
"ne": "nepalski",
"new": "nevari",
"ng": "ndonga",
"nia": "nias",
"niu": "niue",
"nl": "holandski",
"nl_BE": "flamanski",
"nmg": "kvasio",
"nn": "norveški (Nynorsk)",
"nnh": "ngiembon",
@ -374,7 +370,6 @@
"rm": "retoromanski",
"rn": "rundi",
"ro": "rumunski",
"ro_MD": "moldavski",
"rof": "rombo",
"rom": "romani",
"ru": "ruski",
@ -504,10 +499,17 @@
"zen": "zenaga",
"zgh": "standardni marokanski tamazigt",
"zh": "kineski",
"zh_Hans": "kineski (pojednostavljeni)",
"zh_Hant": "kineski (tradicionalni)",
"zu": "zulu",
"zun": "zuni",
"zza": "zaza"
},
"LocalizedNames": {
"ar_001": "moderni standardni arapski",
"de_CH": "gornjonjemački (Švicarska)",
"nds_NL": "donjosaksonski",
"nl_BE": "flamanski",
"ro_MD": "moldavski",
"zh_Hans": "kineski (pojednostavljeni)",
"zh_Hant": "kineski (tradicionalni)"
}
}

View File

@ -81,7 +81,6 @@
"dak": "дакота",
"dar": "даргва",
"de": "њемачки",
"de_CH": "Швајцарски високи немачки",
"del": "делавер",
"den": "славски",
"dgr": "догриб",
@ -274,7 +273,6 @@
"nia": "ниас",
"niu": "ниуеан",
"nl": "холандски",
"nl_BE": "фламански",
"nn": "норвешки њорск",
"no": "норвешки",
"nog": "ногаи",
@ -317,7 +315,6 @@
"rm": "рето-романски",
"rn": "рунди",
"ro": "румунски",
"ro_MD": "молдавски",
"rom": "романи",
"ru": "руски",
"rup": "ароманијски",
@ -425,10 +422,15 @@
"zen": "зенага",
"zgh": "стандардни марокански тамазигт",
"zh": "кинески",
"zh_Hans": "кинески (поједностављен)",
"zh_Hant": "кинески (традиционални)",
"zu": "зулу",
"zun": "зуни",
"zza": "заза"
},
"LocalizedNames": {
"de_CH": "Швајцарски високи немачки",
"nl_BE": "фламански",
"ro_MD": "молдавски",
"zh_Hans": "кинески (поједностављен)",
"zh_Hant": "кинески (традиционални)"
}
}

View File

@ -23,7 +23,6 @@
"ang": "anglès antic",
"anp": "angika",
"ar": "àrab",
"ar_001": "àrab estàndard modern",
"arc": "arameu",
"arn": "mapudungu",
"aro": "araona",
@ -109,8 +108,6 @@
"dar": "darguà",
"dav": "taita",
"de": "alemany",
"de_AT": "alemany austríac",
"de_CH": "alemany estàndard suís",
"del": "delaware",
"den": "slavi",
"dgr": "dogrib",
@ -134,16 +131,9 @@
"el": "grec",
"elx": "elamita",
"en": "anglès",
"en_AU": "anglès australià",
"en_CA": "anglès canadenc",
"en_GB": "anglès britànic",
"en_US": "anglès americà",
"enm": "anglès mitjà",
"eo": "esperanto",
"es": "espanyol",
"es_419": "espanyol hispanoamericà",
"es_ES": "espanyol europeu",
"es_MX": "espanyol de Mèxic",
"et": "estonià",
"eu": "basc",
"ewo": "ewondo",
@ -158,8 +148,6 @@
"fo": "feroès",
"fon": "fon",
"fr": "francès",
"fr_CA": "francès canadenc",
"fr_CH": "francès suís",
"frc": "francès cajun",
"frm": "francès mitjà",
"fro": "francès antic",
@ -358,14 +346,12 @@
"nb": "noruec bokmål",
"nd": "ndebele septentrional",
"nds": "baix alemany",
"nds_NL": "baix saxó",
"ne": "nepalès",
"new": "newari",
"ng": "ndonga",
"nia": "nias",
"niu": "niueà",
"nl": "neerlandès",
"nl_BE": "flamenc",
"nmg": "bissio",
"nn": "noruec nynorsk",
"nnh": "ngiemboon",
@ -412,8 +398,6 @@
"pro": "provençal antic",
"ps": "paixtu",
"pt": "portuguès",
"pt_BR": "portuguès del Brasil",
"pt_PT": "portuguès de Portugal",
"qu": "quítxua",
"quc": "kiche",
"raj": "rajasthani",
@ -423,7 +407,6 @@
"rm": "retoromànic",
"rn": "rundi",
"ro": "romanès",
"ro_MD": "moldau",
"rof": "rombo",
"rom": "romaní",
"ru": "rus",
@ -482,7 +465,6 @@
"sux": "sumeri",
"sv": "suec",
"sw": "suahili",
"sw_CD": "suahili del Congo",
"swb": "comorià",
"syc": "siríac clàssic",
"syr": "siríac",
@ -565,10 +547,30 @@
"zen": "zenaga",
"zgh": "amazic estàndard marroquí",
"zh": "xinès",
"zh_Hans": "xinès simplificat",
"zh_Hant": "xinès tradicional",
"zu": "zulu",
"zun": "zuni",
"zza": "zaza"
},
"LocalizedNames": {
"ar_001": "àrab estàndard modern",
"de_AT": "alemany austríac",
"de_CH": "alemany estàndard suís",
"en_AU": "anglès australià",
"en_CA": "anglès canadenc",
"en_GB": "anglès britànic",
"en_US": "anglès americà",
"es_419": "espanyol hispanoamericà",
"es_ES": "espanyol europeu",
"es_MX": "espanyol de Mèxic",
"fr_CA": "francès canadenc",
"fr_CH": "francès suís",
"nds_NL": "baix saxó",
"nl_BE": "flamenc",
"pt_BR": "portuguès del Brasil",
"pt_PT": "portuguès de Portugal",
"ro_MD": "moldau",
"sw_CD": "suahili del Congo",
"zh_Hans": "xinès simplificat",
"zh_Hant": "xinès tradicional"
}
}

View File

@ -16,7 +16,6 @@
"an": "арагонойн",
"anp": "ангика",
"ar": "Ӏаьрбийн",
"ar_001": "ХӀинца болу стандартан Ӏаьрбийн",
"arn": "арауканхойн",
"arp": "арапахо",
"as": "ассамийн",
@ -68,8 +67,6 @@
"dar": "даьргӀойн",
"dav": "таита",
"de": "немцойн",
"de_AT": "австрин немцойн",
"de_CH": "швейцарин литературин немцойн",
"dgr": "догриб",
"dje": "зарма",
"dsb": "сорбийн",
@ -84,15 +81,8 @@
"eka": "экаджук",
"el": "грекийн",
"en": "ингалсан",
"en_AU": "Австралин ингалсан",
"en_CA": "канадан ингалсан",
"en_GB": "британин ингалсан",
"en_US": "американ ингалсан",
"eo": "эсперанто",
"es": "испанхойн",
"es_419": "латинан американ испанхойн",
"es_ES": "европан испанхойн",
"es_MX": "мексикан испанхойн",
"et": "эстонийн",
"eu": "баскийн",
"ewo": "эвондо",
@ -104,8 +94,6 @@
"fo": "фарерийн",
"fon": "фон",
"fr": "французийн",
"fr_CA": "канадан французийн",
"fr_CH": "швейцарин французийн",
"fur": "фриулийн",
"fy": "малхбузен-фризийн",
"ga": "ирландхойн",
@ -247,14 +235,12 @@
"nb": "норвегийн букмол",
"nd": "къилбаседа ндебели",
"nds": "лахара германхойн",
"nds_NL": "лахара саксонийн",
"ne": "непалхойн",
"new": "неваройн",
"ng": "ндонга",
"nia": "ниас",
"niu": "ниуэ",
"nl": "голландхойн",
"nl_BE": "фламандийн",
"nmg": "квасио",
"nn": "норвегийн нюнорск",
"nnh": "нгиембунд",
@ -280,8 +266,6 @@
"prg": "пруссийн",
"ps": "пушту",
"pt": "португалихойн",
"pt_BR": "бразилин португалихойн",
"pt_PT": "европан португалихойн",
"qu": "кечуа",
"quc": "киче",
"rap": "рапануйн",
@ -289,7 +273,6 @@
"rm": "романшийн",
"rn": "рунди",
"ro": "румынийн",
"ro_MD": "молдавийн",
"rof": "ромбо",
"ru": "оьрсийн",
"rup": "аруминийн",
@ -333,7 +316,6 @@
"suk": "сукума",
"sv": "шведийн",
"sw": "суахили",
"sw_CD": "суахили (Конго)",
"swb": "коморийн",
"syr": "шемахойн",
"ta": "тамилхойн",
@ -387,10 +369,30 @@
"yue": "кантонийн",
"zgh": "мороккон стандартан тамазигхтийн",
"zh": "цийн",
"zh_Hans": "атта цийн",
"zh_Hant": "ламастан цийн",
"zu": "зулу",
"zun": "зуньи",
"zza": "заза"
},
"LocalizedNames": {
"ar_001": "ХӀинца болу стандартан Ӏаьрбийн",
"de_AT": "австрин немцойн",
"de_CH": "швейцарин литературин немцойн",
"en_AU": "Австралин ингалсан",
"en_CA": "канадан ингалсан",
"en_GB": "британин ингалсан",
"en_US": "американ ингалсан",
"es_419": "латинан американ испанхойн",
"es_ES": "европан испанхойн",
"es_MX": "мексикан испанхойн",
"fr_CA": "канадан французийн",
"fr_CH": "швейцарин французийн",
"nds_NL": "лахара саксонийн",
"nl_BE": "фламандийн",
"pt_BR": "бразилин португалихойн",
"pt_PT": "европан португалихойн",
"ro_MD": "молдавийн",
"sw_CD": "суахили (Конго)",
"zh_Hans": "атта цийн",
"zh_Hant": "ламастан цийн"
}
}

View File

@ -24,7 +24,6 @@
"ang": "staroangličtina",
"anp": "angika",
"ar": "arabština",
"ar_001": "arabština (moderní standardní)",
"arc": "aramejština",
"arn": "mapudungun",
"aro": "araonština",
@ -119,7 +118,6 @@
"dar": "dargština",
"dav": "taita",
"de": "němčina",
"de_CH": "němčina standardní (Švýcarsko)",
"del": "delawarština",
"den": "slejvština (athabaský jazyk)",
"dgr": "dogrib",
@ -144,12 +142,9 @@
"el": "řečtina",
"elx": "elamitština",
"en": "angličtina",
"en_GB": "angličtina (Velká Británie)",
"en_US": "angličtina (USA)",
"enm": "angličtina (středověká)",
"eo": "esperanto",
"es": "španělština",
"es_ES": "španělština (Evropa)",
"esu": "jupikština (středoaljašská)",
"et": "estonština",
"eu": "baskičtina",
@ -376,7 +371,6 @@
"nb": "norština (bokmål)",
"nd": "ndebele (Zimbabwe)",
"nds": "dolnoněmčina",
"nds_NL": "dolnosaština",
"ne": "nepálština",
"new": "névárština",
"ng": "ndondština",
@ -384,7 +378,6 @@
"niu": "niueština",
"njo": "ao (jazyky Nágálandu)",
"nl": "nizozemština",
"nl_BE": "vlámština",
"nmg": "kwasio",
"nn": "norština (nynorsk)",
"nnh": "ngiemboon",
@ -432,7 +425,6 @@
"pro": "provensálština",
"ps": "paštština",
"pt": "portugalština",
"pt_PT": "portugalština (Evropa)",
"qu": "kečuánština",
"quc": "kičé",
"qug": "kečuánština (chimborazo)",
@ -444,7 +436,6 @@
"rm": "rétorománština",
"rn": "kirundština",
"ro": "rumunština",
"ro_MD": "moldavština",
"rof": "rombo",
"rom": "romština",
"rtm": "rotumanština",
@ -512,7 +503,6 @@
"sux": "sumerština",
"sv": "švédština",
"sw": "svahilština",
"sw_CD": "svahilština (Kongo)",
"swb": "komorština",
"syc": "syrština (klasická)",
"syr": "syrština",
@ -601,9 +591,21 @@
"zen": "zenaga",
"zgh": "tamazight (standardní marocký)",
"zh": "čínština",
"zh_Hans": "čínština (zjednodušená)",
"zu": "zuluština",
"zun": "zunijština",
"zza": "zaza"
},
"LocalizedNames": {
"ar_001": "arabština (moderní standardní)",
"de_CH": "němčina standardní (Švýcarsko)",
"en_GB": "angličtina (Velká Británie)",
"en_US": "angličtina (USA)",
"es_ES": "španělština (Evropa)",
"nds_NL": "dolnosaština",
"nl_BE": "vlámština",
"pt_PT": "portugalština (Evropa)",
"ro_MD": "moldavština",
"sw_CD": "svahilština (Kongo)",
"zh_Hans": "čínština (zjednodušená)"
}
}

View File

@ -24,7 +24,6 @@
"ang": "Hen Saesneg",
"anp": "Angika",
"ar": "Arabeg",
"ar_001": "Arabeg Modern Safonol",
"arc": "Aramaeg",
"arn": "Arawcaneg",
"aro": "Araonaeg",
@ -41,7 +40,6 @@
"awa": "Awadhi",
"ay": "Aymareg",
"az": "Aserbaijaneg",
"az_Arab": "Aserbaijaneg Deheuol",
"ba": "Bashcorteg",
"bal": "Balwtsi",
"ban": "Balïeg",
@ -101,8 +99,6 @@
"dar": "Dargwa",
"dav": "Taita",
"de": "Almaeneg",
"de_AT": "Almaeneg Awstria",
"de_CH": "Almaeneg Safonol y Swistir",
"dgr": "Dogrib",
"din": "Dinca",
"dje": "Sarmaeg",
@ -122,16 +118,9 @@
"el": "Groeg",
"elx": "Elameg",
"en": "Saesneg",
"en_AU": "Saesneg Awstralia",
"en_CA": "Saesneg Canada",
"en_GB": "Saesneg Prydain",
"en_US": "Saesneg America",
"enm": "Saesneg Canol",
"eo": "Esperanto",
"es": "Sbaeneg",
"es_419": "Sbaeneg America Ladin",
"es_ES": "Sbaeneg Ewrop",
"es_MX": "Sbaeneg Mecsico",
"et": "Estoneg",
"eu": "Basgeg",
"ewo": "Ewondo",
@ -146,8 +135,6 @@
"fo": "Ffaröeg",
"fon": "Fon",
"fr": "Ffrangeg",
"fr_CA": "Ffrangeg Canada",
"fr_CH": "Ffrangeg y Swistir",
"frc": "Ffrangeg Cajwn",
"frm": "Ffrangeg Canol",
"fro": "Hen Ffrangeg",
@ -322,7 +309,6 @@
"nb": "Norwyeg Bokmål",
"nd": "Ndebele Gogleddol",
"nds": "Almaeneg Isel",
"nds_NL": "Sacsoneg Isel",
"ne": "Nepaleg",
"new": "Newaeg",
"ng": "Ndonga",
@ -330,7 +316,6 @@
"niu": "Niuean",
"njo": "Ao Naga",
"nl": "Iseldireg",
"nl_BE": "Fflemeg",
"nmg": "Kwasio",
"nn": "Norwyeg Nynorsk",
"nnh": "Ngiemboon",
@ -376,8 +361,6 @@
"pro": "Hen Brofensaleg",
"ps": "Pashto",
"pt": "Portiwgeeg",
"pt_BR": "Portiwgeeg Brasil",
"pt_PT": "Portiwgeeg Ewrop",
"qu": "Quechua",
"quc": "Kiche",
"raj": "Rajasthaneg",
@ -386,7 +369,6 @@
"rm": "Románsh",
"rn": "Rwndi",
"ro": "Rwmaneg",
"ro_MD": "Moldofeg",
"rof": "Rombo",
"rom": "Romani",
"rtm": "Rotumaneg",
@ -450,7 +432,6 @@
"sux": "Swmereg",
"sv": "Swedeg",
"sw": "Swahili",
"sw_CD": "Swahilir Congo",
"swb": "Comoreg",
"syc": "Hen Syrieg",
"syr": "Syrieg",
@ -526,10 +507,31 @@
"zea": "Zêlandeg",
"zgh": "Tamaseit Safonol",
"zh": "Tsieineeg",
"zh_Hans": "Tsieineeg Symledig",
"zh_Hant": "Tsieineeg Traddodiadol",
"zu": "Swlw",
"zun": "Swni",
"zza": "Sasäeg"
},
"LocalizedNames": {
"ar_001": "Arabeg Modern Safonol",
"az_Arab": "Aserbaijaneg Deheuol",
"de_AT": "Almaeneg Awstria",
"de_CH": "Almaeneg Safonol y Swistir",
"en_AU": "Saesneg Awstralia",
"en_CA": "Saesneg Canada",
"en_GB": "Saesneg Prydain",
"en_US": "Saesneg America",
"es_419": "Sbaeneg America Ladin",
"es_ES": "Sbaeneg Ewrop",
"es_MX": "Sbaeneg Mecsico",
"fr_CA": "Ffrangeg Canada",
"fr_CH": "Ffrangeg y Swistir",
"nds_NL": "Sacsoneg Isel",
"nl_BE": "Fflemeg",
"pt_BR": "Portiwgeeg Brasil",
"pt_PT": "Portiwgeeg Ewrop",
"ro_MD": "Moldofeg",
"sw_CD": "Swahilir Congo",
"zh_Hans": "Tsieineeg Symledig",
"zh_Hant": "Tsieineeg Traddodiadol"
}
}

View File

@ -21,7 +21,6 @@
"ang": "oldengelsk",
"anp": "angika",
"ar": "arabisk",
"ar_001": "moderne standardarabisk",
"arc": "aramæisk",
"arn": "mapudungun",
"arp": "arapaho",
@ -100,8 +99,6 @@
"dar": "dargwa",
"dav": "taita",
"de": "tysk",
"de_AT": "østrigsk tysk",
"de_CH": "schweizerhøjtysk",
"del": "delaware",
"den": "athapaskisk",
"dgr": "dogrib",
@ -124,16 +121,9 @@
"el": "græsk",
"elx": "elamitisk",
"en": "engelsk",
"en_AU": "australsk engelsk",
"en_CA": "canadisk engelsk",
"en_GB": "britisk engelsk",
"en_US": "amerikansk engelsk",
"enm": "middelengelsk",
"eo": "esperanto",
"es": "spansk",
"es_419": "latinamerikansk spansk",
"es_ES": "europæisk spansk",
"es_MX": "mexicansk spansk",
"et": "estisk",
"eu": "baskisk",
"ewo": "ewondo",
@ -147,8 +137,6 @@
"fo": "færøsk",
"fon": "fon",
"fr": "fransk",
"fr_CA": "canadisk fransk",
"fr_CH": "schweizisk fransk",
"frc": "cajunfransk",
"frm": "middelfransk",
"fro": "oldfransk",
@ -340,7 +328,6 @@
"nia": "nias",
"niu": "niueansk",
"nl": "hollandsk",
"nl_BE": "flamsk",
"nmg": "kwasio",
"nn": "nynorsk",
"nnh": "ngiemboon",
@ -381,8 +368,6 @@
"pro": "oldprovencalsk",
"ps": "pashto",
"pt": "portugisisk",
"pt_BR": "brasiliansk portugisisk",
"pt_PT": "europæisk portugisisk",
"qu": "quechua",
"quc": "quiché",
"raj": "rajasthani",
@ -391,7 +376,6 @@
"rm": "rætoromansk",
"rn": "rundi",
"ro": "rumænsk",
"ro_MD": "moldovisk",
"rof": "rombo",
"rom": "romani",
"ru": "russisk",
@ -449,7 +433,6 @@
"sux": "sumerisk",
"sv": "svensk",
"sw": "swahili",
"sw_CD": "congolesisk swahili",
"swb": "shimaore",
"syc": "klassisk syrisk",
"syr": "syrisk",
@ -523,10 +506,29 @@
"zen": "zenaga",
"zgh": "tamazight",
"zh": "kinesisk",
"zh_Hans": "forenklet kinesisk",
"zh_Hant": "traditionelt kinesisk",
"zu": "zulu",
"zun": "zuni",
"zza": "zaza"
},
"LocalizedNames": {
"ar_001": "moderne standardarabisk",
"de_AT": "østrigsk tysk",
"de_CH": "schweizerhøjtysk",
"en_AU": "australsk engelsk",
"en_CA": "canadisk engelsk",
"en_GB": "britisk engelsk",
"en_US": "amerikansk engelsk",
"es_419": "latinamerikansk spansk",
"es_ES": "europæisk spansk",
"es_MX": "mexicansk spansk",
"fr_CA": "canadisk fransk",
"fr_CH": "schweizisk fransk",
"nl_BE": "flamsk",
"pt_BR": "brasiliansk portugisisk",
"pt_PT": "europæisk portugisisk",
"ro_MD": "moldovisk",
"sw_CD": "congolesisk swahili",
"zh_Hans": "forenklet kinesisk",
"zh_Hant": "traditionelt kinesisk"
}
}

View File

@ -24,7 +24,6 @@
"ang": "Altenglisch",
"anp": "Angika",
"ar": "Arabisch",
"ar_001": "Modernes Hocharabisch",
"arc": "Aramäisch",
"arn": "Mapudungun",
"aro": "Araona",
@ -118,8 +117,6 @@
"dar": "Darginisch",
"dav": "Taita",
"de": "Deutsch",
"de_AT": "Österreichisches Deutsch",
"de_CH": "Schweizer Hochdeutsch",
"del": "Delaware",
"den": "Slave",
"dgr": "Dogrib",
@ -373,7 +370,6 @@
"nb": "Norwegisch Bokmål",
"nd": "Nord-Ndebele",
"nds": "Niederdeutsch",
"nds_NL": "Niedersächsisch",
"ne": "Nepalesisch",
"new": "Newari",
"ng": "Ndonga",
@ -381,7 +377,6 @@
"niu": "Niue",
"njo": "Ao-Naga",
"nl": "Niederländisch",
"nl_BE": "Flämisch",
"nmg": "Kwasio",
"nn": "Norwegisch Nynorsk",
"nnh": "Ngiemboon",
@ -440,7 +435,6 @@
"rm": "Rätoromanisch",
"rn": "Rundi",
"ro": "Rumänisch",
"ro_MD": "Moldauisch",
"rof": "Rombo",
"rom": "Romani",
"rtm": "Rotumanisch",
@ -508,7 +502,6 @@
"sux": "Sumerisch",
"sv": "Schwedisch",
"sw": "Suaheli",
"sw_CD": "Kongo-Swahili",
"swb": "Komorisch",
"syc": "Altsyrisch",
"syr": "Syrisch",
@ -597,10 +590,19 @@
"zen": "Zenaga",
"zgh": "Tamazight",
"zh": "Chinesisch",
"zh_Hans": "Chinesisch (vereinfacht)",
"zh_Hant": "Chinesisch (traditionell)",
"zu": "Zulu",
"zun": "Zuni",
"zza": "Zaza"
},
"LocalizedNames": {
"ar_001": "Modernes Hocharabisch",
"de_AT": "Österreichisches Deutsch",
"de_CH": "Schweizer Hochdeutsch",
"nds_NL": "Niedersächsisch",
"nl_BE": "Flämisch",
"ro_MD": "Moldauisch",
"sw_CD": "Kongo-Swahili",
"zh_Hans": "Chinesisch (vereinfacht)",
"zh_Hant": "Chinesisch (traditionell)"
}
}

View File

@ -1,7 +1,6 @@
{
"Version": "2.1.47.69",
"Names": {
"ar_001": "modernes Hocharabisch",
"car": "karibische Sprache",
"chb": "Chibcha-Sprache",
"del": "Delawarisch",
@ -14,5 +13,8 @@
"pag": "Pangasinensisch",
"sh": "Serbokroatisch",
"szl": "Schlesisch"
},
"LocalizedNames": {
"ar_001": "modernes Hocharabisch"
}
}

View File

@ -15,5 +15,6 @@
"kmb": "Kimbundu-Sprache",
"mus": "Muskogee-Sprache",
"prg": "Altpreussisch"
}
},
"LocalizedNames": []
}

View File

@ -2,5 +2,6 @@
"Version": "2.1.47.69",
"Names": {
"be": "Belarussisch"
}
},
"LocalizedNames": []
}

View File

@ -19,20 +19,12 @@
"da": "ཌེ་ནིཤ་ཁ",
"dak": "ད་ཀོ་ཏ་ཁ",
"de": "ཇཱར་མཱན་ཁ",
"de_AT": "ཨཱོས་ཊྲི་ཡཱན་ཇཱར་མཱན་ཁ",
"de_CH": "སུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁ",
"dv": "དི་བེ་ཧི་ཁ",
"dz": "རྫོང་ཁ",
"el": "གྲིཀ་ཁ",
"en": "ཨིང་ལིཤ་ཁ",
"en_AU": "ཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁ",
"en_CA": "ཀེ་ན་ཌི་ཡཱན་ཨིང་ལིཤ་ཁ",
"en_GB": "བྲི་ཊིཤ་ཨིང་ལིཤ་ཁ",
"en_US": "ཡུ་ཨེས་ཨིང་ལིཤ་ཁ",
"eo": "ཨེས་པ་རཱན་ཏོ་ཁ",
"es": "ཨིས་པེ་ནིཤ་ཁ",
"es_419": "ལེ་ཊིན་ཨ་མེ་རི་ཀཱན་གི་ཨིས་པེ་ནིཤ་ཁ",
"es_ES": "ཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁ",
"et": "ཨེས་ཊོ་ནི་ཡཱན་ཁ",
"eu": "བཱསཀ་ཁ",
"fa": "པར་ཤི་ཡཱན་ཁ",
@ -41,8 +33,6 @@
"fj": "ཕི་ཇི་ཡཱན་ཁ",
"fo": "ཕཱ་རོ་ཨིས་ཁ",
"fr": "ཕྲནཅ་ཁ",
"fr_CA": "ཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁ",
"fr_CH": "སུ་ཡིས་ཕྲནཅ་ཁ",
"fy": "ནུབ་ཕྼི་སི་ཡན་ཁ",
"ga": "ཨཱའི་རིཤ་ཁ",
"gl": "གལ་ཨིས་ཨི་ཡན་ཁ",
@ -90,7 +80,6 @@
"nb": "ནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁ",
"ne": "ནེ་པཱལི་ཁ",
"nl": "ཌཆ་ཁ",
"nl_BE": "ཕྷེལེ་མིཤ་ཁ",
"nn": "ནོར་ཝེ་ཇི་ཡཱན་ནོརསཀ་ཁ",
"no": "ནོར་ཝི་ཇི་ཡན་ཁ",
"or": "ཨོ་རི་ཡ་ཁ",
@ -98,8 +87,6 @@
"pl": "པོ་ལིཤ་ཁ",
"ps": "པཱཤ་ཏོ་ཁ",
"pt": "པོར་ཅུ་གིས་ཁ",
"pt_BR": "བྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁ",
"pt_PT": "ཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་ཁ",
"qu": "ཀྭེ་ཆུ་ཨ་ཁ",
"rm": "རོ་མེ་ནིཤ་ཁ",
"ro": "རོ་མེ་ནི་ཡཱན་ཁ",
@ -134,8 +121,23 @@
"xh": "ཞོ་ས་ཁ",
"yo": "ཡོ་རུ་བ་ཁ",
"zh": "རྒྱ་མི་ཁ",
"zh_Hans": "རྒྱ་མི་ཁ་འཇམ་སངམ",
"zh_Hant": "སྔ་དུས་ཀྱི་རྒྱ་མི་ཁ",
"zu": "ཟུ་ལུ་ཁ"
},
"LocalizedNames": {
"de_AT": "ཨཱོས་ཊྲི་ཡཱན་ཇཱར་མཱན་ཁ",
"de_CH": "སུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁ",
"en_AU": "ཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁ",
"en_CA": "ཀེ་ན་ཌི་ཡཱན་ཨིང་ལིཤ་ཁ",
"en_GB": "བྲི་ཊིཤ་ཨིང་ལིཤ་ཁ",
"en_US": "ཡུ་ཨེས་ཨིང་ལིཤ་ཁ",
"es_419": "ལེ་ཊིན་ཨ་མེ་རི་ཀཱན་གི་ཨིས་པེ་ནིཤ་ཁ",
"es_ES": "ཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁ",
"fr_CA": "ཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁ",
"fr_CH": "སུ་ཡིས་ཕྲནཅ་ཁ",
"nl_BE": "ཕྷེལེ་མིཤ་ཁ",
"pt_BR": "བྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁ",
"pt_PT": "ཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་ཁ",
"zh_Hans": "རྒྱ་མི་ཁ་འཇམ་སངམ",
"zh_Hant": "སྔ་དུས་ཀྱི་རྒྱ་མི་ཁ"
}
}

View File

@ -26,8 +26,6 @@
"cy": "walesgbe",
"da": "denmarkgbe",
"de": "Germaniagbe",
"de_AT": "Germaniagbe (Austria)",
"de_CH": "Germaniagbe (Switzerland)",
"dv": "divehgbe",
"dz": "dzongkhagbe",
"ebu": "embugbe",
@ -35,15 +33,8 @@
"efi": "efigbe",
"el": "grisigbe",
"en": "Yevugbe",
"en_AU": "Yevugbe (Australia)",
"en_CA": "Yevugbe (Canada)",
"en_GB": "Yevugbe (Britain)",
"en_US": "Yevugbe (America)",
"eo": "esperantogbe",
"es": "Spanishgbe",
"es_419": "Spanishgbe (Latin America)",
"es_ES": "Spanishgbe (Europe)",
"es_MX": "Spanishgbe (Mexico)",
"et": "estoniagbe",
"eu": "basqugbe",
"fa": "persiagbe",
@ -51,8 +42,6 @@
"fil": "filipingbe",
"fj": "fidzigbe",
"fr": "Fransegbe",
"fr_CA": "Fransegbe (Canada)",
"fr_CH": "Fransegbe (Switzerland)",
"ga": "irelanɖgbe",
"gl": "galatagbe",
"gn": "guarangbe",
@ -102,7 +91,6 @@
"nd": "dziehe ndebelegbe",
"ne": "nepalgbe",
"nl": "Hollandgbe",
"nl_BE": "Flemishgbe",
"nn": "nɔweigbe ninɔsk",
"no": "nɔweigbe",
"nso": "dziehe sothogbe",
@ -113,8 +101,6 @@
"pl": "Polishgbe",
"ps": "pashtogbe",
"pt": "Portuguesegbe",
"pt_BR": "Portuguesegbe (Brazil)",
"pt_PT": "Portuguesegbe (Europe)",
"qu": "kwetsuagbe",
"rm": "romanshgbe",
"rn": "rundigbe",
@ -168,8 +154,24 @@
"yo": "yorubagbe",
"yue": "cantongbe",
"zh": "Chinagbe",
"zh_Hans": "tsainagbe",
"zh_Hant": "blema tsainagbe",
"zu": "zulugbe"
},
"LocalizedNames": {
"de_AT": "Germaniagbe (Austria)",
"de_CH": "Germaniagbe (Switzerland)",
"en_AU": "Yevugbe (Australia)",
"en_CA": "Yevugbe (Canada)",
"en_GB": "Yevugbe (Britain)",
"en_US": "Yevugbe (America)",
"es_419": "Spanishgbe (Latin America)",
"es_ES": "Spanishgbe (Europe)",
"es_MX": "Spanishgbe (Mexico)",
"fr_CA": "Fransegbe (Canada)",
"fr_CH": "Fransegbe (Switzerland)",
"nl_BE": "Flemishgbe",
"pt_BR": "Portuguesegbe (Brazil)",
"pt_PT": "Portuguesegbe (Europe)",
"zh_Hans": "tsainagbe",
"zh_Hant": "blema tsainagbe"
}
}

View File

@ -21,7 +21,6 @@
"ang": "Παλαιά Αγγλικά",
"anp": "Ανγκικά",
"ar": "Αραβικά",
"ar_001": "Σύγχρονα Τυπικά Αραβικά",
"arc": "Αραμαϊκά",
"arn": "Αραουκανικά",
"arp": "Αραπάχο",
@ -101,8 +100,6 @@
"dar": "Ντάργκουα",
"dav": "Τάιτα",
"de": "Γερμανικά",
"de_AT": "Γερμανικά Αυστρίας",
"de_CH": "Υψηλά Γερμανικά Ελβετίας",
"del": "Ντέλαγουερ",
"den": "Σλαβικά",
"dgr": "Ντόγκριμπ",
@ -125,16 +122,9 @@
"el": "Ελληνικά",
"elx": "Ελαμάιτ",
"en": "Αγγλικά",
"en_AU": "Αγγλικά Αυστραλίας",
"en_CA": "Αγγλικά Καναδά",
"en_GB": "Αγγλικά Βρετανίας",
"en_US": "Αγγλικά Αμερικής",
"enm": "Μέσα Αγγλικά",
"eo": "Εσπεράντο",
"es": "Ισπανικά",
"es_419": "Ισπανικά Λατινικής Αμερικής",
"es_ES": "Ισπανικά Ευρώπης",
"es_MX": "Ισπανικά Μεξικού",
"et": "Εσθονικά",
"eu": "Βασκικά",
"ewo": "Εγουόντο",
@ -148,8 +138,6 @@
"fo": "Φεροϊκά",
"fon": "Φον",
"fr": "Γαλλικά",
"fr_CA": "Γαλλικά Καναδά",
"fr_CH": "Γαλλικά Ελβετίας",
"frc": "Γαλλικά (Λουιζιάνα)",
"frm": "Μέσα Γαλλικά",
"fro": "Παλαιά Γαλλικά",
@ -331,14 +319,12 @@
"nb": "Νορβηγικά Μποκμάλ",
"nd": "Βόρεια Ντεμπέλε",
"nds": "Κάτω Γερμανικά",
"nds_NL": "Κάτω Γερμανικά Ολλανδίας",
"ne": "Νεπαλικά",
"new": "Νεγουάρι",
"ng": "Ντόνγκα",
"nia": "Νίας",
"niu": "Νιούε",
"nl": "Ολλανδικά",
"nl_BE": "Φλαμανδικά",
"nmg": "Κβάσιο",
"nn": "Νορβηγικά Νινόρσκ",
"nnh": "Νγκιεμπούν",
@ -379,8 +365,6 @@
"pro": "Παλαιά Προβανσάλ",
"ps": "Πάστο",
"pt": "Πορτογαλικά",
"pt_BR": "Πορτογαλικά Βραζιλίας",
"pt_PT": "Πορτογαλικά Ευρώπης",
"qu": "Κέτσουα",
"quc": "Κιτσέ",
"raj": "Ραζασθάνι",
@ -389,7 +373,6 @@
"rm": "Ρομανικά",
"rn": "Ρούντι",
"ro": "Ρουμανικά",
"ro_MD": "Μολδαβικά",
"rof": "Ρόμπο",
"rom": "Ρομανί",
"ru": "Ρωσικά",
@ -447,7 +430,6 @@
"sux": "Σουμερικά",
"sv": "Σουηδικά",
"sw": "Σουαχίλι",
"sw_CD": "Κονγκό Σουαχίλι",
"swb": "Κομοριανά",
"syc": "Κλασικά Συριακά",
"syr": "Συριακά",
@ -521,10 +503,30 @@
"zen": "Ζενάγκα",
"zgh": "Τυπικά Ταμαζίτ Μαρόκου",
"zh": "Κινεζικά",
"zh_Hans": "Απλοποιημένα Κινεζικά",
"zh_Hant": "Παραδοσιακά Κινεζικά",
"zu": "Ζουλού",
"zun": "Ζούνι",
"zza": "Ζάζα"
},
"LocalizedNames": {
"ar_001": "Σύγχρονα Τυπικά Αραβικά",
"de_AT": "Γερμανικά Αυστρίας",
"de_CH": "Υψηλά Γερμανικά Ελβετίας",
"en_AU": "Αγγλικά Αυστραλίας",
"en_CA": "Αγγλικά Καναδά",
"en_GB": "Αγγλικά Βρετανίας",
"en_US": "Αγγλικά Αμερικής",
"es_419": "Ισπανικά Λατινικής Αμερικής",
"es_ES": "Ισπανικά Ευρώπης",
"es_MX": "Ισπανικά Μεξικού",
"fr_CA": "Γαλλικά Καναδά",
"fr_CH": "Γαλλικά Ελβετίας",
"nds_NL": "Κάτω Γερμανικά Ολλανδίας",
"nl_BE": "Φλαμανδικά",
"pt_BR": "Πορτογαλικά Βραζιλίας",
"pt_PT": "Πορτογαλικά Ευρώπης",
"ro_MD": "Μολδαβικά",
"sw_CD": "Κονγκό Σουαχίλι",
"zh_Hans": "Απλοποιημένα Κινεζικά",
"zh_Hant": "Παραδοσιακά Κινεζικά"
}
}

View File

@ -24,7 +24,6 @@
"ang": "Old English",
"anp": "Angika",
"ar": "Arabic",
"ar_001": "Modern Standard Arabic",
"arc": "Aramaic",
"arn": "Mapuche",
"aro": "Araona",
@ -119,8 +118,6 @@
"dar": "Dargwa",
"dav": "Taita",
"de": "German",
"de_AT": "Austrian German",
"de_CH": "Swiss High German",
"del": "Delaware",
"den": "Slave",
"dgr": "Dogrib",
@ -145,23 +142,15 @@
"el": "Greek",
"elx": "Elamite",
"en": "English",
"en_AU": "Australian English",
"en_CA": "Canadian English",
"en_GB": "British English",
"en_US": "American English",
"enm": "Middle English",
"eo": "Esperanto",
"es": "Spanish",
"es_419": "Latin American Spanish",
"es_ES": "European Spanish",
"es_MX": "Mexican Spanish",
"esu": "Central Yupik",
"et": "Estonian",
"eu": "Basque",
"ewo": "Ewondo",
"ext": "Extremaduran",
"fa": "Persian",
"fa_AF": "Dari",
"fan": "Fang",
"fat": "Fanti",
"ff": "Fulah",
@ -172,8 +161,6 @@
"fo": "Faroese",
"fon": "Fon",
"fr": "French",
"fr_CA": "Canadian French",
"fr_CH": "Swiss French",
"frc": "Cajun French",
"frm": "Middle French",
"fro": "Old French",
@ -384,7 +371,6 @@
"nb": "Norwegian Bokmål",
"nd": "North Ndebele",
"nds": "Low German",
"nds_NL": "Low Saxon",
"ne": "Nepali",
"new": "Newari",
"ng": "Ndonga",
@ -392,7 +378,6 @@
"niu": "Niuean",
"njo": "Ao Naga",
"nl": "Dutch",
"nl_BE": "Flemish",
"nmg": "Kwasio",
"nn": "Norwegian Nynorsk",
"nnh": "Ngiemboon",
@ -440,8 +425,6 @@
"pro": "Old Provençal",
"ps": "Pashto",
"pt": "Portuguese",
"pt_BR": "Brazilian Portuguese",
"pt_PT": "European Portuguese",
"qu": "Quechua",
"quc": "Kʼicheʼ",
"qug": "Chimborazo Highland Quichua",
@ -453,7 +436,6 @@
"rm": "Romansh",
"rn": "Rundi",
"ro": "Romanian",
"ro_MD": "Moldavian",
"rof": "Rombo",
"rom": "Romany",
"rtm": "Rotuman",
@ -509,7 +491,6 @@
"sog": "Sogdien",
"sq": "Albanian",
"sr": "Serbian",
"sr_ME": "Montenegrin",
"srn": "Sranan Tongo",
"srr": "Serer",
"ss": "Swati",
@ -522,7 +503,6 @@
"sux": "Sumerian",
"sv": "Swedish",
"sw": "Swahili",
"sw_CD": "Congo Swahili",
"swb": "Comorian",
"syc": "Classical Syriac",
"syr": "Syriac",
@ -611,10 +591,32 @@
"zen": "Zenaga",
"zgh": "Standard Moroccan Tamazight",
"zh": "Chinese",
"zh_Hans": "Simplified Chinese",
"zh_Hant": "Traditional Chinese",
"zu": "Zulu",
"zun": "Zuni",
"zza": "Zaza"
},
"LocalizedNames": {
"ar_001": "Modern Standard Arabic",
"de_AT": "Austrian German",
"de_CH": "Swiss High German",
"en_AU": "Australian English",
"en_CA": "Canadian English",
"en_GB": "British English",
"en_US": "American English",
"es_419": "Latin American Spanish",
"es_ES": "European Spanish",
"es_MX": "Mexican Spanish",
"fa_AF": "Dari",
"fr_CA": "Canadian French",
"fr_CH": "Swiss French",
"nds_NL": "Low Saxon",
"nl_BE": "Flemish",
"pt_BR": "Brazilian Portuguese",
"pt_PT": "European Portuguese",
"ro_MD": "Moldavian",
"sr_ME": "Montenegrin",
"sw_CD": "Congo Swahili",
"zh_Hans": "Simplified Chinese",
"zh_Hant": "Traditional Chinese"
}
}

View File

@ -2,9 +2,11 @@
"Version": "2.1.48.43",
"Names": {
"bn": "Bengali",
"en_US": "United States English",
"frc": "frc",
"lou": "lou",
"lou": "lou"
},
"LocalizedNames": {
"en_US": "United States English",
"ro_MD": "Moldovan"
}
}

View File

@ -3,7 +3,9 @@
"Names": {
"bn": "Bengali",
"mfe": "Mauritian",
"ro_MD": "Moldovan",
"tvl": "Tuvaluan"
},
"LocalizedNames": {
"ro_MD": "Moldovan"
}
}

View File

@ -1,6 +1,7 @@
{
"Version": "2.1.47.86",
"Names": {
"Names": [],
"LocalizedNames": {
"nds_NL": "West Low German"
}
}

View File

@ -2,5 +2,6 @@
"Version": "2.1.49.14",
"Names": {
"bn": "Bengali"
}
},
"LocalizedNames": []
}

View File

@ -2,5 +2,6 @@
"Version": "2.1.47.86",
"Names": {
"mi": "Māori"
}
},
"LocalizedNames": []
}

View File

@ -98,8 +98,6 @@
"pl": "pola",
"ps": "paŝtoa",
"pt": "portugala",
"pt_BR": "brazilportugala",
"pt_PT": "eŭropportugala",
"qu": "keĉua",
"rm": "romanĉa",
"rn": "burunda",
@ -149,8 +147,12 @@
"yo": "joruba",
"za": "ĝuanga",
"zh": "ĉina",
"zh_Hans": "ĉina simpligita",
"zh_Hant": "ĉina tradicia",
"zu": "zulua"
},
"LocalizedNames": {
"pt_BR": "brazilportugala",
"pt_PT": "eŭropportugala",
"zh_Hans": "ĉina simpligita",
"zh_Hant": "ĉina tradicia"
}
}

View File

@ -21,7 +21,6 @@
"ang": "inglés antiguo",
"anp": "angika",
"ar": "árabe",
"ar_001": "árabe estándar moderno",
"arc": "arameo",
"arn": "mapuche",
"arp": "arapaho",
@ -100,8 +99,6 @@
"dar": "dargva",
"dav": "taita",
"de": "alemán",
"de_AT": "alemán austríaco",
"de_CH": "alto alemán suizo",
"del": "delaware",
"den": "slave",
"dgr": "dogrib",
@ -124,16 +121,9 @@
"el": "griego",
"elx": "elamita",
"en": "inglés",
"en_AU": "inglés australiano",
"en_CA": "inglés canadiense",
"en_GB": "inglés británico",
"en_US": "inglés estadounidense",
"enm": "inglés medio",
"eo": "esperanto",
"es": "español",
"es_419": "español latinoamericano",
"es_ES": "español de España",
"es_MX": "español de México",
"et": "estonio",
"eu": "euskera",
"ewo": "ewondo",
@ -147,8 +137,6 @@
"fo": "feroés",
"fon": "fon",
"fr": "francés",
"fr_CA": "francés canadiense",
"fr_CH": "francés suizo",
"frc": "francés cajún",
"frm": "francés medio",
"fro": "francés antiguo",
@ -334,14 +322,12 @@
"nb": "noruego bokmal",
"nd": "ndebele septentrional",
"nds": "bajo alemán",
"nds_NL": "bajo sajón",
"ne": "nepalí",
"new": "newari",
"ng": "ndonga",
"nia": "nias",
"niu": "niueano",
"nl": "neerlandés",
"nl_BE": "flamenco",
"nmg": "kwasio",
"nn": "noruego nynorsk",
"nnh": "ngiemboon",
@ -382,8 +368,6 @@
"pro": "provenzal antiguo",
"ps": "pastún",
"pt": "portugués",
"pt_BR": "portugués de Brasil",
"pt_PT": "portugués de Portugal",
"qu": "quechua",
"quc": "quiché",
"raj": "rajasthani",
@ -392,7 +376,6 @@
"rm": "romanche",
"rn": "kirundi",
"ro": "rumano",
"ro_MD": "moldavo",
"rof": "rombo",
"rom": "romaní",
"ru": "ruso",
@ -450,7 +433,6 @@
"sux": "sumerio",
"sv": "sueco",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"swb": "comorense",
"syc": "siríaco clásico",
"syr": "siriaco",
@ -524,10 +506,30 @@
"zen": "zenaga",
"zgh": "tamazight estándar marroquí",
"zh": "chino",
"zh_Hans": "chino simplificado",
"zh_Hant": "chino tradicional",
"zu": "zulú",
"zun": "zuñi",
"zza": "zazaki"
},
"LocalizedNames": {
"ar_001": "árabe estándar moderno",
"de_AT": "alemán austríaco",
"de_CH": "alto alemán suizo",
"en_AU": "inglés australiano",
"en_CA": "inglés canadiense",
"en_GB": "inglés británico",
"en_US": "inglés estadounidense",
"es_419": "español latinoamericano",
"es_ES": "español de España",
"es_MX": "español de México",
"fr_CA": "francés canadiense",
"fr_CH": "francés suizo",
"nds_NL": "bajo sajón",
"nl_BE": "flamenco",
"pt_BR": "portugués de Brasil",
"pt_PT": "portugués de Portugal",
"ro_MD": "moldavo",
"sw_CD": "suajili del Congo",
"zh_Hans": "chino simplificado",
"zh_Hant": "chino tradicional"
}
}

View File

@ -25,7 +25,6 @@
"sma": "sami del sur",
"st": "sesotho del sur",
"sw": "swahili",
"sw_CD": "swahili (Congo)",
"syr": "siríaco",
"tet": "tetun",
"tyv": "tuvano",
@ -35,5 +34,8 @@
"wuu": "wu",
"xal": "calmuco",
"zun": "zuni"
},
"LocalizedNames": {
"sw_CD": "swahili (Congo)"
}
}

View File

@ -11,9 +11,11 @@
"pa": "punyabí",
"ss": "siswati",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"tn": "setswana",
"wo": "wolof",
"zgh": "tamazight marroquí estándar"
},
"LocalizedNames": {
"sw_CD": "suajili del Congo"
}
}

View File

@ -11,9 +11,11 @@
"pa": "punyabí",
"ss": "siswati",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"tn": "setswana",
"wo": "wolof",
"zgh": "tamazight marroquí estándar"
},
"LocalizedNames": {
"sw_CD": "suajili del Congo"
}
}

View File

@ -11,9 +11,11 @@
"pa": "punyabí",
"ss": "siswati",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"tn": "setswana",
"wo": "wolof",
"zgh": "tamazight marroquí estándar"
},
"LocalizedNames": {
"sw_CD": "suajili del Congo"
}
}

View File

@ -11,9 +11,11 @@
"pa": "punyabí",
"ss": "siswati",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"tn": "setswana",
"wo": "wolof",
"zgh": "tamazight marroquí estándar"
},
"LocalizedNames": {
"sw_CD": "suajili del Congo"
}
}

View File

@ -11,9 +11,11 @@
"pa": "punyabí",
"ss": "siswati",
"sw": "suajili",
"sw_CD": "suajili del Congo",
"tn": "setswana",
"wo": "wolof",
"zgh": "tamazight marroquí estándar"
},
"LocalizedNames": {
"sw_CD": "suajili del Congo"
}
}

Some files were not shown because too many files have changed in this diff Show More