i18n.c (720B)
1 /* i18n.c - tabla de textos es/en. */ 2 #include "chess.h" 3 4 #define X_ES(id, es, en) es, 5 #define X_EN(id, es, en) en, 6 static const char *const TXT[LANG_COUNT][S__COUNT] = { 7 { STRINGS(X_ES) }, 8 { STRINGS(X_EN) }, 9 }; 10 11 const char *tr(int id) 12 { 13 if (id < 0 || id >= S__COUNT) return "?"; 14 return TXT[g_lang == LANG_EN ? LANG_EN : LANG_ES][id]; 15 } 16 17 const char *err_text(int e) { return (e >= 0 && e < E__COUNT) ? tr(S_E_OK + e) : "?"; } 18 const char *reason_text(int r) { return (r >= 0 && r < RS__COUNT) ? tr(S_RS_NONE + r) : "?"; } 19 const char *piece_name(int t) { return (t >= PAWN && t <= KING) ? tr(S_PAWN + t - PAWN) : "?"; } 20 const char *color_name(int c) { return tr(c == WHITE ? S_WHITE : S_BLACK); }