# `naisi_language_tag_is_valid`

验证 URL 中的单个 BCP 47 Language Tag，并输出标准化标签。

使用内置 IANA Language Subtag Registry 离线校验语言、扩展语言、Script、Region、
Variant 和已注册 Extension。输入不自动移除首尾空白；成功时按 BCP 47 大小写约定
返回完整标签，并应用 IANA Preferred-Value（如 iw-IL → he-IL、i-klingon → tlh）。
扩展语言按 IANA 首选形式转换（zh-cmn → cmn）；不会把 zh-CN 改成推测的语言/地区组合。
不接收 Accept-Language 列表或 q 权重。只判断国际标准，不判断站点是否启用了该语言。

注意：tw 是 IANA 登记的 Twi 语言代码；TW 作为台湾地区代码时应写在 zh-TW 等标签中。

## 函数签名

```php
function naisi_language_tag_is_valid(
    string $language_tag,
    ?string &$normalized_tag = null
): bool
```

## 调用前提

应用入口先调用 [naisi_is_ext_license_valid](/web/developers/naisilib/naisi-is-ext-license-valid) 并确认返回 `true`。只验证同一请求内已有的有效 FULL/BASIC 证明；没有证明或证明失效时立即返回失败值，不现场补做完整校验。

授权类别：`LICENSE`；执行模式：`PROOF`。许可不代替登录、租户或权限上下文；身份与数据要求见本页参数及用途说明。

## 参数

### `$language_tag`

- 类型：`string`
- 必填：是
- 默认值：无
- 方向：输入参数。

完整 BCP 47 Language Tag，例如 zh-CN、zh-Hant-TW、en-US 或 fr-CA。

### `$normalized_tag`

- 类型：`?string`
- 必填：否
- 默认值：`null`
- 方向：引用输出参数；失败时清空，仅在成功后包含有效结果。

标准化结果输出。成功时写入标准化标签；失败、参数无效或未授权时重置为 null。

## 返回值

类型：`bool`

标签由已登记子标签组成且语法合法时返回 true，否则返回 false。

## 调用示例

当前请求须满足上方调用前提；请检查实际返回值和引用输出，随机结果及数据包内容以运行环境为准。

```php
$language_tag = 'en-US-x-test1';
$normalized_tag = null;

$result = naisi_language_tag_is_valid($language_tag, $normalized_tag);
var_export($result);
```

## 版本信息

- 自版本：`1.0.6`
- 实现模块：`language`
- 授权类别：`LICENSE` / `PROOF`
- 失败回退：`false`
- 文档同步：`2026-10-18`
