Dawn/src/locale/language.c

58 lines
1.5 KiB
C

/**
* Copyright (c) 2021 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "language.h"
void languageInit(language_t *language, char *filename) {
// Open the asset buffer
language->asset = assetBufferOpen(filename);
// Get the headers
csvHeadersGet(language->asset, &language->header);
// Get the row indexes
language->headerIndexKey = csvColumnGetIndex(
&language->header, LANGUAGE_HEADER_KEY
);
language->headerIndexValue = csvColumnGetIndex(
&language->header, LANGUAGE_HEADER_VALUE
);
}
int32_t languageGet(
language_t *language, char *key, char output[CSV_CELL_SIZE_MAX]
) {
csvrow_t row;
// Reset the buffer
assetBufferStart(language->asset);
// Search the CSV
int32_t rowIndex = csvRowSearch(
language->asset, &row, language->headerIndexKey, key
);
if(rowIndex == -1) return rowIndex;// Didn't find anything
// Copy the string
arrayCopy(
sizeof(char), row.columns[language->headerIndexValue],
CSV_CELL_SIZE_MAX, output
);
return rowIndex;
}
int32_t languageGetAndParse(language_t *language, char *key,
stringhandlebarvariable_t *variables, int32_t variableCount, char *buffer
) {
char csvBuffer[CSV_CELL_SIZE_MAX];
int32_t i = languageGet(language, key, csvBuffer);
if(i == -1) return -1;
return stringHandlebarsBuffer(csvBuffer, variables, variableCount, buffer);
}
void languageDispose(language_t *language) {
assetBufferClose(language->asset);
}