gpt-translate is a package for Laravel that allows you to generate and translate language files using the power of OpenAI's ChatGPT API. The package supports translations in multiple languages, including English, Spanish, French, German, Italian, and Portuguese. You can call these strings using __(), @lang(), $t(), or trans(), and they can be located in php, js, ts, or vue files.
Furthermore, gpt-translate enables you to translate your base language file, whether you previously had it or generated it using the package, to other languages using the ChatGPT API. Supported languages for translation include English, Spanish, French, German, Italian, and Portuguese.
- Automatically generate base translation files by scanning your application for translation strings.
- Translate your base language file to other languages using the ChatGPT API.
- Provide custom context for more accurate translations.
- Exclude specific words or phrases from being translated.
- Support for different models (e.g., GPT-3.5, GPT-4).
Installation
Install the package using composer:
composer require rdosgroup/gpt-translateAdd Service Provider
Add the following to your config/app.php file:
'providers' => [
...
Rdosgroup\GptTranslate\TranslateProvider::class,
...
],Publish the Configuration File
You need to publish the openai.php configuration file:
php artisan vendor:publishEnvironment Configuration
Add the OPENAI_API_KEY and OPENAI_ORGANIZATION and GPT_TRANSLATE_DEFAULT_CONTEXT and GPT_TRANSLATE_EXCLUDE_WORDS variables to your .env file with the details from your OpenAI account.
Generate Base Translation File
If you don’t already have a base translation file, generate it using:
php artisan translate:make --lang=enAs shown, this command creates a lang/en.json in your root folder. If your application is in another language, pass the appropriate lang parameter, e.g., for French:
php artisan translate:make --lang=frTranslate with ChatGPT
After having your base translation file, whether generated by the package or otherwise, run the translation command for ChatGPT to do the translation, e.g.:
php artisan translate:lang --origin=en --lang=frThis translates the original en.json to French and creates a new fr.json file.
Provide Context (Optional)
For more accurate translations, briefly describe the context of your application’s purpose. This helps ChatGPT better understand and translate the text. Use the context parameter:
php artisan translate:lang --origin=en --lang=fr --context="a pet product sales application"Exclude Specific Words or Phrases from Translation (Optional) You can specify words or phrases that should not be translated. This is useful for brand names, technical terms, or other content that must remain in the original language:
php artisan translate:lang --origin=en --lang=fr --exclude="Laravel,Eloquent,PHP"Specify the Model (Optional)
By default, the package uses GPT-4o. If desired, specify any other OpenAI model compatible with the Chat API:
php artisan translate:lang --origin=en --lang=fr --model=gpt-4o-miniSpecify the Resource Path
By default, the package scans the lang folder for translation strings. If your translation strings are located elsewhere, specify the path:
php artisan translate:lang --origin=en --lang=fr --path=./lang/vendor/novaConfiguration for Context and Exclusions (Optional)
php artisan vendor:publish --tag=gpt-translate-configThen, you can customize the default context and exclusions in the config/gpt-translate.php file
return [
'default_context' => env('GPT_TRANSLATE_DEFAULT_CONTEXT', 'Your default context here'),
'exclude_words' => explode(',', env('GPT_TRANSLATE_EXCLUDE_WORDS', 'Laravel,Eloquent,PHP')),
];php artisan translate:lang --origin=en --lang=fr --context="a tech startup specializing in AI products" --exclude="ChatGPT,OpenAI,Laravel" --model=gpt-4 --path=./lang/vendor/novaLeverage the power of ChatGPT and the flexibility of gpt-translate to localize your Laravel application effectively and efficiently. With the ability to provide context, exclude specific terms, and choose the model, gpt-translate ensures that your translations are accurate and appropriate for your application's needs.