<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
	<meta http-equiv="Content-Type" content= "text/html; charset=utf-8">
	<meta http-equiv="Content-Language" content="en-us">
    <meta name="COPYRIGHT" content= "Copyright (c) 1991-2020 Unicode, Inc. All rights reserved.">
    <meta name="DESCRIPTION" content= "Readme for Unicode CLDR with version number and other information.">
    <title>ReadMe for Unicode CLDR</title>
  </head>

  <body>
    <h2>Unicode Common Locale Data Repository (CLDR)</h2>
    <h3>ReadMe for Unicode <abbr title="Common Locale Data Repository">CLDR</abbr> version 38.1</h3>
    <p>Last updated: 2020-Dec-09</p>

    <!--<p><b>Note:</b> CLDR 38.1 is in development and not recommended for use at this stage.</p>-->
    <!--<p><b>Note:</b> This is the milestone 1 version of CLDR 38.1, intended for those wishing to do pre-release testing.
    It is not recommended for production use.</p>-->
    <!--<p><b>Note:</b> This is a preliminary version of CLDR 38.1, intended for those wishing to do pre-release testing.
    It is not recommended for production use.</p>-->
    <!--<p><b>Note:</b> This is a pre-release candidate version of CLDR 38.1, intended for testing.
    It is not recommended for production use.</p>-->
    <p>This is the final release version of CLDR 38.1.</p>
    
    <p><strong>Important notes for CLDR 36 and later:</strong></p>
    <ul>
      <li>The CLDR repository has switched from subversion to git.</li>
      <li>Data in the main CLDR repository now includes some elements with the value “↑↑↑” indicating
    	that translators have explicitly determined that the inherited value should always be used.</li>
      <li>To generate data in the form that was used for CLDR 35.1 and earlier, in which “↑↑↑” is
    	resolved appropriately (either removed or replaced with an apropriate value) and other minimization
    	is performed, a new tool GenerateProductionData is provided (command-line options provide the
    	ability to specify source and destination directory, among other things).</li>
      <li>CLDR data that has been processed by GenerateProductionData is available in the parallel
    	“cldr-staging” repository.</li>
    </ul>

    <p>For further information:</p>
    <ul>
      <li>Information about <a href="http://cldr.unicode.org/index/downloads">CLDR releases and downloads</a>,
        including the data files and LDML specification associated with each release.</li>
      <li>Information about <a href="http://cldr.unicode.org/tools">Building and running CLDR Tools</a></li>
    </ul>
    <p>Tools Quickstart:</p>
    <ol>
      <li>Build <code>cldr.jar</code>:<br>
        <code><b>ant -f tools/java/build.xml jar</b></code>
      </li>
      <li>List available tools:<br>
        <code><b>java -jar tools/java/cldr.jar</b></code>
      </li>
      <li>List less-than-documented tools:<br>
        <code><b>java -jar tools/java/cldr.jar -l</b></code>
      </li>
      <li>Run the XML Validator against some <code>file.xml</code>:<br>
        <code><b>java -jar tools/java/cldr.jar validate <i>../path/to/your/file.xml</i></b></code>
      </li>
      <li>Run some other tool that doesn't have a nice short alias like 'validate':<br>
        <code><b>java -jar tools/java/cldr.jar <i>org.unicode.cldr.draft.NormalizedIdentifierParser</i></b></code>
      </li>
      <li>Convert LDML to JSON data:<br>
        <code><b>java -DCLDR_DIR=<i>/path/to/cldr/data</i> -jar tools/java/cldr.jar ldml2json -r true</b></code>
      </li>
      <li>More info:<br>
        <a href="http://cldr.unicode.org/tools">CLDR Tools Website</a>
      </li>
    </ol>

    <p>Licenses:</p>
    <ul>
 	  <li>Usage of CLDR data and software is governed by the <a href="http://www.unicode.org/copyright.html">Unicode Terms of Use</a>,
 	    a copy of which is included as unicode-license.txt.</li>
 	  <li>Some CLDR tools depend on libraries in tools/java/libs/; use of these libraries is governed by separate license agreements.
 	  <ul>
 	    <li>Use of the ICU libraries is subject to the
 	    <a href="https://github.com/unicode-org/icu/blob/master/icu4j/main/shared/licenses/LICENSE">ICU License</a>,
 	    included as ICU-LICENSE.</li>
 	    <li>Use of the Guava, Xerces, and Myanmar Tools libraries is subject to the
 	    <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License</a>,
 	    included as apache-license.txt.</li>
 	  </ul>
 	  </li>
 	</ul>

    <hr>
    <p>Copyright &copy; 1991-2020 Unicode, Inc.<br>
    All rights reserved.<br>
    <a href="http://www.unicode.org/copyright.html">Terms of use</a></p>
  </body>
</html>
