PHPackages                             cavernbay/translation-bundle - 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. [Localization &amp; i18n](/categories/localization)
4. /
5. cavernbay/translation-bundle

ActiveSymfony-bundle[Localization &amp; i18n](/categories/localization)

cavernbay/translation-bundle
============================

Symfony Tool to help Import/Export (missing) translations

1.0.4(3y ago)010MITPHPPHP ^8.1

Since Jan 29Pushed 3y ago1 watchersCompare

[ Source](https://github.com/cavernbay/translation-bundle)[ Packagist](https://packagist.org/packages/cavernbay/translation-bundle)[ RSS](/packages/cavernbay-translation-bundle/feed)WikiDiscussions main Synced today

READMEChangelog (5)Dependencies (8)Versions (6)Used By (0)

CavernBay Translation Bundle
============================

[](#cavernbay-translation-bundle)

> This is a reworked fork of kilik/translation-bundle, adapted to symfony 5 and symfony 6 and php 8.1+. If you need translations for older versions, you can use kilik/translation-bundle instead

CBTB (CavernBay Translation Bundle) is a tool to be used with Symfony Translator. It tries to simplify the exchanges with the (human) translators.

From the command line you can export translations (filtering with bundles names, domains, and locales) to CSV (Tab separators).

Your translator (colleague, service provider, etc...) can open CSV files with specific translator tools (or with Office Software).

Then, you can import updated translations to your project.

The translations made in vendors are also supported (useful when you have to work on big applications with a lot of bundles).

Concepts:

- your project is fully translated in a locale (locale reference, fallback)
- it aims to simplify the process to translate missing translations with non-team people

Add this bundle to your application
===================================

[](#add-this-bundle-to-your-application)

```
composer require cavernbay/translation-bundle

```

Then, add this line to your bundles.php:

```
    $bundles = [
        // ...
        new CavernBay\TranslationBundle\CavernBayTranslationBundle(),
        // ...
    ];

```

Export translations
===================

[](#export-translations)

Export translations to CSV:

export all translations, with EN locale as reference to a file:

```
./bin/console cb:translation:export en all all ~/translations.csv

```

export translations, with EN locale as reference, and match missing translations to FR or ES to a file:

```
./bin/console cb:translation:export en fr,es AcmeBundle ~/translations.csv

```

work on some bundles at the same time:

```
./bin/console cb:translation:export en fr,es AcmeBundle,MyOtherBundle ~/translations.csv

```

export only lines with missing translations:

```
./bin/console cb:translation:export en fr,es AcmeBundle --only-missing ~/translations.csv

```

export only some domains:

```
./bin/console cb:translation:export en fr,es AcmeBundle --domains messages,validators ~/translations.csv

```

export application only translations:

```
./bin/console cb:translation:export en fr app ~/translations.csv

```

Import translations
===================

[](#import-translations)

Import translations from CSV (translations are merged with your current project translations).

import all translations from your CSV file, for a given locales:

```
./bin/console cb:translation:import fr ~/translations.csv

```

import all translations from your CSV file, overriding existing translation keys:

```
./bin/console cb:translation:import fr ~/translations.csv -o

```

import translations from your CSV file, for a specific bundle, for a given locales:

```
./bin/console cb:translation:import fr --bundles AcmeBundle ~/translations.csv

```

import translations from your CSV file, for domains, for a given locales:

```
./bin/console cb:translation:import fr --domains messages,validators AcmeBundle ~/translations.csv

```

you can also import translations with many locales:

```
./bin/console cb:translation:import fr,es,nl ~/translations.csv

```

import translations from your CSV file, for application only translations (Symfony 3.4+ / Symfony 4+1):

```
./bin/console cb:translation:import fr --bundles app ~/translations.csv

```

For bundle developers
=====================

[](#for-bundle-developers)

```
# prepare tests
./prepare-tests.sh

# run tests
./run-tests.sh

# launch composer
./scripts/composer.sh
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~0 days

Total

5

Last Release

1252d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2ece848a4abd33cead01bb2656c867ec968006831fd61a85a19fee011bd0f419?d=identicon)[stexaz](/maintainers/stexaz)

---

Top Contributors

[![mitch10593](https://avatars.githubusercontent.com/u/10455897?v=4)](https://github.com/mitch10593 "mitch10593 (21 commits)")[![andriuspetrauskis](https://avatars.githubusercontent.com/u/2466985?v=4)](https://github.com/andriuspetrauskis "andriuspetrauskis (15 commits)")[![raxmania](https://avatars.githubusercontent.com/u/48412874?v=4)](https://github.com/raxmania "raxmania (5 commits)")[![artdeoich](https://avatars.githubusercontent.com/u/7941285?v=4)](https://github.com/artdeoich "artdeoich (2 commits)")[![ypereirareis](https://avatars.githubusercontent.com/u/6838923?v=4)](https://github.com/ypereirareis "ypereirareis (2 commits)")

---

Tags

symfonytranslation

### Embed Badge

![Health badge](/badges/cavernbay-translation-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/cavernbay-translation-bundle/health.svg)](https://phpackages.com/packages/cavernbay-translation-bundle)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M508](/packages/pimcore-pimcore)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

21866.0M1.7k](/packages/drupal-core)[silverstripe/framework

The SilverStripe framework

7313.7M2.8k](/packages/silverstripe-framework)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M421](/packages/drupal-core-recommended)

PHPackages © 2026

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