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)
- 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)
TODO re-design About dialog
TODO implement panning for channels (Ticket #52, #145)
TODO WIP support internationalization

View file

@ -15,7 +15,9 @@ QT += widgets \
xml
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

View file

@ -58,13 +58,13 @@ void CSound::OpenJack ( const bool bNoAutoJackConnect,
if ( jack_get_sample_rate ( pJackClient ) != SYSTEM_SAMPLE_RATE_HZ )
{
throw CGenErr ( tr ( "The Jack server sample rate is different from "
"the required one. The required sample rate is: <b>" ) +
QString().setNum ( SYSTEM_SAMPLE_RATE_HZ ) + tr ( " Hz</b>. You can "
"the required one. The required sample rate is:" ) + " <b>" +
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> "
"to adjust the Jack server sample rate.<br>Make sure to set the "
"<b>Frames/Period</b> to a low value like <b>" ) +
"to adjust the Jack server sample rate." ) + "<br>" + tr ( "Make sure to set the "
"Frames/Period to a low value like " ) +
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)

View file

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

View file

@ -41,11 +41,11 @@ CChannelFader::CChannelFader ( QWidget* pNW,
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
pMuteSoloBox = new QWidget ( pFrame );
pcbMute = new QCheckBox ( "Mute", pMuteSoloBox );
pcbSolo = new QCheckBox ( "Solo", pMuteSoloBox );
pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
pcbSolo = new QCheckBox ( tr ( "Solo" ), pMuteSoloBox );
pLabelInstBox = new QGroupBox ( pFrame );
plblLabel = new QLabel ( "", pFrame );
plblLabel = new QLabel ( "", pFrame );
plblInstrument = new QLabel ( pFrame );
plblCountryFlag = new QLabel ( pFrame );
@ -107,29 +107,29 @@ CChannelFader::CChannelFader ( QWidget* pNW,
Reset();
// add help text to controls
plbrChannelLevel->setWhatsThis ( tr ( "<b>Channel Level:</b> Displays the "
"pre-fader audio level of this channel. All connected clients at the "
plbrChannelLevel->setWhatsThis ( "<b>" + tr ( "Channel Level" ) + ":</b> " +
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." ) );
plbrChannelLevel->setAccessibleName ( tr ( "Input level of the current audio "
"channel at the server" ) );
pFader->setWhatsThis ( tr ( "<b>Mixer Fader:</b> Adjusts the audio level of "
"this channel. All connected clients at the server will be assigned "
"an audio fader at each client, adjusting the local mix." ) );
pFader->setWhatsThis ( "<b>" + tr ( "Mixer Fader" ) + ":</b> " + tr (
"Adjusts the audio level of this channel. All connected clients at the server "
"will be assigned an audio fader at each client, adjusting the local mix." ) );
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
"channel at the server" ) );
pcbMute->setWhatsThis ( tr ( "<b>Mute:</b> With the Mute checkbox, the "
"audio channel can be muted." ) );
pcbMute->setWhatsThis ( "<b>" + tr ( "Mute" ) + ":</b> " + tr (
"With the Mute checkbox, the audio channel can be muted." ) );
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 "
"except of the current channel are muted. It is possible to set more than "
"one channel to solo." ) );
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 "
"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
if ( !strReceivedName.isEmpty() )
{
strToolTip += "<h4>Alias/Name</h4>" + strReceivedName;
strToolTip += "<h4>" + tr ( "Alias/Name" ) + "</h4>" + strReceivedName;
}
// instrument
if ( !CInstPictures::IsNotUsedInstrument ( iTTInstrument ) )
{
strToolTip += "<h4>Instrument</h4>" +
strToolTip += "<h4>" + tr ( "Instrument" ) + "</h4>" +
CInstPictures::GetName ( iTTInstrument );
}
@ -453,7 +453,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
if ( ( eTTCountry != QLocale::AnyCountry ) ||
( !cChanInfo.strCity.isEmpty() ) )
{
strToolTip += "<h4>Location</h4>";
strToolTip += "<h4>" + tr ( "Location" ) + "</h4>";
if ( !cChanInfo.strCity.isEmpty() )
{
@ -475,15 +475,15 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
switch ( cChanInfo.eSkillLevel )
{
case SL_BEGINNER:
strToolTip += "<h4>Skill Level</h4>Beginner";
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Beginner" );
break;
case SL_INTERMEDIATE:
strToolTip += "<h4>Skill Level</h4>Intermediate";
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Intermediate" );
break;
case SL_PROFESSIONAL:
strToolTip += "<h4>Skill Level</h4>Expert";
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Expert" );
break;
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 ( !strToolTip.isEmpty() )
{
strToolTip.prepend ( "<h3>Musician Profile</h3>" );
strToolTip.prepend ( "<h3>" + tr ( "Musician Profile" ) + "</h3>" );
}
plblCountryFlag->setToolTip ( strToolTip );
@ -704,7 +704,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
if ( strServerName.isEmpty() )
{
// no connection or connection was reset: show default title
pGroupBox->setTitle ( "Server" );
pGroupBox->setTitle ( tr ( "Server" ) );
}
else
{
@ -713,7 +713,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
// 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
// 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 -----------------------------------------------
// chat window
txvChatWindow->setWhatsThis ( tr ( "<b>Chat Window:</b> The chat window "
"shows a history of all chat messages." ) );
txvChatWindow->setWhatsThis ( "<b>" + tr ( "Chat Window" ) + ":</b> " + tr (
"The chat window shows a history of all chat messages." ) );
txvChatWindow->setAccessibleName ( tr ( "Chat history" ) );
// input message text
edtLocalInputText->setWhatsThis ( tr ( "<b>Input Message Text:</b> Enter "
"the chat message text in the edit box and press enter to send the "
edtLocalInputText->setWhatsThis ( "<b>" + tr ( "Input Message Text" ) + ":</b> " + tr (
"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 "
"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 -----------------------------------------------
// 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 "
"of the current selected audio input.<br>"
"Make sure not to clip the input signal to avoid distortions of the "
"of the current selected audio input." ) + "<br>" +
tr ( "Make sure not to clip the input signal to avoid distortions of the "
"audio signal." );
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 "
"probably selected the wrong input channel (e.g. line in instead "
"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 +
tr ( " software, "
"(Windows) audio mixer." ) + "<br>" + tr ( "For a proper usage of the " ) +
APP_NAME + tr ( " software, "
"you should not hear your singing/instrument in the loudspeaker or "
"your headphone when the " ) + APP_NAME +
tr ( " software is not connected. This can "
"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 strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
@ -84,8 +84,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
lbrInputLevelR->setToolTip ( strInpLevHTT );
// connect/disconnect button
butConnect->setWhatsThis ( tr ( "<b>Connect / Disconnect Button:"
"</b> Push this button to connect a server. A dialog where you can "
butConnect->setWhatsThis ( "<b>" + tr ( "Connect/Disconnect Button" ) + ":</b> " +
tr ( "Push this button to connect a server. A dialog where you can "
"select a server will open. If you are connected, pressing this "
"button will end the session." ) );
@ -98,14 +98,15 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"and disconnecting the " ) + APP_NAME + tr ( " software." ) );
// local audio input fader
QString strAudFader = tr ( "<b>Local Audio Input Fader:</b> With the "
"audio fader, the relative levels of the left and right local audio "
QString strAudFader = "<b>" + tr ( "Local Audio Input Fader" ) + ":</b> " +
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 "
"between the two channels. If, e.g., a microphone is connected to "
"the right input channel and an instrument is connected to the left "
"input channel which is much louder than the microphone, move the "
"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." );
"audio fader in a direction where the label above the fader shows " ) +
"<i>" + tr ( "L" ) + " -x</i>" + tr ( ", where" ) + " <i>x</i> " +
tr ( "is the current attenuation indicator." );
lblAudioPan->setWhatsThis ( strAudFader );
lblAudioPanValue->setWhatsThis ( strAudFader );
@ -114,14 +115,14 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
// reverberation level
QString strAudReverb = tr ( "<b>Reverberation Level:</b> A reverberation "
"effect can be applied to one local mono audio channel or to both "
QString strAudReverb = "<b>" + tr ( "Reverberation Level" ) + ":</b> " +
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 "
"reverberation level can be modified. If, e.g., "
"the microphone signal is fed into the right audio channel of the "
"sound card and a reverberation effect shall be applied, set 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 "
"only be used on fast PCs. If the reverberation level fader is set to "
"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" ) );
// reverberation channel selection
QString strRevChanSel = tr ( "<b>Reverberation Channel Selection:</b> "
"With these radio buttons the audio input channel on which the "
QString strRevChanSel = "<b>" + tr ( "Reverberation Channel Selection" ) + ":</b> " +
tr ( "With these radio buttons the audio input channel on which the "
"reverberation effect is applied can be chosen. Either the left "
"or right input channel can be selected." );
@ -144,8 +145,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
// delay LED
QString strLEDDelay = tr ( "<b>Delay Status LED:</b> "
"The delay status LED indicator shows the current audio delay "
QString strLEDDelay = "<b>" + tr ( "Delay Status LED" ) + ":</b> " +
tr ( "The delay status LED indicator shows the current audio delay "
"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 "
"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" ) );
// buffers LED
QString strLEDBuffers = tr ( "<b>Buffers Status LED:</b> "
"The buffers status LED indicator shows the current audio/streaming "
QString strLEDBuffers = "<b>" + tr ( "Buffers Status LED" ) + ":</b> " +
tr ( "The buffers status LED indicator shows the current audio/streaming "
"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 "
"audio stream is interrupted caused by one of the following problems:"
"audio stream is interrupted caused by one of the following problems:" ) +
"<ul>"
"<li>The network jitter buffer is not large enough for the current "
"network/audio interface jitter.</li>"
"<li>The sound card buffer delay (buffer size) is set to a too small "
"value.</li>"
"<li>The upload or download stream rate is too high for the current "
"available internet bandwidth.</li>"
"<li>The CPU of the client or server is at 100%.</li>"
"</ul>" );
"<li>" + tr ( "The network jitter buffer is not large enough for the current "
"network/audio interface jitter." ) + "</li>"
"<li>" + tr ( "The sound card buffer delay (buffer size) is set to a too small "
"value." ) + "</li>"
"<li>" + tr ( "The upload or download stream rate is too high for the current "
"available internet bandwidth." ) + "</li>"
"<li>" + tr ( "The CPU of the client or server is at 100%." ) + "</li>"
"</ul>";
lblBuffers->setWhatsThis ( strLEDBuffers );
ledBuffers->setWhatsThis ( strLEDBuffers );
@ -200,7 +201,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
OnTimerStatus();
// init connection button text
butConnect->setText ( CON_BUT_CONNECTTEXT );
butConnect->setText ( tr ( "C&onnect" ) );
// init input level meter bars
lbrInputLevelL->setValue ( 0 );
@ -252,7 +253,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// View menu --------------------------------------------------------------
pViewMenu = new QMenu ( "&View", this );
pViewMenu = new QMenu ( tr ( "&View" ), this );
pViewMenu->addAction ( tr ( "&Connection Setup..." ), this,
SLOT ( OnOpenConnectionSetupDialog() ) );
@ -323,7 +324,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
{
// default icon and name for no flag selected
CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
sCurCountryName = "None";
sCurCountryName = tr ( "None" );
}
else
{
@ -603,20 +604,20 @@ void CClientDlg::UpdateAudioFaderSlider()
// attenuated
if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
{
lblAudioPanValue->setText ( "Center" );
lblAudioPanValue->setText ( tr ( "Center" ) );
}
else
{
if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
{
// attenuation on right channel
lblAudioPanValue->setText ( "R -" +
lblAudioPanValue->setText ( tr ( "R" ) + " -" +
QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
}
else
{
// attenuation on left channel
lblAudioPanValue->setText ( "L -" +
lblAudioPanValue->setText ( tr ( "L" ) + " -" +
QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
}
}
@ -815,12 +816,12 @@ void CClientDlg::SetMyWindowTitle ( const int iNumClients )
{
if ( iNumClients == 1 )
{
setWindowTitle ( QString ( pClient->strClientName ) + " (1 user)" );
setWindowTitle ( QString ( pClient->strClientName ) + " (1 " + tr ( "user" ) + ")" );
}
else
{
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"
butConnect->setText ( CON_BUT_DISCONNECTTEXT );
butConnect->setText ( tr ( "D&isconnect" ) );
// set server name in audio mixer group box title
MainMixerBoard->SetServerName ( strMixerBoardLabel );
@ -1081,7 +1082,7 @@ void CClientDlg::Disconnect()
}
// 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
MainMixerBoard->SetServerName ( "" );

View file

@ -51,10 +51,6 @@
/* 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
#define LEVELMETER_UPDATE_TIME_MS 100 // 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 -----------------------------------------------
// jitter buffer
QString strJitterBufferSize = tr ( "<b>Jitter Buffer Size:</b> The jitter "
"buffer compensates for network and sound card timing jitters. The "
QString strJitterBufferSize = "<b>" + tr ( "Jitter Buffer Size" ) + ":</b> " + tr (
"The jitter buffer compensates for network and sound card timing jitters. The "
"size of this jitter buffer has therefore influence on the quality of "
"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 "
"and the remote server. For the local jitter buffer, dropouts in the "
"audio stream are indicated by the light on the bottom "
"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 "
"quality and overall delay.<br>"
"quality and overall delay." ) + "<br>" + tr (
"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 remote server are set automatically "
"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)." );
QString strJitterBufferSizeTT = tr ( "In case the auto setting of the "
"jitter buffer is enabled, the network buffers of the local client and "
"the remote server are set to a conservative "
"value to minimize the audio dropout probability. To <b>tweak the "
"audio delay/latency</b> it is recommended to disable the auto setting "
"functionality and to <b>lower the jitter buffer size manually</b> by "
"value to minimize the audio dropout probability. To tweak the "
"audio delay/latency it is recommended to disable the auto setting "
"functionality and to lower the jitter buffer size manually by "
"using the sliders until your personal acceptable limit of the amount "
"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;
lblNetBuf->setWhatsThis ( strJitterBufferSize );
@ -80,11 +80,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
ledNetw->setToolTip ( strJitterBufferSizeTT );
// sound card device
cbxSoundcard->setWhatsThis ( tr ( "<b>Sound Card Device:</b> The ASIO "
"driver (sound card) can be selected using " ) + APP_NAME +
cbxSoundcard->setWhatsThis ( "<b>" + tr ( "Sound Card Device" ) + ":</b> " +
tr ( "The ASIO driver (sound card) can be selected using " ) + APP_NAME +
tr ( " under the Windows operating system. Under MacOS/Linux, no sound "
"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 "
"is stopped, the driver is changed and the connection is started again "
"automatically." ) );
@ -93,19 +93,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
#ifdef _WIN32
// 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 "
"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 "
"panel." ) + TOOLTIP_COM_END_TEXT );
#endif
// sound card input/output channel mapping
QString strSndCrdChanMapp = tr ( "<b>Sound Card Channel Mapping:</b> "
"In case the selected sound card device offers more than one "
QString strSndCrdChanMapp = "<b>" + tr ( "Sound Card Channel Mapping" ) + ":</b> " +
tr ( "In case the selected sound card device offers more than one "
"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 "
"Right channel) a different actual sound card channel can be "
"selected." );
@ -122,8 +122,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) );
// enable OPUS64
chbEnableOPUS64->setWhatsThis ( tr ( "<b>Enable Small Network Buffers:</b> If enabled, "
"the support for very small network audio packets is activated. Very small "
chbEnableOPUS64->setWhatsThis ( "<b>" + tr ( "Enable Small Network Buffers" ) + ":</b> " + tr (
"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 " ) +
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + tr ( " samples. The "
"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" ) );
// sound card buffer delay
QString strSndCrdBufDelay = tr ( "<b>Sound Card Buffer Delay:</b> The "
"buffer delay setting is a fundamental setting of the " ) +
QString strSndCrdBufDelay = "<b>" + tr ( "Sound Card Buffer Delay" ) + ":</b> " +
tr ( "The buffer delay setting is a fundamental setting of the " ) +
APP_NAME + tr ( " software. This setting has influence on many "
"connection properties.<br>"
"Three buffer sizes are supported:"
"<ul>"
"<li>64 samples: This is the preferred setting since it gives lowest "
"latency but does not work with all sound cards.</li>"
"<li>128 samples: This setting should work on most of the available "
"sound cards.</li>"
"<li>256 samples: This setting should only be used if only a very slow "
"computer or a slow internet connection is available.</li>"
"</ul>"
"connection properties." ) + "<br>" + tr (
"Three buffer sizes are supported" ) +
":<ul>"
"<li>" + tr ( "64 samples: This is the preferred setting since it gives lowest "
"latency but does not work with all sound cards." ) + "</li>"
"<li>" + tr ( "128 samples: This setting should work on most of the available "
"sound cards." ) + "</li>"
"<li>" + tr ( "256 samples: This setting should only be used if only a very slow "
"computer or a slow internet connection is available." ) + "</li>"
"</ul>" + tr (
"Some sound card driver do not allow the buffer delay to be changed "
"from within the " ) + APP_NAME +
tr ( " software. In this case the buffer delay setting "
"is disabled. To change the actual buffer delay, this "
"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, "
"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 "
"unsupported buffer size is used by the driver. The " ) + APP_NAME +
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 "
"current upload rate and the overall delay. The lower the buffer size, "
"the higher the probability of red light in the status indicator (drop "
"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 "
"quality and overall delay." );
@ -185,19 +185,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
butDriverSetup->setToolTip ( strSndCrdBufDelayTT );
// fancy skin
chbGUIDesignFancy->setWhatsThis ( tr ( "<b>Fancy Skin:</b> If enabled, "
"a fancy skin will be applied to the main window." ) );
chbGUIDesignFancy->setWhatsThis ( "<b>" + tr ( "Fancy Skin" ) + ":</b> " + tr (
"If enabled, a fancy skin will be applied to the main window." ) );
chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) );
// display channel levels
chbDisplayChannelLevels->setWhatsThis ( tr ( "<b>Display Channel Levels:</b> "
"If enabled, each client channel will display a pre-fader level bar." ) );
chbDisplayChannelLevels->setWhatsThis ( "<b>" + tr ( "Display Channel Levels" ) + ":</b> " +
tr ( "If enabled, each client channel will display a pre-fader level bar." ) );
chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) );
// 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 "
"modes available. The mono and stereo modes use one and two "
"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 "
"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 "
"stereo.<br>"
"stereo." ) + "<br>" + tr (
"Enabling the stereo streaming mode will increase the "
"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 "
"for the reverberation effect will be available on the main window "
"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" ) );
// 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 "
"quality can be selected. The higher the audio quality, the higher "
"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" ) );
// new client fader level
QString strNewClientLevel = tr ( "<b>New Client Level:</b> The "
"new client level setting defines the fader level of a new "
QString strNewClientLevel = "<b>" + tr ( "New Client Level" ) + ":</b> " +
tr ( "The new client level setting defines the fader level of a new "
"connected client in percent. I.e. if a new client connects "
"to the current server, it will get the specified initial "
"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" ) );
// central server address
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The "
"central server address is the IP address or URL of the central server "
QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
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 "
"central server address type either the local region can be selected of "
"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" ) );
// current connection status parameter
QString strConnStats = tr ( "<b>Current Connection Status "
"Parameter:</b> The ping time is the time required for the audio "
QString strConnStats = "<b>" + tr ( "Current Connection Status "
"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 "
"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 "
"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 "
"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 "
"audio compression setting. Make sure that the upstream rate is not "
"higher than the available rate (check the upstream capabilities of "
@ -285,7 +285,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// init driver button
#ifdef _WIN32
butDriverSetup->setText ( "ASIO Setup" );
butDriverSetup->setText ( tr ( "ASIO Setup" ) );
#else
// no use for this button for MacOS/Linux right now -> hide it
butDriverSetup->hide();
@ -332,23 +332,23 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// "Audio Channels" combo box
cbxAudioChannels->clear();
cbxAudioChannels->addItem ( "Mono" ); // CC_MONO
cbxAudioChannels->addItem ( "Mono-in/Stereo-out" ); // CC_MONO_IN_STEREO_OUT
cbxAudioChannels->addItem ( "Stereo" ); // CC_STEREO
cbxAudioChannels->addItem ( tr ( "Mono" ) ); // CC_MONO
cbxAudioChannels->addItem ( tr ( "Mono-in/Stereo-out" ) ); // CC_MONO_IN_STEREO_OUT
cbxAudioChannels->addItem ( tr ( "Stereo" ) ); // CC_STEREO
cbxAudioChannels->setCurrentIndex ( static_cast<int> ( pClient->GetAudioChannels() ) );
// "Audio Quality" combo box
cbxAudioQuality->clear();
cbxAudioQuality->addItem ( "Low" ); // AQ_LOW
cbxAudioQuality->addItem ( "Normal" ); // AQ_NORMAL
cbxAudioQuality->addItem ( "High" ); // AQ_HIGH
cbxAudioQuality->addItem ( tr ( "Low" ) ); // AQ_LOW
cbxAudioQuality->addItem ( tr ( "Normal" ) ); // AQ_NORMAL
cbxAudioQuality->addItem ( tr ( "High" ) ); // AQ_HIGH
cbxAudioQuality->setCurrentIndex ( static_cast<int> ( pClient->GetAudioQuality() ) );
// central server address type combo box
cbxCentServAddrType->clear();
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pClient->GetCentralServerAddressType() ) );
UpdateCentralServerDependency();
@ -454,11 +454,11 @@ void CClientSettingsDlg::UpdateJitterBufferFrame()
// update slider value and text
const int iCurNumNetBuf = pClient->GetSockBufNumFrames();
sldNetBuf->setValue ( iCurNumNetBuf );
lblNetBuf->setText ( "Size: " + QString().setNum ( iCurNumNetBuf ) );
lblNetBuf->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBuf ) );
const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames();
sldNetBufServer->setValue ( iCurNumNetBufServer );
lblNetBufServer->setText ( "Size: " + QString().setNum ( iCurNumNetBufServer ) );
lblNetBufServer->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBufServer ) );
// if auto setting is enabled, disable slider control
const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize();
@ -515,12 +515,12 @@ void CClientSettingsDlg::UpdateSoundCardFrame()
if ( bPreferredChecked || bDefaultChecked || bSafeChecked )
{
// default title text
grbSoundCrdBufDelay->setTitle ( "Buffer Delay" );
grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay" ) );
}
else
{
// special title text with buffer size information added
grbSoundCrdBufDelay->setTitle ( "Buffer Delay: " +
grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay: " ) +
GenSndCrdBufferDelayString ( iCurActualBufSize ) );
}
}
@ -633,7 +633,7 @@ void CClientSettingsDlg::OnSoundcardActivated ( int iSndDevIdx )
QString ( tr ( "The selected audio device could not be used "
"because of the following error: " ) ) + strError +
QString ( tr ( " The previous driver will be selected." ) ),
"Ok", nullptr );
tr ( "Ok" ), nullptr );
// recover old selection
cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() );

View file

@ -44,13 +44,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
// Add help text to controls -----------------------------------------------
// server list
lvwServers->setWhatsThis ( tr ( "<b>Server List:</b> The server list shows "
"a list of available servers which are registered at the central "
"server. Select a server from the list and press the connect button to "
lvwServers->setWhatsThis ( "<b>" + tr ( "Server List" ) + ":</b> " + tr (
"The server list shows a list of available servers which are registered at the "
"central server. Select a server from the list and press the connect button to "
"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 "
"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 "
"central server. If no valid central server address is specified in "
"the settings, no server list will be available." ) );
@ -58,12 +58,12 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
lvwServers->setAccessibleName ( tr ( "Server list view" ) );
// server address
QString strServAddrH = tr ( "<b>Server Address:</b> The IP address or URL "
"of the server running the " ) + APP_NAME + tr ( " 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>"
QString strServAddrH = "<b>" + tr ( "Server Address" ) + ":</b> " + tr (
"The IP address or URL of the server running the " ) + APP_NAME + tr (
" 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, "
"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 "
"selection." );
@ -75,13 +75,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
"IP address or URL. It also stores old URLs in the combo box list." ) );
// filter
edtFilter->setWhatsThis ( tr ( "<b>Filter:</b> The server list is filered "
"by the given text. Note that the filter is case insensitive." ) );
edtFilter->setWhatsThis ( "<b>" + tr ( "Filter" ) + ":</b> " + tr ( "The server "
"list is filered by the given text. Note that the filter is case insensitive." ) );
edtFilter->setAccessibleName ( tr ( "Filter edit box" ) );
// show all mucisians
chbExpandAll->setWhatsThis ( tr ( "<b>Show All Musicians:</b> If you check "
"this check box, the musicians of all servers are shown. If you "
chbExpandAll->setWhatsThis ( "<b>" + tr ( "Show All Musicians" ) + ":</b> " + tr (
"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.") );
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">
<file alias="translation.qm">res/translation/translation_fr_FR.qm</file>
</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">
<file>res/CLEDDisabledSmall.png</file>
<file>res/CLEDGreenArrow.png</file>

View file

@ -42,28 +42,28 @@ CServerDlg::CServerDlg ( CServer* pNServP,
// Add help text to controls -----------------------------------------------
// client list
lvwClients->setWhatsThis ( tr ( "<b>Client List:</b> The client list "
"shows all clients which are currently connected to this server. Some "
"information about the clients like the IP address and name are given "
"for each connected client." ) );
lvwClients->setWhatsThis ( "<b>" + tr ( "Client List" ) + ":</b> " + tr (
"The client list shows all clients which are currently connected to this "
"server. Some information about the clients like the IP address and name "
"are given for each connected client." ) );
lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) );
// start minimized on operating system start
chbStartOnOSStart->setWhatsThis ( tr ( "<b>Start Minimized on Operating "
"System Start:</b> If the start minimized on operating system start "
chbStartOnOSStart->setWhatsThis ( "<b>" + tr ( "Start Minimized on Operating "
"System Start" ) + ":</b> " + tr ( "If the start minimized on operating system start "
"check box is checked, the " ) + APP_NAME + tr ( " server will be "
"started when the operating system starts up and is automatically "
"minimized to a system task bar icon." ) );
// CC licence dialog switch
chbUseCCLicence->setWhatsThis ( tr ( "<b>Show Creative Commons Licence "
"Dialog:</b> If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
chbUseCCLicence->setWhatsThis ( "<b>" + tr ( "Show Creative Commons 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." ) );
// Make My Server Public flag
chbRegisterServer->setWhatsThis ( tr ( "<b>Make My Server Public:</b> If "
"the Make My Server Public check box is checked, this server registers "
chbRegisterServer->setWhatsThis ( "<b>" + tr ( "Make My Server Public" ) + ":</b> " +
tr ( "If the Make My Server Public check box is checked, this server registers "
"itself at the central server so that all " ) + APP_NAME +
tr ( " users can see the server in the connect dialog server list and "
"connect to it. The registering of the server is renewed periodically "
@ -71,13 +71,13 @@ CServerDlg::CServerDlg ( CServer* pNServP,
"actually available." ) );
// register server status label
lblRegSvrStatus->setWhatsThis ( tr ( "<b>Register Server Status:</b> If "
"the Make My Server Public check box is checked, this will show "
lblRegSvrStatus->setWhatsThis ( "<b>" + tr ( "Register Server Status" ) + ":</b> " +
tr ( "If the Make My Server Public check box is checked, this will show "
"the success of registration with the central server." ) );
// central server address
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The "
"Central server address is the IP address or URL of the central server "
QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
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 "
"type either the local region can be selected of the default central "
"servers or a manual address can be specified." );
@ -90,7 +90,7 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
// 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 "
"name is given, the IP address is shown instead." );
@ -100,18 +100,17 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtServerName->setAccessibleName ( tr ( "Server name line edit" ) );
// 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 "
"will be shown in the connect dialog server list at the clients." );
lblLocationCity->setWhatsThis ( strLocCity );
edtLocationCity->setWhatsThis ( strLocCity );
edtLocationCity->setAccessibleName ( tr (
"City where the server is located line edit" ) );
edtLocationCity->setAccessibleName ( tr ( "City where the server is located line edit" ) );
// 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 "
"entered, it will be shown in the connect dialog server list at the "
"clients." );
@ -189,9 +188,9 @@ lvwClients->setMinimumHeight ( 140 );
// central server address type combo box
cbxCentServAddrType->clear();
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pServer->GetCentralServerAddressType() ) );
// update server name line edit
@ -273,7 +272,7 @@ lvwClients->setMinimumHeight ( 140 );
// View menu --------------------------------------------------------------
QMenu* pViewMenu = new QMenu ( "&Window", this );
QMenu* pViewMenu = new QMenu ( tr ( "&Window" ), this );
pViewMenu->addAction ( tr ( "E&xit" ), this,
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 "
"have changed to a state which is incompatible to this "
"software. The selected audio device could not be used "
"because of the following error: <b>" ) ) +
"because of the following error:" ) + " <b>" ) +
strErrorMessage +
QString ( tr ( "</b><br><br>Please restart the software." ) ),
"Close", nullptr );
QString ( "</b><br><br>" + tr ( "Please restart the software." ) ),
tr ( "Close" ), nullptr );
_exit ( 0 );
}
@ -186,11 +186,11 @@ QString CSoundBase::SetDev ( const int iNewDev )
if ( !vsErrorList.isEmpty() )
{
// create error message with all details
QString sErrorMessage = tr ( "<b>No usable " ) +
QString sErrorMessage = "<b>" + tr ( "No usable " ) +
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 "
"with the associated error message:<ul>" );
"with the associated error message:" ) + "<ul>";
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
// offer the user under Windows that we open the driver setups of all registered
// 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 ) )
{

View file

@ -462,9 +462,9 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
QVBoxLayout* pLayout = new QVBoxLayout ( this );
QHBoxLayout* pSubLayout = new QHBoxLayout;
QTextBrowser* txvLicence = new QTextBrowser ( this );
QCheckBox* chbAgree = new QCheckBox ( "I &agree to the above licence terms", this );
butAccept = new QPushButton ( "Accept", this );
QPushButton* butDecline = new QPushButton ( "Decline", this );
QCheckBox* chbAgree = new QCheckBox ( tr ( "I &agree to the above licence terms" ), this );
butAccept = new QPushButton ( tr ( "Accept" ), this );
QPushButton* butDecline = new QPushButton ( tr ( "Decline" ), this );
pSubLayout->addStretch();
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 "
"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 "
"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"">"
"http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):" ) + "</big></p>" +
"<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>" +
"http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):</big></p>"
"<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>"
"<p>" + tr ( "You are free to:" ) +
"<ul>"
"<li><b>" + tr ( "Share" ) + "</b> - " +
@ -539,22 +539,22 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
- label with combo box for skill level
- OK button
*/
setWindowTitle ( "Musician Profile" );
setWindowTitle ( tr ( "Musician Profile" ) );
setWindowIcon ( QIcon ( QString::fromUtf8 ( ":/png/main/res/fronticon.png" ) ) );
QVBoxLayout* pLayout = new QVBoxLayout ( this );
QHBoxLayout* pButSubLayout = new QHBoxLayout;
QLabel* plblAlias = new QLabel ( "Alias/Name", this );
QLabel* plblAlias = new QLabel ( tr ( "Alias/Name" ), this );
pedtAlias = new QLineEdit ( this );
QLabel* plblInstrument = new QLabel ( "Instrument", this );
QLabel* plblInstrument = new QLabel ( tr ( "Instrument" ), this );
pcbxInstrument = new QComboBox ( this );
QLabel* plblCountry = new QLabel ( "Country", this );
QLabel* plblCountry = new QLabel ( tr ( "Country" ), this );
pcbxCountry = new QComboBox ( this );
QLabel* plblCity = new QLabel ( "City", this );
QLabel* plblCity = new QLabel ( tr ( "City" ), this );
pedtCity = new QLineEdit ( this );
QLabel* plblSkill = new QLabel ( "Skill", this );
QLabel* plblSkill = new QLabel ( tr ( "Skill" ), this );
pcbxSkill = new QComboBox ( this );
QPushButton* butClose = new QPushButton ( "&Close", this );
QPushButton* butClose = new QPushButton ( tr ( "&Close" ), this );
QGridLayout* pGridLayout = new QGridLayout;
plblAlias->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding );
@ -627,8 +627,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
if ( static_cast<QLocale::Country> ( iCurCntry ) != QLocale::AnyCountry )
{
// get current country enum
QLocale::Country eCountry =
static_cast<QLocale::Country> ( iCurCntry );
QLocale::Country eCountry = static_cast<QLocale::Country> ( iCurCntry );
// try to load icon from resource file name
QIcon CurFlagIcon;
@ -653,7 +652,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
FlagNoneIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
pcbxCountry->insertItem ( 0,
FlagNoneIcon,
"None",
tr ( "None" ),
static_cast<int> ( QLocale::AnyCountry ) );
@ -665,35 +664,35 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
RGBCOL_G_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,
RGBCOL_G_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,
RGBCOL_G_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,
RGBCOL_G_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 -----------------------------------------------
// fader tag
QString strFaderTag = tr ( "<b>Musician Profile:</b> Set your name "
"or an alias here so that the other musicians you want to play with "
QString strFaderTag = "<b>" + tr ( "Musician Profile" ) + ":</b> " + tr (
"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 "
"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 "
"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 "
"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 "

View file

@ -590,28 +590,28 @@ inline QString svrRegStatusToString ( ESvrRegStatus eSvrRegStatus )
switch ( eSvrRegStatus )
{
case SRS_UNREGISTERED:
return "Unregistered";
return QCoreApplication::translate ( "CServerDlg", "Unregistered" );
case SRS_BAD_ADDRESS:
return "Bad address";
return QCoreApplication::translate ( "CServerDlg", "Bad address" );
case SRS_REQUESTED:
return "Registration requested";
return QCoreApplication::translate ( "CServerDlg", "Registration requested" );
case SRS_TIME_OUT:
return "Registration failed";
return QCoreApplication::translate ( "CServerDlg", "Registration failed" );
case SRS_UNKNOWN_RESP:
return "Check server version";
return QCoreApplication::translate ( "CServerDlg", "Check server version" );
case SRS_REGISTERED:
return "Registered";
return QCoreApplication::translate ( "CServerDlg", "Registered" );
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
if ( lNumDevs == 0 )
{
throw CGenErr ( tr ( "<b>No ASIO audio device (driver) found.</b><br><br>"
"The " ) + APP_NAME + tr ( " software requires the low latency audio "
"interface <b>ASIO</b> to work properly. This is no standard "
throw CGenErr ( "<b>" + tr ( "No ASIO audio device (driver) found." ) + "</b><br><br>" +
tr ( "The " ) + APP_NAME + tr ( " software requires the low latency audio "
"interface ASIO to work properly. This is no standard "
"Windows audio interface and therefore a special audio driver is "
"required. Either your sound card has a native ASIO driver (which "
"is recommended) or you might want to use alternative drivers like "