You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Laravel实现英阿双向自动翻译与本地化(无需lang文件夹)

Laravel 中英阿双向自动翻译解决方案(非开发友好)

核心思路

避开lang文件夹,用数据库存储翻译内容,结合ChatGPT实现自动翻译,同时提供后台管理界面让非开发人员维护翻译,兼顾本地化规范。

方案一:ChatGPT + 数据库自动翻译实现

1. 数据库表设计

创建translations表,字段如下:

Schema::create('translations', function (Blueprint $table) {
    $table->id();
    $table->text('original_text')->comment('原文');
    $table->text('en_text')->nullable()->comment('英文翻译');
    $table->text('ar_text')->nullable()->comment('阿拉伯文翻译');
    $table->string('context')->nullable()->comment('上下文(如:首页Banner、商品详情)');
    $table->boolean('is_verified')->default(false)->comment('是否人工审核');
    $table->timestamps();
});

2. 集成ChatGPT自动翻译

  • 安装OpenAI PHP客户端:
    composer require openai-php/client
    
  • 在.env中添加API密钥:
    OPENAI_API_KEY=your-api-key-here
    
  • 创建翻译服务类app/Services/TranslationService.php:
    <?php
    
    namespace App\Services;
    
    use OpenAI;
    
    class TranslationService
    {
        protected $client;
    
        public function __construct()
        {
            $this->client = OpenAI::client(env('OPENAI_API_KEY'));
        }
    
        public function translate(string $text, string $targetLang, string $context = ''): string
        {
            $prompt = "请将以下文本翻译为{$targetLang},需符合{$targetLang}的本地化规范";
            if ($context) {
                $prompt .= ",上下文为:{$context}";
            }
            $prompt .= ":\n{$text}";
    
            $response = $this->client->chat()->create([
                'model' => 'gpt-3.5-turbo',
                'messages' => [
                    ['role' => 'user', 'content' => $prompt],
                ],
            ]);
    
            return $response->choices[0]->message->content;
        }
    }
    

3. 翻译调用与渲染

  • 编写辅助函数(在app/helpers.php):
    function translate(string $text, string $context = ''): string
    {
        $locale = app()->getLocale();
        $translation = \App\Models\Translation::where('original_text', $text)
            ->where('context', $context)
            ->first();
    
        // 已存在审核过的翻译,直接返回
        if ($translation && $translation->is_verified && !empty($translation->{$locale . '_text'})) {
            return $translation->{$locale . '_text'};
        }
    
        // 调用ChatGPT生成翻译
        $service = new \App\Services\TranslationService();
        $translatedText = $service->translate($text, $locale, $context);
    
        // 保存或更新翻译记录
        if ($translation) {
            $translation->update([
                $locale . '_text' => $translatedText,
                'is_verified' => false,
            ]);
        } else {
            \App\Models\Translation::create([
                'original_text' => $text,
                $locale . '_text' => $translatedText,
                'context' => $context,
                'is_verified' => false,
            ]);
        }
    
        return $translatedText;
    }
    
  • Blade模板中使用:
    <h1>{{ translate('欢迎访问我们的网站', '首页标题') }}</h1>
    

4. 非开发人员维护界面

用Laravel的资源控制器快速搭建后台CRUD界面,让维护人员可以:

  • 查看所有翻译记录
  • 修改自动翻译的内容
  • 标记翻译为已审核状态

方案二:第三方本地化平台替代(无需代码修改)

如果不想自己集成ChatGPT,可以使用专门的本地化平台,比如Lokalise或POEditor:

  • 支持非开发人员在线管理翻译内容
  • 提供Laravel集成工具,可将翻译内容同步到数据库或缓存,无需依赖lang文件夹
  • 内置机器翻译功能(也可结合ChatGPT导入翻译)
  • 支持本地化规范校验(比如阿拉伯文RTL适配、区域用语)

本地化规范注意事项

  • 布局适配:阿拉伯文是RTL(从右到左),在Blade根元素添加样式类:
    <html lang="{{ app()->getLocale() }}" class="{{ app()->getLocale() === 'ar' ? 'rtl' : 'ltr' }}">
    
    配合CSS调整布局方向、文本对齐等。
  • 日期/数字本地化:用Laravel Carbon处理:
    use Carbon\Carbon;
    
    echo Carbon::now()->translatedFormat('j F Y', app()->getLocale());
    
  • 术语一致性:在翻译上下文字段明确标注模块,确保同一术语翻译统一。

内容的提问来源于stack exchange,提问作者HASNA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:54:51