# API 与多语言规则

## API 文件

新增 API 放在 `src/api/<module>/<page>/index.ts` 或已有模块目录下。

推荐写法：

```ts
import request from '@/utils/request'

export function findPagination(data: any) {
  return request({
    url: '/api/demoa/example/find-pagination',
    method: 'post',
    data,
  })
}
```

## 请求规则

- POST 保存、更新、分页查询按现有接口要求传 `data`。
- 保存/更新业务对象通常使用 `{ params: formData }` 包装。
- GET 查询单条使用 `params`，不要拼接复杂 query 字符串。
- 不确定后端前缀时，先参考同模块 API 文件，不要凭空新增服务前缀。
- 需要动态域名时，参考旧页面中的 `window.getVersionTypeApiUrl(...)` 用法。

## 成功判断

- Composition API 页面优先 import `reqIsSucceed`。
- Options API 旧页面可使用 `this.reqIsSucceed(res)`。
- 不要在新页面里散落 `res.code === 800`、`res.status === 'S'`；只有维护旧接口或流程接口时才沿用既有判断。

## 错误处理

- 保存、删除、提交等用户操作需要 loading 防重复点击。
- 失败时显示后端 `msg` 或明确错误提示。
- 不要吞掉 catch；至少恢复 loading 状态。

## 多语言

本工程语言包位于：

- `src/lang/zh-cn.ts`
- `src/lang/en-us.ts`
- `src/lang/zh-tw.ts`
- `src/lang/modules/<module>/<locale>.ts`

规则：

- 新增用户可见文案优先放入模块语言包。
- 至少补齐 `zh-cn`、`en-us`、`zh-tw`；如果现有模块已有 `hu-hu`、`vi-vn`，同步评估是否需要补。
- 模板中使用 `$t('module.key')` 或 `t('module.key')`。
- 表格列名、按钮、提示、确认文案、校验信息都属于用户可见文案。

## 路由标题

路由 `meta.title` 使用中文标题；`meta.enTitle` 在当前工程常见为多语言 JSON 字符串：

```ts
enTitle: '{"zh-tw":"消息中心","en-us":"letters","hu-hu":"Üzenetközpont","vi-vn":"Trung tâm thông điệp"}'
```

新增路由时保持和邻近路由一致。
