Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[Intl] New Intl API #9206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 48 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
77cbd73
[Intl] Made TextBundleWriter able to write "nofallback" resource bundles
webmozart Oct 2, 2013
ba12cd4
[Intl] Made TextBundleWriter able to write traversables
webmozart Oct 2, 2013
e14dd3a
[Intl] The various Intl methods now throw a NoSuchLocaleException whe…
webmozart Oct 2, 2013
953a29c
[Intl] Changed Intl methods to throw NoSuchEntriesExceptions when non…
webmozart Oct 2, 2013
0b5408b
[Intl] The available locales of each resource bundle are now stored i…
webmozart Oct 2, 2013
2ad4d32
[Intl] Fixed LocaleScanner to actually remove blacklisted locales
webmozart Oct 2, 2013
d6805b4
[Intl] Improved LocaleBundleTransformationRule to not generate duplic…
webmozart Oct 2, 2013
958a4dc
[Intl] Added LocaleScannerTest
webmozart Oct 2, 2013
b3bd0aa
[Intl] Removed unneeded method BundleReaderInterface::getLocales()
webmozart Oct 2, 2013
15419bb
[Intl] Fixed CS
webmozart Oct 3, 2013
fbe2853
[Intl] Fixed currency transformation rule to clean up after the trans…
webmozart Oct 3, 2013
95de438
[Intl] Fixed StructuredBundleReader to follow locale aliases when loo…
webmozart Oct 3, 2013
5d14465
[Intl] Added exception handler to data generation scripts
webmozart Oct 3, 2013
72398a3
[Intl] Decoupled transformation rules from Intl class
webmozart Oct 3, 2013
2bb2508
[Intl] Improved test coverage of BinaryBundleReader
webmozart Oct 3, 2013
9d202dc
[Intl] Improved exception formatting in transformation scripts
webmozart Oct 3, 2013
fec3933
[Intl] StructuredBundleReader now catches NoSuchLocaleExceptions and …
webmozart Oct 3, 2013
945cfef
[Intl] Changed LocaleBundleTransformationRule to generate a root.res …
webmozart Oct 3, 2013
d19e20a
[Intl] Improved error messages in BinaryBundleReader
webmozart Oct 3, 2013
127d9c0
[Intl] Changed AbstractEntry::readEntry() to fallback by default
webmozart Oct 3, 2013
921f9fb
[Intl] Added period to exception message in RecursiveArrayAccess
webmozart Oct 3, 2013
6251c7e
[Intl] Renamed BundleCompiler to GenrbBundleCompiler
webmozart Oct 3, 2013
1b3d920
[Intl] Added missing entries to the UPGRADE file
webmozart Oct 3, 2013
e002eba
[Intl] Renamed StructuredBundleReader[Interface] to BundleEntryReader…
webmozart Oct 3, 2013
c1252ef
[Intl] Added integration tests to check the resource bundles
webmozart Oct 3, 2013
a014f7d
[Intl] Fixed TextBundleWriter to escape keys that contain colons (":")
webmozart Oct 4, 2013
7e36a29
[Intl] Fixed transformation rules not to generate files in the source…
webmozart Oct 4, 2013
a2b31f6
[Intl] Fixed TextBundleWriter to escape keys with spaces (" ")
webmozart Oct 4, 2013
9b34d51
[Intl] Removed the interfaces CompilationContextInterface and Stubbin…
webmozart Oct 4, 2013
8f983ed
[Intl] Moved consistency tests to Icu component
webmozart Oct 7, 2013
52820da
[Intl] Simplified consistency tests
webmozart Oct 7, 2013
9935cb8
[Intl] Changed transformation rules to include more information in th…
webmozart Oct 9, 2013
3ca4108
[Intl] Tested Intl::getFallbackLocale() and let it return "root" for …
webmozart Oct 10, 2013
f4c82dd
[Intl] Changed BinaryBundleReader to never set the fallback flag in \…
webmozart Oct 10, 2013
241e704
[Intl] Implemented new Locale class
webmozart Oct 9, 2013
43076d6
[Intl] Fixed TextWriter to output integer arrays indexed by strings a…
webmozart Oct 10, 2013
e271491
[Intl] Implemented Currency class
webmozart Oct 14, 2013
350f864
[Intl] Renamed getDisplayName()/getDisplayNames() to getName()/getNam…
webmozart Oct 14, 2013
be2ce30
[Intl] Changed "@since" version numbers of new code to 2.5
webmozart Oct 14, 2013
c27325b
[Intl] Fixed "@var" declarations in data provider properties
webmozart Oct 14, 2013
ad3d1f4
[Intl] Updated doc comments
webmozart Oct 14, 2013
76e4930
[Intl] Implemented Language class
webmozart Oct 14, 2013
42f1238
[Intl] Renamed NoSuchEntryException to MissingResourceException
webmozart Oct 14, 2013
1b6aab0
[Intl] Moved Intl::getFallbackLocale() to Locale::getFallback()
webmozart Oct 14, 2013
a7e8e68
[Intl] Implemented Locale::exists()
webmozart Oct 14, 2013
50b516a
[Intl] Fixed TextBundleWriter to write tables with numeric keys
webmozart Oct 14, 2013
05e4761
[Intl] Fixed RecursiveArrayAccess/ArrayAccessibleResourceBundle to pa…
webmozart Oct 15, 2013
1cc7c7a
[Intl] Added Currency::exists(), Currency::canonicalize() and Currenc…
webmozart Oct 15, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[Intl] Fixed StructuredBundleReader to follow locale aliases when loo…
…king for fallback locales
  • Loading branch information
webmozart committed Oct 4, 2013
commit 95de4382b75a0f21665ff33016332e397195d2b6
7 changes: 7 additions & 0 deletions 7 UPGRADE-2.4.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,10 @@ Form
* The constructor parameter `$precision` in `IntegerToLocalizedStringTransformer`
is now ignored completely, because a precision does not make sense for
integers.

Intl
----

* A new method `getLocaleAliases()` was added to `LocaleBundleInterface`. If
any of your classes implements this interface, you should add an implementation
of this method.
2 changes: 2 additions & 0 deletions 2 src/Symfony/Component/Intl/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ CHANGELOG
names when fallback (e.g. "en_GB"->"en") is possible anyway. This reduced
the Resources/ directory file size of the Icu 1.2.x branch from 14M to 12M at
the time of this writing
* `StructuredBundleReader` now follows aliases when looking for fallback locales
* [BC BREAK] a new method `getLocaleAliases()` was added to `LocaleBundleInterface`
4 changes: 4 additions & 0 deletions 4 src/Symfony/Component/Intl/Intl.php
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,10 @@ private static function getBundleReader()
IcuData::getBundleReader(),
self::BUFFER_SIZE
));

// Make sure that self::$bundleReader is already set to prevent
// a cycle
self::$bundleReader->setLocaleAliases(self::getLocaleBundle()->getLocaleAliases());
}

return self::$bundleReader;
Expand Down
14 changes: 14 additions & 0 deletions 14 src/Symfony/Component/Intl/ResourceBundle/LocaleBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,20 @@ public function getLocales()
return $locales;
}

/**
* {@inheritdoc}
*/
public function getLocaleAliases()
{
$aliases = $this->readEntry('misc', array('Aliases'));

if ($aliases instanceof \Traversable) {
$aliases = iterator_to_array($aliases);
}

return $aliases;
}

/**
* {@inheritdoc}
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,12 @@ public function getLocaleName($ofLocale, $locale = null);
* @return string[] A list of locale names indexed by locale codes.
*/
public function getLocaleNames($locale = null);

/**
* Returns a list of locale aliases.
*
* @return array An array with aliases as keys and aliased locales as
* values.
*/
public function getLocaleAliases();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be mentionned as a BC break too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

documented

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ class StructuredBundleReader implements StructuredBundleReaderInterface
*/
private $reader;

/**
* A mapping of locale aliases to locales
*
* @var array
*/
private $localeAliases = array();

/**
* Creates an entry reader based on the given resource bundle reader.
*
Expand All @@ -40,6 +47,21 @@ public function __construct(BundleReaderInterface $reader)
$this->reader = $reader;
}

/**
* Stores a mapping of locale aliases to locales.
*
* This mapping is used when reading entries and merging them with their
* fallback locales. If an entry is read for a locale alias (e.g. "mo")
* that points to a locale with a fallback locale ("ro_MD"), the reader
* can continue at the correct fallback locale ("ro").
*
* @param array $localeAliases A mapping of locale aliases to locales
*/
public function setLocaleAliases($localeAliases)
{
$this->localeAliases = $localeAliases;
}

/**
* {@inheritdoc}
*/
Expand Down Expand Up @@ -108,7 +130,12 @@ public function readEntry($path, $locale, array $indices, $fallback = true)
// Remember which locales we tried
$testedLocales[] = $currentLocale.'.res';

// Go to fallback locale
// First check whether the locale is an alias
if (isset($this->localeAliases[$currentLocale])) {
$currentLocale = $this->localeAliases[$currentLocale];
}

// Then determine fallback locale
$currentLocale = Intl::getFallbackLocale($currentLocale);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,4 +250,27 @@ public function testMergeTraversables($childData, $parentData, $result)

$this->assertSame($result, $this->reader->readEntry(self::RES_DIR, 'en_GB', array('Foo', 'Bar'), true));
}

/**
* @dataProvider provideMergeableValues
*/
public function testFollowLocaleAliases($childData, $parentData, $result)
{
$this->reader->setLocaleAliases(array('mo' => 'ro_MD'));

$this->readerImpl->expects($this->at(0))
->method('read')
->with(self::RES_DIR, 'mo')
->will($this->returnValue(array('Foo' => array('Bar' => $childData))));

if (null === $childData || is_array($childData)) {
// Read fallback locale of aliased locale ("ro_MD" -> "ro")
$this->readerImpl->expects($this->at(1))
->method('read')
->with(self::RES_DIR, 'ro')
->will($this->returnValue(array('Foo' => array('Bar' => $parentData))));
}

$this->assertSame($result, $this->reader->readEntry(self::RES_DIR, 'mo', array('Foo', 'Bar'), true));
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.