#include "Clanguage.h" #pragma region 添加文案 std::wstring CLanguage::GetContent(TextType textType) { std::wstring content = L""; switch (textType) { case TextType::Btn_Install: content = LoadLanguage(L"Install", L"开始安装", L"開始安裝"); break; case TextType::Btn_CutomInstall: content = LoadLanguage(L"Installation Settings", L"自定义安装", L"自定義安裝"); break; case TextType::Link_Install: content = LoadLanguage ( L"Clicking \"Install\" means you agree to the {a https://www.pdfreaderpro.com/terms_of_service}Terms of Service{/a} and the {a https://www.pdfreaderpro.com/privacy-policy}Privacy Policy{/a}.", L"点击“开始安装”代表你同意{a https://www.pdfreaderpro.com/terms_of_service}服务条款{/a}和{a https://www.pdfreaderpro.com/privacy-policy}隐私权政策{/a}", L"點擊「開始安裝」代表你同意{a https://www.pdfreaderpro.com/terms_of_service}服務條款{/a}和{a https://www.pdfreaderpro.com/privacy-policy}隱私權政策{/a}" ); break; case TextType::Txt_ByClickInstall: content = LoadLanguage ( L"Clicking \"Install\" means you agree to the ", L"点击“开始安装”代表你同意", L"點擊「開始安裝」代表你同意" ); break; case TextType::Btn_TermsService: content = LoadLanguage ( L"Terms of Service ", L"服务条款", L"服務條款" ); break; case TextType::Txt_And: content = LoadLanguage ( L"and the ", L"和", L"和" ); break; case TextType::Btn_PrivacyPolicy: content = LoadLanguage ( L"Privacy Policy", L"隐私权政策", L"隱私權政策" ); break; case TextType::Text_InstallPath: content = LoadLanguage(L"Installation Folder", L"安装路径", L"安裝路徑"); break; case TextType::Btn_FilePath: content = LoadLanguage(L"Select Folder", L"选择文件夹", L"選擇資料夾"); break; case TextType::Text_Installing: content = LoadLanguage(L"Installing, please wait...", L"安装中,请稍等...", L"安裝中,請稍後..."); break; case TextType::Text_NoNetwork: content = LoadLanguage ( L"No internet connection, please check your internet and try again later.", L"无网络连接,请检查网络并重试。", L"無網路連接,請檢查網路並重試。" ); break; case TextType::Btn_OpenApp: content = LoadLanguage(L"Start Now", L"立即启动", L"立即啟動"); break; case TextType::Btn_GoToFilesPath: content = LoadLanguage(L"Offline installer is saved in:", L"安装文件储存路径:", L"安裝檔案存儲路徑:"); break; case TextType::MSG_IsExitApp: content = LoadLanguage(L"Are you sure to cancel the process? If you exit now, the program won't be installed.", L"请确认是否退出程序安装。退出后,安装进程将停止。", L"請確認是否退出程序安裝。退出後,安裝進程將停止。"); break; case TextType::MSG_LatestVersion: content = LoadLanguage( L"Latest version already installed, you don't need to install again.", L"PDF Reader Pro 已是目前最新版本,无需再次安装。", L"PDF Reader Pro 已是目前最新版本,無需再次安裝。"); break; case TextType::MSG_UpgradeVersion: content = LoadLanguage( L"Current version is too old. Would you like to update PDF Reader Pro to the latest version?", L"当前版本较低,是否升级至最新版本?", L"當前版本較低,是否升級至最新版本?"); break; case TextType::MSG_OverHighVersion: content = LoadLanguage( L"A newer version of PDF Reader Pro has already been installed, if you want to install this version, please uninstall the current version.", L"已安装了更高版本的PDF Reader Pro, 请卸载后再安装此版本。", L"已安裝更高版本的PDF Reader Pro,請擔載後再安裝此版本。"); break; case TextType::MSG_InstalledIsExitApp: content = LoadLanguage( L"PDF Reader Pro has been successfully installed, are you sure to start later?", L"程序已安装,是否稍后启动?", L"程式已安裝,是否稍後啟動?"); break; case TextType::MSG_DiskNoSpace: content = LoadLanguage( L"Available space is less than 1GB, please change installation folder.", L"当前磁盘剩余空间不足1G,请修改安装路径", L"當前磁碟可用空間不足1G,請變更安裝路徑。"); break; case TextType::MSG_BtnCancel: content = LoadLanguage(L"Cancel", L"取消", L"取消"); break; case TextType::MSG_BtnOK: content = LoadLanguage(L"OK", L"确定", L"確定"); break; case TextType::MSG_BtnYes: content = LoadLanguage(L"Yes", L"是", L"是"); break; case TextType::MSG_BtnNo: content = LoadLanguage(L"No", L"否", L"否"); break; case TextType::NONE: content = LoadLanguage(L"", L"", L""); break; case TextType::MSG_BtnOpenInstallationFolder: content = LoadLanguage(L"Open Installation Folder", L"打开安装目录", L"打開安裝目錄"); break; case TextType::MSG_ContentOpenInstallationFolder: content = LoadLanguage(L"Installation Failed\nPlease find the installation folder and run \"PDFReaderPro.exe\" installation package again.", L"安装失败,请找到\"PDFReaderPro.exe\"安装包,点击重新安装", L"安裝失敗,請找到“PDFReaderPro.exe”安裝包,點擊重新安裝。"); break; case TextType::MSG_ContentInstallFailed: content = LoadLanguage(L"Installation Failed\nDestination path too long, please try a location that has shorten path ", L"安装失败\n安装路径过长,请重新选择安装路径", L"安裝失敗\n安裝路徑過長,請重新選擇安裝路徑"); break; case TextType::MSG_BtnBackHomePage: content = LoadLanguage(L"OK", L"返回", L"返回"); break; case TextType::MSG_BtnUseDefaultPath: content = LoadLanguage(L"Use Default Path", L"使用默认安装路径", L"使用默認安裝路徑"); break; case TextType::MSG_InstalledNetReStartSystem: content = LoadLanguage(L"Because the NetFramework was installed together with the software, you need to restart system to run PDF Reader Pro.", L"因安装软件的同时,也安装了NetFramework,当前设备需要重启系统,才能运行PDF Reader Pro", L"因安裝軟件的同時,也安裝了NetFramework,當前設備需要重啓系統,才能運行PDF Reader Pro."); break; case TextType::MSG_BtnRestartSystem: content = LoadLanguage(L"Restart", L"重新启动", L"重新啓動"); break; default: break; } return content; } #pragma endregion #pragma region 多语言逻辑 LanguageType CLanguage::CurrentLanguage = LanguageType::NONE; LanguageType CLanguage::LastLanguage = LanguageType::NONE; std::wstring CLanguage::GetText(TextType textType) { CurrentLanguage = GetLocalLanguage(); return GetContent(textType); } std::wstring CLanguage::LoadLanguage(std::wstring EnStr, std::wstring zhsStr, std::wstring zhStr) { std::wstring content = L""; switch (CLanguage::CurrentLanguage) { case LanguageType::EN_US: content = EnStr; break; case LanguageType::ZH_CN: content = zhsStr; break; case LanguageType::ZH_TW: content = zhStr; break; default: content = EnStr; break; } return content; } LanguageType CLanguage::GetLocalLanguage(bool isGetText) { LanguageType language = LanguageType::EN_US; //加载文案时,不必要重新获取当前系统的语言种类 if (isGetText) { if (CurrentLanguage != LanguageType::NONE && CurrentLanguage == LastLanguage) return CurrentLanguage; } LastLanguage = CurrentLanguage; // LCID lcid = GetSystemDefaultLCID();//系统语言(包括系统所有界面显示语言) LANGID lcid = ::GetUserDefaultUILanguage();//当前windows应用显示语言 if (lcid == 0x409) { language = LanguageType::EN_US; } else if (lcid == 0x404) { language = LanguageType::ZH_TW; } else if (lcid == 0x804) { language = LanguageType::ZH_CN; } return language; } #pragma endregion #pragma region UI文案字符类型转换 CDuiString CLanguage::GetDuiText(TextType textType) { CDuiString duiStr(CLanguage::GetText(textType).c_str()); return duiStr; } #pragma endregion