Files
errorx/example/imports/readme.md
T

31 lines
1.3 KiB
Markdown
Raw Normal View History

# langx 资源加载示例
2025-10-26 20:32:02 +08:00
本目录演示 langx 的三种资源加载方式,以及它们与 errorx 的配合。
2025-10-26 20:32:02 +08:00
| 方式 | 函数 | 语义 |
| --- | --- | --- |
| 追加 | `langx.AppendCode` / `langx.AppendTrans` | 按键合并,**业务代码推荐** |
| 打包 | `langx.RegisterEmbed(fs)` | 按键合并,用 //go:embed 把 lang 目录打进二进制,随程序发布 |
| 目录 | `langx.RegisterDir(dir)` | 按键合并,运行时读目录,改文案不用重新编译 |
2025-10-26 20:32:02 +08:00
## 资源文件格式
- `code.json`:`{"key": 业务码}`
- `zh.json` / `en.json`:`{"key": "文案 #占位符#"}`
- 子目录的第一段是语言名:`zh/common.json`、`zh/errors.json` 都会并入 `zh`
## 注意两种注册语义(langx v0.1.0 起)
- `RegisterCode` / `RegisterTrans`:**整体替换**对应的注册表,会冲掉 `errorx.New` 在 init 阶段追加的内置文案;
- `RegisterEmbed` / `RegisterDir` / `RegisterFS`:**按键合并**,不影响已经注册的资源。
即使被整体替换,errorx 的错误常量自带 code 与默认文案,查不到时会自动回填,
所以 `errorx.Error.Err().GetCode()` 永远是 400、文案永远可读,不会退化成裸 key。
但如果直接用 `langx.GetTransFormat` 读这些 key,就会看到裸 key。
运行:
```bash
go run ./example/imports
```