mcpField
L
laravel-i18n

laravel-i18n

github.com/fusengine开发3457 次安装5 天前更新
代码仓库

关于 laravel-i18n

面向 Laravel 应用开发的本地化技能,涵盖翻译文件、复数规则、区域设置处理、格式化和软件包翻译,并介绍 Laravel 13 队列中的区域设置传递。

主要功能

  1. 01PHP 与 JSON 翻译文件指导
  2. 02复数规则与 Blade 辅助方法
  3. 03区域设置检测中间件
  4. 04日期、数字与货币格式化
  5. 05供应商软件包翻译
  6. 06Laravel 13 队列区域设置传递

适用场景

  1. 01组织大型 Laravel 应用的翻译
  2. 02为 Blade 视图添加翻译文本
  3. 03检测并验证请求区域设置
  4. 04在队列任务中保留区域设置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fusengine/claude-plugins --skill laravel-i18n

安装后在 Claude Code 中输入/laravel-i18n确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
best-practices.md
blade-translations.md
formatting.md
localization.md
middleware.md
packages.md
pluralization.md
references/templates/
lang-files.md
LocaleRoutes.php.md
LocaleServiceProvider.php.md
SetLocaleMiddleware.php.md

详细介绍

介绍 Laravel 本地化:PHP 与 JSON 翻译文件、复数规则、Blade 翻译辅助函数、语言环境检测中间件、日期/数字/货币格式化、第三方包翻译,以及大型应用的翻译组织方式。还包括在 Laravel 13 中通过 Context::add() 安全地将语言环境传递到队列。

Laravel 国际化

Agent 工作流(强制)

任何实现开始之前,必须并行启动 3 个 Agent,每个 Agent 调用一次,并设置 name:

  1. fuse-ai-pilot:explore-codebase - 检查现有翻译模式
  2. fuse-ai-pilot:research-expert - 通过 Context7 验证 Laravel 国际化最佳实践
  3. mcp__context7__query-docs - 查阅 Laravel 本地化文档

实现之后,运行 fuse-ai-pilot:sniper 进行验证。


概述

功能PHP 文件JSON 文件
键短键(messages.welcome)完整文本
嵌套支持仅扁平结构
最适用于结构化翻译大型应用

关键规则

  1. 绝不拼接字符串 - 使用 :placeholder 占位符替换
  2. 复数规则始终处理零
  3. 按功能分组 - auth.login.title、auth.login.button
  4. 尽早提取字符串 - 视图中不得硬编码文本
  5. 验证语言环境 - 使用枚举或允许列表

选择指南

Translation task?
├── Basic string → __('key')
├── With variables → __('key', ['name' => $value])
├── Pluralization → trans_choice('key', $count)
├── In Blade → @lang('key') or {{ __('key') }}
├── Locale detection → Middleware
├── Format date/money → LocalizationService
└── Package strings → trans('package::key')

参考指南

概念(原因与架构)
主题参考资料适用场景
设置localization.md初始配置
复数规则pluralization.md基于数量的翻译
Bladeblade-translations.md视图翻译
中间件middleware.md语言环境检测
格式化formatting.md日期/数字/货币
包packages.md第三方包翻译
最佳实践best-practices.md大型应用组织方式
模板(完整代码)
模板使用场景
SetLocaleMiddleware.php.mdURL/会话语言环境检测
lang-files.md翻译文件示例
LocaleServiceProvider.php.md集中式本地化服务
LocaleRoutes.php.mdURL 前缀语言环境路由

快速参考

// Basic translation
__('messages.welcome')

// With replacement
__('Hello :name', ['name' => 'John'])

// Pluralization
trans_choice('messages.items', $count)

// Runtime locale
App::setLocale('es');
App::currentLocale();  // 'es'

最佳实践

应该
  • 使用 :placeholder 表示动态值
  • 在复数规则中处理零的情况
  • 按功能模块分组键
  • 使用 Locale 枚举确保类型安全
  • 在中间件中设置 Carbon 语言环境
不应该
  • 拼接已翻译的字符串
  • 在视图中硬编码文本
  • 不经验证就接受任意语言环境
  • 创建基于数据库的翻译(使用文件)

Laravel 13 说明

本地化 API(__()、trans_choice()、App::setLocale())在 Laravel 13 中保持不变。具体说明:

  • Context::add('locale', $locale) 会将语言环境传递到队列任务中(修复了 L12 中 ShouldQueue 任务丢失语言环境的问题)
  • cache.serializable_classes(L13 中默认为 false):如果缓存 Locale 对象,请将其列入其中
  • SetLocale 中间件:与来自 [[laravel-auth]] 的新 PreventRequestForgery 中间件兼容
// app/Jobs/SendNotification.php
public function handle(): void
{
    App::setLocale(Context::get('locale', 'en'));
    Notification::send($this->user, new OrderShipped());
}

评论

支持 Markdown