RE: [widgets] i18n

(personal comments follow)


1. The "system locale" example is a little odd looking. Most locale systems are of the language-then-region variety. You should probably replace "Australia, Australian English" with something like "English, Australia"). Perhaps provide a reference to the jargon word "locale". Two good references are:

2. The description of "localized resource" seems a bit too complicated. It says:

A localized resource is a resource that may have had some aspect localized for use in an internationalized context (eg. a HTML document written in Japanese) and has been placed inside a localized folder. A widget resource may contain zero or more localized resources. All resources, except a digital signature, can be localized.

I would tend to say:

A localized resource is any resource that has been placed inside a localized folder. It's contents might (or might not) be translated, localized, or altered for the given context. For example, a localized folder "ja" (Japanese) might contain an HTML document translated into Japanese. A widget resource MAY contain zero or more localized resources. All resources, except a digital signature, MAY be localized.

Note that the original phrase "internationalized context" should be avoided in favor of terms like "localized" or possibly "translated". Internationalization is the "how this works" part of this feature.

3. One of the guidelines says:

At runtime, the widget user agent will set the (HTML or XML) base of the start file to the localized folder (even if the start file does not reside inside the localized folder!).

This implies that ALL resources that are localized must appear in the localized folder. That is, if you have files 'a', 'b', and 'c' required by the widget, all of them must appear in the localized folder.

4. In the example, the file 'cats.html' has its name localized to 'gatos.html' in the Spanish version (or one might say that 'gatos.html' has its name localized to 'cats.html', I suppose). The root file is called "cats.html" and is described as being in Korean. Really the files should all have the same name. Otherwise, a widget component that refers to 'cats.html' will not load 'gatos.html'---it has no way of knowing what the localized resource is called.


1. In general, I find this section confused about how lookup is intended to work (lookup is modeled on how most resource systems in language such as C, Java, PHP, perl, C#, etc.) work: you start with the user's locale and fall back until you find a match. The elaboration 4647 is that we allow more than one "locale" in a language priority list and we allow for more complex defaulting behavior.

2. I note that you've provided for the use of extended language ranges. RFC 4647 says quite a bit about extended language ranges, ending with this requirement, which is not addressed:

     Applications, protocols, or specifications that accept extended
   language ranges MUST define which item is returned when more than one
   item matches the extended language range.

Personally, I would strongly recommend that you NOT allow extended language ranges. Web browsers use basic language ranges today and there is no reason I can see for widgets to use them.

3. You provide an example with a trailing "*" in a range (en-*). Note that, other than in the first position, if you accept extended language ranges the * outside the first position has no meaning and should just be ignored. Note also that the * matches more than just region. For example, it would match "en-Brai" (that's the Braille script subtag).

4. "lang-priority-list" is introduced here without any reference or definition.

5. The phrase "This step makes use of lookup filetering mechanism..." is incorrect. "Filtering" is the *other* type of matching scheme. The proper terminology should be "This step makes use of the lookup matching scheme..."

6. This description is unclear:

The aim is to match, in order, one of the subtags in the lang-priority-list to a localized folder in the widget package.

I would tend to say instead:

The aim is to match, in order, one of the language ranges in the lang-priority-list to a localized folder in the widget package.

7. Step 1 includes the keyword "default". You should also add the special tag "i-default" to this list.

8. Lookup provides clear guidance on a range of '*' in the middle of a list (i.e. there are ranges that appear after it), when it says:

  If the language range "*" is followed by other
   language ranges, it is skipped.

But your text says:

  If this subtag is a single * and this is not the
  first subtag in the lang-priority-list, then
  terminate this algorithm and attempt to locate
  the configuration document.

9. Step 2 says "subtag". I think you should either called it "range" or call it "tag" (range is preferred here). I think that you would be better of to eliminate most of the instructions here and just reference the algorithm in RFC 4647.

10. There is a normative bit that says:

During lookup, a widget user agent is not required  to alphabetize, or otherwise arrange in order, the file name fields of file entries in the widget archive.

This can be safely removed, as lookup is not affected by alphabetization.

12. I think David already pointed out the problems with the "ch" example.

13. Note that "language" is misspelled in the first paragraph.


If you were to convert from extended ranges and follow the standard algorithm, then your section would be a lot simpler.

Would you prefer if I were to suggest a complete text for this section?

Best Regards,


Addison Phillips
Globalization Architect -- Lab126

Internationalization is not a feature.
It is an architecture.

> -----Original Message-----
> From: Marcos Caceres []
> Sent: Monday, May 19, 2008 12:10 AM
> To: Phillips, Addison;; WAF WG (public)
> Subject: Re: [widgets] i18n
> Hi Addison, All,
> I've attempted to make the widget spec conformant with BCP437. In
> particular, I've deferred searching for localized folders to RFC4647
> using "lookup" against a language priority list composed of a basic
> language range. WAF would be grateful if (i18n) people could take a
> look at the current draft in the spec and make sure that it is ok (so
> we can close issue 23 [1]). The i18n text is fairly short (only about
> 1 page), so it should not take much time to read, and, hopefully,
> respond to.
> In the widget spec, the localization definitions and author
> requirements are described in section:

> The i18n processing model (which makes use of RFC4647) is described in
> section:

> Hope it all makes sense.
> Looking forward to hearing your feedback,
> Marcos
> [1]

> --
> Marcos Caceres

Received on Monday, 19 May 2008 17:51:09 UTC