{"id":15162466,"url":"https://github.com/liip/liiptranslationbundle","last_synced_at":"2025-09-30T16:31:31.976Z","repository":{"id":10509517,"uuid":"12696203","full_name":"liip/LiipTranslationBundle","owner":"liip","description":"Tools for translation management","archived":true,"fork":false,"pushed_at":"2017-12-05T09:48:18.000Z","size":520,"stargazers_count":25,"open_issues_count":27,"forks_count":11,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-01-19T10:47:29.539Z","etag":null,"topics":["bundle","php","symfony","symfony-bundle","translation-management"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liip.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"Security/Security.php","support":null}},"created_at":"2013-09-09T08:05:26.000Z","updated_at":"2023-01-28T21:24:08.000Z","dependencies_parsed_at":"2022-09-22T19:51:11.348Z","dependency_job_id":null,"html_url":"https://github.com/liip/LiipTranslationBundle","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liip%2FLiipTranslationBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liip%2FLiipTranslationBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liip%2FLiipTranslationBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liip%2FLiipTranslationBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liip","download_url":"https://codeload.github.com/liip/LiipTranslationBundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234753641,"owners_count":18881428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundle","php","symfony","symfony-bundle","translation-management"],"created_at":"2024-09-27T01:43:46.924Z","updated_at":"2025-09-30T16:31:26.645Z","avatar_url":"https://github.com/liip.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"UNMAINTAINED\n============\n\nThis bundle is no longer maintained. Feel free to fork it if needed.\n\nLiipTranslationBundle\n=====================\n\n[![Build Status](https://travis-ci.org/liip/LiipTranslationBundle.png?branch=master)](https://travis-ci.org/liip/LiipTranslationBundle)\n\nThis Bundle provides various tools to ease translations management of a Sf2 app. Here is a small [presentation](https://docs.google.com/presentation/d/1JK6vff6cVa92VxRIJ5ORzSUrmbtDPc5bPsFE35soEpw/edit?usp=sharing) of the bundle.\n\nIntroduction\n------------\n\nThis bundle adds a new layer on top of existing translation mechanisms. This allows your customers to edit and override any translations directly from the website.\n\n### Separation of concern\n\nUsing such a tool allows a clear separation between \"key\" and \"value\". Developers are responsible for defining new keys and removing old keys, while client/customer are responsible for translating the website.\n\n### Key values on steroid\n\nThe current basic key-value system could be better. We extend it and allow developers to complete keys with metadata (like it's possible with XLiFF).\n\nExtend your keys with information like maxbytes, comment, description, urls, screenshot, etc... Anything that could help translators.\n\nA \"value\" is the translation for a \"key\" in a given locale, it's also possible to complete it with metadata (comments, update date, validity, etc...)\n\n### Storage layer\n\nThe intermediate storage is currently available for:\n\n * Propel (database)\n * YAML (file or in Git)\n\nbut adding a new persistence implementation is very easy (you just have to implement a small interface)\n\n### Symfony compatibility\n\nThis bundle works on any Symfony versions 2.3+. Unit and functional tests have been written to ensure this compatibility.\n\nFeatures\n--------\n\n### Translation interface in the backend\n\n * Edit through a contextual popup\n * Fast inline editing\n * Possibility to view various translated column at the same time (en, fr, pt, etc...)\n * Filter by locale, domain, date\n * Filter for untranslated key\n * Search by key name or translation value\n * Display help messages from the developers\n\n### Import/Export\n\nUseful to provide files to an external agency, or to transfer translations from a staging environment to production\n\n * Export translation to a YAML file\n * Export based on the current list filter\n * Export/import multi domain/language with a zip file\n * Review change interface to handle collision at import time\n\n### New translation keys insertion\n\n * Developers can provide context information to a translation keys (maxsize, description, comment, url, etc..)\n * Symfony command for developers to insert new complex keys into Xliff\n\n### Security\n\n * Rights management (restricted to given locale or given domain)\n\nInstallation\n------------\n\n  1. Via composer\n\n          composer require liip/translation-bundle master-dev\n\nConfiguration\n-------------\n\nInclude the bundle in your ``AppKernel.php``:\n\n    public function registerBundles()\n    {\n        $bundles = array(\n            // ...\n            new Liip\\TranslationBundle\\LiipTranslationBundle(),\n            // ...\n        );\n        // ...\n    }\n\nIn your ``config.yml`` add the given Bundle specific configuration, for example:\n\n    liip_translation:\n        locale_list: [en_JP, en_US, en, fr_CH, fr]\n        security:\n            by_domain: false\n            by_locale: true\n        persistence:\n            class: Liip\\TranslationBundle\\Persistence\\YamlFilePersistence\n            options:\n                folder: \"%kernel.root_dir%/data/translations\"\n        interface:\n            default_filters:\n              domain: ['messages']\n              languages: ['en', 'fr']\n\nAlso load the routes:\n\n    _liip_translation:\n        resource: \"@LiipTranslationBundle/Resources/config/routing.yml\"\n        prefix: /translation\n\nAlternatively you can load the translation and import interface routes separately:\n\n    _liip_translation_interface:\n        resource: \"@LiipTranslationBundle/Resources/config/routing_translation_interface.yml\"\n    \n    _liip_translation_import_interface:\n        resource: \"@LiipTranslationBundle/Resources/config/routing_import_interface.yml\"\n\n\n### Security\n\nAccess to translation management can be restricted by domains or by locales. By default, those restrictions are\ndisabled, you can turn them on in the config, with:\n\n    liip_translation:\n        ...\n        security:\n            by_domain: false\n            by_locale: true\n\nYou can activate one or both restrictions together. Once this have been activated, you have to attribute\nassociated roles to your users. The existing roles are:\n\n    ROLE_TRANSLATOR_ADMIN\n        ROLE_TRANSLATOR_ALL_DOMAINS\n            ROLE_TRANSLATOR_DOMAIN_XXX\n        ROLE_TRANSLATOR_ALL_LOCALES\n            ROLE_TRANSLATOR_LOCALE_XXX\n\n!! Warning, if you use security by domain, you have to explicitly list the domains. Example:\n\n        security:\n            by_domain: true\n            domain_list: [messages, validators, forms]\n\n\nContributing\n------------\n\nPull requests are welcome. Please see our [CONTRIBUTING](https://github.com/liip/LiipTranslationBundle/blob/master/CONTRIBUTING.md) guide.\n\nThis bundle is fully tested with PHPUnit, the tests suite can be run using the following commands :\n\n          git clone git@github.com:liip/LiipTranslationBundle.git \u0026\u0026 cd LiipTranslationBundle\n          composer install --dev\n          phpunit\n\nThanks to [everyone who has contributed](https://github.com/liip/LiipTranslationBundle/graphs/contributors) already.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliip%2Fliiptranslationbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliip%2Fliiptranslationbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliip%2Fliiptranslationbundle/lists"}