Skip to content

Commit 5d95d95

Browse files
author
Jay
committed
First column of translation file must be a generic key
1 parent 1b7ea30 commit 5d95d95

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

build.zig.zon

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.{
22
.name = .engine,
3-
.version = "0.2.4",
3+
.version = "0.2.5",
44
.fingerprint = 0xe8a81a8d0aa558d5,
55
.minimum_zig_version = "0.14.1",
66
.dependencies = .{
@@ -17,8 +17,8 @@
1717
.hash = "zigimg-0.1.0-lly-O_qZEgAP5eJWUbcWtL9Jv4V_BGcK5p-570Hiaj7k",
1818
},
1919
.resources = .{
20-
.url = "git+https://github.com/loftafi/resources.git#85062f2d5c62c98c34dbde039ac25be2f158edeb",
21-
.hash = "resources-0.2.7-J0GwI4OHAQDbbK0lFulMd3f-arjEIuNvLFJXgXAJtTxD",
20+
.url = "git+https://github.com/loftafi/resources.git#58c9dc8d674ae49cee012e19d30804a9d4862b94",
21+
.hash = "resources-0.2.11-J0GwI4uHAQASzzVqZVvlM2gpnV6Y3QEF5ghs-gfw4U4J",
2222
},
2323
},
2424
.paths = .{

src/translation.zig

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ pub const Translation = struct {
3838
defer headers.deinit(allocator);
3939
var i = CsvReader{ .data = data };
4040

41+
var col: usize = 0;
4142
while (true) {
4243
// Read header
4344
switch (i.next()) {
@@ -47,7 +48,9 @@ pub const Translation = struct {
4748
return;
4849
},
4950
.field => {
50-
const lr = Lang.parse_code(i.value);
51+
col += 1;
52+
if (col == 1) continue;
53+
const lr: Lang = Lang.parse_code(i.value);
5154
if (lr == .unknown) {
5255
err("load_translation_data has invalid languge code: '{s}'", .{i.value});
5356
return;
@@ -72,13 +75,15 @@ pub const Translation = struct {
7275
continue;
7376
},
7477
.field => {
75-
const en = i.value;
76-
try headers.items[0].*.put(allocator, en, en);
77-
var col: usize = 1;
78+
// read the key from the first column
79+
const key = i.value;
80+
//try headers.items[0].*.put(allocator, key, key);
81+
// read the translations in the next columns
82+
col = 0;
7883
while (col < headers.items.len) : (col += 1) {
7984
const n = i.next();
8085
if (n == .field) {
81-
try headers.items[col].*.put(allocator, en, i.value);
86+
try headers.items[col].*.put(allocator, key, i.value);
8287
} else {
8388
err("load_translation_data has unexpected eol/eof on row {d}.", .{i.row});
8489
return;
@@ -127,26 +132,25 @@ test "translator" {
127132
{
128133
var translator: Translation = .empty;
129134
defer translator.deinit(allocator);
130-
try translator.load_translation_data(allocator, "en,el\nbread,ἄρτος\n");
135+
try translator.load_translation_data(allocator, "keys,en,el\nBREAD,bread,ἄρτος\n");
131136
translator.set_language(.english);
132-
try expectEqualStrings("fish", translator.translate("fish"));
133-
try expectEqualStrings("bread", translator.translate("bread"));
137+
try expectEqualStrings("bread", translator.translate("BREAD"));
134138
translator.set_language(.greek);
135-
try expectEqualStrings("ἄρτος", translator.translate("bread"));
139+
try expectEqualStrings("ἄρτος", translator.translate("BREAD"));
136140
}
137141
{
138142
var translator: Translation = .empty;
139143
defer translator.deinit(allocator);
140144
try translator.load_translation_data(allocator,
141-
\\en,el
142-
\\Verb,ῥῆμα
143-
\\Noun,ὄνομα
144-
\\Adjective,ἐπὶθετον
145-
\\Adverb,ἐπίρρημα
145+
\\keys,en,el
146+
\\VERB,Verb,ῥῆμα
147+
\\NOUN,Noun,ὄνομα
148+
\\ADJECTIVE,Adjective,ἐπὶθετον
149+
\\ADVERB,Adverb,ἐπίρρημα
146150
);
147151
translator.set_language(.english);
148-
try expectEqualStrings("Noun", translator.translate("Noun"));
152+
try expectEqualStrings("Noun", translator.translate("NOUN"));
149153
translator.set_language(.greek);
150-
try expectEqualStrings("ὄνομα", translator.translate("Noun"));
154+
try expectEqualStrings("ὄνομα", translator.translate("NOUN"));
151155
}
152156
}

0 commit comments

Comments
 (0)