finish language im/exporting

This commit is contained in:
Chris Danford
2005-12-29 04:37:52 +00:00
parent 8d970cc4ea
commit cdc7df02b1
5 changed files with 70 additions and 29 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ public:
virtual ~CreateLanguageDlg(); virtual ~CreateLanguageDlg();
// Dialog Data // Dialog Data
enum { IDD = IDD_DIALOG1 }; enum { IDD = IDD_CREATE_LANGUAGE };
protected: protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+46 -11
View File
@@ -35,6 +35,7 @@ void LanguagesDlg::DoDataExchange(CDataExchange* pDX)
CDialog::DoDataExchange(pDX); CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_THEMES, m_listThemes); DDX_Control(pDX, IDC_LIST_THEMES, m_listThemes);
DDX_Control(pDX, IDC_LIST_LANGUAGES, m_listLanguages); DDX_Control(pDX, IDC_LIST_LANGUAGES, m_listLanguages);
DDX_Control(pDX, IDC_CHECK_EXPORT_ALREADY_TRANSLATED, m_buttonExportAlreadyTranslated);
} }
BOOL LanguagesDlg::OnInitDialog() BOOL LanguagesDlg::OnInitDialog()
@@ -173,6 +174,7 @@ void LanguagesDlg::OnSelchangeListLanguages()
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow( !sLanguage.empty() ); GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow( !sLanguage.empty() );
GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow( !sLanguage.empty() ); GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow( !sLanguage.empty() );
GetDlgItem(IDC_BUTTON_IMPORT)->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 ); sLanguage = SMPackageUtil::GetLanguageCodeFromDisplayString( sLanguage );
RString sLanguageFile = GetLanguageFile( sTheme, 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 ); FILEMAN->Remove( sLanguageFile );
FlushDirCache(); FlushDirCache();
@@ -246,11 +253,14 @@ void LanguagesDlg::OnBnClickedButtonExport()
RString sBaseLanguageFile = GetLanguageFile( sTheme, SpecialFiles::BASE_LANGUAGE ); RString sBaseLanguageFile = GetLanguageFile( sTheme, SpecialFiles::BASE_LANGUAGE );
RString sLanguageFile = GetLanguageFile( sTheme, sLanguage ); RString sLanguageFile = GetLanguageFile( sTheme, sLanguage );
bool bExportAlreadyTranslated = !!m_buttonExportAlreadyTranslated.GetCheck();
CsvFile csv; CsvFile csv;
IniFile ini1; IniFile ini1;
ini1.ReadFile( sBaseLanguageFile ); ini1.ReadFile( sBaseLanguageFile );
IniFile ini2; IniFile ini2;
ini2.ReadFile( sLanguageFile ); ini2.ReadFile( sLanguageFile );
int iNumExpored = 0;
FOREACH_CONST_Child( &ini1, key ) FOREACH_CONST_Child( &ini1, key )
{ {
FOREACH_CONST_Attr( key, value ) FOREACH_CONST_Attr( key, value )
@@ -261,16 +271,25 @@ void LanguagesDlg::OnBnClickedButtonExport()
tl.sBaseLanguage = value->second; tl.sBaseLanguage = value->second;
ini2.GetValue( tl.sSection, tl.sID, tl.sCurrentLanguage ); ini2.GetValue( tl.sSection, tl.sID, tl.sCurrentLanguage );
vector<RString> vs; if( tl.sCurrentLanguage.empty() || bExportAlreadyTranslated )
vs.push_back( tl.sSection ); {
vs.push_back( tl.sID ); vector<RString> vs;
vs.push_back( tl.sBaseLanguage ); vs.push_back( tl.sSection );
vs.push_back( tl.sCurrentLanguage ); vs.push_back( tl.sID );
csv.m_vvs.push_back( vs ); vs.push_back( tl.sBaseLanguage );
vs.push_back( tl.sCurrentLanguage );
csv.m_vvs.push_back( vs );
iNumExpored++;
}
} }
} }
RString sFile = sTheme+"-"+sLanguage+".csv"; RString sFile = sTheme+"-"+sLanguage+".csv";
RString sFullFile = "Desktop/"+sFile; RString sFullFile = "Desktop/"+sFile;
if( iNumExpored == 0 )
{
MessageBox( "There are no strings to export for this language." );
return;
}
if( csv.WriteFile(sFullFile) ) if( csv.WriteFile(sFullFile) )
MessageBox( ssprintf("Exported to your Desktop as '%s'.",sFile.c_str()) ); MessageBox( ssprintf("Exported to your Desktop as '%s'.",sFile.c_str()) );
else else
@@ -320,25 +339,41 @@ void LanguagesDlg::OnBnClickedButtonImport()
} }
IniFile ini; 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 ) FOREACH_CONST( CsvFile::StringVector, csv.m_vvs, line )
{ {
TranslationLine tl; 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; return;
} }
tl.sSection = (*line)[0]; tl.sSection = (*line)[0];
tl.sID = (*line)[1]; tl.sID = (*line)[1];
tl.sBaseLanguage = (*line)[2]; 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) ) 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 else
MessageBox( ssprintf("Failed to save '%s'.",sLanguageFile.c_str()) ); MessageBox( ssprintf("Failed to save '%s'.",sLanguageFile.c_str()) );
} }
+2 -1
View File
@@ -13,7 +13,7 @@ public:
virtual ~LanguagesDlg(); virtual ~LanguagesDlg();
// Dialog Data // Dialog Data
enum { IDD = IDD_THEMES }; enum { IDD = IDD_LANGUAGES };
protected: protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
@@ -29,4 +29,5 @@ public:
afx_msg void OnBnClickedButtonDelete(); afx_msg void OnBnClickedButtonDelete();
afx_msg void OnBnClickedButtonExport(); afx_msg void OnBnClickedButtonExport();
afx_msg void OnBnClickedButtonImport(); afx_msg void OnBnClickedButtonImport();
CButton m_buttonExportAlreadyTranslated;
}; };
+5 -4
View File
@@ -17,8 +17,8 @@
#define IDD_SHOW_COMMENT 147 #define IDD_SHOW_COMMENT 147
#define IDD_UNINSTALL_OLD_PACKAGES 148 #define IDD_UNINSTALL_OLD_PACKAGES 148
#define IDD_CHANGE_GAME_SETTINGS 149 #define IDD_CHANGE_GAME_SETTINGS 149
#define IDD_THEMES 150 #define IDD_LANGUAGES 150
#define IDD_DIALOG1 151 #define IDD_CREATE_LANGUAGE 151
#define IDC_LIST_SONGS 1000 #define IDC_LIST_SONGS 1000
#define IDC_LIST 1000 #define IDC_LIST 1000
#define IDC_BUTTON_PLAY 1001 #define IDC_BUTTON_PLAY 1001
@@ -85,8 +85,9 @@
#define IDC_LIST_LANGUAGES 1058 #define IDC_LIST_LANGUAGES 1058
#define IDC_STATIC_TOTAL_STRINGS 1060 #define IDC_STATIC_TOTAL_STRINGS 1060
#define IDC_STATIC_NEED_TRANSLATION 1061 #define IDC_STATIC_NEED_TRANSLATION 1061
#define IDC_COMBO1 1065
#define IDC_COMBO_LANGUAGES 1065 #define IDC_COMBO_LANGUAGES 1065
#define IDC_CHECK_EXPORT_ALREADY_TRANSLATED 1066
#define IDC_CHECK1 1066
// Next default values for new objects // Next default values for new objects
// //
@@ -94,7 +95,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 152 #define _APS_NEXT_RESOURCE_VALUE 152
#define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1066 #define _APS_NEXT_CONTROL_VALUE 1067
#define _APS_NEXT_SYMED_VALUE 104 #define _APS_NEXT_SYMED_VALUE 104
#endif #endif
#endif #endif
+16 -12
View File
@@ -274,21 +274,21 @@ BEGIN
IDC_STATIC,7,234,147,26 IDC_STATIC,7,234,147,26
END 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 | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU WS_SYSMENU
CAPTION "Language Translations" CAPTION "Language Translations"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "Close",IDOK,272,173,50,14 DEFPUSHBUTTON "Close",IDOK,272,167,50,14
LTEXT "Themes",IDC_STATIC,7,7,101,10 LTEXT "Themes",IDC_STATIC,7,7,101,10
LTEXT "Languages",IDC_STATIC,118,7,98,10 LTEXT "Languages",IDC_STATIC,118,7,98,10
PUSHBUTTON "Create Language",IDC_BUTTON_CREATE,232,45,85,15 PUSHBUTTON "Create Language",IDC_BUTTON_CREATE,226,41,91,15
PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,232,67,85,15 PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,226,62,91,15
PUSHBUTTON "Export CSV",IDC_BUTTON_EXPORT,232,89,85,15 PUSHBUTTON "Export CSV",IDC_BUTTON_EXPORT,226,83,91,15
PUSHBUTTON "Import CSV",IDC_BUTTON_IMPORT,232,111,85,15 PUSHBUTTON "Import CSV",IDC_BUTTON_IMPORT,226,123,91,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.", 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,315,25 IDC_STATIC,7,144,240,37
LTEXT "Selection details",IDC_STATIC,222,7,100,9 LTEXT "Selection details",IDC_STATIC,222,7,100,9
LTEXT "Total Strings:",IDC_STATIC,225,17,62,10 LTEXT "Total Strings:",IDC_STATIC,225,17,62,10
LTEXT "Need translation:",IDC_STATIC,225,28,69,10 LTEXT "Need translation:",IDC_STATIC,225,28,69,10
@@ -298,9 +298,13 @@ BEGIN
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST_LANGUAGES,116,17,100,121,LBS_SORT | LISTBOX IDC_LIST_LANGUAGES,116,17,100,121,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP 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 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 | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
WS_SYSMENU WS_SYSMENU
CAPTION "Create Language" CAPTION "Create Language"
@@ -432,15 +436,15 @@ BEGIN
BOTTOMMARGIN, 274 BOTTOMMARGIN, 274
END END
IDD_THEMES, DIALOG IDD_LANGUAGES, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 322 RIGHTMARGIN, 322
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 187 BOTTOMMARGIN, 181
END END
IDD_DIALOG1, DIALOG IDD_CREATE_LANGUAGE, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 179 RIGHTMARGIN, 179