PHPackages                             owowagency/wordsmith-cli - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. owowagency/wordsmith-cli

ActiveLibrary

owowagency/wordsmith-cli
========================

1.11.0(2y ago)011[1 issues](https://github.com/owowagency/wordsmith-cli/issues)Rust

Since Oct 25Pushed 2y ago2 watchersCompare

[ Source](https://github.com/owowagency/wordsmith-cli)[ Packagist](https://packagist.org/packages/owowagency/wordsmith-cli)[ RSS](/packages/owowagency-wordsmith-cli/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (11)Used By (0)

Wordsmith CLI
=============

[](#wordsmith-cli)

1. [Usage](#usage)
    1. [NPM](#npm)
    2. [Composer](#composer)
    3. [Github actions](#github-actions)
2. [Commands](#commands)
    1. [List projects](#list-projects)
    2. [Pull](#pull)
    3. [Push](#push)
3. [Configuration](#configuration)
    1. [Top level](#top-level)
    2. [Targets](#targets)
    3. [Supported formats](#supported-formats)
4. [Example configuration](#example-configuration)

Usage
-----

[](#usage)

### NPM

[](#npm)

You can use the CLI using `npx` or by installing it with your preferred package manager:

```
npx @owowagency/wordsmith-cli --help

# npm
npm install -g @owowagency/wordsmith-cli
# yarn
yarn global add @owowagency/wordsmith-cli
# pnpm
pnpm install -g @owowagency/wordsmith-cli

wordsmith --help
```

You can also install it per project and use it as a script:

```
# npm
npm install @owowagency/wordsmith-cli
# yarn
yarn add @owowagency/wordsmith-cli
# pnpm
pnpm install @owowagency/wordsmith-cli
```

Then add the following to your `package.json`:

```
{
    "scripts": {
        "wordsmith": "wordsmith"
    }
}
```

### Composer

[](#composer)

To use the CLI using composer, install it using:

```
composer require owowagency/wordsmith-cli
```

Then add the following to your `composer.json`:

```
{
    "scripts": {
        "wordsmith": "wordsmith"
    }
}
```

```
composer wordsmith -- --help
```

### Github actions

[](#github-actions)

To use the CLI in Github actions, use the [wordsmith-action](https://github.com/owowagency/wordsmith-action)

Commands
--------

[](#commands)

### List Projects

[](#list-projects)

Lists all projects in the scope of the access token, which can be configured in `wordsmith.yml`, see [Configuration](#configuration)

```
wordsmith list-projects --env=wordsmith.yml
```

shortlongtypedefaultdescription`-e``--env``String``wordsmith.yml`Path to the configuration file`--access-token``String``wordsmith.yml`Access token`--verbose``Bool``false`Enables verbose logging### Pull

[](#pull)

Pulls translation files from the API, translation files can be configured in `wordsmith.yml`, see [Configuration](#configuration)

```
wordsmith pull --env=wordsmith.yml
```

shortlongtypedefaultdescription`-e``--env``String``wordsmith.yml`Path to the configuration file`--access-token``String``wordsmith.yml`Access token`--verbose``Bool``false`Enables verbose logging### Push

[](#push)

Pushes translation files to the API, translation files can be configured in `wordsmith.yml`, see [Configuration](#configuration)

```
wordsmith push --env=wordsmith.yml --force --verify
```

shortlongtypedefaultdescription`-e``--env``String``wordsmith.yml`Path to the configuration file`--access-token``String``wordsmith.yml`Access token`-f``--force``Bool``false`Overwrite existing translations`-v``--verify``Bool``false`Verify pushed translations`--verbose``Bool``false`Enables verbose loggingConfiguration
-------------

[](#configuration)

Wordsmith CLI accepts YAML configuration files, the default configuration file is `wordsmith.yml` but can be overwritten using the `--env` flag on push and pull commands

### Top level

[](#top-level)

nametypedescription`project-id``Number`ID of the project`token``String`Access token or environment variable for access token, default: ${{ WORDMSMITH\_ACCESS\_TOKEN }}`targets``Target[]`See [Targets](#targets)### Targets

[](#targets)

Any remaining properties will be passed on to the API when pushing or pulling.

nametypedescription`file``String`Path to the translation file, `{locale}` will be replaced with the locale e.g. `values-{locale}/strings.xml` will become `values-en/strings.xml``default-locale-override``String?`Path override for the default locale, this may be useful on Android where the default strings are stored in `values/` instead of `values-{locale}/``locales``String[]`Locales to pull/push, defaults to existing project locales`types``(pull | push)[]`Enables push and/or pull for this target`file-type``String`The file format of the translation file, see [Supported formats](#supported-formats)`tags``String[]`Pull only translations with given tags or attach tags to pushed translations, defaults to `[]`### Supported formats

[](#supported-formats)

- `apple-strings` (iOS)
- `android-strings` (Android xml)
- `json`
- `csv`
- `i18next` (i18next)
- `po` (Gettext)
- `apple-xliff`
- `angular-xliff`
- `symfony-xliff`

Example Configuration
---------------------

[](#example-configuration)

```
project-id: 1
# Use "${{ ENV_VARIABLE_NAME }}" to use environment variables (recommended)
# Access tokens can also be stored in the config file directly (not recommended)
# Defaults: ${{ WORDSMITH_ACCESS_TOKEN }}
token: ${{ WORDSMITH_ACCESS_TOKEN }}
targets:
    # The file to use when pulling/pushing, {locale} will be replaced by the pulled/pushed locale, e.g. locales/values-en/strings-web.xml
  - file: locales/values-{locale}/strings-app.xml
    # [Optional] The file to use when pulling/pushing the default locale
    default-locale-override: locales/values/strings-app.xml
    # Types of this target, possible values: push, pull
    types:
      - push
      - pull
    # Format of the file, possible values:
    # - apple-strings (iOS Localizable string files)
    # - android-strings (XML Android string files)
    # - csv
    # - i18next
    # - json
    file-type: android-strings
    # [Optional] tags to include when pulling/pushing this file
    tags:
      - app
  - file: locales/values-{locale}/strings-library.xml
    default-locale-override: locales/values/strings-library.xml
    types:
      - push
      - pull
    file-type: android-strings
    tags:
      - library
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 78.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

10

Last Release

919d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9c2baff8052ff4d3fdf2697fba4a31b7fb926bdc1d372eaccab8cb11f9a37f2a?d=identicon)[thomasowow](/maintainers/thomasowow)

---

Top Contributors

[![bb441db](https://avatars.githubusercontent.com/u/24250661?v=4)](https://github.com/bb441db "bb441db (104 commits)")[![Sjoertjuh](https://avatars.githubusercontent.com/u/63722509?v=4)](https://github.com/Sjoertjuh "Sjoertjuh (15 commits)")[![semantic-release-bot](https://avatars.githubusercontent.com/u/32174276?v=4)](https://github.com/semantic-release-bot "semantic-release-bot (11 commits)")[![thomasowow](https://avatars.githubusercontent.com/u/45201651?v=4)](https://github.com/thomasowow "thomasowow (2 commits)")

### Embed Badge

![Health badge](/badges/owowagency-wordsmith-cli/health.svg)

```
[![Health](https://phpackages.com/badges/owowagency-wordsmith-cli/health.svg)](https://phpackages.com/packages/owowagency-wordsmith-cli)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
