Merge pull request #1 from corrados/master

Update
This commit is contained in:
Snayler 2020-05-07 14:47:06 +01:00 committed by GitHub
commit b337adc24a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 6412 additions and 593 deletions

View File

@ -13,9 +13,13 @@
- support Mac CoreAudio aggregated devices (Ticket #138) - support Mac CoreAudio aggregated devices (Ticket #138)
- added translations: french by trebmuh, portuguese by Snayler (Ticket #77)
- bug fix: for mono capture jack audio interface Jamulus complains it cannot make connections (Ticket #137) - bug fix: for mono capture jack audio interface Jamulus complains it cannot make connections (Ticket #137)
TODO re-design About dialog
TODO implement panning for channels (Ticket #52, #145) TODO implement panning for channels (Ticket #52, #145)
TODO WIP support internationalization TODO WIP support internationalization

View File

@ -15,7 +15,9 @@ QT += widgets \
xml xml
TRANSLATIONS = src/res/translation/translation_de_DE.ts \ TRANSLATIONS = src/res/translation/translation_de_DE.ts \
src/res/translation/translation_fr_FR.ts src/res/translation/translation_fr_FR.ts \
src/res/translation/translation_pt_PT.ts \
src/res/translation/translation_es_ES.ts
INCLUDEPATH += src INCLUDEPATH += src

View File

@ -58,13 +58,13 @@ void CSound::OpenJack ( const bool bNoAutoJackConnect,
if ( jack_get_sample_rate ( pJackClient ) != SYSTEM_SAMPLE_RATE_HZ ) if ( jack_get_sample_rate ( pJackClient ) != SYSTEM_SAMPLE_RATE_HZ )
{ {
throw CGenErr ( tr ( "The Jack server sample rate is different from " throw CGenErr ( tr ( "The Jack server sample rate is different from "
"the required one. The required sample rate is: <b>" ) + "the required one. The required sample rate is:" ) + " <b>" +
QString().setNum ( SYSTEM_SAMPLE_RATE_HZ ) + tr ( " Hz</b>. You can " QString().setNum ( SYSTEM_SAMPLE_RATE_HZ ) + " Hz</b>. " + tr ( "You can "
"use a tool like <i><a href=""http://qjackctl.sourceforge.net"">QJackCtl</a></i> " "use a tool like <i><a href=""http://qjackctl.sourceforge.net"">QJackCtl</a></i> "
"to adjust the Jack server sample rate.<br>Make sure to set the " "to adjust the Jack server sample rate." ) + "<br>" + tr ( "Make sure to set the "
"<b>Frames/Period</b> to a low value like <b>" ) + "Frames/Period to a low value like " ) +
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) +
tr ( "</b> to achieve a low delay." ) ); tr ( " to achieve a low delay." ) );
} }
// create four ports (two for input, two for output -> stereo) // create four ports (two for input, two for output -> stereo)

View File

@ -122,20 +122,10 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item>
<widget class="QLabel" name="lblAuthorNames">
<property name="text">
<string>Author: Volker Fischer</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="lblCopyright"> <widget class="QLabel" name="lblCopyright">
<property name="text"> <property name="text">
<string>Copyright (C) 2005-2020</string> <string>Copyright (C) 2005-2020 Volker Fischer and others</string>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>false</bool> <bool>false</bool>

View File

@ -41,11 +41,11 @@ CChannelFader::CChannelFader ( QWidget* pNW,
pFader = new QSlider ( Qt::Vertical, pLevelsBox ); pFader = new QSlider ( Qt::Vertical, pLevelsBox );
pMuteSoloBox = new QWidget ( pFrame ); pMuteSoloBox = new QWidget ( pFrame );
pcbMute = new QCheckBox ( "Mute", pMuteSoloBox ); pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
pcbSolo = new QCheckBox ( "Solo", pMuteSoloBox ); pcbSolo = new QCheckBox ( tr ( "Solo" ), pMuteSoloBox );
pLabelInstBox = new QGroupBox ( pFrame ); pLabelInstBox = new QGroupBox ( pFrame );
plblLabel = new QLabel ( "", pFrame ); plblLabel = new QLabel ( "", pFrame );
plblInstrument = new QLabel ( pFrame ); plblInstrument = new QLabel ( pFrame );
plblCountryFlag = new QLabel ( pFrame ); plblCountryFlag = new QLabel ( pFrame );
@ -107,29 +107,29 @@ CChannelFader::CChannelFader ( QWidget* pNW,
Reset(); Reset();
// add help text to controls // add help text to controls
plbrChannelLevel->setWhatsThis ( tr ( "<b>Channel Level:</b> Displays the " plbrChannelLevel->setWhatsThis ( "<b>" + tr ( "Channel Level" ) + ":</b> " +
"pre-fader audio level of this channel. All connected clients at the " tr ( "Displays the pre-fader audio level of this channel. All connected clients at the "
"server will be assigned an audio level, the same value for each client." ) ); "server will be assigned an audio level, the same value for each client." ) );
plbrChannelLevel->setAccessibleName ( tr ( "Input level of the current audio " plbrChannelLevel->setAccessibleName ( tr ( "Input level of the current audio "
"channel at the server" ) ); "channel at the server" ) );
pFader->setWhatsThis ( tr ( "<b>Mixer Fader:</b> Adjusts the audio level of " pFader->setWhatsThis ( "<b>" + tr ( "Mixer Fader" ) + ":</b> " + tr (
"this channel. All connected clients at the server will be assigned " "Adjusts the audio level of this channel. All connected clients at the server "
"an audio fader at each client, adjusting the local mix." ) ); "will be assigned an audio fader at each client, adjusting the local mix." ) );
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio " pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
"channel at the server" ) ); "channel at the server" ) );
pcbMute->setWhatsThis ( tr ( "<b>Mute:</b> With the Mute checkbox, the " pcbMute->setWhatsThis ( "<b>" + tr ( "Mute" ) + ":</b> " + tr (
"audio channel can be muted." ) ); "With the Mute checkbox, the audio channel can be muted." ) );
pcbMute->setAccessibleName ( tr ( "Mute button" ) ); pcbMute->setAccessibleName ( tr ( "Mute button" ) );
pcbSolo->setWhatsThis ( tr ( "<b>Solo:</b> With the Solo checkbox, the " pcbSolo->setWhatsThis ( "<b>" + tr ( "Solo" ) + ":</b> " + tr ( "With the Solo checkbox, the "
"audio channel can be set to solo which means that all other channels " "audio channel can be set to solo which means that all other channels "
"except of the current channel are muted. It is possible to set more than " "except of the current channel are muted. It is possible to set more than "
"one channel to solo." ) ); "one channel to solo." ) );
pcbSolo->setAccessibleName ( tr ( "Solo button" ) ); pcbSolo->setAccessibleName ( tr ( "Solo button" ) );
QString strFaderText = tr ( "<b>Fader Tag:</b> The fader tag " QString strFaderText = "<b>" + tr ( "Fader Tag" ) + ":</b> " + tr ( "The fader tag "
"identifies the connected client. The tag name, the picture of your " "identifies the connected client. The tag name, the picture of your "
"instrument and a flag of your country can be set in the main window." ); "instrument and a flag of your country can be set in the main window." );
@ -439,13 +439,13 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
// alias/name // alias/name
if ( !strReceivedName.isEmpty() ) if ( !strReceivedName.isEmpty() )
{ {
strToolTip += "<h4>Alias/Name</h4>" + strReceivedName; strToolTip += "<h4>" + tr ( "Alias/Name" ) + "</h4>" + strReceivedName;
} }
// instrument // instrument
if ( !CInstPictures::IsNotUsedInstrument ( iTTInstrument ) ) if ( !CInstPictures::IsNotUsedInstrument ( iTTInstrument ) )
{ {
strToolTip += "<h4>Instrument</h4>" + strToolTip += "<h4>" + tr ( "Instrument" ) + "</h4>" +
CInstPictures::GetName ( iTTInstrument ); CInstPictures::GetName ( iTTInstrument );
} }
@ -453,7 +453,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
if ( ( eTTCountry != QLocale::AnyCountry ) || if ( ( eTTCountry != QLocale::AnyCountry ) ||
( !cChanInfo.strCity.isEmpty() ) ) ( !cChanInfo.strCity.isEmpty() ) )
{ {
strToolTip += "<h4>Location</h4>"; strToolTip += "<h4>" + tr ( "Location" ) + "</h4>";
if ( !cChanInfo.strCity.isEmpty() ) if ( !cChanInfo.strCity.isEmpty() )
{ {
@ -475,15 +475,15 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
switch ( cChanInfo.eSkillLevel ) switch ( cChanInfo.eSkillLevel )
{ {
case SL_BEGINNER: case SL_BEGINNER:
strToolTip += "<h4>Skill Level</h4>Beginner"; strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Beginner" );
break; break;
case SL_INTERMEDIATE: case SL_INTERMEDIATE:
strToolTip += "<h4>Skill Level</h4>Intermediate"; strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Intermediate" );
break; break;
case SL_PROFESSIONAL: case SL_PROFESSIONAL:
strToolTip += "<h4>Skill Level</h4>Expert"; strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Expert" );
break; break;
case SL_NOT_SET: case SL_NOT_SET:
@ -494,7 +494,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
// if no information is given, leave the tool tip empty, otherwise add header // if no information is given, leave the tool tip empty, otherwise add header
if ( !strToolTip.isEmpty() ) if ( !strToolTip.isEmpty() )
{ {
strToolTip.prepend ( "<h3>Musician Profile</h3>" ); strToolTip.prepend ( "<h3>" + tr ( "Musician Profile" ) + "</h3>" );
} }
plblCountryFlag->setToolTip ( strToolTip ); plblCountryFlag->setToolTip ( strToolTip );
@ -704,7 +704,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
if ( strServerName.isEmpty() ) if ( strServerName.isEmpty() )
{ {
// no connection or connection was reset: show default title // no connection or connection was reset: show default title
pGroupBox->setTitle ( "Server" ); pGroupBox->setTitle ( tr ( "Server" ) );
} }
else else
{ {
@ -713,7 +713,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
// list was received, the connection was successful and the title is updated // list was received, the connection was successful and the title is updated
// with the correct server name. Make sure to choose a "try to connect" title // with the correct server name. Make sure to choose a "try to connect" title
// which is most striking (we use filled blocks and upper case letters). // which is most striking (we use filled blocks and upper case letters).
pGroupBox->setTitle ( u8"\u2588\u2588\u2588\u2588\u2588 T R Y I N G T O C O N N E C T \u2588\u2588\u2588\u2588\u2588" ); pGroupBox->setTitle ( u8"\u2588\u2588\u2588\u2588\u2588 " + tr ( "T R Y I N G T O C O N N E C T" ) + u8" \u2588\u2588\u2588\u2588\u2588" );
} }
} }

View File

@ -34,14 +34,14 @@ CChatDlg::CChatDlg ( QWidget* parent, Qt::WindowFlags f ) :
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// chat window // chat window
txvChatWindow->setWhatsThis ( tr ( "<b>Chat Window:</b> The chat window " txvChatWindow->setWhatsThis ( "<b>" + tr ( "Chat Window" ) + ":</b> " + tr (
"shows a history of all chat messages." ) ); "The chat window shows a history of all chat messages." ) );
txvChatWindow->setAccessibleName ( tr ( "Chat history" ) ); txvChatWindow->setAccessibleName ( tr ( "Chat history" ) );
// input message text // input message text
edtLocalInputText->setWhatsThis ( tr ( "<b>Input Message Text:</b> Enter " edtLocalInputText->setWhatsThis ( "<b>" + tr ( "Input Message Text" ) + ":</b> " + tr (
"the chat message text in the edit box and press enter to send the " "Enter the chat message text in the edit box and press enter to send the "
"message to the server which distributes the message to all connected " "message to the server which distributes the message to all connected "
"clients. Your message will then show up in the chat window." ) ); "clients. Your message will then show up in the chat window." ) );

View File

@ -48,10 +48,10 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// input level meter // input level meter
QString strInpLevH = tr ( "<b>Input Level Meter:</b> The input level " QString strInpLevH = "<b>" + tr ( "Input Level Meter" ) + ":</b> " + tr ( "The input level "
"indicators show the input level of the two stereo channels " "indicators show the input level of the two stereo channels "
"of the current selected audio input.<br>" "of the current selected audio input." ) + "<br>" +
"Make sure not to clip the input signal to avoid distortions of the " tr ( "Make sure not to clip the input signal to avoid distortions of the "
"audio signal." ); "audio signal." );
QString strInpLevHTT = tr ( "If the " ) + APP_NAME + QString strInpLevHTT = tr ( "If the " ) + APP_NAME +
@ -60,13 +60,13 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"meter should flicker. If this is not the case, you have " "meter should flicker. If this is not the case, you have "
"probably selected the wrong input channel (e.g. line in instead " "probably selected the wrong input channel (e.g. line in instead "
"of the microphone input) or set the input gain too low in the " "of the microphone input) or set the input gain too low in the "
"(Windows) audio mixer.<br>For a proper usage of the " ) + APP_NAME + "(Windows) audio mixer." ) + "<br>" + tr ( "For a proper usage of the " ) +
tr ( " software, " APP_NAME + tr ( " software, "
"you should not hear your singing/instrument in the loudspeaker or " "you should not hear your singing/instrument in the loudspeaker or "
"your headphone when the " ) + APP_NAME + "your headphone when the " ) + APP_NAME +
tr ( " software is not connected. This can " tr ( " software is not connected. This can "
"be achieved by muting your input audio channel in the Playback " "be achieved by muting your input audio channel in the Playback "
"mixer (<b>not</b> the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT; "mixer (not the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT;
QString strInpLevHAccText = tr ( "Input level meter" ); QString strInpLevHAccText = tr ( "Input level meter" );
QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." ); QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
@ -84,8 +84,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
lbrInputLevelR->setToolTip ( strInpLevHTT ); lbrInputLevelR->setToolTip ( strInpLevHTT );
// connect/disconnect button // connect/disconnect button
butConnect->setWhatsThis ( tr ( "<b>Connect / Disconnect Button:" butConnect->setWhatsThis ( "<b>" + tr ( "Connect/Disconnect Button" ) + ":</b> " +
"</b> Push this button to connect a server. A dialog where you can " tr ( "Push this button to connect a server. A dialog where you can "
"select a server will open. If you are connected, pressing this " "select a server will open. If you are connected, pressing this "
"button will end the session." ) ); "button will end the session." ) );
@ -98,14 +98,15 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"and disconnecting the " ) + APP_NAME + tr ( " software." ) ); "and disconnecting the " ) + APP_NAME + tr ( " software." ) );
// local audio input fader // local audio input fader
QString strAudFader = tr ( "<b>Local Audio Input Fader:</b> With the " QString strAudFader = "<b>" + tr ( "Local Audio Input Fader" ) + ":</b> " +
"audio fader, the relative levels of the left and right local audio " tr ( "With the audio fader, the relative levels of the left and right local audio "
"channels can be changed. For a mono signal it acts like a panning " "channels can be changed. For a mono signal it acts like a panning "
"between the two channels. If, e.g., a microphone is connected to " "between the two channels. If, e.g., a microphone is connected to "
"the right input channel and an instrument is connected to the left " "the right input channel and an instrument is connected to the left "
"input channel which is much louder than the microphone, move the " "input channel which is much louder than the microphone, move the "
"audio fader in a direction where the label above the fader shows " "audio fader in a direction where the label above the fader shows " ) +
"<i>L -x</i>, where <i>x</i> is the current attenuation indicator." ); "<i>" + tr ( "L" ) + " -x</i>" + tr ( ", where" ) + " <i>x</i> " +
tr ( "is the current attenuation indicator." );
lblAudioPan->setWhatsThis ( strAudFader ); lblAudioPan->setWhatsThis ( strAudFader );
lblAudioPanValue->setWhatsThis ( strAudFader ); lblAudioPanValue->setWhatsThis ( strAudFader );
@ -114,14 +115,14 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) ); sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
// reverberation level // reverberation level
QString strAudReverb = tr ( "<b>Reverberation Level:</b> A reverberation " QString strAudReverb = "<b>" + tr ( "Reverberation Level" ) + ":</b> " +
"effect can be applied to one local mono audio channel or to both " tr ( "A reverberation effect can be applied to one local mono audio channel or to both "
"channels in stereo mode. The mone channel selection and the " "channels in stereo mode. The mone channel selection and the "
"reverberation level can be modified. If, e.g., " "reverberation level can be modified. If, e.g., "
"the microphone signal is fed into the right audio channel of the " "the microphone signal is fed into the right audio channel of the "
"sound card and a reverberation effect shall be applied, set the " "sound card and a reverberation effect shall be applied, set the "
"channel selector to right and move the fader upwards until the " "channel selector to right and move the fader upwards until the "
"desired reverberation level is reached.<br>" "desired reverberation level is reached." ) + "<br>" + tr (
"The reverberation effect requires significant CPU so that it should " "The reverberation effect requires significant CPU so that it should "
"only be used on fast PCs. If the reverberation level fader is set to " "only be used on fast PCs. If the reverberation level fader is set to "
"minimum (which is the default setting), the reverberation effect is " "minimum (which is the default setting), the reverberation effect is "
@ -133,8 +134,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
sldAudioReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) ); sldAudioReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) );
// reverberation channel selection // reverberation channel selection
QString strRevChanSel = tr ( "<b>Reverberation Channel Selection:</b> " QString strRevChanSel = "<b>" + tr ( "Reverberation Channel Selection" ) + ":</b> " +
"With these radio buttons the audio input channel on which the " tr ( "With these radio buttons the audio input channel on which the "
"reverberation effect is applied can be chosen. Either the left " "reverberation effect is applied can be chosen. Either the left "
"or right input channel can be selected." ); "or right input channel can be selected." );
@ -144,8 +145,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) ); rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
// delay LED // delay LED
QString strLEDDelay = tr ( "<b>Delay Status LED:</b> " QString strLEDDelay = "<b>" + tr ( "Delay Status LED" ) + ":</b> " +
"The delay status LED indicator shows the current audio delay " tr ( "The delay status LED indicator shows the current audio delay "
"status. If the light is green, the delay is perfect for a jam " "status. If the light is green, the delay is perfect for a jam "
"session. If the light is yellow, a session is still possible but " "session. If the light is yellow, a session is still possible but "
"it may be harder to play. If the light is red, the delay is too " "it may be harder to play. If the light is red, the delay is too "
@ -160,20 +161,20 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
ledDelay->setAccessibleName ( tr ( "Delay status LED indicator" ) ); ledDelay->setAccessibleName ( tr ( "Delay status LED indicator" ) );
// buffers LED // buffers LED
QString strLEDBuffers = tr ( "<b>Buffers Status LED:</b> " QString strLEDBuffers = "<b>" + tr ( "Buffers Status LED" ) + ":</b> " +
"The buffers status LED indicator shows the current audio/streaming " tr ( "The buffers status LED indicator shows the current audio/streaming "
"status. If the light is green, there are no buffer overruns/underruns " "status. If the light is green, there are no buffer overruns/underruns "
"and the audio stream is not interrupted. If the light is red, the " "and the audio stream is not interrupted. If the light is red, the "
"audio stream is interrupted caused by one of the following problems:" "audio stream is interrupted caused by one of the following problems:" ) +
"<ul>" "<ul>"
"<li>The network jitter buffer is not large enough for the current " "<li>" + tr ( "The network jitter buffer is not large enough for the current "
"network/audio interface jitter.</li>" "network/audio interface jitter." ) + "</li>"
"<li>The sound card buffer delay (buffer size) is set to a too small " "<li>" + tr ( "The sound card buffer delay (buffer size) is set to a too small "
"value.</li>" "value." ) + "</li>"
"<li>The upload or download stream rate is too high for the current " "<li>" + tr ( "The upload or download stream rate is too high for the current "
"available internet bandwidth.</li>" "available internet bandwidth." ) + "</li>"
"<li>The CPU of the client or server is at 100%.</li>" "<li>" + tr ( "The CPU of the client or server is at 100%." ) + "</li>"
"</ul>" ); "</ul>";
lblBuffers->setWhatsThis ( strLEDBuffers ); lblBuffers->setWhatsThis ( strLEDBuffers );
ledBuffers->setWhatsThis ( strLEDBuffers ); ledBuffers->setWhatsThis ( strLEDBuffers );
@ -200,7 +201,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
OnTimerStatus(); OnTimerStatus();
// init connection button text // init connection button text
butConnect->setText ( CON_BUT_CONNECTTEXT ); butConnect->setText ( tr ( "C&onnect" ) );
// init input level meter bars // init input level meter bars
lbrInputLevelL->setValue ( 0 ); lbrInputLevelL->setValue ( 0 );
@ -252,7 +253,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// View menu -------------------------------------------------------------- // View menu --------------------------------------------------------------
pViewMenu = new QMenu ( "&View", this ); pViewMenu = new QMenu ( tr ( "&View" ), this );
pViewMenu->addAction ( tr ( "&Connection Setup..." ), this, pViewMenu->addAction ( tr ( "&Connection Setup..." ), this,
SLOT ( OnOpenConnectionSetupDialog() ) ); SLOT ( OnOpenConnectionSetupDialog() ) );
@ -323,7 +324,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
{ {
// default icon and name for no flag selected // default icon and name for no flag selected
CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" ); CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
sCurCountryName = "None"; sCurCountryName = tr ( "None" );
} }
else else
{ {
@ -603,20 +604,20 @@ void CClientDlg::UpdateAudioFaderSlider()
// attenuated // attenuated
if ( iCurAudInFader == AUD_FADER_IN_MIDDLE ) if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
{ {
lblAudioPanValue->setText ( "Center" ); lblAudioPanValue->setText ( tr ( "Center" ) );
} }
else else
{ {
if ( iCurAudInFader > AUD_FADER_IN_MIDDLE ) if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
{ {
// attenuation on right channel // attenuation on right channel
lblAudioPanValue->setText ( "R -" + lblAudioPanValue->setText ( tr ( "R" ) + " -" +
QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) ); QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
} }
else else
{ {
// attenuation on left channel // attenuation on left channel
lblAudioPanValue->setText ( "L -" + lblAudioPanValue->setText ( tr ( "L" ) + " -" +
QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) ); QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
} }
} }
@ -815,12 +816,12 @@ void CClientDlg::SetMyWindowTitle ( const int iNumClients )
{ {
if ( iNumClients == 1 ) if ( iNumClients == 1 )
{ {
setWindowTitle ( QString ( pClient->strClientName ) + " (1 user)" ); setWindowTitle ( QString ( pClient->strClientName ) + " (1 " + tr ( "user" ) + ")" );
} }
else else
{ {
setWindowTitle ( QString ( pClient->strClientName ) + setWindowTitle ( QString ( pClient->strClientName ) +
QString ( " (%1 users)" ).arg ( iNumClients ) ); QString ( " (%1 " + tr ( "users" ) + ")" ).arg ( iNumClients ) );
} }
} }
@ -1057,7 +1058,7 @@ void CClientDlg::Connect ( const QString& strSelectedAddress,
} }
// change connect button text to "disconnect" // change connect button text to "disconnect"
butConnect->setText ( CON_BUT_DISCONNECTTEXT ); butConnect->setText ( tr ( "D&isconnect" ) );
// set server name in audio mixer group box title // set server name in audio mixer group box title
MainMixerBoard->SetServerName ( strMixerBoardLabel ); MainMixerBoard->SetServerName ( strMixerBoardLabel );
@ -1081,7 +1082,7 @@ void CClientDlg::Disconnect()
} }
// change connect button text to "connect" // change connect button text to "connect"
butConnect->setText ( CON_BUT_CONNECTTEXT ); butConnect->setText ( tr ( "C&onnect" ) );
// reset server name in audio mixer group box title // reset server name in audio mixer group box title
MainMixerBoard->SetServerName ( "" ); MainMixerBoard->SetServerName ( "" );

View File

@ -51,10 +51,6 @@
/* Definitions ****************************************************************/ /* Definitions ****************************************************************/
// text strings for connection button for connect and disconnect
#define CON_BUT_CONNECTTEXT "C&onnect"
#define CON_BUT_DISCONNECTTEXT "D&isconnect"
// update time for GUI controls // update time for GUI controls
#define LEVELMETER_UPDATE_TIME_MS 100 // ms #define LEVELMETER_UPDATE_TIME_MS 100 // ms
#define BUFFER_LED_UPDATE_TIME_MS 300 // ms #define BUFFER_LED_UPDATE_TIME_MS 300 // ms

View File

@ -34,34 +34,34 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// jitter buffer // jitter buffer
QString strJitterBufferSize = tr ( "<b>Jitter Buffer Size:</b> The jitter " QString strJitterBufferSize = "<b>" + tr ( "Jitter Buffer Size" ) + ":</b> " + tr (
"buffer compensates for network and sound card timing jitters. The " "The jitter buffer compensates for network and sound card timing jitters. The "
"size of this jitter buffer has therefore influence on the quality of " "size of this jitter buffer has therefore influence on the quality of "
"the audio stream (how many dropouts occur) and the overall delay " "the audio stream (how many dropouts occur) and the overall delay "
"(the longer the buffer, the higher the delay).<br>" "(the longer the buffer, the higher the delay)." ) + "<br>" + tr (
"The jitter buffer size can be manually chosen for the local client " "The jitter buffer size can be manually chosen for the local client "
"and the remote server. For the local jitter buffer, dropouts in the " "and the remote server. For the local jitter buffer, dropouts in the "
"audio stream are indicated by the light on the bottom " "audio stream are indicated by the light on the bottom "
"of the jitter buffer size faders. If the light turns to red, a buffer " "of the jitter buffer size faders. If the light turns to red, a buffer "
"overrun/underrun took place and the audio stream is interrupted.<br>" "overrun/underrun took place and the audio stream is interrupted." ) + "<br>" + tr (
"The jitter buffer setting is therefore a trade-off between audio " "The jitter buffer setting is therefore a trade-off between audio "
"quality and overall delay.<br>" "quality and overall delay." ) + "<br>" + tr (
"An auto setting of the jitter buffer size setting is available. If " "An auto setting of the jitter buffer size setting is available. If "
"the check Auto is enabled, the jitter buffers of the local client and " "the check Auto is enabled, the jitter buffers of the local client and "
"the remote server are set automatically " "the remote server are set automatically "
"based on measurements of the network and sound card timing jitter. If " "based on measurements of the network and sound card timing jitter. If "
"the <i>Auto</i> check is enabled, the jitter buffer size faders are " "the Auto check is enabled, the jitter buffer size faders are "
"disabled (they cannot be moved with the mouse)." ); "disabled (they cannot be moved with the mouse)." );
QString strJitterBufferSizeTT = tr ( "In case the auto setting of the " QString strJitterBufferSizeTT = tr ( "In case the auto setting of the "
"jitter buffer is enabled, the network buffers of the local client and " "jitter buffer is enabled, the network buffers of the local client and "
"the remote server are set to a conservative " "the remote server are set to a conservative "
"value to minimize the audio dropout probability. To <b>tweak the " "value to minimize the audio dropout probability. To tweak the "
"audio delay/latency</b> it is recommended to disable the auto setting " "audio delay/latency it is recommended to disable the auto setting "
"functionality and to <b>lower the jitter buffer size manually</b> by " "functionality and to lower the jitter buffer size manually by "
"using the sliders until your personal acceptable limit of the amount " "using the sliders until your personal acceptable limit of the amount "
"of dropouts is reached. The LED indicator will visualize the audio " "of dropouts is reached. The LED indicator will visualize the audio "
"dropouts of the local jitter buffer by a red light" ) + "dropouts of the local jitter buffer by a red light." ) +
TOOLTIP_COM_END_TEXT; TOOLTIP_COM_END_TEXT;
lblNetBuf->setWhatsThis ( strJitterBufferSize ); lblNetBuf->setWhatsThis ( strJitterBufferSize );
@ -80,11 +80,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
ledNetw->setToolTip ( strJitterBufferSizeTT ); ledNetw->setToolTip ( strJitterBufferSizeTT );
// sound card device // sound card device
cbxSoundcard->setWhatsThis ( tr ( "<b>Sound Card Device:</b> The ASIO " cbxSoundcard->setWhatsThis ( "<b>" + tr ( "Sound Card Device" ) + ":</b> " +
"driver (sound card) can be selected using " ) + APP_NAME + tr ( "The ASIO driver (sound card) can be selected using " ) + APP_NAME +
tr ( " under the Windows operating system. Under MacOS/Linux, no sound " tr ( " under the Windows operating system. Under MacOS/Linux, no sound "
"card selection is possible. If the selected ASIO driver is not valid " "card selection is possible. If the selected ASIO driver is not valid "
"an error message is shown and the previous valid driver is selected.<br>" "an error message is shown and the previous valid driver is selected." ) + "<br>" + tr (
"If the driver is selected during an active connection, the connection " "If the driver is selected during an active connection, the connection "
"is stopped, the driver is changed and the connection is started again " "is stopped, the driver is changed and the connection is started again "
"automatically." ) ); "automatically." ) );
@ -93,19 +93,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
#ifdef _WIN32 #ifdef _WIN32
// set Windows specific tool tip // set Windows specific tool tip
cbxSoundcard->setToolTip ( tr ( "In case the <b>ASIO4ALL</b> driver is used, " cbxSoundcard->setToolTip ( tr ( "In case the ASIO4ALL driver is used, "
"please note that this driver usually introduces approx. 10-30 ms of " "please note that this driver usually introduces approx. 10-30 ms of "
"additional audio delay. Using a sound card with a native ASIO driver " "additional audio delay. Using a sound card with a native ASIO driver "
"is therefore recommended.<br>If you are using the <b>kX ASIO</b> " "is therefore recommended." ) + "<br>" + tr ( "If you are using the kX ASIO "
"driver, make sure to connect the ASIO inputs in the kX DSP settings " "driver, make sure to connect the ASIO inputs in the kX DSP settings "
"panel." ) + TOOLTIP_COM_END_TEXT ); "panel." ) + TOOLTIP_COM_END_TEXT );
#endif #endif
// sound card input/output channel mapping // sound card input/output channel mapping
QString strSndCrdChanMapp = tr ( "<b>Sound Card Channel Mapping:</b> " QString strSndCrdChanMapp = "<b>" + tr ( "Sound Card Channel Mapping" ) + ":</b> " +
"In case the selected sound card device offers more than one " tr ( "In case the selected sound card device offers more than one "
"input or output channel, the Input Channel Mapping and Output " "input or output channel, the Input Channel Mapping and Output "
"Channel Mapping settings are visible.<br>" "Channel Mapping settings are visible." ) + "<br>" + tr (
"For each " ) + APP_NAME + tr ( " input/output channel (Left and " "For each " ) + APP_NAME + tr ( " input/output channel (Left and "
"Right channel) a different actual sound card channel can be " "Right channel) a different actual sound card channel can be "
"selected." ); "selected." );
@ -122,8 +122,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) ); cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) );
// enable OPUS64 // enable OPUS64
chbEnableOPUS64->setWhatsThis ( tr ( "<b>Enable Small Network Buffers:</b> If enabled, " chbEnableOPUS64->setWhatsThis ( "<b>" + tr ( "Enable Small Network Buffers" ) + ":</b> " + tr (
"the support for very small network audio packets is activated. Very small " "If enabled, the support for very small network audio packets is activated. Very small "
"network packets are only actually used if the sound card buffer delay is smaller than " ) + "network packets are only actually used if the sound card buffer delay is smaller than " ) +
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + tr ( " samples. The " QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + tr ( " samples. The "
"smaller the network buffers, the smaller the audio latency. But at the same time " "smaller the network buffers, the smaller the audio latency. But at the same time "
@ -132,35 +132,35 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
chbEnableOPUS64->setAccessibleName ( tr ( "Enable small network buffers check box" ) ); chbEnableOPUS64->setAccessibleName ( tr ( "Enable small network buffers check box" ) );
// sound card buffer delay // sound card buffer delay
QString strSndCrdBufDelay = tr ( "<b>Sound Card Buffer Delay:</b> The " QString strSndCrdBufDelay = "<b>" + tr ( "Sound Card Buffer Delay" ) + ":</b> " +
"buffer delay setting is a fundamental setting of the " ) + tr ( "The buffer delay setting is a fundamental setting of the " ) +
APP_NAME + tr ( " software. This setting has influence on many " APP_NAME + tr ( " software. This setting has influence on many "
"connection properties.<br>" "connection properties." ) + "<br>" + tr (
"Three buffer sizes are supported:" "Three buffer sizes are supported" ) +
"<ul>" ":<ul>"
"<li>64 samples: This is the preferred setting since it gives lowest " "<li>" + tr ( "64 samples: This is the preferred setting since it gives lowest "
"latency but does not work with all sound cards.</li>" "latency but does not work with all sound cards." ) + "</li>"
"<li>128 samples: This setting should work on most of the available " "<li>" + tr ( "128 samples: This setting should work on most of the available "
"sound cards.</li>" "sound cards." ) + "</li>"
"<li>256 samples: This setting should only be used if only a very slow " "<li>" + tr ( "256 samples: This setting should only be used if only a very slow "
"computer or a slow internet connection is available.</li>" "computer or a slow internet connection is available." ) + "</li>"
"</ul>" "</ul>" + tr (
"Some sound card driver do not allow the buffer delay to be changed " "Some sound card driver do not allow the buffer delay to be changed "
"from within the " ) + APP_NAME + "from within the " ) + APP_NAME +
tr ( " software. In this case the buffer delay setting " tr ( " software. In this case the buffer delay setting "
"is disabled. To change the actual buffer delay, this " "is disabled. To change the actual buffer delay, this "
"setting has to be changed in the sound card driver. On Windows, press " "setting has to be changed in the sound card driver. On Windows, press "
"the ASIO Setup button to open the driver settings panel. On Linux, " "the ASIO Setup button to open the driver settings panel. On Linux, "
"use the Jack configuration tool to change the buffer size.<br>" "use the Jack configuration tool to change the buffer size." ) + "<br>" + tr (
"If no buffer size is selected and all settings are disabled, an " "If no buffer size is selected and all settings are disabled, an "
"unsupported buffer size is used by the driver. The " ) + APP_NAME + "unsupported buffer size is used by the driver. The " ) + APP_NAME +
tr ( " software will still work with this setting but with restricted " tr ( " software will still work with this setting but with restricted "
"performannce.<br>" "performannce." ) + "<br>" + tr (
"The actual buffer delay has influence on the connection status, the " "The actual buffer delay has influence on the connection status, the "
"current upload rate and the overall delay. The lower the buffer size, " "current upload rate and the overall delay. The lower the buffer size, "
"the higher the probability of red light in the status indicator (drop " "the higher the probability of red light in the status indicator (drop "
"outs) and the higher the upload rate and the lower the overall " "outs) and the higher the upload rate and the lower the overall "
"delay.<br>" "delay." ) + "<br>" + tr (
"The buffer setting is therefore a trade-off between audio " "The buffer setting is therefore a trade-off between audio "
"quality and overall delay." ); "quality and overall delay." );
@ -185,19 +185,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
butDriverSetup->setToolTip ( strSndCrdBufDelayTT ); butDriverSetup->setToolTip ( strSndCrdBufDelayTT );
// fancy skin // fancy skin
chbGUIDesignFancy->setWhatsThis ( tr ( "<b>Fancy Skin:</b> If enabled, " chbGUIDesignFancy->setWhatsThis ( "<b>" + tr ( "Fancy Skin" ) + ":</b> " + tr (
"a fancy skin will be applied to the main window." ) ); "If enabled, a fancy skin will be applied to the main window." ) );
chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) ); chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) );
// display channel levels // display channel levels
chbDisplayChannelLevels->setWhatsThis ( tr ( "<b>Display Channel Levels:</b> " chbDisplayChannelLevels->setWhatsThis ( "<b>" + tr ( "Display Channel Levels" ) + ":</b> " +
"If enabled, each client channel will display a pre-fader level bar." ) ); tr ( "If enabled, each client channel will display a pre-fader level bar." ) );
chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) ); chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) );
// audio channels // audio channels
QString strAudioChannels = tr ( "<b>Audio Channels:</b> " QString strAudioChannels = "<b>" + tr ( "Audio Channels" ) + ":</b> " + tr (
"Select the number of audio channels to be used. There are three " "Select the number of audio channels to be used. There are three "
"modes available. The mono and stereo modes use one and two " "modes available. The mono and stereo modes use one and two "
"audio channels respectively. In the mono-in/stereo-out mode " "audio channels respectively. In the mono-in/stereo-out mode "
@ -206,10 +206,10 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
"sound card puts the instrument on one input channel and the " "sound card puts the instrument on one input channel and the "
"microphone on the other channel. In that case the two input signals " "microphone on the other channel. In that case the two input signals "
"can be mixed to one mono channel but the server mix can be heard in " "can be mixed to one mono channel but the server mix can be heard in "
"stereo.<br>" "stereo." ) + "<br>" + tr (
"Enabling the stereo streaming mode will increase the " "Enabling the stereo streaming mode will increase the "
"stream data rate. Make sure that the current upload rate does not " "stream data rate. Make sure that the current upload rate does not "
"exceed the available bandwidth of your internet connection.<br>" "exceed the available bandwidth of your internet connection." ) + "<br>" + tr (
"In case of the stereo streaming mode, no audio channel selection " "In case of the stereo streaming mode, no audio channel selection "
"for the reverberation effect will be available on the main window " "for the reverberation effect will be available on the main window "
"since the effect is applied on both channels in this case." ); "since the effect is applied on both channels in this case." );
@ -219,7 +219,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxAudioChannels->setAccessibleName ( tr ( "Audio channels combo box" ) ); cbxAudioChannels->setAccessibleName ( tr ( "Audio channels combo box" ) );
// audio quality // audio quality
QString strAudioQuality = tr ( "<b>Audio Quality:</b> " QString strAudioQuality = "<b>" + tr ( "Audio Quality" ) + ":</b> " + tr (
"Select the desired audio quality. A low, normal or high audio " "Select the desired audio quality. A low, normal or high audio "
"quality can be selected. The higher the audio quality, the higher " "quality can be selected. The higher the audio quality, the higher "
"the audio stream data rate. Make sure that the current " "the audio stream data rate. Make sure that the current "
@ -231,8 +231,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxAudioQuality->setAccessibleName ( tr ( "Audio quality combo box" ) ); cbxAudioQuality->setAccessibleName ( tr ( "Audio quality combo box" ) );
// new client fader level // new client fader level
QString strNewClientLevel = tr ( "<b>New Client Level:</b> The " QString strNewClientLevel = "<b>" + tr ( "New Client Level" ) + ":</b> " +
"new client level setting defines the fader level of a new " tr ( "The new client level setting defines the fader level of a new "
"connected client in percent. I.e. if a new client connects " "connected client in percent. I.e. if a new client connects "
"to the current server, it will get the specified initial " "to the current server, it will get the specified initial "
"fader level if no other fader level of a previous connection " "fader level if no other fader level of a previous connection "
@ -243,8 +243,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
edtNewClientLevel->setAccessibleName ( tr ( "New client level edit box" ) ); edtNewClientLevel->setAccessibleName ( tr ( "New client level edit box" ) );
// central server address // central server address
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The " QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
"central server address is the IP address or URL of the central server " tr ( "The central server address is the IP address or URL of the central server "
"at which the server list of the connection dialog is managed. With the " "at which the server list of the connection dialog is managed. With the "
"central server address type either the local region can be selected of " "central server address type either the local region can be selected of "
"the default central servers or a manual address can be specified." ); "the default central servers or a manual address can be specified." );
@ -257,15 +257,15 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) ); edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
// current connection status parameter // current connection status parameter
QString strConnStats = tr ( "<b>Current Connection Status " QString strConnStats = "<b>" + tr ( "Current Connection Status "
"Parameter:</b> The ping time is the time required for the audio " "Parameter" ) + ":</b> " + tr ( "The ping time is the time required for the audio "
"stream to travel from the client to the server and backwards. This " "stream to travel from the client to the server and backwards. This "
"delay is introduced by the network. This delay should be as low as " "delay is introduced by the network. This delay should be as low as "
"20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to " "20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to "
"the server is too large or your internet connection is not " "the server is too large or your internet connection is not "
"sufficient.<br>" "sufficient." ) + "<br>" + tr (
"The overall delay is calculated from the current ping time and the " "The overall delay is calculated from the current ping time and the "
"delay which is introduced by the current buffer settings.<br>" "delay which is introduced by the current buffer settings." ) + "<br>" + tr (
"The upstream rate depends on the current audio packet size and the " "The upstream rate depends on the current audio packet size and the "
"audio compression setting. Make sure that the upstream rate is not " "audio compression setting. Make sure that the upstream rate is not "
"higher than the available rate (check the upstream capabilities of " "higher than the available rate (check the upstream capabilities of "
@ -285,7 +285,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// init driver button // init driver button
#ifdef _WIN32 #ifdef _WIN32
butDriverSetup->setText ( "ASIO Setup" ); butDriverSetup->setText ( tr ( "ASIO Setup" ) );
#else #else
// no use for this button for MacOS/Linux right now -> hide it // no use for this button for MacOS/Linux right now -> hide it
butDriverSetup->hide(); butDriverSetup->hide();
@ -332,23 +332,23 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// "Audio Channels" combo box // "Audio Channels" combo box
cbxAudioChannels->clear(); cbxAudioChannels->clear();
cbxAudioChannels->addItem ( "Mono" ); // CC_MONO cbxAudioChannels->addItem ( tr ( "Mono" ) ); // CC_MONO
cbxAudioChannels->addItem ( "Mono-in/Stereo-out" ); // CC_MONO_IN_STEREO_OUT cbxAudioChannels->addItem ( tr ( "Mono-in/Stereo-out" ) ); // CC_MONO_IN_STEREO_OUT
cbxAudioChannels->addItem ( "Stereo" ); // CC_STEREO cbxAudioChannels->addItem ( tr ( "Stereo" ) ); // CC_STEREO
cbxAudioChannels->setCurrentIndex ( static_cast<int> ( pClient->GetAudioChannels() ) ); cbxAudioChannels->setCurrentIndex ( static_cast<int> ( pClient->GetAudioChannels() ) );
// "Audio Quality" combo box // "Audio Quality" combo box
cbxAudioQuality->clear(); cbxAudioQuality->clear();
cbxAudioQuality->addItem ( "Low" ); // AQ_LOW cbxAudioQuality->addItem ( tr ( "Low" ) ); // AQ_LOW
cbxAudioQuality->addItem ( "Normal" ); // AQ_NORMAL cbxAudioQuality->addItem ( tr ( "Normal" ) ); // AQ_NORMAL
cbxAudioQuality->addItem ( "High" ); // AQ_HIGH cbxAudioQuality->addItem ( tr ( "High" ) ); // AQ_HIGH
cbxAudioQuality->setCurrentIndex ( static_cast<int> ( pClient->GetAudioQuality() ) ); cbxAudioQuality->setCurrentIndex ( static_cast<int> ( pClient->GetAudioQuality() ) );
// central server address type combo box // central server address type combo box
cbxCentServAddrType->clear(); cbxCentServAddrType->clear();
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pClient->GetCentralServerAddressType() ) ); cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pClient->GetCentralServerAddressType() ) );
UpdateCentralServerDependency(); UpdateCentralServerDependency();
@ -454,11 +454,11 @@ void CClientSettingsDlg::UpdateJitterBufferFrame()
// update slider value and text // update slider value and text
const int iCurNumNetBuf = pClient->GetSockBufNumFrames(); const int iCurNumNetBuf = pClient->GetSockBufNumFrames();
sldNetBuf->setValue ( iCurNumNetBuf ); sldNetBuf->setValue ( iCurNumNetBuf );
lblNetBuf->setText ( "Size: " + QString().setNum ( iCurNumNetBuf ) ); lblNetBuf->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBuf ) );
const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames(); const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames();
sldNetBufServer->setValue ( iCurNumNetBufServer ); sldNetBufServer->setValue ( iCurNumNetBufServer );
lblNetBufServer->setText ( "Size: " + QString().setNum ( iCurNumNetBufServer ) ); lblNetBufServer->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBufServer ) );
// if auto setting is enabled, disable slider control // if auto setting is enabled, disable slider control
const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize(); const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize();
@ -515,12 +515,12 @@ void CClientSettingsDlg::UpdateSoundCardFrame()
if ( bPreferredChecked || bDefaultChecked || bSafeChecked ) if ( bPreferredChecked || bDefaultChecked || bSafeChecked )
{ {
// default title text // default title text
grbSoundCrdBufDelay->setTitle ( "Buffer Delay" ); grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay" ) );
} }
else else
{ {
// special title text with buffer size information added // special title text with buffer size information added
grbSoundCrdBufDelay->setTitle ( "Buffer Delay: " + grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay: " ) +
GenSndCrdBufferDelayString ( iCurActualBufSize ) ); GenSndCrdBufferDelayString ( iCurActualBufSize ) );
} }
} }
@ -633,7 +633,7 @@ void CClientSettingsDlg::OnSoundcardActivated ( int iSndDevIdx )
QString ( tr ( "The selected audio device could not be used " QString ( tr ( "The selected audio device could not be used "
"because of the following error: " ) ) + strError + "because of the following error: " ) ) + strError +
QString ( tr ( " The previous driver will be selected." ) ), QString ( tr ( " The previous driver will be selected." ) ),
"Ok", nullptr ); tr ( "Ok" ), nullptr );
// recover old selection // recover old selection
cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() ); cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() );

View File

@ -44,13 +44,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// server list // server list
lvwServers->setWhatsThis ( tr ( "<b>Server List:</b> The server list shows " lvwServers->setWhatsThis ( "<b>" + tr ( "Server List" ) + ":</b> " + tr (
"a list of available servers which are registered at the central " "The server list shows a list of available servers which are registered at the "
"server. Select a server from the list and press the connect button to " "central server. Select a server from the list and press the connect button to "
"connect to this server. Alternatively, double click a server from " "connect to this server. Alternatively, double click a server from "
"the list to connect to it. If a server is occupied, a list of the " "the list to connect to it. If a server is occupied, a list of the "
"connected musicians is available by expanding the list item. " "connected musicians is available by expanding the list item. "
"Permanent servers are shown in bold font.<br>" "Permanent servers are shown in bold font." ) + "<br>" + tr (
"Note that it may take some time to retrieve the server list from the " "Note that it may take some time to retrieve the server list from the "
"central server. If no valid central server address is specified in " "central server. If no valid central server address is specified in "
"the settings, no server list will be available." ) ); "the settings, no server list will be available." ) );
@ -58,12 +58,12 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
lvwServers->setAccessibleName ( tr ( "Server list view" ) ); lvwServers->setAccessibleName ( tr ( "Server list view" ) );
// server address // server address
QString strServAddrH = tr ( "<b>Server Address:</b> The IP address or URL " QString strServAddrH = "<b>" + tr ( "Server Address" ) + ":</b> " + tr (
"of the server running the " ) + APP_NAME + tr ( " server software " "The IP address or URL of the server running the " ) + APP_NAME + tr (
"must be set here. An optional port number can be added after the IP " " server software must be set here. An optional port number can be added after the IP "
"address or URL using a comma as a separator, e.g, <i>" "address or URL using a comma as a separator, e.g, "
"example.org:" ) + "example.org:" ) +
QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( "</i>. A list of " QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( ". A list of "
"the most recent used server IP addresses or URLs is available for " "the most recent used server IP addresses or URLs is available for "
"selection." ); "selection." );
@ -75,13 +75,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
"IP address or URL. It also stores old URLs in the combo box list." ) ); "IP address or URL. It also stores old URLs in the combo box list." ) );
// filter // filter
edtFilter->setWhatsThis ( tr ( "<b>Filter:</b> The server list is filered " edtFilter->setWhatsThis ( "<b>" + tr ( "Filter" ) + ":</b> " + tr ( "The server "
"by the given text. Note that the filter is case insensitive." ) ); "list is filered by the given text. Note that the filter is case insensitive." ) );
edtFilter->setAccessibleName ( tr ( "Filter edit box" ) ); edtFilter->setAccessibleName ( tr ( "Filter edit box" ) );
// show all mucisians // show all mucisians
chbExpandAll->setWhatsThis ( tr ( "<b>Show All Musicians:</b> If you check " chbExpandAll->setWhatsThis ( "<b>" + tr ( "Show All Musicians" ) + ":</b> " + tr (
"this check box, the musicians of all servers are shown. If you " "If you check this check box, the musicians of all servers are shown. If you "
"uncheck the check box, all list view items are collapsed.") ); "uncheck the check box, all list view items are collapsed.") );
chbExpandAll->setAccessibleName ( tr ( "Show all musicians check box" ) ); chbExpandAll->setAccessibleName ( tr ( "Show all musicians check box" ) );

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,12 @@
<qresource prefix="/translations" lang="fr"> <qresource prefix="/translations" lang="fr">
<file alias="translation.qm">res/translation/translation_fr_FR.qm</file> <file alias="translation.qm">res/translation/translation_fr_FR.qm</file>
</qresource> </qresource>
<qresource prefix="/translations" lang="pt">
<file alias="translation.qm">res/translation/translation_pt_PT.qm</file>
</qresource>
<qresource prefix="/translations" lang="es">
<file alias="translation.qm">res/translation/translation_es_ES.qm</file>
</qresource>
<qresource prefix="/png/LEDs"> <qresource prefix="/png/LEDs">
<file>res/CLEDDisabledSmall.png</file> <file>res/CLEDDisabledSmall.png</file>
<file>res/CLEDGreenArrow.png</file> <file>res/CLEDGreenArrow.png</file>

View File

@ -42,28 +42,28 @@ CServerDlg::CServerDlg ( CServer* pNServP,
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// client list // client list
lvwClients->setWhatsThis ( tr ( "<b>Client List:</b> The client list " lvwClients->setWhatsThis ( "<b>" + tr ( "Client List" ) + ":</b> " + tr (
"shows all clients which are currently connected to this server. Some " "The client list shows all clients which are currently connected to this "
"information about the clients like the IP address and name are given " "server. Some information about the clients like the IP address and name "
"for each connected client." ) ); "are given for each connected client." ) );
lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) ); lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) );
// start minimized on operating system start // start minimized on operating system start
chbStartOnOSStart->setWhatsThis ( tr ( "<b>Start Minimized on Operating " chbStartOnOSStart->setWhatsThis ( "<b>" + tr ( "Start Minimized on Operating "
"System Start:</b> If the start minimized on operating system start " "System Start" ) + ":</b> " + tr ( "If the start minimized on operating system start "
"check box is checked, the " ) + APP_NAME + tr ( " server will be " "check box is checked, the " ) + APP_NAME + tr ( " server will be "
"started when the operating system starts up and is automatically " "started when the operating system starts up and is automatically "
"minimized to a system task bar icon." ) ); "minimized to a system task bar icon." ) );
// CC licence dialog switch // CC licence dialog switch
chbUseCCLicence->setWhatsThis ( tr ( "<b>Show Creative Commons Licence " chbUseCCLicence->setWhatsThis ( "<b>" + tr ( "Show Creative Commons Licence "
"Dialog:</b> If enabled, a Creative Commons BY-NC-SA 4.0 Licence " "Dialog" ) + ":</b> " + tr ( "If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
"dialog is shown each time a new user connects the server." ) ); "dialog is shown each time a new user connects the server." ) );
// Make My Server Public flag // Make My Server Public flag
chbRegisterServer->setWhatsThis ( tr ( "<b>Make My Server Public:</b> If " chbRegisterServer->setWhatsThis ( "<b>" + tr ( "Make My Server Public" ) + ":</b> " +
"the Make My Server Public check box is checked, this server registers " tr ( "If the Make My Server Public check box is checked, this server registers "
"itself at the central server so that all " ) + APP_NAME + "itself at the central server so that all " ) + APP_NAME +
tr ( " users can see the server in the connect dialog server list and " tr ( " users can see the server in the connect dialog server list and "
"connect to it. The registering of the server is renewed periodically " "connect to it. The registering of the server is renewed periodically "
@ -71,13 +71,13 @@ CServerDlg::CServerDlg ( CServer* pNServP,
"actually available." ) ); "actually available." ) );
// register server status label // register server status label
lblRegSvrStatus->setWhatsThis ( tr ( "<b>Register Server Status:</b> If " lblRegSvrStatus->setWhatsThis ( "<b>" + tr ( "Register Server Status" ) + ":</b> " +
"the Make My Server Public check box is checked, this will show " tr ( "If the Make My Server Public check box is checked, this will show "
"the success of registration with the central server." ) ); "the success of registration with the central server." ) );
// central server address // central server address
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The " QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
"Central server address is the IP address or URL of the central server " tr ( "The Central server address is the IP address or URL of the central server "
"at which this server is registered. With the central server address " "at which this server is registered. With the central server address "
"type either the local region can be selected of the default central " "type either the local region can be selected of the default central "
"servers or a manual address can be specified." ); "servers or a manual address can be specified." );
@ -90,7 +90,7 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) ); edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
// server name // server name
QString strServName = tr ( "<b>Server Name:</b> The server name identifies " QString strServName = "<b>" + tr ( "Server Name" ) + ":</b> " + tr ( "The server name identifies "
"your server in the connect dialog server list at the clients. If no " "your server in the connect dialog server list at the clients. If no "
"name is given, the IP address is shown instead." ); "name is given, the IP address is shown instead." );
@ -100,18 +100,17 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtServerName->setAccessibleName ( tr ( "Server name line edit" ) ); edtServerName->setAccessibleName ( tr ( "Server name line edit" ) );
// location city // location city
QString strLocCity = tr ( "<b>Location City:</b> The city in which this " QString strLocCity = "<b>" + tr ( "Location City" ) + ":</b> " + tr ( "The city in which this "
"server is located can be set here. If a city name is entered, it " "server is located can be set here. If a city name is entered, it "
"will be shown in the connect dialog server list at the clients." ); "will be shown in the connect dialog server list at the clients." );
lblLocationCity->setWhatsThis ( strLocCity ); lblLocationCity->setWhatsThis ( strLocCity );
edtLocationCity->setWhatsThis ( strLocCity ); edtLocationCity->setWhatsThis ( strLocCity );
edtLocationCity->setAccessibleName ( tr ( edtLocationCity->setAccessibleName ( tr ( "City where the server is located line edit" ) );
"City where the server is located line edit" ) );
// location country // location country
QString strLocCountry = tr ( "<b>Location country:</b> The country in " QString strLocCountry = "<b>" + tr ( "Location country" ) + ":</b> " + tr ( "The country in "
"which this server is located can be set here. If a country is " "which this server is located can be set here. If a country is "
"entered, it will be shown in the connect dialog server list at the " "entered, it will be shown in the connect dialog server list at the "
"clients." ); "clients." );
@ -189,9 +188,9 @@ lvwClients->setMinimumHeight ( 140 );
// central server address type combo box // central server address type combo box
cbxCentServAddrType->clear(); cbxCentServAddrType->clear();
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pServer->GetCentralServerAddressType() ) ); cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pServer->GetCentralServerAddressType() ) );
// update server name line edit // update server name line edit
@ -273,7 +272,7 @@ lvwClients->setMinimumHeight ( 140 );
// View menu -------------------------------------------------------------- // View menu --------------------------------------------------------------
QMenu* pViewMenu = new QMenu ( "&Window", this ); QMenu* pViewMenu = new QMenu ( tr ( "&Window" ), this );
pViewMenu->addAction ( tr ( "E&xit" ), this, pViewMenu->addAction ( tr ( "E&xit" ), this,
SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) ); SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) );

View File

@ -141,10 +141,10 @@ QString CSoundBase::SetDev ( const int iNewDev )
nullptr, APP_NAME, QString ( tr ( "The audio driver properties " nullptr, APP_NAME, QString ( tr ( "The audio driver properties "
"have changed to a state which is incompatible to this " "have changed to a state which is incompatible to this "
"software. The selected audio device could not be used " "software. The selected audio device could not be used "
"because of the following error: <b>" ) ) + "because of the following error:" ) + " <b>" ) +
strErrorMessage + strErrorMessage +
QString ( tr ( "</b><br><br>Please restart the software." ) ), QString ( "</b><br><br>" + tr ( "Please restart the software." ) ),
"Close", nullptr ); tr ( "Close" ), nullptr );
_exit ( 0 ); _exit ( 0 );
} }
@ -186,11 +186,11 @@ QString CSoundBase::SetDev ( const int iNewDev )
if ( !vsErrorList.isEmpty() ) if ( !vsErrorList.isEmpty() )
{ {
// create error message with all details // create error message with all details
QString sErrorMessage = tr ( "<b>No usable " ) + QString sErrorMessage = "<b>" + tr ( "No usable " ) +
strSystemDriverTechniqueName + tr ( " audio device " strSystemDriverTechniqueName + tr ( " audio device "
"(driver) found.</b><br><br>" "(driver) found." ) + "</b><br><br>" + tr (
"In the following there is a list of all available drivers " "In the following there is a list of all available drivers "
"with the associated error message:<ul>" ); "with the associated error message:" ) + "<ul>";
for ( int i = 0; i < lNumDevs; i++ ) for ( int i = 0; i < lNumDevs; i++ )
{ {
@ -202,7 +202,7 @@ QString CSoundBase::SetDev ( const int iNewDev )
// to be able to access the ASIO driver setup for changing, e.g., the sample rate, we // to be able to access the ASIO driver setup for changing, e.g., the sample rate, we
// offer the user under Windows that we open the driver setups of all registered // offer the user under Windows that we open the driver setups of all registered
// ASIO drivers // ASIO drivers
sErrorMessage = sErrorMessage + tr ( "<br/>Do you want to open the ASIO driver setups?" ); sErrorMessage = sErrorMessage + "<br/>" + tr ( "Do you want to open the ASIO driver setups?" );
if ( QMessageBox::Yes == QMessageBox::information ( nullptr, APP_NAME, sErrorMessage, QMessageBox::Yes|QMessageBox::No ) ) if ( QMessageBox::Yes == QMessageBox::information ( nullptr, APP_NAME, sErrorMessage, QMessageBox::Yes|QMessageBox::No ) )
{ {

View File

@ -462,9 +462,9 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
QVBoxLayout* pLayout = new QVBoxLayout ( this ); QVBoxLayout* pLayout = new QVBoxLayout ( this );
QHBoxLayout* pSubLayout = new QHBoxLayout; QHBoxLayout* pSubLayout = new QHBoxLayout;
QTextBrowser* txvLicence = new QTextBrowser ( this ); QTextBrowser* txvLicence = new QTextBrowser ( this );
QCheckBox* chbAgree = new QCheckBox ( "I &agree to the above licence terms", this ); QCheckBox* chbAgree = new QCheckBox ( tr ( "I &agree to the above licence terms" ), this );
butAccept = new QPushButton ( "Accept", this ); butAccept = new QPushButton ( tr ( "Accept" ), this );
QPushButton* butDecline = new QPushButton ( "Decline", this ); QPushButton* butDecline = new QPushButton ( tr ( "Decline" ), this );
pSubLayout->addStretch(); pSubLayout->addStretch();
pSubLayout->addWidget ( chbAgree ); pSubLayout->addWidget ( chbAgree );
@ -486,10 +486,10 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
"You agree that all data, sounds, or other works transmitted to this server " "You agree that all data, sounds, or other works transmitted to this server "
"are owned and created by you or your licensors, and that you are making these " "are owned and created by you or your licensors, and that you are making these "
"data, sounds or other works available via the following Creative Commons " "data, sounds or other works available via the following Creative Commons "
"License (for more information on this license, see " "License (for more information on this license, see " ) +
"<i><a href=""http://creativecommons.org/licenses/by-nc-sa/4.0"">" "<i><a href=""http://creativecommons.org/licenses/by-nc-sa/4.0"">"
"http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):" ) + "</big></p>" + "http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):</big></p>"
"<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>" + "<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>"
"<p>" + tr ( "You are free to:" ) + "<p>" + tr ( "You are free to:" ) +
"<ul>" "<ul>"
"<li><b>" + tr ( "Share" ) + "</b> - " + "<li><b>" + tr ( "Share" ) + "</b> - " +
@ -539,22 +539,22 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
- label with combo box for skill level - label with combo box for skill level
- OK button - OK button
*/ */
setWindowTitle ( "Musician Profile" ); setWindowTitle ( tr ( "Musician Profile" ) );
setWindowIcon ( QIcon ( QString::fromUtf8 ( ":/png/main/res/fronticon.png" ) ) ); setWindowIcon ( QIcon ( QString::fromUtf8 ( ":/png/main/res/fronticon.png" ) ) );
QVBoxLayout* pLayout = new QVBoxLayout ( this ); QVBoxLayout* pLayout = new QVBoxLayout ( this );
QHBoxLayout* pButSubLayout = new QHBoxLayout; QHBoxLayout* pButSubLayout = new QHBoxLayout;
QLabel* plblAlias = new QLabel ( "Alias/Name", this ); QLabel* plblAlias = new QLabel ( tr ( "Alias/Name" ), this );
pedtAlias = new QLineEdit ( this ); pedtAlias = new QLineEdit ( this );
QLabel* plblInstrument = new QLabel ( "Instrument", this ); QLabel* plblInstrument = new QLabel ( tr ( "Instrument" ), this );
pcbxInstrument = new QComboBox ( this ); pcbxInstrument = new QComboBox ( this );
QLabel* plblCountry = new QLabel ( "Country", this ); QLabel* plblCountry = new QLabel ( tr ( "Country" ), this );
pcbxCountry = new QComboBox ( this ); pcbxCountry = new QComboBox ( this );
QLabel* plblCity = new QLabel ( "City", this ); QLabel* plblCity = new QLabel ( tr ( "City" ), this );
pedtCity = new QLineEdit ( this ); pedtCity = new QLineEdit ( this );
QLabel* plblSkill = new QLabel ( "Skill", this ); QLabel* plblSkill = new QLabel ( tr ( "Skill" ), this );
pcbxSkill = new QComboBox ( this ); pcbxSkill = new QComboBox ( this );
QPushButton* butClose = new QPushButton ( "&Close", this ); QPushButton* butClose = new QPushButton ( tr ( "&Close" ), this );
QGridLayout* pGridLayout = new QGridLayout; QGridLayout* pGridLayout = new QGridLayout;
plblAlias->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding ); plblAlias->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding );
@ -627,8 +627,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
if ( static_cast<QLocale::Country> ( iCurCntry ) != QLocale::AnyCountry ) if ( static_cast<QLocale::Country> ( iCurCntry ) != QLocale::AnyCountry )
{ {
// get current country enum // get current country enum
QLocale::Country eCountry = QLocale::Country eCountry = static_cast<QLocale::Country> ( iCurCntry );
static_cast<QLocale::Country> ( iCurCntry );
// try to load icon from resource file name // try to load icon from resource file name
QIcon CurFlagIcon; QIcon CurFlagIcon;
@ -653,7 +652,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
FlagNoneIcon.addFile ( ":/png/flags/res/flags/flagnone.png" ); FlagNoneIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
pcbxCountry->insertItem ( 0, pcbxCountry->insertItem ( 0,
FlagNoneIcon, FlagNoneIcon,
"None", tr ( "None" ),
static_cast<int> ( QLocale::AnyCountry ) ); static_cast<int> ( QLocale::AnyCountry ) );
@ -665,35 +664,35 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
RGBCOL_G_SL_NOT_SET, RGBCOL_G_SL_NOT_SET,
RGBCOL_B_SL_NOT_SET ) ); RGBCOL_B_SL_NOT_SET ) );
pcbxSkill->addItem ( QIcon ( SLPixmap ), "None", SL_NOT_SET ); pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "None" ), SL_NOT_SET );
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_BEGINNER, SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_BEGINNER,
RGBCOL_G_SL_BEGINNER, RGBCOL_G_SL_BEGINNER,
RGBCOL_B_SL_BEGINNER ) ); RGBCOL_B_SL_BEGINNER ) );
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Beginner", SL_BEGINNER ); pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Beginner" ), SL_BEGINNER );
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_INTERMEDIATE, SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_INTERMEDIATE,
RGBCOL_G_SL_INTERMEDIATE, RGBCOL_G_SL_INTERMEDIATE,
RGBCOL_B_SL_INTERMEDIATE ) ); RGBCOL_B_SL_INTERMEDIATE ) );
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Intermediate", SL_INTERMEDIATE ); pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Intermediate" ), SL_INTERMEDIATE );
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_SL_PROFESSIONAL, SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_SL_PROFESSIONAL,
RGBCOL_G_SL_SL_PROFESSIONAL, RGBCOL_G_SL_SL_PROFESSIONAL,
RGBCOL_B_SL_SL_PROFESSIONAL ) ); RGBCOL_B_SL_SL_PROFESSIONAL ) );
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Expert", SL_PROFESSIONAL ); pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Expert" ), SL_PROFESSIONAL );
// Add help text to controls ----------------------------------------------- // Add help text to controls -----------------------------------------------
// fader tag // fader tag
QString strFaderTag = tr ( "<b>Musician Profile:</b> Set your name " QString strFaderTag = "<b>" + tr ( "Musician Profile" ) + ":</b> " + tr (
"or an alias here so that the other musicians you want to play with " "Set your name or an alias here so that the other musicians you want to play with "
"know who you are. Additionally you may set an instrument picture of " "know who you are. Additionally you may set an instrument picture of "
"the instrument you play and a flag of the country you are living. " "the instrument you play and a flag of the country you are living. "
"The city you live in and the skill level of playing your instrument " "The city you live in and the skill level of playing your instrument "
"may also be added.\n" "may also be added." ) + "<br>" + tr (
"What you set here will appear at your fader on the mixer board when " "What you set here will appear at your fader on the mixer board when "
"you are connected to a " ) + APP_NAME + tr ( " server. This tag will " "you are connected to a " ) + APP_NAME + tr ( " server. This tag will "
"also show up at each client which is connected to the same server as " "also show up at each client which is connected to the same server as "

View File

@ -590,28 +590,28 @@ inline QString svrRegStatusToString ( ESvrRegStatus eSvrRegStatus )
switch ( eSvrRegStatus ) switch ( eSvrRegStatus )
{ {
case SRS_UNREGISTERED: case SRS_UNREGISTERED:
return "Unregistered"; return QCoreApplication::translate ( "CServerDlg", "Unregistered" );
case SRS_BAD_ADDRESS: case SRS_BAD_ADDRESS:
return "Bad address"; return QCoreApplication::translate ( "CServerDlg", "Bad address" );
case SRS_REQUESTED: case SRS_REQUESTED:
return "Registration requested"; return QCoreApplication::translate ( "CServerDlg", "Registration requested" );
case SRS_TIME_OUT: case SRS_TIME_OUT:
return "Registration failed"; return QCoreApplication::translate ( "CServerDlg", "Registration failed" );
case SRS_UNKNOWN_RESP: case SRS_UNKNOWN_RESP:
return "Check server version"; return QCoreApplication::translate ( "CServerDlg", "Check server version" );
case SRS_REGISTERED: case SRS_REGISTERED:
return "Registered"; return QCoreApplication::translate ( "CServerDlg", "Registered" );
case SRS_CENTRAL_SVR_FULL: case SRS_CENTRAL_SVR_FULL:
return "Central Server full"; return QCoreApplication::translate ( "CServerDlg", "Central Server full" );
} }
return QString ( "Unknown value " ).append ( eSvrRegStatus ); return QString ( QCoreApplication::translate ( "CServerDlg", "Unknown value " ) ).append ( eSvrRegStatus );
} }

View File

@ -515,9 +515,9 @@ CSound::CSound ( void (*fpNewCallback) ( CVector<int16_t>& psData, voi
// in case we do not have a driver available, throw error // in case we do not have a driver available, throw error
if ( lNumDevs == 0 ) if ( lNumDevs == 0 )
{ {
throw CGenErr ( tr ( "<b>No ASIO audio device (driver) found.</b><br><br>" throw CGenErr ( "<b>" + tr ( "No ASIO audio device (driver) found." ) + "</b><br><br>" +
"The " ) + APP_NAME + tr ( " software requires the low latency audio " tr ( "The " ) + APP_NAME + tr ( " software requires the low latency audio "
"interface <b>ASIO</b> to work properly. This is no standard " "interface ASIO to work properly. This is no standard "
"Windows audio interface and therefore a special audio driver is " "Windows audio interface and therefore a special audio driver is "
"required. Either your sound card has a native ASIO driver (which " "required. Either your sound card has a native ASIO driver (which "
"is recommended) or you might want to use alternative drivers like " "is recommended) or you might want to use alternative drivers like "