#include <host/pseudolocalize.h> using namespace std; static const char* pseudolocalize_char(char c) { switch (c) { case 'a': return "\xc4\x83"; case 'b': return "\xcf\x84"; case 'c': return "\xc4\x8b"; case 'd': return "\xc4\x8f"; case 'e': return "\xc4\x99"; case 'f': return "\xc6\x92"; case 'g': return "\xc4\x9d"; case 'h': return "\xd1\x9b"; case 'i': return "\xcf\x8a"; case 'j': return "\xc4\xb5"; case 'k': return "\xc4\xb8"; case 'l': return "\xc4\xba"; case 'm': return "\xe1\xb8\xbf"; case 'n': return "\xd0\xb8"; case 'o': return "\xcf\x8c"; case 'p': return "\xcf\x81"; case 'q': return "\x51"; case 'r': return "\xd2\x91"; case 's': return "\xc5\xa1"; case 't': return "\xd1\x82"; case 'u': return "\xce\xb0"; case 'v': return "\x56"; case 'w': return "\xe1\xba\x85"; case 'x': return "\xd1\x85"; case 'y': return "\xe1\xbb\xb3"; case 'z': return "\xc5\xba"; case 'A': return "\xc3\x85"; case 'B': return "\xce\xb2"; case 'C': return "\xc4\x88"; case 'D': return "\xc4\x90"; case 'E': return "\xd0\x84"; case 'F': return "\xce\x93"; case 'G': return "\xc4\x9e"; case 'H': return "\xc4\xa6"; case 'I': return "\xd0\x87"; case 'J': return "\xc4\xb5"; case 'K': return "\xc4\xb6"; case 'L': return "\xc5\x81"; case 'M': return "\xe1\xb8\xbe"; case 'N': return "\xc5\x83"; case 'O': return "\xce\x98"; case 'P': return "\xcf\x81"; case 'Q': return "\x71"; case 'R': return "\xd0\xaf"; case 'S': return "\xc8\x98"; case 'T': return "\xc5\xa6"; case 'U': return "\xc5\xa8"; case 'V': return "\xce\xbd"; case 'W': return "\xe1\xba\x84"; case 'X': return "\xc3\x97"; case 'Y': return "\xc2\xa5"; case 'Z': return "\xc5\xbd"; default: return NULL; } } /** * Converts characters so they look like they've been localized. * * Note: This leaves escape sequences untouched so they can later be * processed by ResTable::collectString in the normal way. */ string pseudolocalize_string(const string& source) { const char* s = source.c_str(); string result; const size_t I = source.length(); for (size_t i=0; i<I; i++) { char c = s[i]; if (c == '\\') { if (i<I-1) { result += '\\'; i++; c = s[i]; switch (c) { case 'u': // this one takes up 5 chars result += string(s+i, 5); i += 4; break; case 't': case 'n': case '#': case '@': case '?': case '"': case '\'': case '\\': default: result += c; break; } } else { result += c; } } else { const char* p = pseudolocalize_char(c); if (p != NULL) { result += p; } else { result += c; } } } //printf("result=\'%s\'\n", result.c_str()); return result; }