finish language im/exporting
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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()) );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user