- From: Marcos Caceres <marcosc@opera.com>
- Date: Tue, 5 Oct 2010 18:10:40 +0200
- To: "Phillips, Addison" <addison@lab126.com>
- Cc: Arthur Barstow <art.barstow@nokia.com>, public-webapps <public-webapps@w3.org>, "public-i18n-core@w3.org" <public-i18n-core@w3.org>
hi Addison, On Thu, Sep 30, 2010 at 8:57 PM, Phillips, Addison <addison@lab126.com> wrote: >> Are you talking about a script using navigator.language? > > Not really, unless you expect navigator.language to be how widget containers expose the runtime locale. > > Widget P&C describes how a widget is packaged (which can include localization) and how it is configured (what the widget container should do when it "unpackages" and runs the widget). The container determines what the locale is going to be for the widget (which, as you pointed out in your earlier reply, is implementation specific). This, in turn, affects what language the 'name' or other fields returned by the Widget Interface are in. I'm suggesting that you need to provide programmatic access to this value, which may be distinct from navigator.language. Text direction for those fields might also need to be exposed. > Ok, so there are essentially three problems we need to tackle here: 1. Exposing the actual language which was used (during Step 7 in P&C) to choose the localize the content for name and description (we don't expose). We have this bit - this is solved: [[ 9.1.5. Rule for Getting a Single Attribute Value ... E. Let lang be the language tag derived from having processed the xml:lang attribute on either element, or in element's ancestor chain as per [XML]. If xml:lang was not used anywhere in the ancestor chain, then let lang be an empty string. F. Associate lang with result. ]] And similarly in section "9.1.8. Rule for Getting Text Content". [2] Essentially, for each element or attribute that is displayable, we have an abstract object (a so called 'localizable string)' that is represented as: {string: ' unicode | ltr marker | rtl marker | lro marker | rlo marker |', lang: "language tag | empty string"} 2. Given the liberal way that P&C selects languages, we could end up with each attribute in the widget object containing different languages: widget.name; /*in English*/ widget.shortName; /*unlocalized*/ widget.description; /*in French*/ So, we basically need to extend DOMString: interface LocalizedString : DOMString { readonly attribute DOMString lang; } Then: widget.name.lang === "en"; 3. At runtime, upon getting an attribute from the Widget object (e.g., widget.name), you need to display that properly. The case is: $("#somePElement).innerHTML = widget.name; //in Arabic To display it properly, we need something like the algorithm described in: http://www.iamcal.com/understanding-bidirectional-text/ WDYT? [1] http://dev.w3.org/2006/waf/widgets/#rule-for-getting-a-single-attribute-valu0 [2] http://www.w3.org/TR/widgets/#rule-for-getting-text-content -- Marcos Caceres Opera Software ASA, http://www.opera.com/ http://datadriven.com.au
Received on Tuesday, 5 October 2010 20:23:52 UTC