bool WindowsDlg::changeDlgLang() { if (!_dlgNode) return false; WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); int nativeLangEncoding = CP_ACP; TiXmlDeclarationA *declaration = _dlgNode->GetDocument()->FirstChild()->ToDeclaration(); if (declaration) { const char * encodingStr = declaration->Encoding(); EncodingMapper *em = EncodingMapper::getInstance(); nativeLangEncoding = em->getEncodingFromString(encodingStr); } // Set Title const char *titre = (_dlgNode->ToElement())->Attribute("title"); if (titre && titre[0]) { const wchar_t *nameW = wmc->char2wchar(titre, nativeLangEncoding); ::SetWindowText(_hSelf, nameW); } // Set the text of child control for (TiXmlNodeA *childNode = _dlgNode->FirstChildElement("Item"); childNode ; childNode = childNode->NextSibling("Item") ) { TiXmlElementA *element = childNode->ToElement(); int id; const char *sentinel = element->Attribute("id", &id); const char *name = element->Attribute("name"); if (sentinel && (name && name[0])) { HWND hItem = ::GetDlgItem(_hSelf, id); if (hItem) { const wchar_t *nameW = wmc->char2wchar(name, nativeLangEncoding); ::SetWindowText(hItem, nameW); } } } return true; }
void NativeLangSpeaker::init(TiXmlDocumentA *nativeLangDocRootA, bool loadIfEnglish) { if (nativeLangDocRootA) { _nativeLangA = nativeLangDocRootA->FirstChild("NotepadPlus"); if (_nativeLangA) { _nativeLangA = _nativeLangA->FirstChild("Native-Langue"); if (_nativeLangA) { TiXmlElementA *element = _nativeLangA->ToElement(); const char *rtl = element->Attribute("RTL"); if (rtl) _isRTL = (strcmp(rtl, "yes") == 0); else _isRTL = false; // get original file name (defined by Notpad++) from the attribute _fileName = element->Attribute("filename"); if (!loadIfEnglish && _fileName && stricmp("english.xml", _fileName) == 0) { _nativeLangA = NULL; return; } // get encoding TiXmlDeclarationA *declaration = _nativeLangA->GetDocument()->FirstChild()->ToDeclaration(); if (declaration) { const char * encodingStr = declaration->Encoding(); EncodingMapper *em = EncodingMapper::getInstance(); int enc = em->getEncodingFromString(encodingStr); _nativeLangEncoding = (enc != -1)?enc:CP_ACP; } } } } }