<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
#email-body { min-width: 30em !important; }
#email-page { padding: 8px !important; }
#email-banner { padding: 8px 8px 0 8px !important; }
#email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
#email-fields { padding: 0 8px 8px 8px !important; }
#email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
<tr valign="top">
<td id="email-page" style="padding:16px !important;">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
<tr valign="top">
<td bgcolor="#4d5c47" style="background-color:#4d5c47;color:#ffffcc;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="http://www.crosswire.org/bugs/s/en_US-l73y3/783/14/_/jira-logo-scaled.png" alt="" style="vertical-align:top;" /></td>
</tr><tr valign="top">
<td id="email-banner" style="padding:32px 32px 0 32px;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
<img id="email-avatar" src="http://www.crosswire.org/bugs/secure/useravatar?avatarId=10062" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="dmsmith" id="email_dmsmith" href="http://www.crosswire.org/bugs/secure/ViewProfile.jspa?name=dmsmith" style="color:#000000;">DM Smith</a>
commented on <img src="http://www.crosswire.org/bugs/images/icons/bug.gif" height="16" width="16" border="0" align="absmiddle" alt="Bug"> <a style='color:#000000;text-decoration:none;' href='http://www.crosswire.org/bugs/browse/JS-251'>JS-251</a>
</div>
<div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
<a style='color:#000000;text-decoration:none;' href='http://www.crosswire.org/bugs/browse/JS-251'><strong>Fix all Language problems</strong></a>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td id="email-fields" style="padding:0 32px 32px 32px;">
<table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
<tr valign="top">
<td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
<div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;"><p>I've been looking at the issues regarding the Language and Languages classes; bcp-47 (the standard that defines the designation of Locale); java7's support for it in Locale; and what SWORD has defined.</p>
<p>First, the basic purpose of the JSword language classes is to provide a friendly name for the language code. It is not meant as Locale support.</p>
<p>There are 7000+ languages, so JSword splits these into two.<br/>
First Part:<br/>
Those languages that are in use by SWORD modules on the CrossWire server and those found on the CrossWire wiki under <a href="http://www.crosswire.org/wiki/Localized_Language_Names">http://www.crosswire.org/wiki/Localized_Language_Names</a>.</p>
<p>These are in the iso639.properties property files. When we started out, this name was appropriate, but it has morphed into names in the above list. So really it is a subset of bcp-47.</p>
<p>These files can be localized. The default file has localized names from the wiki. Failing that from www.sil.org/iso639-3.</p>
<p>The iso639_en.properties file is similar to the default file, but has the localized name in parens following the English name.</p>
<p>So the default is not English.</p>
<p>Second Part:<br/>
As a fall back to the First Part, if there is a new SWORD module for a language that is not covered by the first part, we can do one of two things:<br/>
a) Just show the code as the language name.<br/>
b) Show the name as defined by SIL's iso639-3 files.</p>
<p>The property file iso639full.properties is a map of 2 and 3 letter language codes to the name of the language from SIL's files. This is a huge, slow property file.</p>
<p>Since this is a fall back, this file has no need to be internationalized.</p>
<p>BCP-47 and SWORD:<br/>
This standard far exceeds what SWORD allows in a Lang field. SWORD defines the field as having a required part and two optional parts: LL-SSSS-CC<br/>
Where LL is required and a 2 or 3 letter language code.<br/>
Where -SSSS is the optional, 4 character script.<br/>
Where -CC is the optional, 2 character region code.<br/>
The following are valid combinations:<br/>
LL<br/>
LL-SSSS<br/>
LL-CC<br/>
LL-SSSS-CC</p>
<p>The parts are case insensitive.</p>
<p>In Chris Little's recent email to the sword-devel list, the lookup algorithm should be:<br/>
Given LL, look for LL.<br/>
Given LL-SSSS, look for LL-SSSS and failing that look for LL.<br/>
Given LL-CC, look for LL-CC and failing that look for LL.<br/>
Given LL-SSSS-CC, look for LL-SSSS-CC, LL-SSSS, LL-CC and lastly LL.</p>
<p>In the last one SSSS is prioritized over CC because the script has more impact on the representation of the name than the region does.</p>
<p>JSword does not properly support this. I thought it did.</p>
<p>Java Locale:<br/>
Java Locale has a fatal flaw in that if given "he" (Hebrew), "yi" (Yiddish) or "id" (Indonesian) or no-NO-NY (Norwegian spoken in the Norsk region) it will change these to "iw", "ji", "in" and "nn-NO" and not remember what it was given. There are a few other re-write exceptions too. The Hebrew, Indonesian and Norsk affect our users.</p>
<p>Java 7:<br/>
Introduces support for script. And it introduces a parser via Locale.forLanguageTag(); But given the flaw above we'd have to write a work around for what it does. Also, it will be quite a while before we get to Java 7.</p>
<p>JSword's Languages and Language classes:<br/>
The Languages classes is meant to support the lookup of a SWORD Lang field and provide a friendly name for it.<br/>
The Language class is meant to be a holder of the result of that lookup.</p>
<p>Currently this needs some love to get to do what it needs to do. I'm trying to provide it.</p>
<p>For example Languages does not expect - between parts but _ (I thought it was the other way around). It ignores the _ and everything that follows. This needs to be replaced with a proper parsing of LL, SSSS and CC.<br/>
The lookup currently is for only the LL. It needs to change to do all the lookup aspects.</p>
<p>Language needs to change to include SSSS. Currently, it does not store the value used to do the lookup, but rather what was effective in doing the lookup.</p>
<p>There are a number of issues open on the problem and I hope to resolve them all, but may need some help in reproducing them.</p></div>
<div style="color:#505050;padding:4px 0 0 0;"> </div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><!-- End #email-page -->
</tr>
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
This message is automatically generated by JIRA.<br />
If you think it was sent incorrectly, please contact your JIRA administrators<br />
For more information on JIRA, see: <a style='color:#000000;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
</td>
</tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->