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

Laravel 8 同一页面同时使用两种及以上多语言翻译如何实现?

Laravel 8 同页面多语言翻译同时展示实现方案

以下3种方案可根据你的使用场景选择:

方案1:直接使用trans()/__()助手指定locale(适合少量翻译调用场景)

Laravel自带的翻译助手函数支持第三个参数手动指定目标语言,无需修改全局locale配置,示例用法:

<!-- Blade模板中直接调用 -->
<div class="bilingual-item">
  <span class="en">{{ __('messages.welcome', [], 'en') }}</span>
  <span class="zh">{{ __('messages.welcome', [], 'zh-CN') }}</span>
</div>

对应翻译文件需要提前放在resources/lang/en/messages.php、resources/lang/zh-CN/messages.php路径下配置好对应key即可。

方案2:封装多语言翻译助手函数(适合批量多语言调用场景)

如果页面大量位置需要同时输出多语言,可以自定义全局助手函数减少重复代码:

  1. 新建app/Helpers/translation.php文件,写入以下代码:
<?php
if (!function_exists('multi_trans')) {
    /**
     * 同时获取指定多个语言的翻译内容
     * @param string $key 翻译键名
     * @param array $locales 目标语言列表,默认取中英双语
     * @param array $replace 占位符替换参数
     * @return array 按语言为key的翻译结果数组
     */
    function multi_trans(string $key, array $locales = ['en', 'zh-CN'], array $replace = []): array
    {
        $result = [];
        foreach ($locales as $locale) {
            $result[$locale] = __($key, $replace, $locale);
        }
        return $result;
    }
}
  1. 在composer.json的autoload.files配置项中加入助手文件路径:
"autoload": {
    "files": [
        "app/Helpers/translation.php"
    ]
}
  1. 执行composer dump-autoload加载助手文件
  2. 调用示例:
@php $titleTrans = multi_trans('product.name') @endphp
<div class="bilingual-title">
  <h2>{{ $titleTrans['en'] }}</h2>
  <h3>{{ $titleTrans['zh-CN'] }}</h3>
</div>

方案3:自定义Blade指令(适合高频多语言对照展示场景)

如果全站多处需要做双语/多语言对照展示,可以扩展Blade指令简化模板写法:
在app/Providers/AppServiceProvider.php的boot方法中注册指令:

use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::directive('multiLang', function ($expression) {
        $params = explode(',', $expression, 2);
        $key = trim($params[0]);
        $locales = isset($params[1]) ? trim($params[1]) : "['en', 'zh-CN']";
        return "<?php foreach ({$locales} as \$locale): ?>
            <span class=\"lang-{{ \$locale }}\">{{ __({$key}, [], \$locale) }}</span>
        <?php endforeach; ?>";
    });
}

模板中直接调用即可自动输出所有指定语言的翻译:

<!-- 默认输出中英双语 -->
<div class="bilingual-content">
  @multiLang('product.desc')
</div>

<!-- 自定义输出指定3种语言 -->
<div class="multilingual-content">
  @multiLang('product.desc', ['zh-CN', 'en', 'ja'])
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:18:03