AI-powered translation tool for Laravel language files
We've expanded our capabilities with support for custom language styles, allowing for unique and creative translations. Learn more about Custom Language Styles
Laravel AI Translator is a powerful tool designed to streamline the localization process in Laravel projects. It automates the tedious task of translating strings across multiple languages, leveraging advanced AI models to provide high-quality, context-aware translations.
Key benefits:
Whether you're working on a personal project or a large-scale application, Laravel AI Translator simplifies the internationalization process, allowing you to focus on building great features instead of wrestling with translations.
lang directoryAlso, this tool is designed to translate your language files intelligently:
Do you want to know how this works? See the prompt in src/AI.
In addition to standard language translations, this package now supports custom language styles, allowing for unique and creative localizations.
The package includes several built-in language styles:
ko_kp: North Korean style KoreanThese are automatically available and don't require additional configuration.
As an demonstration of custom styling capabilities, we've implemented a "Reddit style" English:
This style mimics the casual, often humorous language found on Reddit, featuring:
Example configuration:
'locale_names' => [
'en_reddit' => 'English (Reddit)',
],
'additional_rules' => [
'en_reddit' => [
"- Incorporate sarcasm and exaggeration",
"- Use popular internet slang and meme references",
"- Add humorous calls for sources on obvious statements",
],
],You can create your own custom language styles by adding new entries to the locale_names and additional_rules in the configuration. This allows you to tailor translations to specific audiences or platforms.
These custom styles offer creative ways to customize your translations, adding a unique flair to your localized content. Use responsibly to enhance user engagement while maintaining clarity and appropriateness for your audience.
Install the package via composer:
composer require kargnas/laravel-ai-translatorAdd the OpenAI API key to your .env file:
OPENAI_API_KEY=your-openai-api-key-here
You can obtain an API key from the OpenAI website.
(If you want to use Anthropic's Claude instead, see step 4 below for configuration instructions.)
(Optional) Publish the configuration file:
php artisan vendor:publish --provider="KargnasLaravelAiTranslatorServiceProvider"This step is optional but recommended if you want to customize the package's behavior. It will create a config/ai-translator.php file where you can modify various settings.
(Optional) If you want to use Anthropic's Claude instead of OpenAI's GPT, update the config/ai-translator.php file:
'ai' => [
'provider' => 'anthropic',
'model' => 'claude-3-5-sonnet-20240620',
'api_key' => env('ANTHROPIC_API_KEY'),
],Then, add the Anthropic API key to your .env file:
ANTHROPIC_API_KEY=your-anthropic-api-key-here
You can obtain an Anthropic API key from the Anthropic website. For best results, we recommend using the Claude-3-5-Sonnet model for your translations rather than OpenAI GPT. This model provides more accurate and natural translations.
You're now ready to use the Laravel AI Translator!
To translate your language files, run the following command:
php artisan ai-translator:translateThis command will:
lang directoryGiven an English language file:
<?php
return [
'notifications' => [
'new_feature_search_sentence' => 'New feature: Now you can type sentences not only words. Even in your languages. The AI will translate them to Chinese.',
'refresh_after_1_min' => 'Refresh after 1 minutes. New content will be available! (The previous model: :model, Updated: :updated_at)',
]
];The package will generate translations like these:
<?php
return array (
'notifications.new_feature_search_sentence' => '새로운 기능: 이제 단어뿐만 아니라 문장도 입력할 수 있어요. 심지어 여러분의 언어로도 가능해요.',
'notifications.refresh_after_1_min' => '1분 후에 새로고침하세요. 새로운 내용이 준비될 거예요! (이전 모델: :model, 업데이트: :updated_at)',
);<?php
return array (
'notifications.new_feature_search_sentence' => '新功能:现在你不仅可以输入单词,还可以输入句子。甚至可以用你的语言。',
'notifications.refresh_after_1_min' => '1分钟后刷新。新内容即将到来!(之前的模型::model,更新时间::updated_at)',
);<?php
return array (
'notifications.new_feature_search_sentence' => 'ฟีเจอร์ใหม่: ตอนนี้คุณพิมพ์ประโยคได้แล้ว ไม่ใช่แค่คำเดียว แม้แต่ภาษาของคุณเอง',
'notifications.refresh_after_1_min' => 'รีเฟรชหลังจาก 1 นาที จะมีเนื้อหาใหม่ให้ดู! (โมเดลก่อนหน้า: :model, อัปเดตเมื่อ: :updated_at)',
);<?php
return array (
'notifications.new_feature_search_sentence' => '혁명적 새로운 기능: 동무들! 이제 단어뿐만 아니라 문장도 입력하여 단어의 력사를 확인할 수 있습니다. 모국어로도 괜찮습니다. 인공지능이 중국어로 번역해드리겠습니다.',
'notifications.refresh_after_1_min' => '1분후에 새로고침하십시요. 새로운 내용을 볼수 있습니다! (이전 모델: :model, 갱신: :updated_at)',
);<?php
return array (
'notifications.new_feature_search_sentence' => 'Whoa, hold onto your keyboards, nerds! We've leveled up our search game. Now you can type entire sentences, not just measly words. Mind. Blown. And get this - it even works in your weird non-English languages! Our AI overlord will graciously translate your gibberish into Chinese. You're welcome.',
'notifications.refresh_after_1_min' => 'Yo, hit that F5 in 60 seconds, fam. Fresh content incoming! (Previous model was :model, last updated when dinosaurs roamed the Earth at :updated_at)',
);If you want to customize the settings, you can publish the configuration file:
php artisan vendor:publish --provider="KargnasLaravelAiTranslatorServiceProvider"This will create a config/ai-translator.php file where you can modify the following settings:
source_directory: If you use a different directory for language files instead of the default lang directory, you can specify it here.
ai: Configure the AI provider, model, and API key here. Here are our recommendation for the best models:
| Provider | Model | Cost (I/O per 1M tokens) | Descrpition |
|---|---|---|---|
| anthropic | claude-3-5-sonnet-20240620 | $3.00 / $15.00 | The best quality, little bit slow. We recommend. |
| anthropic | claude-3-haiku-20240307 | $0.25 / $1.25 | Low quality, but better than gpt-3.5 |
| openai | gpt-4o | $5.00 / $15.00 | Balanced quality and high speed |
| openai | gpt-4o-mini | $0.15 / $0.60 | Balanced quality and cheap |
Here are not recommended models which are expensive or low quality:
| Provider | Model | Cost (I/O per 1M tokens) |
|---|---|---|
| anthropic | claude-3-opus-20240229 | $15.00 / $75.00 |
| anthropic | claude-3-sonnet-20240229 | $3.00 / $15.00 |
| openai | gpt-4-turbo | $10.0 / $30.0 |
| openai | gpt-3.5-turbo | $0.50 / $1.50 |
locale_names: This mapping of locale codes to language names enhances translation quality by providing context to the AI.
additional_rules: Add custom rules to the translation prompt. This is useful for customizing the style of the messages or creating entirely new language styles.
Example configuration:
<?php
return [
'source_directory' => 'lang',
'ai' => [
'provider' => 'openai', // or 'anthropic'
'model' => 'gpt-4o', // or 'gpt-4', 'gpt-3.5-turbo', 'claude-3-5-sonnet-20240620'
'api_key' => env('OPENAI_API_KEY'), // or env('ANTHROPIC_API_KEY')
],
'locale_names' => [
'en' => 'English',
'ko' => 'Korean',
'zh_cn' => 'Chinese (Simplified)',
// ... other locales
],
'additional_rules' => [
'default' => [
"Use a friendly and intuitive tone of voice, like the service tone of voice of 'Discord'.",
],
'ko' => [
"한국의 인터넷 서비스 '토스'의 서비스 말투 처럼, 유저에게 친근하고 직관적인 말투로 설명하고 존댓말로 설명하세요.",
],
],
];Make sure to set your chosen AI provider's API key in your .env file.
Currently, this package only supports PHP language files used by Laravel. JSON language files are not supported, and there are no plans to add support for them in the future.
We recommend using PHP files for managing translations, especially when dealing with multiple languages. Here's why:
Structure: PHP files allow for a more organized structure with nested arrays, making it easier to group related translations.
Comments: You can add comments in PHP files to provide context or instructions for translators.
Performance: PHP files are slightly faster to load compared to JSON files, as they don't require parsing.
Flexibility: PHP files allow for more complex operations, such as using variables or conditions in your translations.
Scalability: When managing a large number of translations across multiple languages, the directory structure of PHP files makes it easier to navigate and maintain.
If you're currently using JSON files for your translations, we recommend migrating to PHP files for better compatibility with this package and improved manageability of your translations.
This package supports both OpenAI's GPT models and Anthropic's Claude for translations, each with its own strengths:
We're constantly working to improve Laravel AI Translator. Here are some features and improvements we're planning:
If you'd like to contribute to any of these tasks, please feel free to submit a pull request!
Contributions are welcome! Please feel free to submit a Pull Request.
The MIT License (MIT). Please see License File for more information.