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--