Merge branch '4.2'

* 4.2:
  Fix url matcher edge cases with trailing slash
  [Form] Fix author tag + exception messages
  [TwigBridge] Fix deprecation on twig 2.9
  Fix left-associative ternary deprecation warnings for PHP 7.4
  [Validator] Fixed imprecise translations
  [Validator] Add Dutch translations
  [Security] Cleanup "Digest nonce has expired." translation
  Intercept redirections only for HTML format
  [PhpUnitBridge] fix reading phpunit.xml on bootstrap
  resolve class name parameters
  Fix name and phpdoc of ContainerBuilder::removeBindings
  [Intl] Update the ICU data to 64.2
This commit is contained in:
Robin Chalas 2019-04-27 13:54:34 +02:00
commit 27d10a658d
306 changed files with 667 additions and 440 deletions

View File

@ -37,6 +37,9 @@ $getEnvVar = function ($name, $default = false) {
}
if (false !== $phpunitConfig) {
$var = new DOMXpath($phpunitConfig);
foreach ($var->query('//php/server[@name="'.$name.'"]') as $var) {
return $var->getAttribute('value');
}
foreach ($var->query('//php/env[@name="'.$name.'"]') as $var) {
return $var->getAttribute('value');
}
@ -94,7 +97,7 @@ $COMPOSER = file_exists($COMPOSER = $oldPwd.'/composer.phar') || ($COMPOSER = rt
: 'composer';
$SYMFONY_PHPUNIT_REMOVE = $getEnvVar('SYMFONY_PHPUNIT_REMOVE', 'phpspec/prophecy symfony/yaml');
$SYMFONY_PHPUNIT_REMOVE = $getEnvVar('SYMFONY_PHPUNIT_REMOVE', 'phpspec/prophecy'.($PHPUNIT_VERSION < 6.0 ? ' symfony/yaml': ''));
if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__FILE__)."\n".$SYMFONY_PHPUNIT_REMOVE !== @file_get_contents("$PHPUNIT_DIR/.$PHPUNIT_VERSION.md5")) {
// Build a standalone phpunit without symfony/yaml nor prophecy by default

View File

@ -24,6 +24,7 @@ use Twig\Node\ModuleNode;
use Twig\Node\Node;
use Twig\Node\SetNode;
use Twig\NodeVisitor\AbstractNodeVisitor;
use Twig\TokenParser\ApplyTokenParser;
/**
* @author Fabien Potencier <fabien@symfony.com>
@ -95,7 +96,8 @@ class TranslationDefaultDomainNodeVisitor extends AbstractNodeVisitor
protected function doLeaveNode(Node $node, Environment $env)
{
if ($node instanceof TransDefaultDomainNode) {
return false;
// must return null as of Twig 2.9
return class_exists(ApplyTokenParser::class) ? null : false;
}
if ($node instanceof BlockNode || $node instanceof ModuleNode) {

View File

@ -87,7 +87,7 @@ class WebDebugToolbarListener implements EventSubscriberInterface
return;
}
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects && 'html' === $request->getRequestFormat()) {
$session = $request->getSession();
if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) {
// keep current flashes for one more request if using AutoExpireFlashBag

View File

@ -58,7 +58,7 @@ class WebDebugToolbarListenerTest extends TestCase
/**
* @dataProvider provideRedirects
*/
public function testRedirectionIsIntercepted($statusCode, $hasSession)
public function testHtmlRedirectionIsIntercepted($statusCode, $hasSession)
{
$response = new Response('Some content', $statusCode);
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
@ -71,6 +71,19 @@ class WebDebugToolbarListenerTest extends TestCase
$this->assertEquals('Redirection', $response->getContent());
}
public function testNonHtmlRedirectionIsNotIntercepted()
{
$response = new Response('Some content', '301');
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new ResponseEvent($this->getKernelMock(), $this->getRequestMock(false, 'json', true), HttpKernelInterface::MASTER_REQUEST, $response);
$listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true);
$listener->onKernelResponse($event);
$this->assertEquals(301, $response->getStatusCode());
$this->assertEquals('Some content', $response->getContent());
}
public function testToolbarIsInjected()
{
$response = new Response('<html><head></head><body></body></html>');

View File

@ -1506,13 +1506,13 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
}
/**
* Adds a removed binding id.
* Removes bindings for a service.
*
* @param int $id
* @param string $id The service identifier
*
* @internal
*/
public function addRemovedBindingIds($id)
public function removeBindings($id)
{
if ($this->hasDefinition($id)) {
foreach ($this->getDefinition($id)->getBindings() as $key => $binding) {

View File

@ -61,7 +61,7 @@ class ServiceConfigurator extends AbstractServiceConfigurator
{
parent::__destruct();
$this->container->addRemovedBindingIds($this->id);
$this->container->removeBindings($this->id);
if (!$this->definition instanceof ChildDefinition) {
$this->container->setDefinition($this->id, $this->definition->setInstanceofConditionals($this->instanceof));

View File

@ -91,7 +91,7 @@ abstract class FileLoader extends BaseFileLoader
*/
protected function setDefinition($id, Definition $definition)
{
$this->container->addRemovedBindingIds($id);
$this->container->removeBindings($id);
if ($this->isLoadingInstanceof) {
if (!$definition instanceof ChildDefinition) {

View File

@ -92,18 +92,20 @@ class FormPass implements CompilerPassInterface
$serviceDefinition = $container->getDefinition($serviceId);
$tag = $serviceDefinition->getTag($this->formTypeExtensionTag);
$typeExtensionClass = $container->getParameterBag()->resolveValue($serviceDefinition->getClass());
if (isset($tag[0]['extended_type'])) {
if (!method_exists($serviceDefinition->getClass(), 'getExtendedTypes')) {
@trigger_error(sprintf('Not implementing the static getExtendedTypes() method in %s when implementing the %s is deprecated since Symfony 4.2. The method will be added to the interface in 5.0.', $serviceDefinition->getClass(), FormTypeExtensionInterface::class), E_USER_DEPRECATED);
if (!method_exists($typeExtensionClass, 'getExtendedTypes')) {
@trigger_error(sprintf('Not implementing the static getExtendedTypes() method in %s when implementing the %s is deprecated since Symfony 4.2. The method will be added to the interface in 5.0.', $typeExtensionClass, FormTypeExtensionInterface::class), E_USER_DEPRECATED);
}
$typeExtensions[$tag[0]['extended_type']][] = new Reference($serviceId);
$typeExtensionsClasses[] = $serviceDefinition->getClass();
} elseif (method_exists($serviceDefinition->getClass(), 'getExtendedTypes')) {
$typeExtensionsClasses[] = $typeExtensionClass;
} elseif (method_exists($typeExtensionClass, 'getExtendedTypes')) {
$extendsTypes = false;
$typeExtensionsClasses[] = $serviceDefinition->getClass();
foreach ($serviceDefinition->getClass()::getExtendedTypes() as $extendedType) {
$typeExtensionsClasses[] = $typeExtensionClass;
foreach ($typeExtensionClass::getExtendedTypes() as $extendedType) {
$typeExtensions[$extendedType][] = new Reference($serviceId);
$extendsTypes = true;
}
@ -112,7 +114,7 @@ class FormPass implements CompilerPassInterface
throw new InvalidArgumentException(sprintf('The getExtendedTypes() method for service "%s" does not return any extended types.', $serviceId));
}
} else {
throw new InvalidArgumentException(sprintf('"%s" tagged services have to implement the static getExtendedTypes() method. The class for service "%s" does not implement it.', $this->formTypeExtensionTag, $serviceId));
throw new InvalidArgumentException(sprintf('"%s" tagged services have to implement the static getExtendedTypes() method. Class "%s" for service "%s" does not implement it.', $this->formTypeExtensionTag, $typeExtensionClass, $serviceId));
}
}

View File

@ -17,7 +17,7 @@ use Symfony\Component\Form\Exception\TransformationFailedException;
/**
* Transforms between a timezone identifier string and a DateTimeZone object.
*
* @author Roland Franssen <franssen.roland@gmai.com>
* @author Roland Franssen <franssen.roland@gmail.com>
*/
class DateTimeZoneToStringTransformer implements DataTransformerInterface
{
@ -39,14 +39,14 @@ class DateTimeZoneToStringTransformer implements DataTransformerInterface
if ($this->multiple) {
if (!\is_array($dateTimeZone)) {
throw new TransformationFailedException('Expected an array.');
throw new TransformationFailedException('Expected an array of \DateTimeZone objects.');
}
return array_map([new self(), 'transform'], $dateTimeZone);
}
if (!$dateTimeZone instanceof \DateTimeZone) {
throw new TransformationFailedException('Expected a \DateTimeZone.');
throw new TransformationFailedException('Expected a \DateTimeZone object.');
}
return $dateTimeZone->getName();
@ -63,14 +63,14 @@ class DateTimeZoneToStringTransformer implements DataTransformerInterface
if ($this->multiple) {
if (!\is_array($value)) {
throw new TransformationFailedException('Expected an array.');
throw new TransformationFailedException('Expected an array of timezone identifier strings.');
}
return array_map([new self(), 'reverseTransform'], $value);
}
if (!\is_string($value)) {
throw new TransformationFailedException('Expected a string.');
throw new TransformationFailedException('Expected a timezone identifier string.');
}
try {

View File

@ -97,10 +97,14 @@ class FormPassTest extends TestCase
/**
* @dataProvider addTaggedTypeExtensionsDataProvider
*/
public function testAddTaggedTypeExtensions(array $extensions, array $expectedRegisteredExtensions)
public function testAddTaggedTypeExtensions(array $extensions, array $expectedRegisteredExtensions, array $parameters = [])
{
$container = $this->createContainerBuilder();
foreach ($parameters as $name => $value) {
$container->setParameter($name, $value);
}
$container->setDefinition('form.extension', $this->createExtensionDefinition());
foreach ($extensions as $serviceId => $config) {
@ -191,6 +195,27 @@ class FormPassTest extends TestCase
]),
],
],
[
[
'my.type_extension1' => [
'class' => '%type1_extension_class%',
'tag' => ['extended_type' => 'type1'],
],
'my.type_extension2' => [
'class' => '%type1_extension_class%',
'tag' => [],
],
],
[
'type1' => new IteratorArgument([
new Reference('my.type_extension1'),
new Reference('my.type_extension2'),
]),
],
[
'type1_extension_class' => Type1TypeExtension::class,
],
],
];
}
@ -261,7 +286,7 @@ class FormPassTest extends TestCase
/**
* @expectedException \InvalidArgumentException
* @expectedExceptionMessage "form.type_extension" tagged services have to implement the static getExtendedTypes() method. The class for service "my.type_extension" does not implement it.
* @expectedExceptionMessage "form.type_extension" tagged services have to implement the static getExtendedTypes() method. Class "stdClass" for service "my.type_extension" does not implement it.
*/
public function testAddTaggedFormTypeExtensionWithoutExtendedTypeAttributeNorImplementingGetExtendedTypes()
{

View File

@ -256,7 +256,7 @@ final class Intl
*/
public static function getIcuStubVersion()
{
return '64.1';
return '64.2';
}
/**

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.18",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.22",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.49.26",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.43",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.86",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Currencies": [
"ADP",
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.85",
"Version": "2.1.49.82",
"Names": {
"ANG": [
"ANG",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.72",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.36",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.86",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AFA": [
"AFA",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.89",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"PEN": [
"S\/",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"AUD": [
"A$",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"RWF": [
"RF",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.77",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.77",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.96",
"Version": "2.1.49.82",
"Names": {
"BRL": [
"R$",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.86",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"BRL": [
"R$",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.86",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.85",
"Version": "2.1.49.82",
"Names": {
"BRL": [
"R$",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"AED": [
"AED",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"ANG": [
"ANG",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.84",
"Version": "2.1.49.82",
"Names": {
"BRL": [
"R$",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.89",
"Version": "2.1.49.82",
"Names": {
"ZAR": [
"R",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"ADP": [
"ADP",

View File

@ -2,6 +2,6 @@ Git information
===============
URL: https://github.com/unicode-org/icu.git
Revision: 2f2aec5f91cffe49b7526d9b0d18a9acbdd0cc89
Author: yumaoka
Date: 2019-03-25T16:18:16-04:00
Revision: e2d85306162d3a0691b070b4f0a73e4012433444
Author: Steven R. Loomis
Date: 2019-04-17T08:58:08-07:00

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.18",
"Version": "2.1.49.82",
"Names": {
"aa": "አፋርኛ",
"ab": "አብሐዚኛ",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.22",
"Version": "2.1.49.82",
"Names": {
"aa": "الأفارية",
"ab": "الأبخازية",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afar",
"ab": "abxaz",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "афарская",
"ab": "абхазская",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afarski",
"ab": "abhaski",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "афарски",
"ab": "абказијски",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "Affareg",
"ab": "Abchaseg",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afar",
"ab": "abkhasisk",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.49.26",
"Version": "2.1.49.82",
"Names": {
"aa": "Αφάρ",
"ab": "Αμπχαζικά",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.20",
"Version": "2.1.49.82",
"Names": {
"aa": "afar",
"ab": "abjasio",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afarera",
"ab": "abkhaziera",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"aa": "آفاری",
"ab": "آبخازی",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.43",
"Version": "2.1.49.82",
"Names": {
"aa": "afar",
"ab": "abkhaze",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "Afáiris",
"ab": "Abcáisis",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.86",
"Version": "2.1.49.82",
"Names": {
"aa": "Afar",
"ab": "Abchasais",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afar",
"ab": "abkhazo",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "अफ़ार",
"ab": "अब्ख़ाज़ियन",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "աֆարերեն",
"ab": "աբխազերեն",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "afár",
"ab": "abkasíska",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.42",
"Version": "2.1.49.82",
"Names": {
"aa": "アファル語",
"ab": "アブハズ語",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "афар тілі",
"ab": "абхаз тілі",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "អាហ្វារ",
"ab": "អាប់ខាហ៊្សាន",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "아파르어",
"ab": "압카즈어",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.48.17",
"Version": "2.1.49.82",
"Names": {
"aa": "афарча",
"ab": "абхазча",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Names": {
"aa": "Afar",
"ab": "Abchasesch",

View File

@ -1,5 +1,5 @@
{
"Version": "2.1.47.82",
"Version": "2.1.49.82",
"Languages": [
"aa",
"ab",

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