Merge pull request #1497 from DanWin/language

Add choose language option
This commit is contained in:
Lukas W
2015-01-12 00:15:32 +01:00
3 changed files with 62 additions and 3 deletions

View File

@@ -113,6 +113,8 @@ private slots:
void toggleDisplayWaveform( bool en );
void toggleDisableAutoquit( bool en );
void setLanguage( int lang );
private:
TabBar * m_tabBar;
@@ -127,6 +129,8 @@ private:
bool m_MMPZ;
bool m_disableBackup;
bool m_hqAudioDev;
QString m_lang;
QStringList m_languages;
QLineEdit * m_wdLineEdit;

View File

@@ -384,7 +384,14 @@ int main( int argc, char * * argv )
}
QString pos = QLocale::system().name().left( 2 );
ConfigManager::inst()->loadConfigFile();
// set language
QString pos = ConfigManager::inst()->value( "app", "language" );
if( pos.isEmpty() )
{
pos = QLocale::system().name().left( 2 );
}
#ifdef LMMS_BUILD_WIN32
#undef QT_TRANSLATIONS_DIR
@@ -415,8 +422,6 @@ int main( int argc, char * * argv )
#endif
#endif
ConfigManager::inst()->loadConfigFile();
if( render_out.isEmpty() )
{
new GuiApplication();

View File

@@ -98,6 +98,8 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
"disablebackup" ).toInt() ),
m_hqAudioDev( ConfigManager::inst()->value( "mixer",
"hqaudio" ).toInt() ),
m_lang( ConfigManager::inst()->value( "app",
"language" ) ),
m_workingDir( ConfigManager::inst()->workingDir() ),
m_vstDir( ConfigManager::inst()->vstDir() ),
m_artworkDir( ConfigManager::inst()->artworkDir() ),
@@ -313,10 +315,52 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) :
misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize );
TabWidget * lang_tw = new TabWidget( tr( "LANGUAGE" ), general );
lang_tw->setFixedHeight( 48 );
QComboBox * changeLang = new QComboBox( lang_tw );
changeLang->move( XDelta, YDelta );
QDir dir( ConfigManager::inst()->localeDir() );
QStringList fileNames = dir.entryList( QStringList( "*.qm" ) );
for( int i = 0; i < fileNames.size(); ++i )
{
// get locale extracted by filename
fileNames[i].truncate( fileNames[i].lastIndexOf( '.' ) );
m_languages.append( fileNames[i] );
QString lang = QLocale( m_languages.last() ).nativeLanguageName();
changeLang->addItem( lang );
}
connect( changeLang, SIGNAL( currentIndexChanged( int ) ),
this, SLOT( setLanguage( int ) ) );
//If language unset, fallback to system language when available
if( m_lang == "" )
{
QString tmp = QLocale::system().name().left( 2 );
if( m_languages.contains( tmp ) )
{
m_lang = tmp;
}
else
{
m_lang = "en";
}
}
for( int i = 0; i < changeLang->count(); ++i )
{
if( m_lang == m_languages.at( i ) )
{
changeLang->setCurrentIndex( i );
break;
}
}
gen_layout->addWidget( bufsize_tw );
gen_layout->addSpacing( 10 );
gen_layout->addWidget( misc_tw );
gen_layout->addSpacing( 10 );
gen_layout->addWidget( lang_tw );
gen_layout->addStretch();
@@ -839,6 +883,7 @@ void SetupDialog::accept()
QString::number( m_displayWaveform ) );
ConfigManager::inst()->setValue( "ui", "disableautoquit",
QString::number( m_disableAutoQuit ) );
ConfigManager::inst()->setValue( "app", "language", m_lang );
ConfigManager::inst()->setWorkingDir( m_workingDir );
@@ -1047,6 +1092,11 @@ void SetupDialog::toggleOneInstrumentTrackWindow( bool _enabled )
m_oneInstrumentTrackWindow = _enabled;
}
void SetupDialog::setLanguage( int lang )
{
m_lang = m_languages[lang];
}