Skip to content

whitedigital-eu/translation-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Translation Bundle

A Symfony bundle that provides translation management capabilities through API Platform, with support for multiple locales and domains.

Features

  • API Platform integration for translation management
  • Support for multiple locales and domains
  • Database-backed translation storage
  • Cache support for improved performance
  • Command-line tools for translation management
  • Integration with Lexik Translation Bundle
  • Support for translatable entities

Requirements

  • PHP 8.2 or higher
  • Symfony 6.x
  • API Platform 3.x
  • Doctrine ORM

Installation

  1. Install the bundle using Composer:
composer require whitedigital-eu/translation-bundle
  1. Add the bundle to your config/bundles.php:
return [
    // ...
    WhiteDigital\Translation\TranslationBundle::class => ['all' => true],
];

Configuration

Create a configuration file config/packages/translation.yaml:

translation:
    entity_manager: default  # Optional: defaults to 'default'
    locale: en              # Default locale for translations
    translation_fallback: false  # Whether to use translation fallback
    managed_locales: ['en', 'lv']  # List of managed locales
    cache_pool: cache.app    # Optional: Cache pool to use for translations

Usage

1. Translatable Entities

To make an entity translatable, extend the AbstractTranslatableEntity class:

use WhiteDigital\Translation\Entity\AbstractTranslatableEntity;
use Gedmo\Mapping\Annotation as Gedmo;

class YourEntity extends AbstractTranslatableEntity
{
    #[Gedmo\Translatable]
    private ?string $name = null;
    
    // ... getters and setters
}

2. API Endpoints

The bundle provides the following API endpoints:

  • GET /api/trans_units - List all translation units
  • GET /api/trans_units/{id} - Get a specific translation unit
  • POST /api/trans_units - Create a new translation unit
  • PATCH /api/trans_units/{id} - Update a translation unit
  • DELETE /api/trans_units/{id} - Delete a translation unit
  • GET /api/trans_units/list/{locale} - Get translations for a specific locale

3. Command Line Tools

The bundle provides several command-line tools. There are two ways to use these commands depending on your setup:

When using SiteTree:

Each locale is passed as a separate option with its corresponding file path:

# Import translations
bin/console wd:trans_unit:import --en=/path/to/en.json --lv=/path/to/lv.json

# Override translations
bin/console wd:trans_unit:override --en=/path/to/en.json --lv=/path/to/lv.json

Without SiteTree:

Locales and files are passed as comma-separated lists:

# Import translations
bin/console wd:trans_unit:import --locales=en,lv --files=/path/to/en.json,/path/to/lv.json

# Override translations
bin/console wd:trans_unit:override --locales=en,lv

4. Translation Format

When creating or updating translations via API, use the following format:

{
    "key": "translation.key",
    "domain": "messages",
    "translations": {
        "en": "English translation",
        "lv": "Latvian translation"
    }
}

5. Cache Management

The bundle supports caching of translations for improved performance. Configure the cache pool in your configuration:

translation:
    cache_pool: cache.app

The cache is automatically invalidated when translations are updated.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This bundle is released under the MIT license. See the included LICENSE file for more information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages