summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2014-01-24 20:34:03 +0000
committerGeorge Hazan <george.hazan@gmail.com>2014-01-24 20:34:03 +0000
commit0b28a68658dd46d9041cfaa3ab453da37ee9ab0f (patch)
treefd3fa06afe3a6ddcb92b47931f91c03d84d629e4
parentf3ee18e7be4f2799c871b995002b0aa88594af04 (diff)
fix to allow translations with the leading [
git-svn-id: http://svn.miranda-ng.org/main/trunk@7867 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--src/mir_core/langpack.cpp100
1 files changed, 53 insertions, 47 deletions
diff --git a/src/mir_core/langpack.cpp b/src/mir_core/langpack.cpp
index a23e6311a6..dab2a777ad 100644
--- a/src/mir_core/langpack.cpp
+++ b/src/mir_core/langpack.cpp
@@ -62,7 +62,7 @@ static langPack;
static int IsEmpty(const char *str)
{
- for (int i=0; str[i]; i++)
+ for (int i = 0; str[i]; i++)
if (str[i] != ' ' && str[i] != '\r' && str[i] != '\n')
return 0;
@@ -76,14 +76,14 @@ static int ConvertBackslashes(char *str, UINT fileCp)
for (pstr = str; *pstr; pstr = CharNextExA(fileCp, pstr, 0)) {
if (*pstr == '\\') {
shift++;
- switch(pstr[1]) {
+ switch (pstr[1]) {
case 'n': *pstr = '\n'; break;
case 't': *pstr = '\t'; break;
case 'r': *pstr = '\r'; break;
case 's': *pstr = ' '; break;
default: *pstr = pstr[1]; break;
}
- memmove(pstr+1, pstr+2, strlen(pstr+2) + 1);
+ memmove(pstr + 1, pstr + 2, strlen(pstr + 2) + 1);
}
}
return shift;
@@ -122,11 +122,11 @@ MIR_CORE_DLL(unsigned int) mir_hash(const void * key, unsigned int len)
}
// Handle the last few bytes of the input array
- switch(len) {
+ switch (len) {
case 3: h ^= data[2] << 16;
case 2: h ^= data[1] << 8;
case 1: h ^= data[0];
- h *= m;
+ h *= m;
}
// Do a few final mixes of the hash to ensure the last few
@@ -143,7 +143,7 @@ static unsigned int __fastcall hashstrW(const char *key)
if (key == NULL) return 0;
const unsigned int len = (unsigned int)wcslen((const wchar_t*)key);
char *buf = (char*)alloca(len + 1);
- for (unsigned i = 0; i <= len ; ++i)
+ for (unsigned i = 0; i <= len; ++i)
buf[i] = key[i << 1];
return mir_hash(buf, len);
}
@@ -182,10 +182,10 @@ static bool EnterMuuid(const char *p, MUUID &result)
if (*p == '}')
break;
- if ( !isxdigit(*p))
+ if (!isxdigit(*p))
return false;
- if ( !isxdigit(p[1]))
+ if (!isxdigit(p[1]))
return false;
int c = 0;
@@ -220,9 +220,9 @@ static void LoadLangPackFile(FILE *fp, char *line, UINT fileCp)
if (line[0] == '#') {
strlwr(line);
- if ( !memcmp(line+1, "include", 7)) {
- TCHAR tszFileName[ MAX_PATH ];
- TCHAR* fileName = mir_a2t(ltrim(line+9));
+ if (!memcmp(line + 1, "include", 7)) {
+ TCHAR tszFileName[MAX_PATH];
+ TCHAR* fileName = mir_a2t(ltrim(line + 9));
mir_sntprintf(tszFileName, SIZEOF(tszFileName), _T("%s%s"), langPack.filePath, fileName);
mir_free(fileName);
@@ -245,9 +245,9 @@ static void LoadLangPackFile(FILE *fp, char *line, UINT fileCp)
fclose(p);
}
}
- else if ( !memcmp(line+1, "muuid", 5)) {
+ else if (!memcmp(line + 1, "muuid", 5)) {
MUUID t;
- if ( !EnterMuuid(line+7, t))
+ if (!EnterMuuid(line + 7, t))
continue;
MUUID *pNew = (MUUID*)mir_alloc(sizeof(MUUID));
@@ -259,21 +259,23 @@ static void LoadLangPackFile(FILE *fp, char *line, UINT fileCp)
continue;
}
+ char cFirst = line[0];
+
ConvertBackslashes(line, fileCp);
- size_t cbLen = strlen(line)-1;
- if (line[0] == '[' && line[cbLen] == ']') {
- if (langPack.entryCount && langPack.entry[ langPack.entryCount-1].wszLocal == NULL)
+ size_t cbLen = strlen(line) - 1;
+ if (cFirst == '[' && line[cbLen] == ']') {
+ if (langPack.entryCount && langPack.entry[langPack.entryCount - 1].wszLocal == NULL)
langPack.entryCount--;
- char *pszLine = line+1;
+ char *pszLine = line + 1;
line[cbLen] = '\0';
if (++langPack.entryCount > langPack.entriesAlloced) {
langPack.entriesAlloced += 128;
langPack.entry = (LangPackEntry*)mir_realloc(langPack.entry, sizeof(LangPackEntry)*langPack.entriesAlloced);
}
- LangPackEntry *E = &langPack.entry[langPack.entryCount-1];
+ LangPackEntry *E = &langPack.entry[langPack.entryCount - 1];
E->englishHash = mir_hashstr(pszLine);
E->szLocal = NULL;
E->wszLocal = NULL;
@@ -282,19 +284,19 @@ static void LoadLangPackFile(FILE *fp, char *line, UINT fileCp)
continue;
}
- if ( !langPack.entryCount)
+ if (!langPack.entryCount)
continue;
- LangPackEntry *E = &langPack.entry[ langPack.entryCount-1 ];
+ LangPackEntry *E = &langPack.entry[langPack.entryCount - 1];
int iNeeded = MultiByteToWideChar(fileCp, 0, line, -1, 0, 0), iOldLen;
if (E->wszLocal == NULL) {
iOldLen = 0;
- E->wszLocal = (wchar_t *)mir_alloc((iNeeded+1) * sizeof(wchar_t));
+ E->wszLocal = (wchar_t *)mir_alloc((iNeeded + 1) * sizeof(wchar_t));
MultiByteToWideChar(fileCp, 0, line, -1, E->wszLocal, iNeeded);
}
else {
iOldLen = (int)wcslen(E->wszLocal);
- E->wszLocal = (wchar_t*)mir_realloc(E->wszLocal, (sizeof(wchar_t) * (iOldLen + iNeeded + 2)));
+ E->wszLocal = (wchar_t*)mir_realloc(E->wszLocal, (sizeof(wchar_t)* (iOldLen + iNeeded + 2)));
E->wszLocal[iOldLen++] = '\n';
}
MultiByteToWideChar(fileCp, 0, line, -1, E->wszLocal + iOldLen, iNeeded);
@@ -303,7 +305,7 @@ static void LoadLangPackFile(FILE *fp, char *line, UINT fileCp)
MIR_CORE_DLL(int) LoadLangPack(const TCHAR *szLangPack)
{
- int startOfLine=0;
+ int startOfLine = 0;
USHORT langID;
lstrcpy(langPack.filename, szLangPack);
@@ -316,7 +318,7 @@ MIR_CORE_DLL(int) LoadLangPack(const TCHAR *szLangPack)
if (fp == NULL)
return 1;
- char line[ LANGPACK_BUF_SIZE ] = "";
+ char line[LANGPACK_BUF_SIZE] = "";
fgets(line, SIZEOF(line), fp);
UINT fileCp = CP_ACP;
@@ -352,11 +354,11 @@ MIR_CORE_DLL(int) LoadLangPack(const TCHAR *szLangPack)
}
*pszColon++ = 0;
- if ( !lstrcmpA(line, "Language")) {mir_snprintf(langPack.language, sizeof(langPack.language), "%s", pszColon); lrtrim(langPack.language);}
- else if ( !lstrcmpA(line, "Last-Modified-Using")) {mir_snprintf(langPack.lastModifiedUsing, sizeof(langPack.lastModifiedUsing), "%s", pszColon); lrtrim(langPack.lastModifiedUsing);}
- else if ( !lstrcmpA(line, "Authors")) {mir_snprintf(langPack.authors, sizeof(langPack.authors), "%s", pszColon); lrtrim(langPack.authors);}
- else if ( !lstrcmpA(line, "Author-email")) {mir_snprintf(langPack.authorEmail, sizeof(langPack.authorEmail), "%s", pszColon); lrtrim(langPack.authorEmail);}
- else if ( !lstrcmpA(line, "Locale")) {
+ if (!lstrcmpA(line, "Language")) { mir_snprintf(langPack.language, sizeof(langPack.language), "%s", pszColon); lrtrim(langPack.language); }
+ else if (!lstrcmpA(line, "Last-Modified-Using")) { mir_snprintf(langPack.lastModifiedUsing, sizeof(langPack.lastModifiedUsing), "%s", pszColon); lrtrim(langPack.lastModifiedUsing); }
+ else if (!lstrcmpA(line, "Authors")) { mir_snprintf(langPack.authors, sizeof(langPack.authors), "%s", pszColon); lrtrim(langPack.authors); }
+ else if (!lstrcmpA(line, "Author-email")) { mir_snprintf(langPack.authorEmail, sizeof(langPack.authorEmail), "%s", pszColon); lrtrim(langPack.authorEmail); }
+ else if (!lstrcmpA(line, "Locale")) {
char szBuf[20], *stopped;
lrtrim(pszColon + 1);
@@ -408,7 +410,9 @@ static char *LangPackTranslateString(MUUID *pUuid, const char *szEnglish, const
if (p->pMuuid == pUuid) {
entry = p;
break;
- } } }
+ }
+ }
+ }
if (W)
return (char*)entry->wszLocal;
@@ -434,7 +438,7 @@ MIR_CORE_DLL(TCHAR*) Langpack_PcharToTchar(const char *pszStr)
return NULL;
int len = (int)strlen(pszStr);
- TCHAR *result = (TCHAR*)alloca((len+1)*sizeof(TCHAR));
+ TCHAR *result = (TCHAR*)alloca((len + 1)*sizeof(TCHAR));
MultiByteToWideChar(Langpack_GetDefaultCodePage(), 0, pszStr, -1, result, len);
result[len] = 0;
return mir_wstrdup(TranslateW(result));
@@ -457,9 +461,9 @@ MIR_CORE_DLL(void) TranslateMenu_LP(HMENU hMenu, int hLangpack)
MUUID *uuid = Langpack_LookupUuid(hLangpack);
MENUITEMINFO mii = { sizeof(mii) };
- for (int i = GetMenuItemCount(hMenu)-1; i >= 0; i--) {
+ for (int i = GetMenuItemCount(hMenu) - 1; i >= 0; i--) {
TCHAR str[256];
- mii.fMask = MIIM_TYPE|MIIM_SUBMENU;
+ mii.fMask = MIIM_TYPE | MIIM_SUBMENU;
mii.dwTypeData = (TCHAR*)str;
mii.cch = SIZEOF(str);
GetMenuItemInfo(hMenu, i, TRUE, &mii);
@@ -503,9 +507,9 @@ static BOOL CALLBACK TranslateDialogEnumProc(HWND hwnd, LPARAM lParam)
MUUID *uuid = Langpack_LookupUuid(hLangpack);
GetClassName(hwnd, szClass, SIZEOF(szClass));
- if ( !lstrcmpi(szClass, _T("static")) || !lstrcmpi(szClass, _T("hyperlink")) || !lstrcmpi(szClass, _T("button")) || !lstrcmpi(szClass, _T("MButtonClass")) || !lstrcmpi(szClass, _T("MHeaderbarCtrl")))
+ if (!lstrcmpi(szClass, _T("static")) || !lstrcmpi(szClass, _T("hyperlink")) || !lstrcmpi(szClass, _T("button")) || !lstrcmpi(szClass, _T("MButtonClass")) || !lstrcmpi(szClass, _T("MHeaderbarCtrl")))
TranslateWindow(uuid, hwnd);
- else if ( !lstrcmpi(szClass, _T("edit"))) {
+ else if (!lstrcmpi(szClass, _T("edit"))) {
if (GetWindowLongPtr(hwnd, GWL_STYLE) & ES_READONLY)
TranslateWindow(uuid, hwnd);
}
@@ -514,7 +518,7 @@ static BOOL CALLBACK TranslateDialogEnumProc(HWND hwnd, LPARAM lParam)
MIR_CORE_DLL(void) TranslateDialog_LP(HWND hDlg, int hLangpack)
{
- TranslateWindow( Langpack_LookupUuid(hLangpack), hDlg);
+ TranslateWindow(Langpack_LookupUuid(hLangpack), hDlg);
EnumChildWindows(hDlg, TranslateDialogEnumProc, hLangpack);
}
@@ -523,7 +527,7 @@ MIR_CORE_DLL(void) TranslateDialog_LP(HWND hDlg, int hLangpack)
MIR_CORE_DLL(MUUID*) Langpack_LookupUuid(WPARAM wParam)
{
int idx = (wParam >> 16) & 0xFFFF;
- return (idx > 0 && idx <= lMuuids.getCount()) ? lMuuids[ idx-1 ] : NULL;
+ return (idx > 0 && idx <= lMuuids.getCount()) ? lMuuids[idx - 1] : NULL;
}
MIR_CORE_DLL(int) Langpack_MarkPluginLoaded(PLUGININFOEX *pInfo)
@@ -532,7 +536,7 @@ MIR_CORE_DLL(int) Langpack_MarkPluginLoaded(PLUGININFOEX *pInfo)
if (idx == -1)
return 0;
- return (idx+1) << 16;
+ return (idx + 1) << 16;
}
MIR_CORE_DLL(void) Langpack_SortDuplicates(void)
@@ -540,11 +544,11 @@ MIR_CORE_DLL(void) Langpack_SortDuplicates(void)
if (langPack.entryCount == 0)
return;
- LangPackEntry *s = langPack.entry+1, *d = s, *pLast = langPack.entry;
+ LangPackEntry *s = langPack.entry + 1, *d = s, *pLast = langPack.entry;
DWORD dwSavedHash = langPack.entry->englishHash;
bool bSortNeeded = false;
- for (int i=1; i < langPack.entryCount; i++, s++) {
+ for (int i = 1; i < langPack.entryCount; i++, s++) {
if (s->englishHash != dwSavedHash) {
pLast = d;
if (s != d)
@@ -592,22 +596,23 @@ MIR_CORE_DLL(int) LoadLangPackModule(void)
void UnloadLangPackModule()
{
- if ( !bModuleInitialized) return;
+ if (!bModuleInitialized) return;
int i;
- for (i=0; i < lMuuids.getCount(); i++)
+ for (i = 0; i < lMuuids.getCount(); i++)
mir_free(lMuuids[i]);
lMuuids.destroy();
LangPackEntry *p = langPack.entry;
- for (i=0; i < langPack.entryCount; i++, p++) {
+ for (i = 0; i < langPack.entryCount; i++, p++) {
if (p->pNext != NULL) {
for (LangPackEntry *p1 = p->pNext; p1 != NULL;) {
LangPackEntry *p2 = p1; p1 = p1->pNext;
mir_free(p2->szLocal);
mir_free(p2->wszLocal);
mir_free(p2);
- } }
+ }
+ }
mir_free(p->szLocal);
mir_free(p->wszLocal);
@@ -615,9 +620,10 @@ void UnloadLangPackModule()
if (langPack.entryCount) {
mir_free(langPack.entry);
- langPack.entry=0;
- langPack.entryCount=0;
-} }
+ langPack.entry = 0;
+ langPack.entryCount = 0;
+ }
+}
/////////////////////////////////////////////////////////////////////////////////////////