- A UNIX-like environment
- git
- java and maven
- plenty of memory
Check out repos (If you use a different directory layout, see Customization)
- Check out this repo
cldr-json. (Note: Big.) - Check out the
cldr-stagingrepo as a sibling to cldr-json. This will be the data source. (Note: Very big.) Use a release tag if possible. - Check out the
cldrrepo as a sibling to cldr-json and set it up so maven builds are possible. - Create the file
local-config.sh, make it executable, and setVERSIONappropriately; for example,VERSION="44.0.0-ALPHA2".
Make sure your cldr-json directory is otherwise clean (git status)
cdtocldr-json- Delete the
cldr-json/cldr-jsonsubdirectory (the subdirectory ofcldr-json). This way, git will tell you what has changed, and you can see if any files failed to regenerate or were newly added. - Run the script
cldr-generate-json.sh - Data will be updated in the recreated
cldr-jsonsubdirectory. - Also note that the
PACKAGES.mdfile at the TOP level may be updateed, make sure to commit this as well.
git statusis your friend. At least, until too many files change.- If a
cldr-json/supplementalorcldr-json/otheror other such subdirectory shows up not prefixed withcldr-, there's probably something wrong with thecldr-jsonmapping.- Sadly, there is no documentation about how to update the tooling. TODO: CLDR-16445
- Run
git checkout -b ...to create a new branch. Typical practice is to create a new branch for a major version, such asv44, and only merge it back tomainupon release. - Run
git statusto check whether there are any newly added files/directories such as for new locales, or removed files/directories. If you see any files or directories namedother…, stop, because there's a generation problem. - Run
git add cldr-jsonto add the entire nestedcldr-jsonsubdirectory. - Open a draft pull request for the
v44branch to be able to track updates to the data in progress.
- Run the script
cldr-generate-zip.shto generate zipfiles underdist/; their names will includeVERSION, for example:cldr-44.0.0-ALPHA2-json-full.zip. - Create a release tag matching VERSION in this repository. Create a GitHub release, use other releases as a guide. Make sure the release is marked as "pre-release" if it isn't final.
- Update the npm packages. Each sub-subdirectory of
cldr-json/cldr-jsonis a separate npm package. The following script will preview (dry run) publishing to npm under thebetatag. Check the version carefully—not to put too fine a point on it, but once published, a particular version number cannot be republished. (Tags may be moved as needed.)
(cd cldr-json; npm login; for repo in $(ls); do (cd $repo; npm publish --tag beta --dry-run); done)npm loginis needed, otherwise a dry run may seem to succeed but without--dry-runthere may be a mysterious error message such asnpm ERR! 404 'cldr-annotations-derived-full@44.0.0' is not in this registry.--tagshould be followed byalpha,beta, orlatest. It should NOT be followed by a full tag such as44.0.0-ALPHA2since that would result innpm ERR! Tag name must not be a valid SemVer range: 44.0.0-ALPHA2.
- Upload the zipfiles from
dist/to the release page, by dragging and dropping them where it says "Attach binaries by dropping them here or selecting them."
- When the release is final, get the PR approved and merge it into main, deleting the
v44branch.
See cldr-config.sh for customization options.
You must create an executable script named local-config.sh with
values to update, at minimum VERSION, but also TYPES, MATCH or DRAFTSTATUS
Example, if you have a different directory layout:
# VERSION must be set
VERSION=43.0.0-ALPHA2
# CLDR_DIR defaults to ../cldr
CLDR_DIR=../cldr-maint-43
# INDATA defaults to ../cldr-staging/production
INDATA=../cldr-staging-other/production- Usage of CLDR data and software is governed by the Unicode Terms of Use a copy of which is included as unicode-license.txt.
SPDX-License-Identifier: Unicode-DFS-2016
Copyright © 1991-2025 Unicode, Inc. All rights reserved. Terms of use