Laravel 匈牙利语(hu)本地化缺失翻译全解析:lang 仓库 15 条缺口清单与补全方案
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 的做法——该测试文件展示了本项目对语言包结构与内容的校验方式(从源码结构看,它用于确保各语言文件与源文件键值对齐),可以作为你自行编写校验脚本的参照。
相关资源索引
- 状态总览:docs/status.md
- hu 专项状态报告:docs/statuses/hu.md
- hu 语言包文件:locales/hu
- Passkeys 源文案:source/passkeys/main/passkeys.json
- Framework 源文案(含加密环境文件消息):source/framework/13.x/framework.json
- 验证规则源文案:source/framework/13.x/validation.php
- 仓库结构与测试:composer.json、tests/PluginTest.php
最后需要提醒:以上 15 条缺失均以当前仓库快照为准,其中 Passkeys 相关文案会随 Laravel 版本演进继续变化,建议在补全时同步核对 source/passkeys 与 source/framework 下各版本目录的最新源文件,避免因版本差异造成键名漂移。