Skip to content

[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 all commits
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
125 changes: 125 additions & 0 deletions UPGRADE-2.4.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,128 @@ 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.

* The methods in the various resource bundles of the `Intl` class used to
return `null` when invalid arguments were given. These methods throw a
`MissingResourceException` now.

Before:

```
use Symfony\Component\Intl\Intl;

// invalid language code
$language = Intl::getLanguageBundle()->getLanguageName('foo', null, 'en');

// invalid locale
$language = Intl::getLanguageBundle()->getLanguageName('de', null, 'foo');

if (null === $language) {
// error handling...
}
```

After:

```
use Symfony\Component\Intl\Intl;
use Symfony\Component\Intl\Exception\MissingResourceException;
use Symfony\Component\Intl\Exception\NoSuchLocaleException;

try {
// invalid language code
$language = Intl::getLanguageBundle()->getLanguageName('foo', null, 'en');

// invalid locale
$language = Intl::getLanguageBundle()->getLanguageName('de', null, 'foo');
} catch (MissingResourceException $e) {
if ($e->getPrevious() instanceof NoSuchLocaleException) {
// locale was invalid...
} else {
// locale was valid, but entry not found...
}
}
```

* The `$fallback` argument of the protected method `AbstractBundle::readEntry()`
was changed to be `true` by default. This way the signature is consistent
with the proxied `BundleEntryReaderInterface::readEntry()` method.
Consequently, if an entry cannot be found for the accessed locale (e.g. "en_GB"),
it is looked for in the fallback locale (if any, e.g. "en").

If you extend this class and explicitly want to disable locale fallback, you
should pass `false` as last argument.

Before:

```
use Symfony\Component\Intl\ResourceBundle\AbstractBundle;

class MyBundle extends AbstractBundle
{
public function getEntry($key, $locale)
{
return $this->readEntry($locale, array('Entries', $key));
}
}
```

After:

```
use Symfony\Component\Intl\ResourceBundle\AbstractBundle;

class MyBundle extends AbstractBundle
{
public function getEntry($key, $locale)
{
// disable locale fallback!
return $this->readEntry($locale, array('Entries', $key), false);
}
}
```

* The interfaces `CompilationContextInterface` and `StubbingContextInterface`
were removed. Code against their implementations `CompilationContext` and
`StubbingContext` in the same namespace instead.

Before:

```
use Symfony\Component\Intl\ResourceBundle\Transformation\CompilationContextInterface;
use Symfony\Component\Intl\ResourceBundle\Transformation\StubbingContextInterface;

public function beforeCompile(CompilationContextInterface $context)
{
// ...
}

public function beforeCreateStub(StubbingContextInterface $context)
{
// ...
}
```

After:

```
use Symfony\Component\Intl\ResourceBundle\Transformation\CompilationContext;
use Symfony\Component\Intl\ResourceBundle\Transformation\StubbingContext;

public function beforeCompile(CompilationContext $context)
{
// ...
}

public function beforeCreateStub(StubbingContext $context)
{
// ...
}
```
64 changes: 64 additions & 0 deletions UPGRADE-3.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,70 @@ UPGRADE FROM 2.x to 3.0
* The `Symfony\Component\HttpKernel\EventListener\ExceptionListener` now
passes the Request format as the `_format` argument instead of `format`.

### Intl

* The class `BundleCompiler` was renamed to `GenrbBundleCompiler`.

Before:

```
use Symfony\Component\Intl\ResourceBundle\Compiler\BundleCompiler;

$genrb = '/path/to/icu/build/bin/genrb';
$genrbEnv = 'LD_LIBRARY_PATH=/path/to/icu/build/lib'
$compiler = new BundleCompiler($genrb, $genrbEnv);
```

After:

```
use Symfony\Component\Intl\ResourceBundle\Compiler\GenrbBundleCompiler;

$genrb = '/path/to/icu/build/bin/genrb';
$genrbEnv = 'LD_LIBRARY_PATH=/path/to/icu/build/lib'
$compiler = new GenrbBundleCompiler($genrb, $genrbEnv);
```

* The class `StructuredBundleReader` was renamed to `BundleEntryReader`. The
corresponding interface `StructuredBundleReaderInterface` was renamed to
`BundleEntryReaderInterface`.

Before:

```
class MyEntryReader extends StructuredBundleReader
{
// ...
}
```

After:

```
class MyEntryReader extends BundleEntryReader
{
// ...
}
```

Before:

```
public function __construct(StructuredBundleReaderInterface $entryReader)
{
// ...
}
```

After:

```
public function __construct(BundleEntryReaderInterface $entryReader)
{
// ...
}
```

### Locale

* The Locale component was removed and replaced by the Intl component.
Expand Down
26 changes: 26 additions & 0 deletions src/Symfony/Component/Intl/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
CHANGELOG
=========

2.4.0
-----

* [BC BREAK] the various Intl methods now throw a `MissingResourceException`
whenever a non-existing locale, language, currency, etc. is accessed
* the available locales of each resource bundle are now stored in a generic
"misc.res" file in order to improve reading performance
* improved `LocaleBundleTransformationRule` to not generate duplicate locale
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
* [BC BREAK] a new method `getLocaleAliases()` was added to `LocaleBundleInterface`
* deprecated `StructuredBundleReader` and `StructuredBundleReaderInterface` in
favor of `BundleEntryReader` and `BundleEntryReaderInterface`
* `BundleEntryReader` now follows aliases when looking for fallback locales
* [BC BREAK] changed default value of the argument `$fallback` in the protected
method `AbstractBundle::readEntry()` to `true` in order to be consistent with
the proxied `BundleEntryReaderInterface::readEntry()` method
* deprecated `BundleCompiler` in favor of `GenrbBundleCompiler`
* fixed `TextBundleWriter` to correctly escape keys that contain colons (":")
* fixed `TextBundleWriter` to correctly escape keys that contain spaces (" ")
* [BC BREAK] removed the pointless interfaces `CompilationContextInterface`
and `StubbingContextInterface`. You can depend on their implementation instead
Loading