[ 
https://issues.apache.org/jira/browse/SIS-153?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Desruisseaux closed SIS-153.
-----------------------------------


> XML marshalling of country codes shall use ISO 3166 alpha-2 (not alpha-3)
> -------------------------------------------------------------------------
>
>                 Key: SIS-153
>                 URL: https://issues.apache.org/jira/browse/SIS-153
>             Project: Spatial Information Systems
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 0.3
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>             Fix For: 0.4
>
>
> {{java.util.Locale}} can represent language and country codes using 2 letters 
> or 3 letters codes. Conversions from 2 to 3 letters codes are performed by 
> the {{Locale.getISO3Language()}} and {{Locale.getISO3Country()}} methods.
> When marshalling an ISO 19139 document, Apache SIS 0.3 uses the 3 letters 
> variant in both cases. However this cause SIS to be unable to unmarshal its 
> own documents, because the {{java.util.Locale}} does not recognize 3 letters 
> country codes. Example:
> {code:java}
> Locale locale = new Locale("en", "GB");
> System.out.println(locale.getLanguage());        // Prints "en"
> System.out.println(locale.getISO3Language());    // Prints "eng"
> System.out.println(locale.getDisplayLanguage()); // Prints "anglais" on a 
> French system.
> System.out.println(locale.getCountry());         // Prints "GB"
> System.out.println(locale.getISO3Country());     // Prints "GBR"
> System.out.println(locale.getDisplayCountry());  // Prints "Royaume-Uni" on a 
> French system.
> locale = new Locale("eng", "GBR");               // GBR is the 3 letters code 
> for GB
> System.out.println(locale.getLanguage());        // Prints "eng"
> System.out.println(locale.getISO3Language());    // Prints "eng"
> System.out.println(locale.getDisplayLanguage()); // Prints "anglais" on a 
> French system.
> System.out.println(locale.getCountry());         // Prints "GBR"
> System.out.println(locale.getISO3Country());     // MissingResourceException: 
> Couldn't find 3-letter country code for GBR
> {code}
> Note that this behaviour is consistent with {{java.util.Locale}} javadoc. 
> Looking at what OGC/ISO does on 
> [schemas.opengis.net|http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/ML_gmxCodelists.xml],
>  we can see that they use:
> * 3 letters codes for languages
> * 2 letters code for countries
> We should align Apache SIS 0.4 on the same practice. This would allow SIS to 
> unmarshal its own documents. However this would not solve the issue when 
> reading a document from an other producer using the 3 letters country codes. 
> For now we hope that those cases are rare...
> Note that this JIRA task is about the country code only. Leaving the language 
> codes as 3 letters codes leaves an other issue: while {{java.util.Locale}} 
> works fine with them, we did not verified if {{java.util.ResourceBundle}} is 
> capable to convert back to 2 letters language codes before to lookup for 
> resources.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to