#csv #localization #language #manager #word #model

csvll

通过 CSV 文件进行本地化的库

2 个版本

使用旧的 Rust 2015

0.1.6 2017 年 1 月 28 日
0.1.5 2017 年 1 月 23 日

76#word

MIT 许可证

9KB
122 行代码(不含注释)

CSV 本地化库

通过 CSV 表进行本地化。

入门指南

在这个教程中,我们将使用 Google Sheets 作为工具。

步骤 1 - 创建表格

如您所见,应创建一个包含 ID 的第一列和语言的第一行的表格。这应该相对容易理解。

步骤 2 - 将表格保存为 .csv

步骤 3 - 将 csvll 添加为依赖项

  1. 在您的 cargo.toml 中添加
[dependencies]
// Assign latest version (Might not be the one saying)
csvll = "0.1.6"

2. 在命令行中运行 `cargo install`

3. 在您选择的可执行文件或库中添加 ```Rust extern crate csvll;

use csvll::Manager;


### Step 4 - Create Manager & Parse
Now we need a manager that parses the information for us
```Rust
// The parameters are directory, filename & extension
// My file is located outside of the project
let mut manag = Manager::new("..", "test_table", ".txt");

// Then parse the file assigned
manag.parse();

步骤 5 - 设置默认语言

// (Code continues from earlier)
// Set your default language with any available language id
m.set_def(0);
// Get language reference & vector of word references as a tuple
let (lang, word_vec) = m.get_def();

模型

语言

id: i32,
name: String

// Initalizer
fn new(id: i32, name: &str) -> Language { /* ... */ }

单词

id: i32,
lang_id: i32,
val: String

// Initalizer
fn new(id: i32, lang_id: i32, val: &str) -> Word { /* ... */ }

管理器

file: File,
langs: Vec<Language>,
words: Vec<Word>,
def_lang: i32

// Initalizer
fn new(direc: &str, name: &str, ext: &str) -> Manager { /* ... */ }

// Further methods

// Parses languages & words into manager model
fn parse() { /* ... */ }

// Sets default language by language id
fn set_def(lang_id: i32) { /* ... */ }

// Returns reference to set def. language & vector of references to words of language
fn get_def() -> (&Language, Vec<&Word>) { /* ... */ }

// Returns references to word of current language at index
// Really works since 0.1.6.
fn get_word(word_id: i32) -> &Word { /* ... */ }

// Returns vector of references of words of current language at indicies
fn get_words(word_ids: Vec<i32>) -> Vec<&Word> { /* ... */ }


无运行时依赖