add language localization tools
This commit is contained in:
@@ -446,7 +446,7 @@ static const LanguageInfo g_langs[] =
|
|||||||
{"ZU", "Zulu", "isiZulu"},
|
{"ZU", "Zulu", "isiZulu"},
|
||||||
};
|
};
|
||||||
|
|
||||||
void GetLanguageInfos( vector<LanguageInfo> &vAddTo )
|
void GetLanguageInfos( vector<const LanguageInfo*> &vAddTo )
|
||||||
{
|
{
|
||||||
for( int i=0; i<ARRAYSIZE(g_langs); i++ )
|
for( int i=0; i<ARRAYSIZE(g_langs); i++ )
|
||||||
{
|
{
|
||||||
@@ -456,10 +456,25 @@ void GetLanguageInfos( vector<LanguageInfo> &vAddTo )
|
|||||||
// smtools UI.
|
// smtools UI.
|
||||||
if( g_langs[i].szNativeName == RString() )
|
if( g_langs[i].szNativeName == RString() )
|
||||||
continue;
|
continue;
|
||||||
vAddTo.push_back( g_langs[i] );
|
vAddTo.push_back( &g_langs[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LanguageInfo *GetLanguageInfo( const RString &sIsoCode )
|
||||||
|
{
|
||||||
|
for( int i=0; i<ARRAYSIZE(g_langs); i++ )
|
||||||
|
{
|
||||||
|
// Only use languages in the intersection of Windows languages
|
||||||
|
// and languages that had native forms on the site listed above.
|
||||||
|
// Obscure languages are dropped so that they don't clutter up the
|
||||||
|
// smtools UI.
|
||||||
|
if( sIsoCode.CompareNoCase(g_langs[i].szIsoCode) == 0 )
|
||||||
|
return &g_langs[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
RString join( const RString &sDeliminator, const vector<RString> &sSource)
|
RString join( const RString &sDeliminator, const vector<RString> &sSource)
|
||||||
{
|
{
|
||||||
if( sSource.empty() )
|
if( sSource.empty() )
|
||||||
|
|||||||
@@ -282,11 +282,12 @@ wstring RStringToWstring( const RString &sString );
|
|||||||
|
|
||||||
struct LanguageInfo
|
struct LanguageInfo
|
||||||
{
|
{
|
||||||
const char *szIso639Code;
|
const char *szIsoCode;
|
||||||
const char *szEnglishName;
|
const char *szEnglishName;
|
||||||
const char *szNativeName; // empty string if not available
|
const char *szNativeName; // empty string if not available
|
||||||
};
|
};
|
||||||
void GetLanguageInfos( vector<LanguageInfo> &vAddTo );
|
void GetLanguageInfos( vector<const LanguageInfo*> &vAddTo );
|
||||||
|
const LanguageInfo *GetLanguageInfo( const RString &sIsoCode );
|
||||||
RString GetLanguageNameFromISO639Code( RString sName );
|
RString GetLanguageNameFromISO639Code( RString sName );
|
||||||
|
|
||||||
// Splits a RString into an vector<RString> according the Delimitor.
|
// Splits a RString into an vector<RString> according the Delimitor.
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ const RString SpecialFiles::KEYMAPS_PATH = "Save/Keymaps.ini";
|
|||||||
const RString SpecialFiles::PREFERENCES_INI_PATH = "Save/Preferences.ini";
|
const RString SpecialFiles::PREFERENCES_INI_PATH = "Save/Preferences.ini";
|
||||||
const RString SpecialFiles::THEMES_DIR = "Themes/";
|
const RString SpecialFiles::THEMES_DIR = "Themes/";
|
||||||
const RString SpecialFiles::LANGUAGES_SUBDIR = "Languages/";
|
const RString SpecialFiles::LANGUAGES_SUBDIR = "Languages/";
|
||||||
|
const RString SpecialFiles::BASE_LANGUAGE = "en";
|
||||||
|
const RString SpecialFiles::METRICS_FILE = "metrics.ini";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2003-2005 Chris Danford
|
* (c) 2003-2005 Chris Danford
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ namespace SpecialFiles
|
|||||||
extern const RString PREFERENCES_INI_PATH;
|
extern const RString PREFERENCES_INI_PATH;
|
||||||
extern const RString THEMES_DIR;
|
extern const RString THEMES_DIR;
|
||||||
extern const RString LANGUAGES_SUBDIR;
|
extern const RString LANGUAGES_SUBDIR;
|
||||||
|
extern const RString BASE_LANGUAGE;
|
||||||
|
extern const RString METRICS_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ StringToX( ElementCategory );
|
|||||||
|
|
||||||
|
|
||||||
const RString BASE_THEME_NAME = "default";
|
const RString BASE_THEME_NAME = "default";
|
||||||
const RString BASE_LANGUAGE = "english";
|
// TODO: A theme should be able to specify a base language.
|
||||||
const RString METRICS_FILE = "metrics.ini";
|
|
||||||
|
|
||||||
|
|
||||||
struct Theme
|
struct Theme
|
||||||
|
|||||||
@@ -158,6 +158,12 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\smpackage\ChangeGameSettings.h">
|
RelativePath=".\smpackage\ChangeGameSettings.h">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\smpackage\CreateLanguageDlg.cpp">
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\smpackage\CreateLanguageDlg.h">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\smpackage\EditInsallations.cpp">
|
RelativePath=".\smpackage\EditInsallations.cpp">
|
||||||
</File>
|
</File>
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
// CreateLanguageDlg.cpp : implementation file
|
||||||
|
//
|
||||||
|
|
||||||
|
#define CO_EXIST_WITH_MFC
|
||||||
|
#include "global.h"
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "smpackage.h"
|
||||||
|
#include "CreateLanguageDlg.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
|
#include "SMPackageUtil.h"
|
||||||
|
#include ".\createlanguagedlg.h"
|
||||||
|
|
||||||
|
// CreateLanguageDlg dialog
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC(CreateLanguageDlg, CDialog)
|
||||||
|
CreateLanguageDlg::CreateLanguageDlg(CWnd* pParent /*=NULL*/)
|
||||||
|
: CDialog(CreateLanguageDlg::IDD, pParent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CreateLanguageDlg::~CreateLanguageDlg()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateLanguageDlg::DoDataExchange(CDataExchange* pDX)
|
||||||
|
{
|
||||||
|
CDialog::DoDataExchange(pDX);
|
||||||
|
DDX_Control(pDX, IDC_COMBO_LANGUAGES, m_comboLanguages);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CreateLanguageDlg::OnInitDialog()
|
||||||
|
{
|
||||||
|
CDialog::OnInitDialog();
|
||||||
|
|
||||||
|
vector<const LanguageInfo*> v;
|
||||||
|
GetLanguageInfos( v );
|
||||||
|
FOREACH_CONST( const LanguageInfo*, v, i )
|
||||||
|
{
|
||||||
|
RString s = SMPackageUtil::GetLanguageDisplayString((*i)->szIsoCode);
|
||||||
|
m_comboLanguages.AddString( s );
|
||||||
|
}
|
||||||
|
ASSERT( !v.empty() );
|
||||||
|
m_comboLanguages.SetCurSel( 0 );
|
||||||
|
return TRUE; // return TRUE unless you set the focus to a control
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CreateLanguageDlg, CDialog)
|
||||||
|
ON_BN_CLICKED(IDOK, OnBnClickedOk)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
|
// CreateLanguageDlg message handlers
|
||||||
|
|
||||||
|
void CreateLanguageDlg::OnBnClickedOk()
|
||||||
|
{
|
||||||
|
// TODO: Add your control notification handler code here
|
||||||
|
|
||||||
|
int iIndex = m_comboLanguages.GetCurSel();
|
||||||
|
ASSERT( iIndex != LB_ERR );
|
||||||
|
|
||||||
|
vector<const LanguageInfo*> v;
|
||||||
|
GetLanguageInfos( v );
|
||||||
|
m_sChosenLanguageCode = v[iIndex]->szIsoCode;
|
||||||
|
|
||||||
|
OnOK();
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "afxwin.h"
|
||||||
|
|
||||||
|
|
||||||
|
// CreateLanguageDlg dialog
|
||||||
|
|
||||||
|
class CreateLanguageDlg : public CDialog
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC(CreateLanguageDlg)
|
||||||
|
|
||||||
|
public:
|
||||||
|
CreateLanguageDlg(CWnd* pParent = NULL); // standard constructor
|
||||||
|
virtual ~CreateLanguageDlg();
|
||||||
|
|
||||||
|
// Dialog Data
|
||||||
|
enum { IDD = IDD_DIALOG1 };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||||
|
virtual BOOL OnInitDialog();
|
||||||
|
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
public:
|
||||||
|
CComboBox m_comboLanguages;
|
||||||
|
afx_msg void OnBnClickedOk();
|
||||||
|
|
||||||
|
CString m_sChosenLanguageCode;
|
||||||
|
};
|
||||||
@@ -8,6 +8,13 @@
|
|||||||
#include "LanguagesDlg.h"
|
#include "LanguagesDlg.h"
|
||||||
#include "SpecialFiles.h"
|
#include "SpecialFiles.h"
|
||||||
#include "RageUtil.h"
|
#include "RageUtil.h"
|
||||||
|
#include "IniFile.h"
|
||||||
|
#include "languagesdlg.h"
|
||||||
|
#include "SMPackageUtil.h"
|
||||||
|
#include "CreateLanguageDlg.h"
|
||||||
|
#include "RageFile.h"
|
||||||
|
#include "languagesdlg.h"
|
||||||
|
#include "RageFileManager.h"
|
||||||
|
|
||||||
|
|
||||||
// LanguagesDlg dialog
|
// LanguagesDlg dialog
|
||||||
@@ -35,12 +42,13 @@ BOOL LanguagesDlg::OnInitDialog()
|
|||||||
|
|
||||||
vector<RString> vs;
|
vector<RString> vs;
|
||||||
GetDirListing( SpecialFiles::THEMES_DIR+"*", vs, true );
|
GetDirListing( SpecialFiles::THEMES_DIR+"*", vs, true );
|
||||||
|
StripCvs( vs );
|
||||||
FOREACH_CONST( RString, vs, s )
|
FOREACH_CONST( RString, vs, s )
|
||||||
m_listThemes.AddString( *s );
|
m_listThemes.AddString( *s );
|
||||||
if( !vs.empty() )
|
if( !vs.empty() )
|
||||||
m_listThemes.SetSel( 0 );
|
m_listThemes.SetSel( 0 );
|
||||||
else
|
|
||||||
OnSelchangeListThemes();
|
OnSelchangeListThemes();
|
||||||
|
|
||||||
return TRUE; // return TRUE unless you set the focus to a control
|
return TRUE; // return TRUE unless you set the focus to a control
|
||||||
}
|
}
|
||||||
@@ -56,28 +64,82 @@ static RString GetCurrentString( const CListBox &list )
|
|||||||
return RString( s );
|
return RString( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SelectString( CListBox &list, const RString &sToSelect )
|
||||||
|
{
|
||||||
|
for( int i=0; i<list.GetCount(); i++ )
|
||||||
|
{
|
||||||
|
CString s;
|
||||||
|
list.GetText( i, s );
|
||||||
|
if( s == sToSelect )
|
||||||
|
{
|
||||||
|
list.SetCurSel( i );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LanguagesDlg::OnSelchangeListThemes()
|
void LanguagesDlg::OnSelchangeListThemes()
|
||||||
{
|
{
|
||||||
// TODO: Add your control notification handler code here
|
// TODO: Add your control notification handler code here
|
||||||
m_listLanguages.ResetContent();
|
m_listLanguages.ResetContent();
|
||||||
|
|
||||||
RString sTheme = GetCurrentString( m_listThemes );
|
RString sTheme = GetCurrentString( m_listThemes );
|
||||||
if( sTheme.empty() )
|
if( !sTheme.empty() )
|
||||||
{
|
{
|
||||||
OnSelchangeListLanguages();
|
RString sLanguagesDir = SpecialFiles::THEMES_DIR + sTheme + "/" + SpecialFiles::LANGUAGES_SUBDIR;
|
||||||
return;
|
|
||||||
|
vector<RString> vs;
|
||||||
|
GetDirListing( sLanguagesDir+"*.ini", vs, false );
|
||||||
|
FOREACH_CONST( RString, vs, s )
|
||||||
|
{
|
||||||
|
RString sIsoCode = GetFileNameWithoutExtension(*s);
|
||||||
|
m_listLanguages.AddString( SMPackageUtil::GetLanguageDisplayString(sIsoCode) );
|
||||||
|
}
|
||||||
|
if( !vs.empty() )
|
||||||
|
m_listLanguages.SetSel( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
RString sLanguagesDir = SpecialFiles::THEMES_DIR + sTheme + "/" + SpecialFiles::LANGUAGES_SUBDIR;
|
OnSelchangeListLanguages();
|
||||||
|
}
|
||||||
|
|
||||||
vector<RString> vs;
|
static RString GetLanguageFile( const RString &sTheme, const RString &sLanguage )
|
||||||
GetDirListing( sLanguagesDir+"*.ini", vs, false );
|
{
|
||||||
FOREACH_CONST( RString, vs, s )
|
return SpecialFiles::THEMES_DIR + sTheme + "/" + SpecialFiles::LANGUAGES_SUBDIR + sLanguage + ".ini";
|
||||||
m_listLanguages.AddString( GetFileNameWithoutExtension(*s) );
|
}
|
||||||
if( !vs.empty() )
|
|
||||||
m_listLanguages.SetSel( 0 );
|
static int GetNumValuesInIniFile( const RString &sIniFile )
|
||||||
else
|
{
|
||||||
OnSelchangeListLanguages();
|
int count = 0;
|
||||||
|
IniFile ini;
|
||||||
|
ini.ReadFile( sIniFile );
|
||||||
|
FOREACH_CONST_Child( &ini, key )
|
||||||
|
{
|
||||||
|
FOREACH_CONST_Attr( key, value )
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetNumIntersectingIniValues( const RString &sIniFile1, const RString &sIniFile2 )
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
IniFile ini1;
|
||||||
|
ini1.ReadFile( sIniFile1 );
|
||||||
|
IniFile ini2;
|
||||||
|
ini2.ReadFile( sIniFile2 );
|
||||||
|
FOREACH_CONST_Child( &ini1, key1 )
|
||||||
|
{
|
||||||
|
const XNode *key2 = ini2.GetChild( key1->m_sName );
|
||||||
|
if( key2 == NULL )
|
||||||
|
continue;
|
||||||
|
FOREACH_CONST_Attr( key1, attr1 )
|
||||||
|
{
|
||||||
|
if( key2->GetAttr(attr1->first) == NULL)
|
||||||
|
continue;
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguagesDlg::OnSelchangeListLanguages()
|
void LanguagesDlg::OnSelchangeListLanguages()
|
||||||
@@ -89,24 +151,77 @@ void LanguagesDlg::OnSelchangeListLanguages()
|
|||||||
RString sTheme = GetCurrentString( m_listThemes );
|
RString sTheme = GetCurrentString( m_listThemes );
|
||||||
RString sLanguage = GetCurrentString( m_listLanguages );
|
RString sLanguage = GetCurrentString( m_listLanguages );
|
||||||
|
|
||||||
if( !sTheme.empty() && !sLanguage.empty() )
|
if( !sTheme.empty() )
|
||||||
{
|
{
|
||||||
RString sThemeDir = "Themes/" + sTheme + "/";
|
RString sBaseLanguageFile = GetLanguageFile( sTheme, SpecialFiles::BASE_LANGUAGE );
|
||||||
RString sLanguageFile = sThemeDir + SpecialFiles::LANGUAGES_SUBDIR + sLanguage + ".ini";
|
iTotalStrings = GetNumValuesInIniFile( sBaseLanguageFile );
|
||||||
|
|
||||||
iTotalStrings = rand()%100;
|
if( !sLanguage.empty() )
|
||||||
iNeedTranslation = rand()%100;
|
{
|
||||||
|
sLanguage = SMPackageUtil::GetLanguageCodeFromDisplayString( sLanguage );
|
||||||
|
|
||||||
|
RString sLanguageFile = GetLanguageFile( sTheme, sLanguage );
|
||||||
|
iNeedTranslation = iTotalStrings - GetNumIntersectingIniValues( sBaseLanguageFile, sLanguageFile );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GetDlgItem(IDC_STATIC_TOTAL_STRINGS )->SetWindowText( ssprintf(iTotalStrings==-1?"":"%d",iTotalStrings) );
|
GetDlgItem(IDC_STATIC_TOTAL_STRINGS )->SetWindowText( ssprintf(iTotalStrings==-1?"":"%d",iTotalStrings) );
|
||||||
GetDlgItem(IDC_STATIC_NEED_TRANSLATION )->SetWindowText( ssprintf(iNeedTranslation==-1?"":"%d",iNeedTranslation) );
|
GetDlgItem(IDC_STATIC_NEED_TRANSLATION )->SetWindowText( ssprintf(iNeedTranslation==-1?"":"%d",iNeedTranslation) );
|
||||||
|
|
||||||
|
GetDlgItem(IDC_BUTTON_CREATE)->EnableWindow( !sTheme.empty() );
|
||||||
|
GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow( !sLanguage.empty() );
|
||||||
|
GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow( !sLanguage.empty() );
|
||||||
|
GetDlgItem(IDC_BUTTON_IMPORT)->EnableWindow( !sLanguage.empty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BEGIN_MESSAGE_MAP(LanguagesDlg, CDialog)
|
BEGIN_MESSAGE_MAP(LanguagesDlg, CDialog)
|
||||||
ON_LBN_SELCHANGE(IDC_LIST_THEMES, OnSelchangeListThemes)
|
ON_LBN_SELCHANGE(IDC_LIST_THEMES, OnSelchangeListThemes)
|
||||||
ON_LBN_SELCHANGE(IDC_LIST_LANGUAGES, OnSelchangeListLanguages)
|
ON_LBN_SELCHANGE(IDC_LIST_LANGUAGES, OnSelchangeListLanguages)
|
||||||
|
ON_BN_CLICKED(IDC_BUTTON_CREATE, OnBnClickedButtonCreate)
|
||||||
|
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnBnClickedButtonDelete)
|
||||||
END_MESSAGE_MAP()
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
|
||||||
// LanguagesDlg message handlers
|
// LanguagesDlg message handlers
|
||||||
|
|
||||||
|
void LanguagesDlg::OnBnClickedButtonCreate()
|
||||||
|
{
|
||||||
|
// TODO: Add your control notification handler code here
|
||||||
|
CreateLanguageDlg dlg;
|
||||||
|
int nResponse = dlg.DoModal();
|
||||||
|
if( nResponse != IDOK )
|
||||||
|
return;
|
||||||
|
|
||||||
|
RString sTheme = GetCurrentString( m_listThemes );
|
||||||
|
ASSERT( !sTheme.empty() );
|
||||||
|
|
||||||
|
RString sLanguageFile = GetLanguageFile( sTheme, RString(dlg.m_sChosenLanguageCode) );
|
||||||
|
|
||||||
|
// create empty file
|
||||||
|
RageFile file;
|
||||||
|
file.Open( sLanguageFile, RageFile::WRITE );
|
||||||
|
file.Close(); // flush file
|
||||||
|
|
||||||
|
FlushDirCache();
|
||||||
|
|
||||||
|
OnSelchangeListThemes();
|
||||||
|
SelectString( m_listLanguages, SMPackageUtil::GetLanguageDisplayString(RString(dlg.m_sChosenLanguageCode)) );
|
||||||
|
OnSelchangeListLanguages();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LanguagesDlg::OnBnClickedButtonDelete()
|
||||||
|
{
|
||||||
|
// TODO: Add your control notification handler code here
|
||||||
|
RString sTheme = GetCurrentString( m_listThemes );
|
||||||
|
ASSERT( !sTheme.empty() );
|
||||||
|
RString sLanguage = GetCurrentString( m_listLanguages );
|
||||||
|
ASSERT( !sLanguage.empty() );
|
||||||
|
sLanguage = SMPackageUtil::GetLanguageCodeFromDisplayString( sLanguage );
|
||||||
|
|
||||||
|
RString sLanguageFile = GetLanguageFile( sTheme, sLanguage );
|
||||||
|
FILEMAN->Remove( sLanguageFile );
|
||||||
|
FlushDirCache();
|
||||||
|
|
||||||
|
OnSelchangeListThemes();
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,4 +25,6 @@ protected:
|
|||||||
public:
|
public:
|
||||||
CListBox m_listThemes;
|
CListBox m_listThemes;
|
||||||
CListBox m_listLanguages;
|
CListBox m_listLanguages;
|
||||||
|
afx_msg void OnBnClickedButtonCreate();
|
||||||
|
afx_msg void OnBnClickedButtonDelete();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -193,6 +193,22 @@ bool SMPackageUtil::LaunchGame()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RString SMPackageUtil::GetLanguageDisplayString( const RString &sIsoCode )
|
||||||
|
{
|
||||||
|
const LanguageInfo *li = GetLanguageInfo( sIsoCode );
|
||||||
|
return ssprintf( "%s (%s)", li ? li->szIsoCode:sIsoCode.c_str(), li ? li->szNativeName:"???" );
|
||||||
|
}
|
||||||
|
|
||||||
|
RString SMPackageUtil::GetLanguageCodeFromDisplayString( const RString &sDisplayString )
|
||||||
|
{
|
||||||
|
RString s = sDisplayString;
|
||||||
|
// strip the space and everything after
|
||||||
|
size_t iSpace = s.find(' ');
|
||||||
|
ASSERT( iSpace != s.npos );
|
||||||
|
s.erase( s.begin()+iSpace, s.end() );
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2002-2005 Chris Danford
|
* (c) 2002-2005 Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#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_THEMES 150
|
||||||
|
#define IDD_DIALOG1 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
|
||||||
@@ -84,15 +85,16 @@
|
|||||||
#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_STATIC_TOTAL_STRINGS2 1062
|
#define IDC_COMBO1 1065
|
||||||
|
#define IDC_COMBO_LANGUAGES 1065
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 151
|
#define _APS_NEXT_RESOURCE_VALUE 152
|
||||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1062
|
#define _APS_NEXT_CONTROL_VALUE 1066
|
||||||
#define _APS_NEXT_SYMED_VALUE 104
|
#define _APS_NEXT_SYMED_VALUE 104
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -281,11 +281,7 @@ 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,173,50,14
|
||||||
LISTBOX IDC_LIST_THEMES,7,18,102,121,LBS_SORT |
|
|
||||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
|
||||||
LTEXT "Themes",IDC_STATIC,7,7,101,10
|
LTEXT "Themes",IDC_STATIC,7,7,101,10
|
||||||
LISTBOX IDC_LIST_LANGUAGES,116,17,100,121,LBS_SORT |
|
|
||||||
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
|
||||||
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,232,45,85,15
|
||||||
PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,232,67,85,15
|
PUSHBUTTON "Delete Language",IDC_BUTTON_DELETE,232,67,85,15
|
||||||
@@ -298,6 +294,23 @@ BEGIN
|
|||||||
LTEXT "Need translation:",IDC_STATIC,225,28,69,10
|
LTEXT "Need translation:",IDC_STATIC,225,28,69,10
|
||||||
LTEXT "",IDC_STATIC_TOTAL_STRINGS,296,18,26,10
|
LTEXT "",IDC_STATIC_TOTAL_STRINGS,296,18,26,10
|
||||||
LTEXT "",IDC_STATIC_NEED_TRANSLATION,296,27,26,10
|
LTEXT "",IDC_STATIC_NEED_TRANSLATION,296,27,26,10
|
||||||
|
LISTBOX IDC_LIST_THEMES,7,18,102,121,LBS_SORT |
|
||||||
|
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||||
|
LISTBOX IDC_LIST_LANGUAGES,116,17,100,121,LBS_SORT |
|
||||||
|
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_DIALOG1 DIALOGEX 0, 0, 186, 47
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION |
|
||||||
|
WS_SYSMENU
|
||||||
|
CAPTION "Create Language"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,129,7,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,129,27,50,14
|
||||||
|
LTEXT "Choose a language",IDC_STATIC,7,7,110,11
|
||||||
|
COMBOBOX IDC_COMBO_LANGUAGES,17,24,100,110,CBS_DROPDOWNLIST |
|
||||||
|
CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
@@ -426,6 +439,14 @@ BEGIN
|
|||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 187
|
BOTTOMMARGIN, 187
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDD_DIALOG1, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 179
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 40
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#ifndef SMPackageUtil_H
|
#ifndef SMPackageUtil_H
|
||||||
#define SMPackageUtil_H
|
#define SMPackageUtil_H
|
||||||
|
|
||||||
|
struct LanguageInfo;
|
||||||
|
|
||||||
namespace SMPackageUtil
|
namespace SMPackageUtil
|
||||||
{
|
{
|
||||||
void WriteStepManiaInstallDirs( const vector<RString>& asInstallDirsToWrite );
|
void WriteStepManiaInstallDirs( const vector<RString>& asInstallDirsToWrite );
|
||||||
@@ -16,6 +18,9 @@ namespace SMPackageUtil
|
|||||||
bool IsValidPackageDirectory(RString path);
|
bool IsValidPackageDirectory(RString path);
|
||||||
|
|
||||||
bool LaunchGame();
|
bool LaunchGame();
|
||||||
|
|
||||||
|
RString GetLanguageDisplayString( const RString &sIsoCode );
|
||||||
|
RString GetLanguageCodeFromDisplayString( const RString &sDisplayString );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user