[keycloak-dev] i18n/l10n: English text in java code
Stan Silvert
ssilvert at redhat.com
Thu Oct 8 14:33:08 EDT 2015
What if English is the bundle that has a missing key?
Let's just put this to rest and solve it once and for all. The simplest
solution I can think of is to just compare keys when a new bundle is
loaded. If any bundle has a missing key or it has key not found in the
previous loaded bundle, we throw a RuntimeException. I can submit a
patch for that in just a few minutes.
On 10/8/2015 1:28 PM, Stian Thorgersen wrote:
> I'm not sure I'm buying into the argument that displaying the key is
> better for developers. Having English suddenly pop-up in a German
> translation is just as obvious as a key. Besides as Stan points out
> you catch missing keys by comparing missing keys between English and
> German.
>
> However, if there is a mistake in a translation then a user may quite
> likely be able to interpret English text, while a user will not be
> able to interpret a key. So if a key is missing in a translation
> (which is obviously a "bug") it's better to display English than to
> display the key.
>
> On 8 October 2015 at 14:13, Stan Silvert <ssilvert at redhat.com
> <mailto:ssilvert at redhat.com>> wrote:
>
> On 10/8/2015 12:48 AM, Thomas Raehalme wrote:
>>
>>
>> On Oct 8, 2015 6:53 AM, "Stian Thorgersen" <sthorger at redhat.com
>> <mailto:sthorger at redhat.com>> wrote:
>> >
>> > With regards to internationalization I have two questions:
>> >
>> > * Should we fallback to English messages if a key is missing in
>> a translation? Alternative is to show key, but that's not going
>> to help anyone
>>
>> A missing key is a bug and showing the message in the default
>> locale may hide the problem.
>>
>> Even though showing the key does not help the end user it helps
>> the developer and identifies the problem. For this reason I think
>> showing the key would be a good idea.
>>
> For our bundles, we could catch missing keys at build time.
>
> Failing that, I agree that displaying the key is better than
> falling back to English. This is especially true right now while
> we haven't completed the task of converting everything. If we
> fall back to English we won't know if the problem is a missing key
> or if the text just hasn't been converted yet.
>
>> > * Should we change message bundles to UTF-8? Or is ISO 8859-1 going to work for all languages?
>>
>> Depends what those all languages are :-)
>>
>> I think UTF-8 is the best choice as it will handle practically
>> any character.
>>
>> But if you're referring to Java resource bundles the encoding for
>> .properties is ISO-8859-1 but there are means to handle any UTF-8
>> character.
>>
> Yes, an UTF-8 character can be encoded in ISO-8859-1. Java
> provides a native2ascii tool for converting entire files. The
> resource bundle tools in most IDE's do this for you
> automatically. So you just edit as UTF-8 and it saves the bundle
> as ISO-8859-1.
>
> We can read our bundles as UTF-8 if we want to do that. I'd rather
> not, because I'm not sure what we might run into down the road
> with Java assuming resource bundles are always ISO-8859-1.
>
> But I'd like to get the perspective of people who have handled
> resource bundles in languages that are not fully supported by
> ISO-8859-1. Is it too much of a pain to do a conversion or do the
> tools make the process seamless?
>
>> Best regards,
>> Thomas
>>
>> >
>> > On 7 October 2015 at 18:42, Stan Silvert <ssilvert at redhat.com
>> <mailto:ssilvert at redhat.com>> wrote:
>> >>
>> >> Marko brought this to my attention yesterday. For some things, we
>> >> dynamically create UI. In this case, the java code contains
>> the English
>> >> text and it needs to be localized. Luckily, the solution was
>> pretty
>> >> straightforward. We just replace the English text with a key
>> into the
>> >> message bundle. The html template that displays this text
>> already pulls
>> >> from an Angular scope so we just leave that alone and pass it
>> through
>> >> the |translate filter. You do need to also add the double-colon.
>> >>
>> >> One nice side effect is that if the key is not found in the
>> bundle then
>> >> the output of the translate filter is the unchanged text.
>> This means
>> >> that any code which has not converted to using bundle keys
>> will still
>> >> work as expected. And, any third-party providers can just
>> pass in
>> >> plain text if they don't care about l10n. If they ever do
>> care about
>> >> l10n we will just need to provide a means for them to add
>> key/value
>> >> pairs to the resource bundles.
>> >>
>> >> Here is an example for anyone who needs to localize English text
>> >> embedded in java:
>> >>
>> https://github.com/ssilvert/keycloak/commit/c9437595b70810c4472325373dd8833c37be8549
>> >>
>> >> Stan
>> >> _______________________________________________
>> >> keycloak-dev mailing list
>> >> keycloak-dev at lists.jboss.org <mailto:keycloak-dev at lists.jboss.org>
>> >> https://lists.jboss.org/mailman/listinfo/keycloak-dev
>> >
>> >
>> >
>> > _______________________________________________
>> > keycloak-dev mailing list
>> > keycloak-dev at lists.jboss.org <mailto:keycloak-dev at lists.jboss.org>
>> > https://lists.jboss.org/mailman/listinfo/keycloak-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-dev/attachments/20151008/d94d66cd/attachment.html
More information about the keycloak-dev
mailing list