# scratch-l10n

> Localization for the Scratch 3.0 components

Latest version **6.1.118** (published 2026-09-25) · AGPL-3.0-only license · 0 weekly downloads

## Install

```sh
npm install scratch-l10n
pnpm add scratch-l10n
yarn add scratch-l10n
bun add scratch-l10n
```

Provides the commands `tx-push-src`, `build-i18n-src`.

## Health

**Score 60/100 (C)** — status: active.

Positive: no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support; large bundle.

## Facts

| | |
|---|---|
| Version | 6.1.118 |
| Published | 2026-09-25 |
| First published | 2017-10-04 |
| Weekly downloads | 0 |
| License | AGPL-3.0-only |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 57.3 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 72 |
| Author | Massachusetts Institute of Technology |
| Maintainers | cwillisf.scratch |

## Links

- npm: https://www.npmjs.com/package/scratch-l10n
- Repository: https://github.com/scratchfoundation/scratch-l10n
- Homepage: https://github.com/scratchfoundation/scratch-l10n#readme
- Issues: https://github.com/scratchfoundation/scratch-l10n/issues
- npm.io page: https://npm.io/package/scratch-l10n

## Dependencies (8)

- [tsx](https://npm.io/package/tsx.md) 4.23.15
- [glob](https://npm.io/package/glob.md) 7.2.3
- [async](https://npm.io/package/async.md) 3.2.6
- [mkdirp](https://npm.io/package/mkdirp.md) 3.0.1
- [transifex](https://npm.io/package/transifex.md) 1.6.6
- [@transifex/api](https://npm.io/package/@transifex/api.md) 7.1.6
- [lodash.defaultsdeep](https://npm.io/package/lodash.defaultsdeep.md) 4.6.1
- [format-message-parse](https://npm.io/package/format-message-parse.md) 6.2.4

## Recent versions

- 6.1.118 (latest) — 2026-09-25
- 6.1.117 — 2026-09-24
- 6.1.116 — 2026-09-18
- 6.1.115 — 2026-09-17
- 6.1.114 — 2026-09-16
- 6.1.113 — 2026-09-15
- 6.1.112 — 2026-09-02
- 6.1.111 — 2026-08-21
- 6.1.110 — 2026-08-16
- 6.1.109 — 2026-08-13
- 6.1.108 — 2026-08-10
- 6.1.107 — 2026-08-10
- 6.1.106 — 2026-08-09
- 6.1.105 — 2026-08-08
- 6.1.104 — 2026-08-06
- … 1914 more at https://npm.io/package/scratch-l10n/versions

## README

# scratch-l10n

Translation of all Scratch projects is managed on the Transifex service: https://www.transifex.com/llk/public

This repository collects translations submitted to the Scratch projects on Transifex. **Please do not submit PRs. If
you would like to contribute translations, please sign up to translate on Transifex.**

## Using scratch-l10n in development

Files under `src/` and `dist/` are JavaScript and meant to be used at runtime.

Files under `scripts/` are generally TypeScript and are meant to be used during development or at build time.

Most other directories contain the localization data itself: both source and translated strings.

### Basic Use

```js
import locales, { localeData, isRtl } from 'scratch-l10n'
import editorMessages from 'scratch-l10n/locales/editor-messages'
```

- `locales`: currently supported locales for the Scratch project
- `isRtl`: function that returns true if the locale is one that is written right-to-left
- `localeData`: locale data for the supported locales, in the format accepted by `addLocaleData` required by `react-intl`
- `editorMessages`: the actual message strings for all supported locales for a particular resource. `editorMessages`
  collects all the strings for the interface, extensions and paint-editor.

### Useful Scripts

scratch-l10n provides:

- `build-i18n-src`: script that uses babel and plugins to extract all `FormattedMessage` strings for translation.
  Combines the message from all the source files into one `en.json`
- `tx-push-src`: script to push the `en.json` file to Transifex. Requires that the environment variable `TX_TOKEN` is
  set with a value that has developer access to the Scratch projects on Transifex (i.e. Scratch Team only)

### Versioning

`scratch-l10n` uses semantic versioning - breaking changes will increment the major version number, and new features
(e.g. a new language) will increment the minor version number. Pulling new translations from Transifex is automated
and will increase the patch version.

### Deprecations

We are moving away from using the `tx` cli, so the `.tx/config` file will eventually be deprecated.

## Committing

This project uses [semantic release](https://github.com/semantic-release/semantic-release) to ensure version bumps
follow semver so that projects depending on it don't break unexpectedly.

In order to automatically determine version updates, semantic release expects commit messages to follow the
[conventional-changelog](https://github.com/bcoe/conventional-changelog-standard/blob/master/convention.md)
specification.

Here's a quick introduction:

- Prefix your commit subject with `fix:` if it fixes a bug but doesn't add any new functionality and doesn't change
  the API.
- Prefix your commit subject with `feat:` if it adds new functionality but maintains backwards compatibility.
- Include `BREAKING CHANGE:` as a footer in your commit body, or add `!` to the commit subject, if the change breaks
  compatibility with existing code.
- Other prefixes, such as `chore:`, `docs:`, etc., are allowed but will not change the version or cause a new release.
  These should only be used for changes that do not affect functionality.

### Example commit messages

For more examples, see the [conventional commits documentation](https://www.conventionalcommits.org/en/v1.0.0/#examples).

#### Fix

This will increase the `z` in `Version x.y.z`.

```text
fix: fix typo in the sandwich-making instructions
```

#### Feature

This will increase the `y` in `Version x.y.z` and reset `z` to 0.

```text
feat: add support for halloumi cheese
```

#### Breaking Change

Either of these will increase the `x` in `Version x.y.z` and reset `y` and `z` to 0.

```text
fix: refine our definition of a sandwich

BREAKING CHANGE: support for hot dogs has been removed as we no longer consider them sandwiches
```

```text
fix!: remove support for hot dogs as we no longer consider them sandwiches
```

### Commitizen

You can use the [commitizen CLI](https://github.com/commitizen/cz-cli) to make commits formatted in this way:

```bash
npm install -g commitizen@latest cz-conventional-changelog@latest
```

Now you're ready to make commits using `git cz`.

---
_Source: https://npm.io/package/scratch-l10n · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
