PHPackages                             marblecms/marble-translate - 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. marblecms/marble-translate

ActiveMarble-plugin[Localization &amp; i18n](/categories/localization)

marblecms/marble-translate
==========================

AI translation plugin for Marble CMS: DeepL and Google Translate support for Item field values.

v1.0.1(1mo ago)00MITPHPPHP ^8.3

Since Apr 25Pushed 1mo agoCompare

[ Source](https://github.com/marblecms/plugin-translate)[ Packagist](https://packagist.org/packages/marblecms/marble-translate)[ RSS](/packages/marblecms-marble-translate/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

Marble Translate
================

[](#marble-translate)

Machine translation for [Marble CMS](https://github.com/marblecms/admin) item field values using DeepL or Google Translate.

Installation
------------

[](#installation)

```
composer require marblecms/marble-translate
php artisan marble:translate:install
```

Publish config:

```
php artisan vendor:publish --tag=translate-config
```

Configuration (`config/translate.php`)
--------------------------------------

[](#configuration-configtranslatephp)

KeyDefaultDescription`provider``deepl`Default provider: `deepl` or `google``api_key``''`API key for the chosen provider`deepl_pro``false`Use DeepL Pro endpoint (api.deepl.com vs api-free.deepl.com)**.env variables:**

```
TRANSLATE_PROVIDER=deepl
TRANSLATE_API_KEY=your-key-here
TRANSLATE_DEEPL_PRO=false

```

How it works
------------

[](#how-it-works)

1. Admin visits **Structure → Translate** to see all published items with translatable fields
2. Items show a per-language coverage indicator (tick = translated, "Missing" = not yet)
3. Click the arrow button to open the translation workspace for an item
4. Select source language, target language, and provider; click **Translate**
5. The plugin calls the API and creates a **pending TranslationJob** with the results
6. Review the source vs. translated values in the diff table
7. Click **Apply All** to write the translations back to `item_values`, or **Reject** to discard

Applying a job fires the `ItemTranslated` event.

Providers
---------

[](#providers)

### DeepL

[](#deepl)

Uses the [DeepL API v2](https://www.deepl.com/docs-api). Free tier uses `api-free.deepl.com`; Pro tier uses `api.deepl.com` (set `TRANSLATE_DEEPL_PRO=true`).

### Google Cloud Translation

[](#google-cloud-translation)

Uses the [Cloud Translation Basic (v2) API](https://cloud.google.com/translate/docs/reference/rest). Requires a Cloud Translation API key.

Admin nav
---------

[](#admin-nav)

Accessible via **Structure → Translate**.

Admin routes
------------

[](#admin-routes)

MethodURLRoute nameDescriptionGET`/{prefix}/translate``marble.translate.index`Items needing translationGET`/{prefix}/translate/item/{item}``marble.translate.show`Translation workspacePOST`/{prefix}/translate/item/{item}``marble.translate.translate`Trigger API translationPOST`/{prefix}/translate/job/{job}/apply``marble.translate.apply`Apply pending jobPOST`/{prefix}/translate/job/{job}/reject``marble.translate.reject`Reject pending jobEvents
------

[](#events)

EventProperties`ItemTranslated``$item`, `$job`Artisan Commands
----------------

[](#artisan-commands)

CommandDescription`marble:translate:install`Run migrationsDatabase
--------

[](#database)

**`translation_jobs`**

ColumnTypeNotes`id`bigintPK`item_id`bigintFK → items (cascade delete)`source_language_id`bigintFK → languages`target_language_id`bigintFK → languages`provider`string`deepl` or `google``status`string`pending`, `applied`, `rejected``translated_fields`json`{field_identifier: translated_value}``created_at` / `updated_at`timestamps`applied_at`timestampnullable — when job was appliedExtending with a custom provider
--------------------------------

[](#extending-with-a-custom-provider)

Implement a provider class with this interface:

```
public function translate(array $texts, string $sourceLang, string $targetLang): array;
```

Then extend `TranslationService::resolveProvider()` or bind your provider in a service provider.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance91

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

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

2

Last Release

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d20f217e40eba2bf546283a7177d722d5835293254b8864b58faa34486fd1981?d=identicon)[stdclass](/maintainers/stdclass)

### Embed Badge

![Health badge](/badges/marblecms-marble-translate/health.svg)

```
[![Health](https://phpackages.com/badges/marblecms-marble-translate/health.svg)](https://phpackages.com/packages/marblecms-marble-translate)
```

###  Alternatives

[php-translation/translator

Translator services

25224.8k5](/packages/php-translation-translator)[longman/laravel-multilang

Package to integrate multi language (multi locale) functionality in Laravel 5.x

5514.5k1](/packages/longman-laravel-multilang)[smmoosavi/php-gettext

Wrapper for php-gettext by danilo segan. This library provides PHP functions to read MO files even when gettext is not compiled in or when appropriate locale is not present on the system.

1926.6k1](/packages/smmoosavi-php-gettext)[amendozaaguiar/laraveles-spanish-for-jetstream

Archivos de traducción al español latinoamericano para Laravel con Jetstream (auth, pagination, passwords, validation + todas las cadenas de Jetstream).

1512.6k](/packages/amendozaaguiar-laraveles-spanish-for-jetstream)[laradevs/spanish

labels translated to spanish

166.7k](/packages/laradevs-spanish)

PHPackages © 2026

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