kargnas / laravel-ai-translator
Laravel语言文件的AI翻译工具
Requires
- php: ^8.0
- crowdin/crowdin-api-client: ^1.13
- guzzlehttp/guzzle: ^7.0.1
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- kargnas/instructrice: ^1.0
Suggests
- laravel/framework: Required for using this package with Laravel
This package is auto-updated.
Last update: 2024-09-02 22:32:27 UTC
README
Laravel语言文件的AI翻译工具
💡 新特性:自定义语言风格
我们通过支持自定义语言风格扩展了功能,允许进行独特和富有创造性的翻译。了解自定义语言风格的更多信息
概述
Laravel AI Translator是一个强大的工具,旨在简化Laravel项目中本地化流程。它自动处理跨多种语言的字符串翻译任务,利用先进的AI模型提供高质量、上下文感知的翻译。
主要优势
- 节省时间:一键命令即可翻译所有语言文件
- AI驱动:利用最先进的语言模型(GPT-4,GPT-4o,GPT-3.5,Claude)提供优质的翻译质量
- 智能上下文理解:准确捕捉细微差别、术语和Laravel特定表达式
- 无缝集成:在现有Laravel项目结构中工作,保留复杂的语言文件结构
无论您是在进行个人项目还是大型应用的开发,Laravel AI Translator都可以简化国际化过程,让您能够专注于构建优秀的功能,而不是与翻译斗争。
主要功能
- 自动检测您
lang
目录中的所有语言文件夹 - 将源语言(默认:英语)的PHP语言文件翻译成所有其他语言
- 支持多个AI提供商进行智能、上下文感知的翻译
- 保留变量、HTML标签、复数代码和嵌套结构
- 保持翻译中的一致语气和风格
- 支持自定义翻译规则,以增强质量和满足特定项目需求
- 高效处理大型语言文件,节省时间和精力
- 尊重Laravel的本地化系统,确保与现有设置兼容
- 分块功能以实现成本效益翻译:在一个AI请求中处理多个字符串,显著降低API成本并提高效率
- 字符串验证以确保翻译准确性:自动检查和验证AI翻译,以捕捉和纠正任何错误或误译
此外,此工具还设计用于智能地翻译语言文件
- 上下文理解:分析键以确定它们是否代表按钮、描述或其他UI元素。
- 语言精确度:在翻译中保留单词形式、时态和标点符号。
- 变量处理:在翻译过程中尊重并维护语言文件变量。
- 智能长度适应:在可能的情况下调整翻译长度以适应UI约束。
- 语气一致性:保持翻译中的语气一致,可配置。
您想知道它是如何工作的吗?请查看src/AI
中的提示。
自定义语言风格
除了标准语言翻译外,该包现在还支持自定义语言风格,允许进行独特和富有创造性的本地化。
内置风格
该包包含几个内置语言风格
ko_kp
:朝鲜风格韩语- 各种地区方言和语言变体
这些风格自动可用,无需额外配置。
自定义风格示例:Reddit英语
作为自定义样式功能的演示,我们实现了“Reddit风格”英语
这种风格模仿Reddit上常见的休闲、幽默语言,包括
- 大量使用讽刺
- 网络俚语和梗
- 轻松的怀疑态度
示例配置
'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", ], ],
创建自定义样式
您可以通过在配置中的 locale_names
和 additional_rules
中添加新条目来创建自己的自定义语言样式。这允许您针对特定受众或平台定制翻译。
这些自定义样式提供了定制翻译的创意方法,为您的本地化内容增添了独特的风格。负责任地使用,以增强用户参与度,同时保持对受众的清晰和适宜性。
先决条件
- PHP 8.0 或更高版本
- Laravel 8.0 或更高版本
安装
-
使用 composer 安装包
composer require kargnas/laravel-ai-translator
-
将 OpenAI API 密钥添加到您的
.env
文件OPENAI_API_KEY=your-openai-api-key-here
您可以从 OpenAI 网站 获取 API 密钥。
(如果您想使用 Anthropic 的 Claude,请参阅下方的步骤 4 进行配置。)
-
(可选) 发布配置文件
php artisan vendor:publish --provider="Kargnas\LaravelAiTranslator\ServiceProvider"
此步骤是可选的,但建议您在想要自定义包的行为时执行。它将在您可以修改各种设置的
config/ai-translator.php
文件中创建一个文件。 -
(可选) 如果您想使用 Anthropic 的 Claude 而不是 OpenAI 的 GPT,更新
config/ai-translator.php
文件'ai' => [ 'provider' => 'anthropic', 'model' => 'claude-3-5-sonnet-20240620', 'api_key' => env('ANTHROPIC_API_KEY'), ],
然后,将 Anthropic API 密钥添加到您的
.env
文件ANTHROPIC_API_KEY=your-anthropic-api-key-here
您可以从 Anthropic 网站 获取 Anthropic API 密钥。为了获得最佳效果,我们建议使用 Claude-3-5-Sonnet 模型进行翻译,而不是 OpenAI GPT。此模型提供了更准确和自然的翻译。
-
现在,您已经准备好使用 Laravel AI Translator 了!
用法
要翻译您的语言文件,请运行以下命令
php artisan ai-translator:translate
此命令将
- 识别您
lang
目录中的所有语言文件夹 - 使用 AI 将源语言(英语)的字符串文件内容进行翻译。(您可以在配置文件中更改源语言)
示例
给定一个英语语言文件
<?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)', ] ];
包将生成如下翻译
- 韩语 (ko-kr)
<?php return array ( 'notifications.new_feature_search_sentence' => '새로운 기능: 이제 단어뿐만 아니라 문장도 입력할 수 있어요. 심지어 여러분의 언어로도 가능해요.', 'notifications.refresh_after_1_min' => '1분 후에 새로고침하세요. 새로운 내용이 준비될 거예요! (이전 모델: :model, 업데이트: :updated_at)', );
- 中文 (zh-cn)
<?php return array ( 'notifications.new_feature_search_sentence' => '新功能:现在你不仅可以输入单词,还可以输入句子。甚至可以用你的语言。', 'notifications.refresh_after_1_min' => '1分钟后刷新。新内容即将到来!(之前的模型::model,更新时间::updated_at)', );
- 泰语 (th-th)
<?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)', );
- 🤣 英语 (Reddit)
<?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)', );
配置
如果您想自定义设置,可以发布配置文件
php artisan vendor:publish --provider="Kargnas\LaravelAiTranslator\ServiceProvider"
这将创建一个 config/ai-translator.php
文件,您可以在此修改以下设置
-
source_directory
:如果您使用与默认lang
目录不同的目录来管理语言文件,您可以在此处指定它。 -
ai
:在此处配置 AI 提供商、模型和 API 密钥。以下是我们的最佳模型推荐以下是不推荐的模型,它们要么价格昂贵,要么质量低下
-
locale_names
:此地区代码到语言名称的映射通过为 AI 提供上下文来提高翻译质量。 -
additional_rules
:将自定义规则添加到翻译提示中。这对于定制消息的风格或创建全新的语言风格非常有用。
示例配置
<?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' => [ "한국의 인터넷 서비스 '토스'의 서비스 말투 처럼, 유저에게 친근하고 직관적인 말투로 설명하고 존댓말로 설명하세요.", ], ], ];
请确保在您的 .env
文件中设置所选 AI 提供商的 API 密钥。
支持的文件类型
目前,此包仅支持 Laravel 使用的 PHP 语言文件。JSON 语言文件不受支持,并且没有计划在未来添加对其的支持。
为什么只支持 PHP 文件?
我们建议使用 PHP 文件来管理翻译,尤其是在处理多种语言时。以下是原因
-
结构:PHP 文件允许使用更有组织的结构,具有嵌套数组,这使得分组相关翻译更容易。
-
注释:您可以在PHP文件中添加注释,为翻译者提供上下文或说明。
-
性能:与JSON文件相比,PHP文件加载速度略快,因为它们不需要解析。
-
灵活性:PHP文件允许进行更复杂的操作,例如在翻译中使用变量或条件。
-
可扩展性:在管理多个语言中的大量翻译时,PHP文件的目录结构使得导航和维护更加容易。
如果您目前使用JSON文件进行翻译,我们建议迁移到PHP文件,以更好地兼容此包并提高翻译的可管理性。
AI服务
此包支持OpenAI的GPT模型和Anthropic的Claude进行翻译,每种都有其自身优势。
- OpenAI
- Anthropic
待办事项列表
我们一直在努力改进Laravel AI Translator。以下是我们的计划中的功能和改进。
- 实施对翻译的严格验证
- 验证变量是否正确保留在翻译字符串中
- 确保占位符和Laravel特定语法得到保留
- 检查翻译中的复数规则一致性
- 编写测试代码以确保可靠性和捕捉潜在问题
- 实现功能以在翻译过程中保持字符串数组的结构
- 扩展对其他LLMs(如Gemini)的支持
如果您想为这些任务中的任何一项做出贡献,请随时提交pull request!
贡献
欢迎贡献!请随时提交Pull Request。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
致谢
- 由Sangrak Choi创建
- 灵感来自Mandarin Study