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();
// Dialog Data
enum { IDD = IDD_DIALOG1 };
enum { IDD = IDD_CREATE_LANGUAGE };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+46 -11
View File
@@ -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()) );
}
+2 -1
View File
@@ -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;
};
+5 -4
View File
@@ -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
+16 -12
View File
@@ -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