9 个不稳定版本 (3 个破坏性更新)
0.3.0 | 2024年5月2日 |
---|---|
0.2.2 | 2024年4月26日 |
0.1.2 | 2024年4月26日 |
0.0.2 | 2024年4月25日 |
204 在 WebAssembly
每月下载 407 次
120KB
3.5K SLoC
nile-library - 支持尼罗的库
该仓库包含支持 OpenTTD 翻译工具 nile
的库。
例如,此库验证翻译是否适用于给定的基本字符串,并将基本字符串转换为可翻译的形式。
安装
已安装 Rust 工具。
开发
为了方便本地开发
- 验证基本字符串
cargo run -- <base>
- 验证翻译字符串
cargo run -- <base> <translation>
它将输出规范化的字符串形式,以及字符串是否有效;如果不是,将指出错误。
WASM 集成
此工具还与 WASM 集成,因此可以在任何网站上执行验证。为此使用 wasm-pack。
wasm-pack build --release
API 使用
步骤 1: 验证和规范化基本字符串
API 方法
fn validate_base(config: LanguageConfig, base: String) -> ValidationResult
输入
config.dialect
:openttd
、newgrf
、game-script
之一。config.cases
: 基础语言的空值。config.genders
: 基础语言的空值。config.plural_count
: 基础语言为2
。base
: 要验证的基本字符串
输出
errors
: 错误列表。如果此列表不为空,则不应将字符串提供给翻译者。normalized
: 供翻译者显示的规范化文本。- 在规范化文本中,如
RAW_STRING
、STRING5
等字符串命令被替换为STRING
。 - 翻译者可以将规范化文本作为翻译模板复制。
- 在规范化文本中,如
示例
>>> cargo run "{BLACK}Age: {LTBLUE}{STRING2}{BLACK} Running Cost: {LTBLUE}{CURRENCY}/year"
ERROR at position 61 to 71: Unknown string command '{CURRENCY}'.
>>> cargo run "{BLACK}Age: {LTBLUE}{STRING2}{BLACK} Running Cost: {LTBLUE}{CURRENCY_LONG}/year"
NORMALIZED:{BLACK}Age: {LTBLUE}{0:STRING}{BLACK} Running Cost: {LTBLUE}{1:CURRENCY_LONG}/year
步骤 2: 翻译者翻译字符串
- 翻译者必须提供默认情况的文本。
- 其他情况是可选的。
- 游戏脚本不支持情况。在
LanguageConfig
中有一个方法可以测试此,但尚未导出。
步骤 3: 验证和规范化翻译字符串
API 方法
fn validate_translation(config: LanguageConfig, base: String, case: String, translation: String) -> ValidationResult
输入
config.dialect
:openttd
、newgrf
、game-script
之一。config.cases
: 来自nile-config
的case
。config.genders
:来自nile-config
的gender
。config.plural_count
:来自nile-config
的复数形式数量。base
:翻译所针对的基准字符串。case
:翻译的格式。使用"default"
表示默认情况。translation
:翻译者输入的文本。
输出
errors
:错误列表。severity
:错误的严重程度。error
:翻译已损坏,不得提交到 OpenTTD。warning
:翻译可以提交,但翻译者仍应修复它。这用于新的验证,Eints 没有执行。因此,可能存在大量违反规定的现有翻译。
position
:输入字符串中的字节位置。如果是一般消息且没有位置,则None
。message
:错误信息。suggestion
:一些带有提示的扩展消息。
normalized
:提交的规范化文本。在规范化文本中,已删除尾随空格和其他垃圾。
示例
>>> cargo run "{BLACK}Age: {LTBLUE}{STRING2}{BLACK} Running Cost: {LTBLUE}{CURRENCY_LONG}/year" "{BLUE}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{0:CURRENCY_LONG}/Jahr"
ERROR at position 61 to 78: Duplicate parameter '{0:CURRENCY_LONG}'.
ERROR at position 61 to 78: Expected '{0:STRING2}', found '{CURRENCY_LONG}'.
ERROR: String command '{1:CURRENCY_LONG}' is missing.
WARNING: String command '{BLUE}' is unexpected. HINT: Remove this command.
>>> cargo run "{BLACK}Age: {LTBLUE}{STRING2}{BLACK} Running Cost: {LTBLUE}{CURRENCY_LONG}/year" "{BLACK}Alter: {LTBLUE}{STRING}{BLACK} Betriebskosten: {LTBLUE}{CURRENCY_LONG}/Jahr"
NORMALIZED:{BLACK}Alter: {LTBLUE}{0:STRING}{BLACK} Betriebskosten: {LTBLUE}{1:CURRENCY_LONG}/Jahr
依赖项
~4.5–6.5MB
~106K SLoC