Re: Intl ResourceBundle Class: No Fallback When Using Iteration

David Zülke <[email protected]> Tue, 17 Aug 2010 13:17:59 +0200
Newsgroups gmane.comp.php.internationalization
Message-ID <[email protected]>
--Apple-Mail-14-941485671
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

That still doesn't explain the problem clearly.

You said you have a root file, and an empty en_US extending from it?

If you now open the en_US bundle and iterate over it, does the iterator
a) not return anything at all, i.e. because the collection is empty, or
b) iterate over the correct number of entries (with correct keys =
maybe?), but just not return the corresponding values?

b) would be a relatively trivial fix, a) is a bit more work

- David



On 17.08.2010, at 13:13, Joel Sahleen wrote:

> Sorry about the double message. I was using Nabble and it didn't seem =
to
> post correctly. Values are null when iterating in the sense that if =
you have
> an empty bundle, there is no fallback.
>=20
> As I said this isn't immediately necessary for my project, but the =
expected
> behavior would seem to be that iteration should work over all =
contents,
> including fallbacks. I understand why that might be difficult to =
implement,
> however. At very least a note should be added explaining that =
iteration will
> not work with fallback. I'm afraid I will have developers trying to do =
that
> if they just go by the documentation.
>=20
> Joel
>=20
>=20
> On 8/17/10 5:02 AM, "David Z=FClke" <[email protected]> =
wrote:
>=20
>> That seems to be a bug.
>>=20
>> Among other things, resourcebundle_iterator_read calls
>> resourcebundle_extract_value instead of resourcebundle_array_get =
(which
>> handles fallbacks via resourcebundle_array_fetch).
>>=20
>> I'm not sure if the fix is that simple though, as that only fixes =
getting of
>> values, but the iterated range probably still doesn't include the =
fallback
>> values. What would the expected behavior be for iterators? Should it =
iterate
>> over all contents, including fallbacks? You sent another message to =
the list
>> earlier which appears to be describing a similar, but different =
problem where
>> values are null when iterating?
>>=20
>> - David
>>=20
>>=20
>>=20
>> On 16.08.2010, at 23:05, Joel Sahleen wrote:
>>=20
>>> All,
>>>=20
>>> I am working on a large-scale internationalization project that use =
the intl
>>> extension. I am storing localized strings in ICU resource bundles =
and
>>> accessing them via the intl ResourceBundle class. Part of my project =
relies
>>> on the fallback functionality of the ResourceBundle class. I have =
put all the
>>> US English strings (base language) in the root bundle and created an =
empty
>>> bundle for en_US as suggested in the ICU guide. That way if any =
string is
>>> missing in the localized bundles, everything automatically falls =
back to US
>>> English.
>>>=20
>>> Fallback works great if I use the ResourceBundles get method, or if =
I use
>>> array access (e.g., $bundle->get(=8CKEY=B9) or $bundle[=8CKEY=B9]), =
but if I try to
>>> iterate over the en_US bundle=B9s content with foreach, it returns a =
null
>>> result because the bundle is empty. Is there any way to support =
fallback when
>>> using iteration? It=B9s not absolutely necessary for my project, but =
it seems
>>> that if the class is going to offer iteration support, that =
functionality
>>> should also support the fallback functionality.
>>>=20
>>> Thanks for the help.
>>>=20
>>> Joel Sahleen
>>> Software Engineer
>>> Adobe Systems
>>=20
>=20
>=20
> --
> PHP Unicode & I18N Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>=20
>=20


--Apple-Mail-14-941485671
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIKJjCCBMww
ggQ1oAMCAQICEByunWua9OYvIoqj2nRhbB4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA1MTAyODAwMDAwMFoXDTE1MTAyNzIzNTk1OVow
gd0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp
Z24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZl
cmlzaWduLmNvbS9ycGEgKGMpMDUxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDE3MDUG
A1UEAxMuVmVyaVNpZ24gQ2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0EgLSBHMjCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMnfrOfq+PgDFMQAktXBfjbCPO98chXLwKuMPRyV
zm8eECw/AO2XJua2x+atQx0/pIdHR0w+VPhs+Mf8sZ69MHC8l7EDBeqV8a1AxUR6SwWi8mD81zpl
Yu//EHuiVrvFTnAt1qIfPO2wQuhejVchrKaZ2RHp0hoHwHRHQgv8xTTq/ea6JNEdCBU3otdzzwFB
L2OyOj++pRpu9MlKWz2VphW7NQIZ+dTvvI8OcXZZu0u2Ptb8Whb01g6J8kn+bAztFenZiHWcec5g
J925rXXOL3OVekA6hXVJsLjfaLyrzROChRFQo+A8C67AClPN1zBvhTJGG+RJEMJs4q8fef/btLUC
AwEAAaOCAYQwggGAMBIGA1UdEwEB/wQIMAYBAf8CAQAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcX
ATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMAsGA1UdDwQEAwIB
BjARBglghkgBhvhCAQEEBAMCAQYwLgYDVR0RBCcwJaQjMCExHzAdBgNVBAMTFlByaXZhdGVMYWJl
bDMtMjA0OC0xNTUwHQYDVR0OBBYEFBF9Xhl9PATfamzWoooaPzHYO5RSMDEGA1UdHwQqMCgwJqAk
oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTEuY3JsMIGBBgNVHSMEejB4oWOkYTBfMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVi
bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCEQDNun9W8N/kvFT+IqyzcqpVMA0G
CSqGSIb3DQEBBQUAA4GBALEv2ZbhkqLugWDlyCog++FnLNYAmFOjAhvpkEv4GESfD0b3+qD+0x0Y
o9K/HOzWGZ9KTUP4yru+E4BJBd0hczNXwkJavvoAk7LmBDGRTl088HMFN2Prv4NZmP1m3umGMpqS
KTw6rlTaphJRsY/IytNHeObbpR6HBuPRFMDCIfa6MIIFUjCCBDqgAwIBAgIQU08jBMC62skd0LDQ
4jAMhjANBgkqhkiG9w0BAQUFADCB3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJ
bmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1
c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEeMBwGA1UECxMVUGVyc29u
YSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vi
c2NyaWJlciBDQSAtIEcyMB4XDTA5MTAxNDAwMDAwMFoXDTEwMTAxNDIzNTk1OVowggEbMRcwFQYD
VQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazFGMEQG
A1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIGJ5IFJlZi4sTElB
Qi5MVEQoYyk5ODEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTMwMQYDVQQLEypEaWdp
dGFsIElEIENsYXNzIDEgLSBOZXRzY2FwZSBGdWxsIFNlcnZpY2UxFTATBgNVBAMUDERhdmlkIFp1
ZWxrZTErMCkGCSqGSIb3DQEJARYcZGF2aWQuenVlbGtlQGJpdGV4dGVuZGVyLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ7R84sDCxHSgi/MuMO5B4kZOcxywXlXymfLPsAC2S1u
s9znieD8O3fMfq966LThTFmHgi9zToIESEvuAQkOB2xmrRxCxjRdL6wPPg36e80xWf0Lu3bqnONa
pyZ0CexQCzhQrqZ5o8QAk3frfasVxjJlEsXxpk/gL6DalmrGiHcyHa94xE2mqmvEMnc6i8QSN291
UNECR+/MEDeEMxe5ybH2qhcpipIQeIKvunlPmEJUUPeiLX/A2YsQVyEcCTllv9o1NoIMYCIaT/ca
rHazVTXtwvr5Pqsd5DiyxJF43Ki2kvJFx7HjHhLZ8HD3Hl+sj6v6tko+wtM/uHl+bwH/APECAwEA
AaOBzDCByTAJBgNVHRMEAjAAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHFwEwKjAoBggrBgEFBQcC
ARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTALBgNVHQ8EBAMCBaAwHQYDVR0lBBYwFAYI
KwYBBQUHAwQGCCsGAQUFBwMCMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9JbmRDMURpZ2l0YWxJ
RC1jcmwudmVyaXNpZ24uY29tL0luZEMxRGlnaXRhbElELmNybDANBgkqhkiG9w0BAQUFAAOCAQEA
LQIPq1mitFH4l0bXc5dvrxczawaXoBkWJU5biSeDJwe8hEZ6mhDL1phLlQV1RdJj4d9ZkNAQ7GSd
bcw2Ln+Frp82X9HCMg7CpSUiFbFW7R1oosCjrQCOKeDeARZvB5NKE+PaDsyMpaXY/eUNqY8xFd4t
AURtgIE/UzTKoRMMPNPPGyLqi/p5J6qR9/Ozl7V620SnDhn2rKeLeiXSP2Tg4k02OLhx4aVVqk+n
dnCQbn/IUh+Kn/NAYVwKOByp3dakH0M5A5zBUP/N3CgKTRMieH+Z4uwgg0yTbk3BtZVkqLoCbyzR
YJ+haPDAC390CFCTQxpHikQPLVJ/Otx4cb12UjGCBIswggSHAgEBMIHyMIHdMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
cmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBh
IChjKTA1MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxNzA1BgNVBAMTLlZlcmlTaWdu
IENsYXNzIDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0gRzICEFNPIwTAutrJHdCw0OIwDIYw
CQYFKw4DAhoFAKCCAm0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcN
MTAwODE3MTExNzYwWjAjBgkqhkiG9w0BCQQxFgQUxpE7QOKCPdEs+T62lHFwSEgS7TcwggEDBgkr
BgEEAYI3EAQxgfUwgfIwgd0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEf
MB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0
IGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9ycGEgKGMpMDUxHjAcBgNVBAsTFVBlcnNvbmEgTm90
IFZhbGlkYXRlZDE3MDUGA1UEAxMuVmVyaVNpZ24gQ2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmli
ZXIgQ0EgLSBHMgIQU08jBMC62skd0LDQ4jAMhjCCAQUGCyqGSIb3DQEJEAILMYH1oIHyMIHdMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2ln
bi5jb20vcnBhIChjKTA1MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxNzA1BgNVBAMT
LlZlcmlTaWduIENsYXNzIDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0gRzICEFNPIwTAutrJ
HdCw0OIwDIYwDQYJKoZIhvcNAQEBBQAEggEAfSm0PEu3V5+9ARDJdXCfq0yAkk/5B4Zn7g//uaha
DOjk/ULtOJts8GVpTK4ddT/tlaz1Xpj9ARq1IveA+Kv+OCfFFxzWk1gn6rS+0xlr0Xn87EBhZSPi
A54ubqmlbpWuoKvcyX+tgNwuNZE0RgDstZsUQ8fzPKpMJiqaOM188gLfvJWCXXUsDBUxi8yV6xP2
0cJHqsiO/QWokmWuGBgbkF00QnF98G3T3rDOBm9kp1boCypkG7tjlFXIIOldmij64AfGaAq0QVEG
P9uLr2C9YOvHda9A7GwvMPjTQ8abQcIyiQ5orFja72waqUuRI/GpaOQ7DdWHo+0FlFUwubVxNAAA
AAAAAA==

--Apple-Mail-14-941485671--