Updating CLDR-JSON
January 31, 2025 · View on GitHub
Prerequisites
- A UNIX-like environment
- git
- java and maven
- plenty of memory
Instructions
Setup
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)
Building
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.
Troubleshooting
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
Updating the Repository
- 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.
Publishing
- 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."
Final
- When the release is final, get the PR approved and merge it into main, deleting the
v44branch.
Customization
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
License & Copyright
- 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
Copyright © 1991-2025 Unicode, Inc. All rights reserved. Terms of use