finish language im/exporting
This commit is contained in:
@@ -13,7 +13,7 @@ public:
|
||||
virtual ~CreateLanguageDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_DIALOG1 };
|
||||
enum { IDD = IDD_CREATE_LANGUAGE };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
@@ -35,6 +35,7 @@ void LanguagesDlg::DoDataExchange(CDataExchange* pDX)
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_LIST_THEMES, m_listThemes);
|
||||
DDX_Control(pDX, IDC_LIST_LANGUAGES, m_listLanguages);
|
||||
DDX_Control(pDX, IDC_CHECK_EXPORT_ALREADY_TRANSLATED, m_buttonExportAlreadyTranslated);
|
||||
}
|
||||
|
||||
BOOL LanguagesDlg::OnInitDialog()
|
||||
@@ -173,6 +174,7 @@ void LanguagesDlg::OnSelchangeListLanguages()
|
||||
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow( !sLanguage.empty() );
|
||||
GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow( !sLanguage.empty() );
|
||||
GetDlgItem(IDC_BUTTON_IMPORT)->EnableWindow( !sLanguage.empty() );
|
||||
GetDlgItem(IDC_CHECK_EXPORT_ALREADY_TRANSLATED)->EnableWindow( !sLanguage.empty() );
|
||||
}
|
||||
|
||||
|
||||
@@ -223,6 +225,11 @@ void LanguagesDlg::OnBnClickedButtonDelete()
|
||||
sLanguage = SMPackageUtil::GetLanguageCodeFromDisplayString( sLanguage );
|
||||
|
||||
RString sLanguageFile = GetLanguageFile( sTheme, sLanguage );
|
||||
|
||||
int iRet = MessageBox( ssprintf("This will permanently delete '%s'. Continue?",sLanguageFile.c_str()), NULL, MB_OKCANCEL );
|
||||
if( iRet != IDOK )
|
||||
return;
|
||||
|
||||
FILEMAN->Remove( sLanguageFile );
|
||||
FlushDirCache();
|
||||
|
||||
@@ -246,11 +253,14 @@ void LanguagesDlg::OnBnClickedButtonExport()
|
||||
RString sBaseLanguageFile = GetLanguageFile( sTheme, SpecialFiles::BASE_LANGUAGE );
|
||||
RString sLanguageFile = GetLanguageFile( sTheme, sLanguage );
|
||||
|
||||
bool bExportAlreadyTranslated = !!m_buttonExportAlreadyTranslated.GetCheck();
|
||||
|
||||
CsvFile csv;
|
||||
IniFile ini1;
|
||||
ini1.ReadFile( sBaseLanguageFile );
|
||||
IniFile ini2;
|
||||
ini2.ReadFile( sLanguageFile );
|
||||
int iNumExpored = 0;
|
||||
FOREACH_CONST_Child( &ini1, key )
|
||||
{
|
||||
FOREACH_CONST_Attr( key, value )
|
||||
@@ -261,16 +271,25 @@ void LanguagesDlg::OnBnClickedButtonExport()
|
||||
tl.sBaseLanguage = value->second;
|
||||
ini2.GetValue( tl.sSection, tl.sID, tl.sCurrentLanguage );
|
||||
|
||||
vector<RString> vs;
|
||||
vs.push_back( tl.sSection );
|
||||
vs.push_back( tl.sID );
|
||||
vs.push_back( tl.sBaseLanguage );
|
||||
vs.push_back( tl.sCurrentLanguage );
|
||||
csv.m_vvs.push_back( vs );
|
||||
if( tl.sCurrentLanguage.empty() || bExportAlreadyTranslated )
|
||||
{
|
||||
vector<RString> vs;
|
||||
vs.push_back( tl.sSection );
|
||||
vs.push_back( tl.sID );
|
||||
vs.push_back( tl.sBaseLanguage );
|
||||
vs.push_back( tl.sCurrentLanguage );
|
||||
csv.m_vvs.push_back( vs );
|
||||
iNumExpored++;
|
||||
}
|
||||
}
|
||||
}
|
||||
RString sFile = sTheme+"-"+sLanguage+".csv";
|
||||
RString sFullFile = "Desktop/"+sFile;
|
||||
if( iNumExpored == 0 )
|
||||
{
|
||||
MessageBox( "There are no strings to export for this language." );
|
||||
return;
|
||||
}
|
||||
if( csv.WriteFile(sFullFile) )
|
||||
MessageBox( ssprintf("Exported to your Desktop as '%s'.",sFile.c_str()) );
|
||||
else
|
||||
@@ -320,25 +339,41 @@ void LanguagesDlg::OnBnClickedButtonImport()
|
||||
}
|
||||
|
||||
IniFile ini;
|
||||
if( !ini.ReadFile(sLanguageFile) )
|
||||
{
|
||||
MessageBox( ssprintf("Error reading '%s'.",sLanguageFile.c_str()) );
|
||||
return;
|
||||
}
|
||||
|
||||
int iNumImported = 0;
|
||||
int iNumIgnored = 0;
|
||||
FOREACH_CONST( CsvFile::StringVector, csv.m_vvs, line )
|
||||
{
|
||||
TranslationLine tl;
|
||||
if( line->size() != 3 && line->size() != 4 )
|
||||
int iNumValues = line->size();
|
||||
if( iNumValues != 3 && iNumValues != 4 )
|
||||
{
|
||||
MessageBox( ssprintf("Error reading '%s': Each line must have either 3 or 4 values. This row has %d values",sCsvFile.c_str(),(int)line->size()) );
|
||||
MessageBox( ssprintf("Error reading '%s': Each line must have either 3 or 4 values. This row has %d values",sCsvFile.c_str(),iNumValues) );
|
||||
return;
|
||||
}
|
||||
tl.sSection = (*line)[0];
|
||||
tl.sID = (*line)[1];
|
||||
tl.sBaseLanguage = (*line)[2];
|
||||
tl.sCurrentLanguage = line->size() == 4 ? (*line)[3] : RString();
|
||||
tl.sCurrentLanguage = iNumValues == 4 ? (*line)[3] : RString();
|
||||
|
||||
ini.SetValue( tl.sSection, tl.sID, tl.sCurrentLanguage );
|
||||
if( tl.sCurrentLanguage.empty() )
|
||||
{
|
||||
iNumIgnored++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ini.SetValue( tl.sSection, tl.sID, tl.sCurrentLanguage );
|
||||
iNumImported++;
|
||||
}
|
||||
}
|
||||
|
||||
if( ini.WriteFile(sLanguageFile) )
|
||||
MessageBox( ssprintf("Saved '%s'.",sLanguageFile.c_str()) );
|
||||
MessageBox( ssprintf("Imported %d strings into '%s'. %d empty strings were ignored.",iNumImported,sLanguageFile.c_str(),iNumIgnored) );
|
||||
else
|
||||
MessageBox( ssprintf("Failed to save '%s'.",sLanguageFile.c_str()) );
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public:
|
||||
virtual ~LanguagesDlg();
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_THEMES };
|
||||
enum { IDD = IDD_LANGUAGES };
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
@@ -29,4 +29,5 @@ public:
|
||||
afx_msg void OnBnClickedButtonDelete();
|
||||
afx_msg void OnBnClickedButtonExport();
|
||||
afx_msg void OnBnClickedButtonImport();
|
||||
CButton m_buttonExportAlreadyTranslated;
|
||||
};
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
#define IDD_SHOW_COMMENT 147
|
||||
#define IDD_UNINSTALL_OLD_PACKAGES 148
|
||||
#define IDD_CHANGE_GAME_SETTINGS 149
|
||||
#define IDD_THEMES 150
|
||||
#define IDD_DIALOG1 151
|
||||
#define IDD_LANGUAGES 150
|
||||
#define IDD_CREATE_LANGUAGE 151
|
||||
#define IDC_LIST_SONGS 1000
|
||||
#define IDC_LIST 1000
|
||||
#define IDC_BUTTON_PLAY 1001
|
||||
@@ -85,8 +85,9 @@
|
||||
#define IDC_LIST_LANGUAGES 1058
|
||||
#define IDC_STATIC_TOTAL_STRINGS 1060
|
||||
#define IDC_STATIC_NEED_TRANSLATION 1061
|
||||
#define IDC_COMBO1 1065
|
||||
#define IDC_COMBO_LANGUAGES 1065
|
||||
#define IDC_CHECK_EXPORT_ALREADY_TRANSLATED 1066
|
||||
#define IDC_CHECK1 1066
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
@@ -94,7 +95,7 @@
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 152
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1066
|
||||
#define _APS_NEXT_CONTROL_VALUE 1067
|
||||
#define _APS_NEXT_SYMED_VALUE 104
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -274,21 +274,21 @@ BEGIN
|
||||
IDC_STATIC,7,234,147,26
|
||||
END
|
||||
|
||||
IDD_THEMES DIALOGEX 0, 0, 329, 194
|
||||
IDD_LANGUAGES DIALOGEX 0, 0, 329, 188
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "Language Translations"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Close",IDOK,272,173,50,14
|
||||
DEFPUSHBUTTON "Close",IDOK,272,167,50,14
|
||||
LTEXT "Themes",IDC_STATIC,7,7,101,10
|
||||
LTEXT "Languages",IDC_STATIC,118,7,98,10
|
||||
PUSHBUTTON "Create Language",IDC_BUTTON_CREATE,232,45,85,15
|
||||
PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,232,67,85,15
|
||||
PUSHBUTTON "Export CSV",IDC_BUTTON_EXPORT,232,89,85,15
|
||||
PUSHBUTTON "Import CSV",IDC_BUTTON_IMPORT,232,111,85,15
|
||||
LTEXT "Create a new language, export the theme strings to a CSV, edit the CSV using Excel or a text editor, then import the CSV file back into the same language.",
|
||||
IDC_STATIC,7,144,315,25
|
||||
PUSHBUTTON "Create Language",IDC_BUTTON_CREATE,226,41,91,15
|
||||
PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,226,62,91,15
|
||||
PUSHBUTTON "Export CSV",IDC_BUTTON_EXPORT,226,83,91,15
|
||||
PUSHBUTTON "Import CSV",IDC_BUTTON_IMPORT,226,123,91,15
|
||||
LTEXT "- Create a new language\n- Export the theme strings to a CSV\n- Edit the CSV using Excel or a text editor\n- Import the CSV file back into the same language",
|
||||
IDC_STATIC,7,144,240,37
|
||||
LTEXT "Selection details",IDC_STATIC,222,7,100,9
|
||||
LTEXT "Total Strings:",IDC_STATIC,225,17,62,10
|
||||
LTEXT "Need translation:",IDC_STATIC,225,28,69,10
|
||||
@@ -298,9 +298,13 @@ BEGIN
|
||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
LISTBOX IDC_LIST_LANGUAGES,116,17,100,121,LBS_SORT |
|
||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "Export already translated strings",
|
||||
IDC_CHECK_EXPORT_ALREADY_TRANSLATED,"Button",
|
||||
BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,220,100,109,
|
||||
16
|
||||
END
|
||||
|
||||
IDD_DIALOG1 DIALOGEX 0, 0, 186, 47
|
||||
IDD_CREATE_LANGUAGE DIALOGEX 0, 0, 186, 47
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "Create Language"
|
||||
@@ -432,15 +436,15 @@ BEGIN
|
||||
BOTTOMMARGIN, 274
|
||||
END
|
||||
|
||||
IDD_THEMES, DIALOG
|
||||
IDD_LANGUAGES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 322
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 187
|
||||
BOTTOMMARGIN, 181
|
||||
END
|
||||
|
||||
IDD_DIALOG1, DIALOG
|
||||
IDD_CREATE_LANGUAGE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 179
|
||||
|
||||
Reference in New Issue
Block a user