---
order: 30
---

# I18n

Navi 支持定义国际化字符串。

使用 `@` 后跟一个标识符来定义一个国际化字符串。

以下语句定义了一个名为 `hello` 的国际化字符串，它支持两种语言：`zh-CN` 和 `en`。

```nv
@hello {
    "en" = "Hello",
    "zh-CN" = "你好"
}
```

是的，我们也可以使用字符串插值来定义国际化字符串：

```nv
let n = 10;

@length {
    "en" = `Length {n}`,
    "zh-CN" = `长度 {n}`
}
```

你可以使用 `@<标识符>` 来引用当前语言环境的国际化字符串。

例如，以下代码在收盘价大于开盘价时将 `Hello` 或 `你好` 赋值给变量 `value`，否则为空字符串。

```nv
@hello {
  "en" = "Hello",
  "zh-CN" = "你好",
}

let value = quote.close > quote.open ? @hello : "";
```

::: warning
国际化字符串定义中的字符串插值是相对于引用定义的语句。
:::

例如，以下代码将 `Length 10` 或 `长度 10` 赋值给变量 `a`，将 `Length 20` 或 `长度 20` 赋值给变量 `b`。

```nv
@length {
  "en" = `Length {n}`,
  "zh-CN" = `长度 {n}`,
}

let n = 10;
let a = @length;
// a = "Length 10"
```
