W3C home > Mailing lists > Public > public-multilingualweb-lt@w3.org > July 2012

RE: [ACTION 107] Locale Filter

From: Yves Savourel <ysavourel@enlaso.com>
Date: Wed, 25 Jul 2012 17:47:19 +0200
To: "'Felix Sasaki'" <fsasaki@w3.org>, "'Shaun McCance'" <shaunm@gnome.org>
CC: <public-multilingualweb-lt@w3.org>
Message-ID: <assp.0553eef4d0.assp.0553d55a17.011801cd6a7c$c7921120$56b63360$@com>
> <its:localeFilterRule selector="//legalnotice" localeFilterType="exclude" localeFilterList=""/>
> don't add the legalnotice to all locals

Shouldn't that be:

Add the legalnotice to all locales? (none is excluded)

-ys


From: Felix Sasaki [mailto:fsasaki@w3.org] 
Sent: Wednesday, July 25, 2012 5:21 PM
To: Shaun McCance
Cc: public-multilingualweb-lt@w3.org
Subject: Re: [ACTION 107] Locale Filter

Hi Shaun, all,

a question, or rather proposal on this.

It seems it is possible to express the meaning of "all" and "none" at
http://www.w3.org/International/multilingualweb/lt/drafts/its20/its20.html#LocaleFilter
via "include" and "exclude", with just the language range list.

<its:localeFilterRule selector="//legalnotice" localeFilterType="include" localeFilterList=""/>

= don't add the legalnotice to any local

<its:localeFilterRule selector="//legalnotice" localeFilterType="include" localeFilterList="*"/>

= add the legalnotice to all locals

<its:localeFilterRule selector="//legalnotice" localeFilterType="exclude" localeFilterList="*"/>

= don't add the legalnotice to any local

<its:localeFilterRule selector="//legalnotice" localeFilterType="exclude" localeFilterList=""/>

= don't add the legalnotice to all locals


The basic language range in BCP47
http://tools.ietf.org/html/bcp47#section-2.1
contains the  "*" anyway. So if we keep "all" and "none", the interaction between the four values "all", "none", "inlcude" and "exclude" with "*" or the empty list or ranges gets messy.

So the idea would be
- get rid of "all" and "none"
- make clear in a note that the list may be empty and that languages ranges can be just "*", with the effects described above.

I'm happy to draft that if you and others are OK with this.

Felix

2012/7/16 Shaun McCance <shaunm@gnome.org>
Here's a second take on locale filter. Felix recommended using
a language range from RFC 4647. In fact, we want a priority
list of language ranges. RFC 4647 does not define the syntax
for these, but it defines semantics. [Section 2.3] It uses
a comma-separated list as an example syntax. I used that.

http://tools.ietf.org/html/rfc4647

Also, I've decided to use basic language ranges rather than
extended language ranges. [Sections 2.1, 2.2, 3.3.1, 3.3.2]
Basic ranges either match exactly or match initial substrings
with a hyphen. You can use '*' to mean "anything", but you
can't use it as a subtag, e.g. '*-CH'. If you want to filter
for a region, you'll have to enumerate the languages, e.g.
'de-CH, fr-CH, it-CH'.

I chose basic filtering because I think the algorithm for
extended filtering is tricky (but not impossible) to do in
XSLT 1.0, at least without EXSLT. Basic filtering is easy.
If anybody feels strongly that we should use extended
filtering, speak up. I'm not really opposed.

If there's no objections, I'll put together some examples
and add this to the ODD file.


= Locale Filter

== Definition

The Locale Filter data category specifies that a node is only
applicable to certain locales, or that it is not applicable
to certain locales.

This data category can be used for several purposes, including,
but not limited to:

 * Include a legal notice only in locales for certain regions.
 * Drop editorial notes from all localized output.
The Locale Filter data category associates with each selected
node a filter type and a language priority list conforming to
RFC 4647. The language priority list is a comma-separated list
of basic language ranges. Whitespace surrounding language ranges
is ignored.

The locale filter type can take the following values:

 * "all": The node is included in all locales.
 * "none": The node is included in no locales.
 * "include": The node is only included in locales that match
   at least one language range in the language priority list
   using basic filtering.
 * "exclude": The node is included in all locales except those
   that match at least one language range in the language priority
   list using basic filtering.


If the locale filter type is "all" or "none", a language priority
list SHOULD NOT be provided. If one is, it MUST be ignored. If the
locale filter type is "include" or "exclude", a language priority
list SHOULD be provided. If one is not, it MUST default to the
empty list.

== Implementation

The Locale Filter data category can be expressed with global
rules, or locally on an individual element. The information
applies to the textual content of the element, including child
elements and attributes. The default is that the locale filter
type is "all".
Implementations MUST NOT combine language priority lists from
multiple rules or local attributes.

GLOBAL: The localeFilterRule element contains the following:

 * A required selector attribute. It contains an XPath expression
   which selects the nodes to which this rule applies.

 * A required localeFilterType attribute with the value "all",
   "none", "include", or "exclude".

 * An optional localeFilterList attribute with a comma-separated
   language priority list.

LOCAL: The following local markup is available for the Locale
Filter data category:

 * A localeFilterType attribute with the value "all", "none",
   "include", or "exclude".
 * A localFilterList attribute with a comma-separated language
   priority list.







-- 
Felix Sasaki
DFKI / W3C Fellow
Received on Wednesday, 25 July 2012 15:47:47 UTC

This archive was generated by hypermail 2.3.1 : Sunday, 9 June 2013 00:24:57 UTC