@@ -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\n bread ,ἄρτος\n " );
135+ try translator .load_translation_data (allocator , "keys, en,el\n BREAD,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