-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define minimum set of supported languages #232
Comments
A good starting point is: https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html |
Proposal is to select the languages that are supported by JDK8. |
Profile call on June 29th: |
A reference on browsers: http://4umi.com/web/html/languagecodes.php |
I think the I18N community and (for different reasons) the WOT community would be unhappy to try to define this for a number of reasons. Can you describe what aspect of the "several complications" you're concerned about? To start with, content rendering capability generally exceeds the availability of locale data. Thanks to Unicode and advanced rendering support present in most browsers and runtime environments, nearly any language--modern or historical--can be rendered. The primary constraint here is generally the provisioning of fonts. General purpose devices (laptops, phones, tablets, etc.) can generally provide at least fallback support for most scripts using fonts such as Noto. Small devices ("things") that are resource constrained generally want to limit storage and may pick-and-choose which language resources to install, perhaps based on configuration on first use. A device in Japan that supports only Japanese fonts, input, etc. by eschewing Chinese and Korean support is probably fine. Device developers won't thank us for requiring support for languages that they don't intend to serve with a given product. Unicode's Common Locale Data Repository [CLDR] project is the basis for modern locale data in most operating environments (OSs, browsers, JDKs, node, etc. etc.). The supported locale list in the latest version include 361 locales at the "full" support level and this number increases over time (twice each year, as new releases ship). A static minimum list cannot track such support and might artificially limit the languages supported by devices--even though the data is widely disseminated. CLDR supports many languages that are not "top of mind" and didn't appear commonly when e.g. JDK8 shipped. For example, the Vunjo ( Also, note that locale systems use a "best fit" or fallback mechanism. For example, there is no I have added this topic to the I18N teleconference this week, which falls on Thursday at 1500UTC. If you can add more info before then, that would be helpful. |
I agree with everything Addison wrote. To the fonts paragraph, I would also add input methods (keyboards).
I'm missing some context here, but in general "supported" is not a binary; there are levels of support. For CLDR we distinguish 3, but there are many more. Does a platform support a language/locale if it doesn't have spell-checking? Etc. |
@aphillips Thanks very much for your comments and thoughts. Note that a thing description is not a markup or format language that targets the rendering of text - it primarily describes the structure and interactions of devices (aka things). These have properties (attributes), actions (~function calls) and in some cases a notification mechanism (events). These structure elements have identifiers and human readable names, that would be used to manage these devices via a common application UI, e.g. on a server or in the cloud. Typical scenarios are the display of an icon with a device name / type for each device on a world map. When the user clicks on that icon he can look into the device details, i.e. inspect or set property values, trigger actions etc. These interaction elements have a name and a human readable description, which could be localized, when the author of the thing description has provided an additional set of localized names and descriptions.
To be pragmatic - I would assume that if we take the intersection of languages that are supported by the majority of runtime envoronments "out of the box", we have selected a common subset that can be implemented by all. Cases that require additional languages can still be used by regular thing descriptions, that are not constrained to a profile, |
@macchiati Please see my previous response for setting the scene. Many of them do not have a (high res alphanumeric) display or a typical ( QUERTY) keyboard and no requirements to render multi-language text. This comes into play when these devices are monitored/managed using an application that was designed for (usually trained) personnel. |
@mlagally Thanks for the reply. I understand what you're doing/trying to do and what the ecosystem is that you're working in.
I am somewhat wary of the phrase usually trained because it is sometimes used to give permission to have a crappy customer experience (the "trained personnel" will take English and like it!). I don't require a lot of training to use a light bulb or a thermostat 😊. I'll point out that the properties (attributes, actions, events and their values) of a Thing should generally be locale-neutral, even though they are serialized on the wire as strings, frequently using English language tokens ( Let's go back to the beginning. Can you explain what you meant by
What "runtime environment" do you have in mind? AFAIK (and to your own point in your comment), it isn't the Thing that does any rendering. It is often a general purpose computing device (PC, phone, tablet, etc.) that is being used to interact with the Thing. These generally have fonts, keyboards, displays, and cetera that are quite capable. |
There will be both: A localized application of course can do anything it wants and is not constrained by the profile.
If you read the description at:
On all these powerful devices you have a runtime environment that has some constraints. https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html We are trying to agree on a common subset of the local codes that work on all common runtime environments, i.e. where the profile can guarantee that consumers will be able to render the multi-language titles and descriptions. |
Thanks @aphillips for your valuable input on this topic. @aphillips wrote:
This is correct. In my opinion, trying to prescribe a fixed set of locales is at best arbitrary and at worst actively discriminating against people who don't speak one of those languages. WebThings Gateway is currently translated into 34 different languages. I wouldn't want to arbitrarily prioritise some of those over others, or discourage the community from translating the interface into new languages which don't appear on a prioritised list. As @macchiati pointed out, support for a certain locale is also not binary. There are levels of support, and layers of potential fallbacks. A Consumer can negotiate a preferred locale with a Thing (see "language negotiation" in section 6.3.2 of WoT Thing Description). Following that negotiation it should make its best effort to render the strings provided rather than stop processing the Thing Description altogether. I think this is another example of "best effort compliance" vs. "strict compliance", see #187. |
There are several complications in rendering text in some languages,see TD description of multi-language text and corresponding heuristics / best effort approach.
The profile should select a minimum set of common languages that are guaranteed to be supported and can be rendered by all compliant consumers.
The text was updated successfully, but these errors were encountered: