barth/sylius-gemini-local-translate-plugin
This plugin adds a translation button to every translatable field in the Sylius admin. It uses Chrome's built-in Gemini Nano model via the Prompt API — all inference runs on-device, no data ever leaves the browser.

$ composer require barth/sylius-gemini-local-translate-plugin
$ yarn install --force
$ yarn build
The bundle registers itself automatically via Symfony Flex. Manual registration:
// config/bundles.php
return [
Barth\SyliusGeminiLocalTranslatePlugin\BarthSyliusGeminiLocalTranslatePlugin::class => ['all' => true],
];
# config/routes.yaml
barth_gemini_local_translate_plugin:
resource: "@BarthSyliusGeminiLocalTranslatePlugin/config/routes/admin_routing.yaml"
No data leaves the browser. All inference runs on-device.
[!CAUTION] ⚠️ AI translation can contain errors. Do not rely blindly on the output; always review and verify the generated translations for accuracy and appropriate tone before saving.
Visit /admin/gemini-local-translate-plugin/diagnostic in your admin to verify that the Chrome Prompt API is available.
If you added translated fields and the button does not appear, you may add a hook to your form:
sylius_twig_hooks:
hooks:
'sylius_admin.my_awesome_entity.create.content.sections.form.translations':
gemini_translate_button:
template: '@BarthSyliusGeminiLocalTranslatePlugin/admin/form/translations/button.html.twig'
priority: -10
This plugin was inspired by the GromNaN/local-browser-translator repository.

How can I help you explore Laravel packages today?