Laravel 匈牙利语(hu)本地化缺失翻译全解析:lang 仓库 15 条缺口清单与补全方案

原创2026-09-26 09:20:561,926 阅读
文章标签:后端

Laravel 匈牙利语(hu)本地化缺失翻译全解析:lang 仓库 15 条缺口清单与补全方案

本文基于 lang 仓库的匈牙利语翻译状态报告 docs/statuses/hu.md,逐条梳理当前 hu 语言包中 json、php-inline、php 三种格式下尚未翻译的 15 条文案,结合仓库内的 source 目录源码定位这些缺失键的真实用途(Passkeys 通行密钥、加密环境文件、表单验证规则),并给出在 Laravel 项目中落地补全的完整实操路径。读完本文,你将能够准确识别本地化缺口、理解每个缺失键背后的框架功能,并独立完成匈牙利语翻译的补齐与验证。

这份状态报告是什么

lang 仓库为 Laravel 生态(Framework、Jetstream、Fortify、Breeze、Cashier、Nova、UI 等)维护着 128 种语言的本地化文件。每个语言包的完成情况都被汇总在 docs/status.md 的总览表中,而 docs/statuses/hu.md 就是其中针对 匈牙利语(hu) 的专项缺口报告。

该报告的核心信息一目了然:

  • All missed: 15 —— 当前 hu 语言包共有 15 条文案缺失(即仍保持英文原文,尚未翻译成匈牙利语);
  • 缺口分布在三种本地化格式中:json(11 条)、php-inline(2 条)、php(2 条)。

对应的实际翻译文件位于 locales/hu 目录,共 5 个文件:

文件 用途
locales/hu/json.json 面向 JSON 翻译源的界面文案(对应框架、Jetstream、Nova 等产品的 UI 消息)
locales/hu/json-inline.json JSON 格式的「内联」验证错误文案
locales/hu/php.json PHP 数组格式的验证消息(对应 lang/hu/validation.php)
locales/hu/php-inline.json PHP 数组格式的内联验证消息
locales/hu/_excludes.json 排除清单(国家名、产品名等无需翻译或保留原样的词条)

说明:php 与 php-inline 的区别在于前者消息中带 :attribute 占位符(输出如“The xxx field ...”),后者面向内联验证场景(输出如“This field ...”),下文会结合源码展开。

json 格式:11 条缺失详解

在 json 格式下,hu 语言包共有 11 条文案缺失,可归为两个主题:Passkeys 通行密钥相关(8 条)与 加密环境文件相关(3 条)。

Passkeys 通行密钥:8 条未翻译错误提示

Key(英文原文) Value(当前值)
Invalid credential format. Invalid credential format.
Passkey not recognized. It may have been removed from your account. Passkey not recognized. It may have been removed from your account.
Passkey registration session expired. Please try again. Passkey registration session expired. Please try again.
Passkey verification session expired. Please try again. Passkey verification session expired. Please try again.
Unable to register passkey. Please try again. Unable to register passkey. Please try again.
Unable to register this passkey. Unable to register this passkey.
Unable to sign in with this account. Unable to sign in with this account.
Unable to verify passkey. Please try again. Unable to verify passkey. Please try again.

这些文案来自 Laravel 的 Passkeys(通行密钥) 功能——允许用户使用平台生物识别或系统级凭证(而非密码)完成注册、验证与登录。仓库源码中可以确认:

  • source/passkeys/main/passkeys.json 包含其中 3 条原始文案(Invalid credential format.、Passkey registration session expired. Please try again.、Passkey verification session expired. Please try again.);
  • 其余消息可在 locales/hu/json.json 中找到对应键(如 Unable to register passkey. Please try again.、Unable to sign in with this account. 等),但值仍是英文原文,说明翻译尚未补齐。

从消息语义可以推断,这 8 条分别覆盖通行密钥的三个关键流程节点:注册(session expired / unable to register)、验证(verification session expired / unable to verify)和登录(unable to sign in / not recognized),以及底层凭证格式错误(invalid credential format)。对于面向匈牙利语用户的 Laravel 应用,这些提示直接决定通行密钥功能的可用体验,属于高优先级补齐项。

加密环境文件:3 条未翻译提示

Key(英文原文) Value(当前值)
The existing encrypted environment file is not in readable format. Use --force to overwrite it. The existing encrypted environment file is not in readable format. Use --force to overwrite it.
The existing encryption key is required to update the encrypted environment file. The existing encryption key is required to update the encrypted environment file.
Unable to write the encrypted environment file. Unable to write the encrypted environment file.

这 3 条服务于 Laravel 的 加密环境文件功能(即 php artisan env:encrypt / env:decrypt 系列命令,用于将 .env 加密为 .env.encrypted 并配合 --key 与 --force 参数使用)。源码佐证位于 source/framework/13.x/framework.json,其中第 33、34、42 行正是这三条原文,属于 Laravel Framework 的 CLI 输出消息。

从消息文本本身可以还原其触发场景:

  • 已存在加密环境文件但格式不可读时,提示用户使用 --force 覆盖;
  • 更新加密环境文件时缺少既有加密密钥(The existing encryption key is required ...);
  • 写入失败时的兜底错误提示。

php-inline 与 php 格式:array_keys、base64 两条缺失

php-inline 与 php 两种格式的缺失项完全相同,均为 array_keys 与 base64 两条验证规则消息,只是消息措辞不同:

Key php-inline 缺失值 php 缺失值
array_keys This field must only contain the following keys: :values. The :attribute field must only contain the following keys: :values.
base64 This field must be a valid Base64 string. The :attribute field must be a valid Base64 string.

这两条对应的是 Laravel 验证器(Validator) 中的两个较新规则:

  • array_keys:校验数组字段只能包含指定的键集合。官方英文源可确认于 source/framework/13.x/validation.php 第 16 行:'array_keys' => 'The :attribute field must only contain the following keys: :values.';
  • base64:校验字段是否为合法的 Base64 字符串。同上源码第 19 行:'base64' => 'The :attribute field must be a valid Base64 string.'。

对照 locales/hu/php.json 可以发现,hu 语言包中相邻的其他验证规则(如 array、ascii、before、boolean 等)均已翻译,唯独这两条在 13.x 版本迭代中新增后尚未跟进。缺失的直接后果是:匈牙利语用户触发这两条规则时,看到的仍将是英文提示,与其他已本地化的验证消息混杂,影响体验一致性。

如何补全这 15 条翻译:实操路径

lang 仓库以「源文件 + 各语言目录」的形式组织(源文案见 source,目标语言见 locales/hu)。补全思路是在你自己的 Laravel 项目中落地匈牙利语翻译,具体步骤如下:

1. 发布语言文件(若项目尚未包含 hu 目录)

php artisan lang:publish

该命令会把框架的语言文件复制到项目的 lang/ 目录(Laravel 11+ 默认路径;旧版本为 resources/lang/)。

2. 补充 JSON 格式文案

在项目 lang/hu.json(或使用 trans() 读取的 JSON 翻译源)中,将上述 11 条 JSON 缺失项由英文原文改为匈牙利语,例如:

{
    "Invalid credential format.": "Érvénytelen hitelesítőadat-formátum.",
    "Unable to register passkey. Please try again.": "A hozzáférési kulcs regisztrálása nem sikerült. Kérjük, próbálja újra."
}

3. 补充 PHP 验证消息

在 lang/hu/validation.php 中补充 array_keys 与 base64 两条(带 :attribute 占位符):

'array_keys' => 'A :attribute mező csak a következő kulcsokat tartalmazhatja: :values.',
'base64' => 'A :attribute mezőnek érvényes Base64 karakterláncnak kell lennie.',

内联格式则对应 lang/hu/validation-inline.php(即本文 php-inline 所指的文件):

'array_keys' => 'Ez a mező csak a következő kulcsokat tartalmazhatja: :values.',
'base64' => 'Ennek a mezőnek érvényes Base64 karakterláncnak kell lennie.',

4. 验证补全结果

补全后可通过 php artisan about 或直接调用 trans('validation.array_keys', <a href="https://link.gitcode.com/i/9861141db5afe27226092bf2743b5ce0" target="_blank">'attribute' => 'mező']) 等方式检查消息是否命中匈牙利语翻译;更完整的回归验证可参考仓库内 [tests/PluginTest.php 的做法——该测试文件展示了本项目对语言包结构与内容的校验方式(从源码结构看,它用于确保各语言文件与源文件键值对齐),可以作为你自行编写校验脚本的参照。

相关资源索引

最后需要提醒:以上 15 条缺失均以当前仓库快照为准,其中 Passkeys 相关文案会随 Laravel 版本演进继续变化,建议在补全时同步核对 source/passkeys 与 source/framework 下各版本目录的最新源文件,避免因版本差异造成键名漂移。

登录后查看全文
lang