Index: uppsrc/Core/t.cpp =================================================================== --- uppsrc/Core/t.cpp (revision 4039) +++ uppsrc/Core/t.cpp (working copy) @@ -319,7 +319,7 @@ return ndx; } -void SaveLngFile(FileOut& out, int lang) +void SaveLngFile(FileOut& out, int lang, int lang2) { CriticalSection::Lock __(slng); out << "LANGUAGE " << AsCString(LNGAsText(lang)) << ";\r\n"; @@ -329,6 +329,8 @@ out << "// " << m.name << "\r\n"; for(int j = 0; j < m.map.GetCount(); j++) { String id = m.map.GetKey(j).s; + if (lang2) + out << "// " << AsCString(GetLngString_(lang2, id), 60, "\t", ASCSTRING_SMART) << "\r\n"; out << AsCString(id, 70) << ",\r\n" << "\t" << AsCString(GetLngString_(lang, id), 60, "\t", ASCSTRING_SMART) << ";\r\n\r\n"; Index: uppsrc/Core/App.cpp =================================================================== --- uppsrc/Core/App.cpp (revision 4039) +++ uppsrc/Core/App.cpp (working copy) @@ -256,6 +256,7 @@ { i++; int lang = 0; + int lang2 = 0; byte charset = CHARSET_UTF8; String fn = "all"; if(i < cmd.GetCount()) @@ -271,13 +272,32 @@ charset = c - 'A' + CHARSET_ISO8859_1; } fn << ".tr"; + i++; + if(i < cmd.GetCount()) + if(cmd[i].GetLength() != 4 && cmd[i].GetLength() != 5) + lang2 = 0; + else { + lang2 = LNGFromText(cmd[i].ToString()); + byte charset2 = CHARSET_UNICODE; + int c = cmd[i][4]; + if(c >= '0' && c <= '8') + charset2 = c - '0' + CHARSET_WIN1250; + if(c >= 'A' && c <= 'J') + charset2 = c - 'A' + CHARSET_ISO8859_1; + if (charset != charset2) + charset = CHARSET_UNICODE; + } #ifdef PLATFORM_WIN32 FileOut out(GetExeDirFile(fn)); #else FileOut out(GetHomeDirFile(fn)); #endif - if(lang) - SaveLngFile(out, SetLNGCharset(lang, charset)); + if(lang) { + if(lang2) + SaveLngFile(out, SetLNGCharset(lang, charset), SetLNGCharset(lang2, charset)); + else + SaveLngFile(out, SetLNGCharset(lang, charset)); + } else { Index l = GetLngSet(); for(int i = 0; i < l.GetCount(); i++) Index: uppsrc/Core/i18n.h =================================================================== --- uppsrc/Core/i18n.h (revision 4039) +++ uppsrc/Core/i18n.h (working copy) @@ -48,7 +48,7 @@ Index GetLngSet(); Index GetLngSet(const String& module); -void SaveLngFile(FileOut& out, int lang); +void SaveLngFile(FileOut& out, int lang, int lang2 = 0); bool LoadLngFile(const char *file); void SetCurrentLanguage(int lang);