Adding documentation to GTRANS
This commit is contained in:
parent
7b60003461
commit
39c13d1645
@ -68,7 +68,7 @@ int main(void)
|
|||||||
gdispFillStringBox(20+300*i, 35*j, 300, 35, gtransIndex(j), font, Black, Silver, justifyLeft);
|
gdispFillStringBox(20+300*i, 35*j, 300, 35, gtransIndex(j), font, Black, Silver, justifyLeft);
|
||||||
}
|
}
|
||||||
|
|
||||||
gdispFillStringBox(20, 300, 300, 25, gtransString("Welcome"), font, Black, Silver, justifyLeft);
|
gdispFillStringBox(20, 300, 300, 25, gt("Welcome"), font, Black, Silver, justifyLeft);
|
||||||
|
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
gfxSleepMilliseconds(500);
|
gfxSleepMilliseconds(500);
|
||||||
|
@ -25,23 +25,29 @@ void _gtransDeinit(void)
|
|||||||
|
|
||||||
const char* gtransString(const char* string)
|
const char* gtransString(const char* string)
|
||||||
{
|
{
|
||||||
|
// Find the index of the specified string in the base language table
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
// Prevent overflow
|
||||||
if (i >= _languageBase->numEntries-1) {
|
if (i >= _languageBase->numEntries-1) {
|
||||||
return 0;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if we found the string
|
||||||
if (strcmp(string, _languageBase->strings[i]) == 0) {
|
if (strcmp(string, _languageBase->strings[i]) == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Otherwise keep going
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sure that the index exists in the current language table
|
||||||
if (i >= _languageCurrent->numEntries-1) {
|
if (i >= _languageCurrent->numEntries-1) {
|
||||||
return 0;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the translated string
|
||||||
return _languageCurrent->strings[i];
|
return _languageCurrent->strings[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
* @addtogroup GTRANS
|
* @addtogroup GTRANS
|
||||||
*
|
*
|
||||||
* @brief Module to allow changing the language of an application dynamically during run-time.
|
* @brief Module that allows changing the language of an application dynamically during run-time.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
@ -22,18 +22,66 @@
|
|||||||
|
|
||||||
#if GFX_USE_GTRANS || defined(__DOXYGEN__)
|
#if GFX_USE_GTRANS || defined(__DOXYGEN__)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @struct transTable
|
||||||
|
* @brief A table containing translated strings.
|
||||||
|
*/
|
||||||
typedef struct transTable {
|
typedef struct transTable {
|
||||||
unsigned numEntries;
|
unsigned numEntries; /**< The number of strings that this table contains */
|
||||||
const char** strings;
|
const char** strings; /**< The translated strings */
|
||||||
} transTable;
|
} transTable;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief A wrapper macro to make writing and reading translatable applications easier.
|
||||||
|
*/
|
||||||
|
#define gt(str) gtransString(str)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the string of the current language specified by the string of the base language.
|
||||||
|
*
|
||||||
|
* @details This function will return the string of the current language that corresponds to
|
||||||
|
* the specified string in the base language.
|
||||||
|
* @details This function uses strcmp() internally to compare strings.
|
||||||
|
*
|
||||||
|
* @param[in] string The string to translate.
|
||||||
|
*
|
||||||
|
* @return The corresponding string of the current language or the string passed as a parameter if it doesn't exist.
|
||||||
|
*/
|
||||||
const char* gtransString(const char* string);
|
const char* gtransString(const char* string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the string at the specified index position of the current language.
|
||||||
|
*
|
||||||
|
* @details Getting translation strings is a lot faster using the index as an accessor rather
|
||||||
|
* than the string in the base language.
|
||||||
|
*
|
||||||
|
* @param[in] index The index of the string in the current language translation table.
|
||||||
|
*
|
||||||
|
* @return The string at the given index of the current language or 0 if it doesn't exist.
|
||||||
|
*/
|
||||||
const char* gtransIndex(unsigned index);
|
const char* gtransIndex(unsigned index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the base language.
|
||||||
|
*
|
||||||
|
* @details A translatable application needs to have a base language. All translations will
|
||||||
|
* be relative to this base language.
|
||||||
|
*
|
||||||
|
* @param[in] translation The translation table
|
||||||
|
*/
|
||||||
void gtransSetBaseLanguage(const transTable* const translation);
|
void gtransSetBaseLanguage(const transTable* const translation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the current language.
|
||||||
|
*
|
||||||
|
* @details All translations will refer to the current language set by calling this function.
|
||||||
|
*
|
||||||
|
* @param[in] translation The translation table
|
||||||
|
*/
|
||||||
void gtransSetLanguage(const transTable* const translation);
|
void gtransSetLanguage(const transTable* const translation);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -44,4 +92,3 @@ void gtransSetLanguage(const transTable* const translation);
|
|||||||
|
|
||||||
#endif /* _TRANS_H */
|
#endif /* _TRANS_H */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user