Translation updates and refactoring

This commit is contained in:
Cameron Gutman 2020-11-21 13:15:54 -06:00
parent 2c987d2912
commit 6e7a42065c
21 changed files with 919 additions and 661 deletions

View file

@ -311,6 +311,9 @@ RESOURCES += \
resources.qrc \ resources.qrc \
qml.qrc qml.qrc
TRANSLATIONS += \
languages/qml_fr.ts
# Additional import path used to resolve QML modules in Qt Creator's code model # Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH = QML_IMPORT_PATH =

View file

@ -536,8 +536,8 @@ private:
} }
if (e.getStatusCode() == 599) { if (e.getStatusCode() == 599) {
// 599 is a special code we make a custom message for // 599 is a special code we make a custom message for
emit quitAppFailed("The running game wasn't started by this PC. " emit quitAppFailed(tr("The running game wasn't started by this PC. "
"You must quit the game on the host PC manually or use the device that originally started the game."); "You must quit the game on the host PC manually or use the device that originally started the game."));
} }
else { else {
emit quitAppFailed(e.toQString()); emit quitAppFailed(e.toQString());

View file

@ -323,7 +323,7 @@ NvHTTP::verifyResponseStatus(QString xml)
// Special case handling an audio capture error which GFE doesn't // Special case handling an audio capture error which GFE doesn't
// provide any useful status message for. // provide any useful status message for.
statusCode = 418; statusCode = 418;
statusMessage = "Missing audio capture device. Reinstalling GeForce Experience should resolve this error."; statusMessage = tr("Missing audio capture device. Reinstalling GeForce Experience should resolve this error.");
} }
throw GfeHttpResponseException(statusCode, statusMessage); throw GfeHttpResponseException(statusCode, statusMessage);
} }

View file

@ -73,7 +73,7 @@ public:
case Event::ComputerSeekTimedout: case Event::ComputerSeekTimedout:
if (m_State == StateSeekComputer) { if (m_State == StateSeekComputer) {
m_State = StateFailure; m_State = StateFailure;
emit q->failed(QString("Failed to connect to %1").arg(m_ComputerName)); emit q->failed(QObject::tr("Failed to connect to %1").arg(m_ComputerName));
} }
break; break;
// Occurs when searched computer is found // Occurs when searched computer is found
@ -85,8 +85,8 @@ public:
m_ComputerManager->quitRunningApp(event.computer); m_ComputerManager->quitRunningApp(event.computer);
} else { } else {
m_State = StateFailure; m_State = StateFailure;
QString msg = QString("Computer %1 has not been paired. " QString msg = QObject::tr("Computer %1 has not been paired. "
"Please open Moonlight to pair before streaming.") "Please open Moonlight to pair before streaming.")
.arg(event.computer->name); .arg(event.computer->name);
emit q->failed(msg); emit q->failed(msg);
} }
@ -99,7 +99,7 @@ public:
QCoreApplication::exit(0); QCoreApplication::exit(0);
} else { } else {
m_State = StateFailure; m_State = StateFailure;
emit q->failed(QString("Quitting app failed, reason: %1").arg(event.errorMessage)); emit q->failed(QObject::tr("Quitting app failed, reason: %1").arg(event.errorMessage));
} }
} }
break; break;

View file

@ -86,8 +86,8 @@ public:
emit q->searchingApp(); emit q->searchingApp();
} else { } else {
m_State = StateFailure; m_State = StateFailure;
QString msg = QString("Computer %1 has not been paired. " QString msg = QObject::tr("Computer %1 has not been paired. "
"Please open Moonlight to pair before streaming.") "Please open Moonlight to pair before streaming.")
.arg(event.computer->name); .arg(event.computer->name);
emit q->failed(msg); emit q->failed(msg);
} }
@ -123,18 +123,18 @@ public:
case Event::AppQuitCompleted: case Event::AppQuitCompleted:
if (m_State == StateSeekApp && !event.errorMessage.isEmpty()) { if (m_State == StateSeekApp && !event.errorMessage.isEmpty()) {
m_State = StateFailure; m_State = StateFailure;
emit q->failed(QString("Quitting app failed, reason: %1").arg(event.errorMessage)); emit q->failed(QObject::tr("Quitting app failed, reason: %1").arg(event.errorMessage));
} }
break; break;
// Occurs when computer or app search timed out // Occurs when computer or app search timed out
case Event::Timedout: case Event::Timedout:
if (m_State == StateSeekComputer) { if (m_State == StateSeekComputer) {
m_State = StateFailure; m_State = StateFailure;
emit q->failed(QString("Failed to connect to %1").arg(m_ComputerName)); emit q->failed(QObject::tr("Failed to connect to %1").arg(m_ComputerName));
} }
if (m_State == StateSeekApp) { if (m_State == StateSeekApp) {
m_State = StateFailure; m_State = StateFailure;
emit q->failed(QString("Failed to find application %1").arg(m_AppName)); emit q->failed(QObject::tr("Failed to find application %1").arg(m_AppName));
} }
break; break;
} }

View file

@ -268,7 +268,7 @@ CenteredGridView {
property bool segueToStream : false property bool segueToStream : false
property string nextAppName: "" property string nextAppName: ""
property int nextAppIndex: 0 property int nextAppIndex: 0
text:qsTr("Are you sure you want to quit " + appName +"? Any unsaved progress will be lost.") text:qsTr("Are you sure you want to quit %1? Any unsaved progress will be lost.").arg(appName)
standardButtons: Dialog.Yes | Dialog.No standardButtons: Dialog.Yes | Dialog.No
function quitApp() { function quitApp() {

View file

@ -78,7 +78,7 @@ Item {
NavigableMessageDialog { NavigableMessageDialog {
id: quitAppDialog id: quitAppDialog
text:qsTr("Are you sure you want to quit " + appName +"? Any unsaved progress will be lost.") text:qsTr("Are you sure you want to quit %1? Any unsaved progress will be lost.").arg(appName)
standardButtons: Dialog.Yes | Dialog.No standardButtons: Dialog.Yes | Dialog.No
property string appName : "" property string appName : ""

View file

@ -1,5 +1,5 @@
import QtQuick 2.0 import QtQuick 2.0
Item { Item {
objectName: "Gamepad Mapping" objectName: qsTr("Gamepad Mapping")
} }

View file

@ -67,7 +67,7 @@ CenteredGridView {
errorDialog.text = qsTr("Unable to connect to the specified PC.") errorDialog.text = qsTr("Unable to connect to the specified PC.")
if (detectedPortBlocking) { if (detectedPortBlocking) {
errorDialog.text += qsTr("\n\nThis PC's Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.") errorDialog.text += "\n\n" + qsTr("This PC's Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.")
} }
else { else {
errorDialog.helpText = qsTr("Click the Help button for possible solutions.") errorDialog.helpText = qsTr("Click the Help button for possible solutions.")
@ -293,7 +293,7 @@ CenteredGridView {
// don't allow edits to the rest of the window while open // don't allow edits to the rest of the window while open
property string pin : "0000" property string pin : "0000"
text:qsTr("Please enter " + pin + " on your GameStream PC. This dialog will close when pairing is completed.") text:qsTr("Please enter %1 on your GameStream PC. This dialog will close when pairing is completed.").arg(pin)
standardButtons: Dialog.Cancel standardButtons: Dialog.Cancel
onRejected: { onRejected: {
// FIXME: We should interrupt pairing here // FIXME: We should interrupt pairing here
@ -321,7 +321,7 @@ CenteredGridView {
standardButtons: Dialog.Ok standardButtons: Dialog.Ok
onAboutToShow: { onAboutToShow: {
testConnectionDialog.text = qsTr("Moonlight is testing your network connection to determine if NVIDIA GameStream is blocked.\n\nThis may take a few seconds…") testConnectionDialog.text = qsTr("Moonlight is testing your network connection to determine if NVIDIA GameStream is blocked.") + "\n\n" + qsTr("This may take a few seconds…")
showSpinner = true showSpinner = true
} }
@ -332,11 +332,11 @@ CenteredGridView {
imageSrc = "qrc:/res/baseline-warning-24px.svg" imageSrc = "qrc:/res/baseline-warning-24px.svg"
} }
else if (result === 0) { else if (result === 0) {
text = qsTr("This network does not appear to be blocking Moonlight. If you still have trouble connecting, check your PC's firewall settings.\n\nIf you are trying to stream over the Internet, install the Moonlight Internet Hosting Tool on your gaming PC and run the included Internet Streaming Tester to check your gaming PC's Internet connection.") text = qsTr("This network does not appear to be blocking Moonlight. If you still have trouble connecting, check your PC's firewall settings.") + "\n\n" + qsTr("If you are trying to stream over the Internet, install the Moonlight Internet Hosting Tool on your gaming PC and run the included Internet Streaming Tester to check your gaming PC's Internet connection.")
imageSrc = "qrc:/res/baseline-check_circle_outline-24px.svg" imageSrc = "qrc:/res/baseline-check_circle_outline-24px.svg"
} }
else { else {
text = qsTr("Your PC's current network connection seems to be blocking Moonlight. Streaming over the Internet may not work while connected to this network.\n\nThe following network ports were blocked:\n") text = qsTr("Your PC's current network connection seems to be blocking Moonlight. Streaming over the Internet may not work while connected to this network.") + "\n\n" + qsTr("The following network ports were blocked:") + "\n"
text += blockedPorts text += blockedPorts
imageSrc = "qrc:/res/baseline-error_outline-24px.svg" imageSrc = "qrc:/res/baseline-error_outline-24px.svg"
} }

View file

@ -9,7 +9,7 @@ Item {
property Session nextSession : null property Session nextSession : null
property string nextAppName : "" property string nextAppName : ""
property string stageText : qsTr("Quitting " + appName + "...") property string stageText : qsTr("Quitting %1...").arg(appName)
function quitAppCompleted(error) function quitAppCompleted(error)
{ {

View file

@ -50,7 +50,7 @@ Flickable {
id: basicSettingsGroupBox id: basicSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">Basic Settings</font>") title: "<font color=\"skyblue\">" + qsTr("Basic Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -170,22 +170,22 @@ Flickable {
// Other elements may be added at runtime // Other elements may be added at runtime
// based on attached display resolution // based on attached display resolution
ListElement { ListElement {
text: "720p" text: qsTr("720p")
video_width: "1280" video_width: "1280"
video_height: "720" video_height: "720"
} }
ListElement { ListElement {
text: "1080p" text: qsTr("1080p")
video_width: "1920" video_width: "1920"
video_height: "1080" video_height: "1080"
} }
ListElement { ListElement {
text: "1440p" text: qsTr("1440p")
video_width: "2560" video_width: "2560"
video_height: "1440" video_height: "1440"
} }
ListElement { ListElement {
text: "4K" text: qsTr("4K")
video_width: "3840" video_width: "3840"
video_height: "2160" video_height: "2160"
} }
@ -215,16 +215,16 @@ Flickable {
var max_fps = SystemProperties.maximumStreamingFrameRate var max_fps = SystemProperties.maximumStreamingFrameRate
// Default entries // Default entries
fpsListModel.append({"text": qsTr("30 FPS"), "video_fps": "30"}) fpsListModel.append({"text": qsTr("%1 FPS").arg("30"), "video_fps": "30"})
fpsListModel.append({"text": qsTr("60 FPS"), "video_fps": "60"}) fpsListModel.append({"text": qsTr("%1 FPS").arg("60"), "video_fps": "60"})
// Add unsupported FPS values that come before the display max FPS // Add unsupported FPS values that come before the display max FPS
if (StreamingPreferences.unsupportedFps) { if (StreamingPreferences.unsupportedFps) {
if (max_fps > 90) { if (max_fps > 90) {
fpsListModel.append({"text": qsTr("90 FPS (Unsupported)"), "video_fps": "90"}) fpsListModel.append({"text": qsTr("%1 FPS (Unsupported)").arg("90"), "video_fps": "90"})
} }
if (max_fps > 120) { if (max_fps > 120) {
fpsListModel.append({"text": qsTr("120 FPS (Unsupported)"), "video_fps": "120"}) fpsListModel.append({"text": qsTr("%1 FPS (Unsupported)").arg("120"), "video_fps": "120"})
} }
} }
@ -233,23 +233,23 @@ Flickable {
if (max_fps > 64) { if (max_fps > 64) {
// Mark any FPS value greater than 120 as unsupported // Mark any FPS value greater than 120 as unsupported
if (StreamingPreferences.unsupportedFps && max_fps > 120) { if (StreamingPreferences.unsupportedFps && max_fps > 120) {
fpsListModel.append({"text": max_fps+qsTr(" FPS (Unsupported)"), "video_fps": ""+max_fps}) fpsListModel.append({"text": qsTr("%1 FPS (Unsupported)").arg(max_fps), "video_fps": ""+max_fps})
} }
else if (max_fps > 120) { else if (max_fps > 120) {
fpsListModel.append({"text": "120 FPS", "video_fps": "120"}) fpsListModel.append({"text": qsTr("%1 FPS").arg("120"), "video_fps": "120"})
} }
else { else {
fpsListModel.append({"text": max_fps+" FPS", "video_fps": ""+max_fps}) fpsListModel.append({"text": qsTr("%1 FPS").arg(max_fps), "video_fps": ""+max_fps})
} }
} }
// Add unsupported FPS values that come after the display max FPS // Add unsupported FPS values that come after the display max FPS
if (StreamingPreferences.unsupportedFps) { if (StreamingPreferences.unsupportedFps) {
if (max_fps < 90) { if (max_fps < 90) {
fpsListModel.append({"text":qsTr( "90 FPS (Unsupported)"), "video_fps": "90"}) fpsListModel.append({"text":qsTr("%1 FPS (Unsupported)").arg("90"), "video_fps": "90"})
} }
if (max_fps < 120) { if (max_fps < 120) {
fpsListModel.append({"text":qsTr( "120 FPS (Unsupported)"), "video_fps": "120"}) fpsListModel.append({"text":qsTr("%1 FPS (Unsupported)").arg("120"), "video_fps": "120"})
} }
} }
@ -302,7 +302,7 @@ Flickable {
Label { Label {
width: parent.width width: parent.width
id: bitrateTitle id: bitrateTitle
text: qsTr("Video bitrate: ") text: qsTr("Video bitrate:")
font.pointSize: 12 font.pointSize: 12
wrapMode: Text.Wrap wrapMode: Text.Wrap
} }
@ -328,7 +328,7 @@ Flickable {
width: Math.min(bitrateDesc.implicitWidth, parent.width) width: Math.min(bitrateDesc.implicitWidth, parent.width)
onValueChanged: { onValueChanged: {
bitrateTitle.text = qsTr("Video bitrate: " + (value / 1000.0) + " Mbps") bitrateTitle.text = qsTr("Video bitrate: %1 Mbps").arg(value / 1000.0)
StreamingPreferences.bitrateKbps = value StreamingPreferences.bitrateKbps = value
} }
} }
@ -403,7 +403,7 @@ Flickable {
id: vsyncCheck id: vsyncCheck
width: parent.width width: parent.width
hoverEnabled: true hoverEnabled: true
text: "V-Sync" text: qsTr("V-Sync")
font.pointSize: 12 font.pointSize: 12
checked: StreamingPreferences.enableVsync checked: StreamingPreferences.enableVsync
onCheckedChanged: { onCheckedChanged: {
@ -440,7 +440,7 @@ Flickable {
id: audioSettingsGroupBox id: audioSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">Audio Settings</font>") title: "<font color=\"skyblue\">" + qsTr("Audio Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -475,15 +475,15 @@ Flickable {
model: ListModel { model: ListModel {
id: audioListModel id: audioListModel
ListElement { ListElement {
text: "Stereo" text: qsTr("Stereo")
val: StreamingPreferences.AC_STEREO val: StreamingPreferences.AC_STEREO
} }
ListElement { ListElement {
text: "5.1 surround sound" text: qsTr("5.1 surround sound")
val: StreamingPreferences.AC_51_SURROUND val: StreamingPreferences.AC_51_SURROUND
} }
ListElement { ListElement {
text: "7.1 surround sound" text: qsTr("7.1 surround sound")
val: StreamingPreferences.AC_71_SURROUND val: StreamingPreferences.AC_71_SURROUND
} }
} }
@ -500,7 +500,7 @@ Flickable {
id: uiSettingsGroupBox id: uiSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">UI Settings</font>") title: "<font color=\"skyblue\">" + qsTr("UI Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -562,7 +562,7 @@ Flickable {
id: gamepadSettingsGroupBox id: gamepadSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">Input Settings</font>") title: "<font color=\"skyblue\">" + qsTr("Input Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -582,7 +582,7 @@ Flickable {
ToolTip.delay: 1000 ToolTip.delay: 1000
ToolTip.timeout: 5000 ToolTip.timeout: 5000
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: qsTr("Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.\n") + ToolTip.text: qsTr("Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.") + "\n" +
qsTr("Only enable this option when streaming a game that doesn't support gamepads being connected after startup.") qsTr("Only enable this option when streaming a game that doesn't support gamepads being connected after startup.")
} }
@ -601,8 +601,8 @@ Flickable {
ToolTip.delay: 1000 ToolTip.delay: 1000
ToolTip.timeout: 5000 ToolTip.timeout: 5000
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: qsTr("This enables mouse control without capturing the client's mouse cursor. It will not work in most games.\n ToolTip.text: qsTr("This enables mouse control without capturing the client's mouse cursor. It will not work in most games.") + "\n" +
You can toggle this while streaming using Ctrl+Alt+Shift+M.") qsTr("You can toggle this while streaming using Ctrl+Alt+Shift+M.")
} }
CheckBox { CheckBox {
@ -662,7 +662,7 @@ Flickable {
id: hostSettingsGroupBox id: hostSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">Host Settings</font>") title: "<font color=\"skyblue\">" + qsTr("Host Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -713,7 +713,7 @@ Flickable {
id: advancedSettingsGroupBox id: advancedSettingsGroupBox
width: (parent.width - (parent.leftPadding + parent.rightPadding)) width: (parent.width - (parent.leftPadding + parent.rightPadding))
padding: 12 padding: 12
title: qsTr("<font color=\"skyblue\">Advanced Settings</font>") title: "<font color=\"skyblue\">" + qsTr("Advanced Settings") + "</font>"
font.pointSize: 12 font.pointSize: 12
Column { Column {
@ -798,15 +798,15 @@ Flickable {
val: StreamingPreferences.VCC_AUTO val: StreamingPreferences.VCC_AUTO
} }
ListElement { ListElement {
text: "H.264" text: qsTr("H.264")
val: StreamingPreferences.VCC_FORCE_H264 val: StreamingPreferences.VCC_FORCE_H264
} }
ListElement { ListElement {
text: "HEVC (H.265)" text: qsTr("HEVC (H.265)")
val: StreamingPreferences.VCC_FORCE_HEVC val: StreamingPreferences.VCC_FORCE_HEVC
} }
/*ListElement { /*ListElement {
text: "HEVC HDR (Experimental)" text: qsTr("HEVC HDR (Experimental)")
val: StreamingPreferences.VCC_FORCE_HEVC_HDR val: StreamingPreferences.VCC_FORCE_HEVC_HDR
}*/ }*/
} }

View file

@ -8,19 +8,19 @@ import Session 1.0
Item { Item {
property Session session property Session session
property string appName property string appName
property string stageText : qsTr("Starting " + appName + "...") property string stageText : qsTr("Starting %1...").arg(appName)
property bool quitAfter : false property bool quitAfter : false
function stageStarting(stage) function stageStarting(stage)
{ {
// Update the spinner text // Update the spinner text
stageText = qsTr("Starting " + stage + "...") stageText = qsTr("Starting %1...").arg(stage)
} }
function stageFailed(stage, errorCode) function stageFailed(stage, errorCode)
{ {
// Display the error dialog after Session::exec() returns // Display the error dialog after Session::exec() returns
streamSegueErrorDialog.text = qsTr("Starting " + stage + " failed: Error " + errorCode) streamSegueErrorDialog.text = qsTr("Starting %1 failed: Error %2").arg(stage).arg(errorCode)
} }
function connectionStarted() function connectionStarted()
@ -65,7 +65,7 @@ Item {
function sessionFinished(portTestResult) function sessionFinished(portTestResult)
{ {
if (portTestResult !== 0 && portTestResult !== -1 && streamSegueErrorDialog.text) { if (portTestResult !== 0 && portTestResult !== -1 && streamSegueErrorDialog.text) {
streamSegueErrorDialog.text += qsTr("\n\nThis PC's Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.") streamSegueErrorDialog.text += "\n\n" + qsTr("This PC's Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.")
} }
// Enable GUI gamepad usage now // Enable GUI gamepad usage now
@ -147,9 +147,8 @@ Item {
// in the hintText control itself to synchronize // in the hintText control itself to synchronize
// with Session.exec() which requires no concurrent // with Session.exec() which requires no concurrent
// gamepad usage. // gamepad usage.
hintText.text = SdlGamepadKeyNavigation.getConnectedGamepads() > 0 ? hintText.text = qsTr("Tip:") + " " + qsTr("Press %1 to disconnect your session").arg(SdlGamepadKeyNavigation.getConnectedGamepads() > 0 ?
qsTr("Tip: Press Start+Select+L1+R1 to disconnect your session") : qsTr("Start+Select+L1+R1") : qsTr("Ctrl+Alt+Shift+Q"))
qsTr("Tip: Press Ctrl+Alt+Shift+Q to disconnect your session")
// Stop GUI gamepad usage now // Stop GUI gamepad usage now
SdlGamepadKeyNavigation.disable() SdlGamepadKeyNavigation.disable()

View file

@ -224,7 +224,7 @@ ApplicationWindow {
Label { Label {
id: versionLabel id: versionLabel
visible: stackView.currentItem.objectName === qsTr("Settings") visible: stackView.currentItem.objectName === qsTr("Settings")
text: "Version " + SystemProperties.versionString text: qsTr("Version %1").arg(SystemProperties.versionString)
font.pointSize: 12 font.pointSize: 12
horizontalAlignment: Qt.AlignRight horizontalAlignment: Qt.AlignRight
verticalAlignment: Qt.AlignVCenter verticalAlignment: Qt.AlignVCenter
@ -299,7 +299,7 @@ ApplicationWindow {
function updateAvailable(version, url) function updateAvailable(version, url)
{ {
ToolTip.text = qsTr("Update available for Moonlight: Version ") + version ToolTip.text = qsTr("Update available for Moonlight: Version %1").arg(version)
updateButton.browserUrl = url updateButton.browserUrl = url
updateButton.visible = true updateButton.visible = true
} }
@ -346,11 +346,11 @@ ApplicationWindow {
ToolTip.delay: 1000 ToolTip.delay: 1000
ToolTip.timeout: 3000 ToolTip.timeout: 3000
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: "Gamepad Mapper" ToolTip.text: qsTr("Gamepad Mapper")
iconSource: "qrc:/res/ic_videogame_asset_white_48px.svg" iconSource: "qrc:/res/ic_videogame_asset_white_48px.svg"
onClicked: navigateTo("qrc:/gui/GamepadMapper.qml", "Gamepad Mapping") onClicked: navigateTo("qrc:/gui/GamepadMapper.qml", qsTr("Gamepad Mapping"))
Keys.onDownPressed: { Keys.onDownPressed: {
stackView.currentItem.forceActiveFocus(Qt.TabFocus) stackView.currentItem.forceActiveFocus(Qt.TabFocus)
@ -384,16 +384,16 @@ ApplicationWindow {
ErrorMessageDialog { ErrorMessageDialog {
id: noHwDecoderDialog id: noHwDecoderDialog
text: qsTr("No functioning hardware accelerated H.264 video decoder was detected by Moonlight. ") + text: qsTr("No functioning hardware accelerated H.264 video decoder was detected by Moonlight. " +
qsTr("Your streaming performance may be severely degraded in this configuration.") "Your streaming performance may be severely degraded in this configuration.")
helpText: qsTr("Click the Help button for more information on solving this problem.") helpText: qsTr("Click the Help button for more information on solving this problem.")
helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Fixing-Hardware-Decoding-Problems" helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Fixing-Hardware-Decoding-Problems"
} }
ErrorMessageDialog { ErrorMessageDialog {
id: xWaylandDialog id: xWaylandDialog
text: qsTr("Hardware acceleration doesn't work on XWayland. Continuing on XWayland may result in poor streaming performance. ") + text: qsTr("Hardware acceleration doesn't work on XWayland. Continuing on XWayland may result in poor streaming performance. " +
qsTr("Try running with QT_QPA_PLATFORM=wayland or switch to X11.") "Try running with QT_QPA_PLATFORM=wayland or switch to X11.")
helpText: qsTr("Click the Help button for more information.") helpText: qsTr("Click the Help button for more information.")
helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Fixing-Hardware-Decoding-Problems" helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Fixing-Hardware-Decoding-Problems"
} }
@ -410,7 +410,7 @@ ApplicationWindow {
ErrorMessageDialog { ErrorMessageDialog {
id: unmappedGamepadDialog id: unmappedGamepadDialog
property string unmappedGamepads : "" property string unmappedGamepads : ""
text: qsTr("Moonlight detected gamepads without a mapping:\n") + unmappedGamepads text: qsTr("Moonlight detected gamepads without a mapping:") + "\n" + unmappedGamepads
helpTextSeparator: "\n\n" helpTextSeparator: "\n\n"
helpText: qsTr("Click the Help button for information on how to map your gamepads.") helpText: qsTr("Click the Help button for information on how to map your gamepads.")
helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Gamepad-Mapping" helpUrl: "https://github.com/moonlight-stream/moonlight-docs/wiki/Gamepad-Mapping"

BIN
app/languages/qml_fr.qm Normal file

Binary file not shown.

820
app/languages/qml_fr.ts Normal file
View file

@ -0,0 +1,820 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>AppView</name>
<message>
<location filename="../gui/AppView.qml" line="118"/>
<location filename="../gui/AppView.qml" line="245"/>
<source>Resume Game</source>
<translation>Reprendre le jeu</translation>
</message>
<message>
<location filename="../gui/AppView.qml" line="146"/>
<location filename="../gui/AppView.qml" line="250"/>
<source>Quit Game</source>
<translation>Quitter le jeu</translation>
</message>
<message>
<location filename="../gui/AppView.qml" line="245"/>
<source>Launch Game</source>
<translation>Lancer le jeu</translation>
</message>
<message>
<location filename="../gui/AppView.qml" line="258"/>
<source>Hide Game</source>
<translation>Cacher le jeu</translation>
</message>
<message>
<location filename="../gui/AppView.qml" line="271"/>
<source>Are you sure you want to quit %1? Any unsaved progress will be lost.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CliQuitStreamSegue</name>
<message>
<location filename="../gui/CliQuitStreamSegue.qml" line="9"/>
<source>Establishing connection to PC...</source>
<translation>connexion au PC...</translation>
</message>
<message>
<location filename="../gui/CliQuitStreamSegue.qml" line="13"/>
<source>Quitting app...</source>
<translation>Fermeture de l&apos;app...</translation>
</message>
</context>
<context>
<name>CliStartStreamSegue</name>
<message>
<location filename="../gui/CliStartStreamSegue.qml" line="9"/>
<source>Establishing connection to PC...</source>
<translation>connexion au PC...</translation>
</message>
<message>
<location filename="../gui/CliStartStreamSegue.qml" line="13"/>
<source>Loading app list...</source>
<translation>Chargement de la liste des applications...</translation>
</message>
<message>
<location filename="../gui/CliStartStreamSegue.qml" line="81"/>
<source>Are you sure you want to quit %1? Any unsaved progress will be lost.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>GamepadMapper</name>
<message>
<location filename="../gui/GamepadMapper.qml" line="4"/>
<source>Gamepad Mapping</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NvHTTP</name>
<message>
<location filename="../backend/nvhttp.cpp" line="326"/>
<source>Missing audio capture device. Reinstalling GeForce Experience should resolve this error.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PcView</name>
<message>
<location filename="../gui/PcView.qml" line="20"/>
<source>Computers</source>
<translation>Ordinateurs</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="67"/>
<source>Unable to connect to the specified PC.</source>
<translation>Impossible de se connecter au PC spécifié.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="70"/>
<source>This PC&apos;s Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.</source>
<translation>La connexion Internet de ce PC bloque Moonlight. Le streaming sur Internet peut ne pas fonctionner lorsqu&apos;il est connecté à ce réseau.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="73"/>
<source>Click the Help button for possible solutions.</source>
<translation>Cliquez sur le bouton Aide pour connaître les solutions possibles.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="102"/>
<source>Searching for PCs with NVIDIA GameStream enabled...</source>
<translation>La recherche de PC avec NVIDIA GameStream activé...</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="103"/>
<source>Automatic PC discovery is disabled. Add your PC manually.</source>
<translation>La découverte automatique des PC est désactivée. Ajoutez votre PC manuellement.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="167"/>
<source>View Apps</source>
<translation>Voir les applications</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="177"/>
<source>View Hidden Apps</source>
<translation>Voir les applications cachées</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="187"/>
<source>Wake PC</source>
<translation>Réveiller le PC</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="193"/>
<source>Test Network</source>
<translation>Test Réseau</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="202"/>
<source>Rename PC</source>
<translation>Renommer le PC</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="211"/>
<source>Delete PC</source>
<translation>Supprimer le PC</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="241"/>
<source>You cannot pair while a previous session is still running on the host PC. Quit any running games or reboot the host PC, then try pairing again.</source>
<translation>Vous ne pouvez pas effectuer de couplage alors qu&apos;une session précédente est encore en cours sur le PC hôte. Fermez les jeux en cours ou redémarrez le PC hôte, puis essayez à nouveau d&apos;effectuer l&apos;appariement.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="296"/>
<source>Please enter %1 on your GameStream PC. This dialog will close when pairing is completed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="307"/>
<source>Are you sure you want to remove this PC?</source>
<translation>Êtes-vous sûr de vouloir supprimer ce PC ?</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="324"/>
<source>Moonlight is testing your network connection to determine if NVIDIA GameStream is blocked.</source>
<translation>Moonlight teste votre connexion réseau pour déterminer si NVIDIA GameStream est bloqué.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="324"/>
<source>This may take a few seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="335"/>
<source>This network does not appear to be blocking Moonlight. If you still have trouble connecting, check your PC&apos;s firewall settings.</source>
<translation>Ce réseau ne semble pas bloquer Moonlight. Si vous avez toujours des problèmes de connexion, vérifiez les paramètres du pare-feu de votre PC.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="335"/>
<source>If you are trying to stream over the Internet, install the Moonlight Internet Hosting Tool on your gaming PC and run the included Internet Streaming Tester to check your gaming PC&apos;s Internet connection.</source>
<translation>Si vous essayez d&apos;utiliser la diffusion en continu sur Internet, installez l&apos;outil d&apos;hébergement Internet Moonlight sur votre PC de jeu et exécutez le testeur de diffusion en continu sur Internet inclus pour vérifier la connexion Internet de votre PC de jeu.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="339"/>
<source>Your PC&apos;s current network connection seems to be blocking Moonlight. Streaming over the Internet may not work while connected to this network.</source>
<translation>La connexion réseau actuelle de votre PC semble bloquer le Moonlight. Il se peut que la diffusion en continu sur Internet ne fonctionne pas lorsque vous êtes connecté à ce réseau.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="339"/>
<source>The following network ports were blocked:</source>
<translation>Les ports de réseau suivants ont é bloqués :</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="331"/>
<source>The network test could not be performed because none of Moonlight&apos;s connection testing servers were reachable from this PC. Check your Internet connection or try again later.</source>
<translation>Le test de réseau n&apos;a pas pu être effectué car aucun des serveurs de test de connexion de Moonlight n&apos;était accessible depuis ce PC. Vérifiez votre connexion Internet ou réessayez plus tard.</translation>
</message>
<message>
<location filename="../gui/PcView.qml" line="351"/>
<source>Enter the new name for this PC:</source>
<translation>Saisissez le nouveau nom de ce PC :</translation>
</message>
</context>
<context>
<name>PendingQuitTask</name>
<message>
<location filename="../backend/computermanager.cpp" line="539"/>
<source>The running game wasn&apos;t started by this PC. You must quit the game on the host PC manually or use the device that originally started the game.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../cli/quitstream.cpp" line="76"/>
<location filename="../cli/startstream.cpp" line="133"/>
<source>Failed to connect to %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../cli/quitstream.cpp" line="88"/>
<location filename="../cli/startstream.cpp" line="89"/>
<source>Computer %1 has not been paired. Please open Moonlight to pair before streaming.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../cli/quitstream.cpp" line="102"/>
<location filename="../cli/startstream.cpp" line="126"/>
<source>Quitting app failed, reason: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../cli/startstream.cpp" line="137"/>
<source>Failed to find application %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QuitSegue</name>
<message>
<location filename="../gui/QuitSegue.qml" line="12"/>
<source>Quitting %1...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Session</name>
<message>
<location filename="../streaming/session.cpp" line="97"/>
<source>No video received from host. Check the host PC&apos;s firewall and port forwarding rules.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="102"/>
<source>Your network connection isn&apos;t performing well. Reduce your video bitrate setting or try a faster connection.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="107"/>
<source>Connection terminated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="567"/>
<source>Your selection to enable remote desktop mouse mode may cause problems in games.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="572"/>
<source>HDR is not supported with software decoding.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="576"/>
<source>Your settings selection to force software decoding may cause poor streaming performance.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="581"/>
<source>Using unsupported FPS options may cause stuttering or lag.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="584"/>
<source>V-sync will be disabled when streaming at a higher frame rate than the display.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="601"/>
<source>Using software decoding due to your selection to force HEVC without GPU support. This may cause poor streaming performance.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="604"/>
<source>This PC&apos;s GPU doesn&apos;t support HEVC decoding.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="611"/>
<source>Your host PC GPU doesn&apos;t support HEVC. A GeForce GTX 900-series (Maxwell) or later GPU is required for HEVC streaming.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="628"/>
<source>%1 doesn&apos;t support HDR10.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="632"/>
<source>Your host PC GPU doesn&apos;t support HDR streaming. A GeForce GTX 1000-series (Pascal) or later GPU is required for HDR streaming.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="641"/>
<source>This PC&apos;s GPU doesn&apos;t support HEVC Main10 decoding for HDR streaming.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="654"/>
<source>GeForce Experience 3.0 or higher is required for 4K streaming.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="669"/>
<source>Your selected surround sound setting is not supported by the current audio device.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="676"/>
<source>Failed to open audio device. Audio will be unavailable during this session.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="681"/>
<source>An attached gamepad has no mapping and won&apos;t be usable. Visit the Moonlight help to resolve this.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="687"/>
<source>Your host PC&apos;s GPU doesn&apos;t support streaming video resolutions over 4K.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="691"/>
<source>Video resolutions over 4K are only supported by the HEVC codec.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="705"/>
<source>Your selection to force hardware decoding cannot be satisfied due to missing hardware decoding support on this PC&apos;s GPU.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="708"/>
<source>Your codec selection and force hardware decoding setting are not compatible. This PC&apos;s GPU lacks support for decoding your chosen codec.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="1016"/>
<source>GeForce Experience returned error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../streaming/session.cpp" line="1397"/>
<source>Unable to initialize video decoder. Please check your streaming settings and try again.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsView</name>
<message>
<location filename="../gui/SettingsView.qml" line="11"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="63"/>
<source>Resolution and FPS</source>
<translation>Résolution et FPS</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="71"/>
<source>Setting values too high for your PC or network connection may cause lag, stuttering, or errors.</source>
<translation>Le fait de fixer des valeurs trop élevées pour votre PC ou votre connexion réseau peut entraîner un décalage, des bégaiements ou des erreurs.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="53"/>
<source>Basic Settings</source>
<translation>Paramètres de base</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="173"/>
<source>720p</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="178"/>
<source>1080p</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="183"/>
<source>1440p</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="188"/>
<source>4K</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="218"/>
<location filename="../gui/SettingsView.qml" line="219"/>
<location filename="../gui/SettingsView.qml" line="239"/>
<location filename="../gui/SettingsView.qml" line="242"/>
<source>%1 FPS</source>
<translation>%1 FPS</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="224"/>
<location filename="../gui/SettingsView.qml" line="227"/>
<location filename="../gui/SettingsView.qml" line="236"/>
<location filename="../gui/SettingsView.qml" line="249"/>
<location filename="../gui/SettingsView.qml" line="252"/>
<source>%1 FPS (Unsupported)</source>
<translation>%1 FPS (Non supporté)</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="305"/>
<source>Video bitrate:</source>
<translation>Bitrate vidéo :</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="313"/>
<source>Lower the bitrate on slower connections. Raise the bitrate to increase image quality.</source>
<translation>Baissez le débit binaire sur les connexions plus lentes. Augmentez le débit binaire pour améliorer la qualité de l&apos;image.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="331"/>
<source>Video bitrate: %1 Mbps</source>
<translation>Bitrate vidéo : %1 Mbps</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="339"/>
<source>Display mode</source>
<translation>Mode d&apos;affichage</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="351"/>
<source> (Recommended)</source>
<translation> (Recommandé)</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="380"/>
<source>Full-screen</source>
<translation>Plein écran</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="384"/>
<source>Borderless windowed</source>
<translation>fenêtré sans bordure</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="388"/>
<source>Windowed</source>
<translation>Fenêtré</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="399"/>
<source>Full-screen generally provides the best performance, but borderless windowed may work better with features like macOS Spaces, Alt+Tab, screenshot tools, on-screen overlays, etc.</source>
<translation>Le plein écran offre généralement les meilleures performances, mais les fenêtres sans bordure peuvent fonctionner mieux avec des fonctionnalités telles que MacOS Spaces, Alt+Tab, les outils de capture d&apos;écran, les superpositions à l&apos;écran, etc.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="406"/>
<source>V-Sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="416"/>
<source>Disabling V-Sync allows sub-frame rendering latency, but it can display visible tearing</source>
<translation>La désactivation de V-Sync permet une latence de rendu des sous-images plus faible, mais elle peut afficher des déchirures visibles</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="423"/>
<source>Frame pacing</source>
<translation>Frame pacing</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="433"/>
<source>Frame pacing reduces micro-stutter by delaying frames that come in too early</source>
<translation>Frame pacing réduit les micro-bégaiements en retardant les images qui arrivent trop tôt</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="443"/>
<source>Audio Settings</source>
<translation>Réglages audio</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="478"/>
<source>Stereo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="482"/>
<source>5.1 surround sound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="486"/>
<source>7.1 surround sound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="503"/>
<source>UI Settings</source>
<translation>Réglages de l&apos;interface utilisateur</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="565"/>
<source>Input Settings</source>
<translation>Paramètres d&apos;entrée</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="585"/>
<source>Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.</source>
<translation>Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="604"/>
<source>This enables mouse control without capturing the client&apos;s mouse cursor. It will not work in most games.</source>
<translation>Cela permet de contrôler la souris sans avoir à capturer le curseur du client. Cela ne fonctionne pas dans la plupart des jeux.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="605"/>
<source>You can toggle this while streaming using Ctrl+Alt+Shift+M.</source>
<translation>Vous pouvez le basculer pendant la diffusion en utilisant Ctrl+Alt+Shift+M.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="665"/>
<source>Host Settings</source>
<translation>Paramètres de l&apos;hôte</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="716"/>
<source>Advanced Settings</source>
<translation>Paramètres avancés</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="453"/>
<source>Audio configuration</source>
<translation>Configuration audio</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="513"/>
<source>Maximize Moonlight window on startup</source>
<translation>Maximiser la fenêtre Moonlight au démarrage</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="525"/>
<source>Show connection quality warnings</source>
<translation>Afficher les avertissements sur la qualité de la connexion</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="537"/>
<source>Discord Rich Presence integration</source>
<translation>Intégration de la présence Discord Rich</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="547"/>
<source>Updates your Discord status to display the name of the game you&apos;re streaming.</source>
<translation>Met à jour votre statut Discord pour afficher le nom du jeu que vous diffusez en continu.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="575"/>
<source>Force gamepad #1 always present</source>
<translation>Forcé la manette de jeu Force #1 à être toujours présente</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="586"/>
<source>Only enable this option when streaming a game that doesn&apos;t support gamepads being connected after startup.</source>
<translation>N&apos;activez cette option que lorsque vous diffusez en continu un jeu qui ne prend pas en charge la connexion des manettes de jeu après le démarrage.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="593"/>
<source>Optimize mouse for remote desktop instead of games</source>
<translation>Optimiser la souris pour le bureau à distance plutôt que pour les jeux</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="612"/>
<source>Use touchscreen as a trackpad</source>
<translation>Utiliser l&apos;écran tactile comme trackpad</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="622"/>
<source>When checked, the touchscreen acts like a trackpad. When unchecked, the touchscreen will directly control the mouse pointer.</source>
<translation>Lorsqu&apos;on le vérifie, l&apos;écran tactile agit comme un pavé tactile. Lorsqu&apos;il n&apos;est pas coché, l&apos;écran tactile contrôle directement le pointeur de la souris.</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="629"/>
<source>Gamepad mouse mode support</source>
<translation>Prise en charge du mode souris de la manette de jeu</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="639"/>
<source>When enabled, holding the Start button will toggle mouse mode</source>
<translation>Lorsqu&apos;il est activé, le maintien du bouton &quot;Start&quot; permet de passer en mode souris</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="646"/>
<source>Swap mouse buttons</source>
<translation>Échanger les boutons de la souris</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="656"/>
<source>When checked, swap the left and right mouse buttons</source>
<translation>Lorsque la case est cochée, permuter les boutons gauche et droit de la souris</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="675"/>
<source>Optimize game settings for streaming</source>
<translation>Optimiser les paramètres du jeu pour la diffusion en continu</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="686"/>
<source>Play audio on host PC</source>
<translation>Lecture audio sur le PC hôte</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="697"/>
<source>Quit app on host PC after ending stream</source>
<translation>Quitter l&apos;application sur le PC hôte après avoir terminé le flux</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="707"/>
<source>This will close the app or game you are streaming when you end your stream. You will lose any unsaved progress!</source>
<translation>Cela fermera l&apos;application ou le jeu que vous êtes en train de diffuser lorsque vous aurez terminé votre flux. Vous perdrez tout progrès non sauvegardé !</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="726"/>
<source>Video decoder</source>
<translation>Décodeur vidéo</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="751"/>
<location filename="../gui/SettingsView.qml" line="797"/>
<source>Automatic (Recommended)</source>
<translation>Automatique (recommandé)</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="755"/>
<source>Force software decoding</source>
<translation>Forcer le décodage des logiciels</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="759"/>
<source>Force hardware decoding</source>
<translation>Forcer le décodage du matériel</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="772"/>
<source>Video codec</source>
<translation>Codec vidéo</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="801"/>
<source>H.264</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="805"/>
<source>HEVC (H.265)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="822"/>
<source>Unlock unsupported FPS options</source>
<translation>Débloquer les options non supportées du FPS</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="841"/>
<source>Automatically find PCs on the local network (Recommended)</source>
<translation>Trouver automatiquement les PC sur le réseau local (recommandé)</translation>
</message>
<message>
<location filename="../gui/SettingsView.qml" line="866"/>
<source>Automatically detect blocked connections (Recommended)</source>
<translation>Détecter automatiquement les connexions bloquées (recommandé)</translation>
</message>
</context>
<context>
<name>StreamSegue</name>
<message>
<location filename="../gui/StreamSegue.qml" line="11"/>
<location filename="../gui/StreamSegue.qml" line="17"/>
<source>Starting %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="23"/>
<source>Starting %1 failed: Error %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="68"/>
<source>This PC&apos;s Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.</source>
<translation>La connexion Internet de ce PC bloque Moonlight. Le streaming sur Internet peut ne pas fonctionner lorsqu&apos;il est connecté à ce réseau.</translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="150"/>
<source>Tip:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="150"/>
<source>Press %1 to disconnect your session</source>
<translation>Appuyez sur %1 pour déconnecter votre session</translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="151"/>
<source>Start+Select+L1+R1</source>
<translation>Start+Select+L1+R1</translation>
</message>
<message>
<location filename="../gui/StreamSegue.qml" line="151"/>
<source>Ctrl+Alt+Shift+Q</source>
<translation>Ctrl + Alt + Shift + Q</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../gui/main.qml" line="226"/>
<location filename="../gui/main.qml" line="236"/>
<location filename="../gui/main.qml" line="365"/>
<location filename="../gui/main.qml" line="380"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../gui/main.qml" line="227"/>
<source>Version %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/main.qml" line="243"/>
<source>Join our community on Discord</source>
<translation>Rejoignez notre communauté sur Discord</translation>
</message>
<message>
<location filename="../gui/main.qml" line="255"/>
<source>Computers</source>
<translation>Ordinateurs</translation>
</message>
<message>
<location filename="../gui/main.qml" line="262"/>
<source>Add PC manually</source>
<translation>Ajouter un PC manuellement</translation>
</message>
<message>
<location filename="../gui/main.qml" line="302"/>
<source>Update available for Moonlight: Version %1</source>
<translation>Mise à jour disponible pour Moonlight : Version %1</translation>
</message>
<message>
<location filename="../gui/main.qml" line="349"/>
<source>Gamepad Mapper</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/main.qml" line="353"/>
<source>Gamepad Mapping</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../gui/main.qml" line="387"/>
<source>No functioning hardware accelerated H.264 video decoder was detected by Moonlight. Your streaming performance may be severely degraded in this configuration.</source>
<translation>Aucun décodeur vidéo H.264 accéléré par le matériel n&apos;a é détecté par Moonlight. Dans cette configuration, les performances de votre streaming peuvent être fortement dégradées.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="395"/>
<source>Hardware acceleration doesn&apos;t work on XWayland. Continuing on XWayland may result in poor streaming performance. Try running with QT_QPA_PLATFORM=wayland or switch to X11.</source>
<translation>L&apos;accélération matérielle ne fonctionne pas sur XWayland. Continuer sur XWayland peut entraîner de mauvaises performances de streaming. Essayez de fonctionner avec QT_QPA_PLATFORM=wayland ou passez à X11.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="413"/>
<source>Moonlight detected gamepads without a mapping:</source>
<translation>Moonlight a détecté des manettes de jeu san configuration:</translation>
</message>
<message>
<location filename="../gui/main.qml" line="326"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
<location filename="../gui/main.qml" line="389"/>
<source>Click the Help button for more information on solving this problem.</source>
<translation>Cliquez sur le bouton Aide pour obtenir plus d&apos;informations sur la manière de résoudre ce problème.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="397"/>
<source>Click the Help button for more information.</source>
<translation>Cliquez sur le bouton Aide pour plus d&apos;informations.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="404"/>
<source>This PC is running a 64-bit version of Windows. Please download the x64 version of Moonlight for the best streaming performance.</source>
<translation>Ce PC fonctionne avec une version 64 bits de Windows. Veuillez télécharger la version x64 de Moonlight pour obtenir les meilleures performances de diffusion en continu.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="415"/>
<source>Click the Help button for information on how to map your gamepads.</source>
<translation>Cliquez sur le bouton Aide pour obtenir des informations sur la configuration de vos manettes de jeu.</translation>
</message>
<message>
<location filename="../gui/main.qml" line="423"/>
<source>Are you sure you want to quit?</source>
<translation>Vous êtes sûr de vouloir quitter?</translation>
</message>
<message>
<location filename="../gui/main.qml" line="453"/>
<source>Enter the IP address of your GameStream PC:</source>
<translation>Saisissez l&apos;adresse IP de votre PC GameStream :</translation>
</message>
</context>
</TS>

View file

@ -421,7 +421,7 @@ int main(int argc, char *argv[])
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
QTranslator translator; QTranslator translator;
qDebug() <<"loaded: " <<translator.load(QString(":/languages/qml_") + QLocale::system().name()); qDebug() << "Translation loaded: " << translator.load(QString(":/languages/qml_") + QLocale::system().name());
app.installTranslator(&translator); app.installTranslator(&translator);
// After the QGuiApplication is created, the platform stuff will be initialized // After the QGuiApplication is created, the platform stuff will be initialized

View file

@ -17,8 +17,8 @@
<file>res/baseline-error_outline-24px.svg</file> <file>res/baseline-error_outline-24px.svg</file>
<file>res/baseline-check_circle_outline-24px.svg</file> <file>res/baseline-check_circle_outline-24px.svg</file>
<file>res/Discord-Logo-White.svg</file> <file>res/Discord-Logo-White.svg</file>
<file>../languages/qml_fr.ts</file> <file>languages/qml_fr.ts</file>
<file>../languages/qml_fr.qm</file> <file>languages/qml_fr.qm</file>
</qresource> </qresource>
<qresource prefix="/data"> <qresource prefix="/data">
<file alias="gamecontrollerdb.txt">SDL_GameControllerDB/gamecontrollerdb.txt</file> <file alias="gamecontrollerdb.txt">SDL_GameControllerDB/gamecontrollerdb.txt</file>

View file

@ -94,17 +94,17 @@ void Session::clConnectionTerminated(int errorCode)
case ML_ERROR_NO_VIDEO_TRAFFIC: case ML_ERROR_NO_VIDEO_TRAFFIC:
s_ActiveSession->m_UnexpectedTermination = true; s_ActiveSession->m_UnexpectedTermination = true;
emit s_ActiveSession->displayLaunchError("No video received from host. Check the host PC's firewall and port forwarding rules."); emit s_ActiveSession->displayLaunchError(tr("No video received from host. Check the host PC's firewall and port forwarding rules."));
break; break;
case ML_ERROR_NO_VIDEO_FRAME: case ML_ERROR_NO_VIDEO_FRAME:
s_ActiveSession->m_UnexpectedTermination = true; s_ActiveSession->m_UnexpectedTermination = true;
emit s_ActiveSession->displayLaunchError("Your network connection isn't performing well. Reduce your video bitrate setting or try a faster connection."); emit s_ActiveSession->displayLaunchError(tr("Your network connection isn't performing well. Reduce your video bitrate setting or try a faster connection."));
break; break;
default: default:
s_ActiveSession->m_UnexpectedTermination = true; s_ActiveSession->m_UnexpectedTermination = true;
emit s_ActiveSession->displayLaunchError("Connection terminated"); emit s_ActiveSession->displayLaunchError(tr("Connection terminated"));
break; break;
} }
@ -564,24 +564,24 @@ bool Session::validateLaunch(SDL_Window* testWindow)
QStringList warningList; QStringList warningList;
if (m_Preferences->absoluteMouseMode && !m_App.isAppCollectorGame) { if (m_Preferences->absoluteMouseMode && !m_App.isAppCollectorGame) {
emitLaunchWarning("Your selection to enable remote desktop mouse mode may cause problems in games."); emitLaunchWarning(tr("Your selection to enable remote desktop mouse mode may cause problems in games."));
} }
if (m_Preferences->videoDecoderSelection == StreamingPreferences::VDS_FORCE_SOFTWARE) { if (m_Preferences->videoDecoderSelection == StreamingPreferences::VDS_FORCE_SOFTWARE) {
if (m_Preferences->videoCodecConfig == StreamingPreferences::VCC_FORCE_HEVC_HDR) { if (m_Preferences->videoCodecConfig == StreamingPreferences::VCC_FORCE_HEVC_HDR) {
emitLaunchWarning("HDR is not supported with software decoding."); emitLaunchWarning(tr("HDR is not supported with software decoding."));
m_StreamConfig.enableHdr = false; m_StreamConfig.enableHdr = false;
} }
else { else {
emitLaunchWarning("Your settings selection to force software decoding may cause poor streaming performance."); emitLaunchWarning(tr("Your settings selection to force software decoding may cause poor streaming performance."));
} }
} }
if (m_Preferences->unsupportedFps && m_StreamConfig.fps > 60) { if (m_Preferences->unsupportedFps && m_StreamConfig.fps > 60) {
emitLaunchWarning("Using unsupported FPS options may cause stuttering or lag."); emitLaunchWarning(tr("Using unsupported FPS options may cause stuttering or lag."));
if (m_Preferences->enableVsync) { if (m_Preferences->enableVsync) {
emitLaunchWarning("V-sync will be disabled when streaming at a higher frame rate than the display."); emitLaunchWarning(tr("V-sync will be disabled when streaming at a higher frame rate than the display."));
} }
} }
@ -598,18 +598,18 @@ bool Session::validateLaunch(SDL_Window* testWindow)
m_StreamConfig.height, m_StreamConfig.height,
m_StreamConfig.fps)) { m_StreamConfig.fps)) {
if (hevcForced) { if (hevcForced) {
emitLaunchWarning("Using software decoding due to your selection to force HEVC without GPU support. This may cause poor streaming performance."); emitLaunchWarning(tr("Using software decoding due to your selection to force HEVC without GPU support. This may cause poor streaming performance."));
} }
else { else {
emitLaunchWarning("This PC's GPU doesn't support HEVC decoding."); emitLaunchWarning(tr("This PC's GPU doesn't support HEVC decoding."));
m_StreamConfig.supportsHevc = false; m_StreamConfig.supportsHevc = false;
} }
} }
if (hevcForced) { if (hevcForced) {
if (m_Computer->maxLumaPixelsHEVC == 0) { if (m_Computer->maxLumaPixelsHEVC == 0) {
emitLaunchWarning("Your host PC GPU doesn't support HEVC. " emitLaunchWarning(tr("Your host PC GPU doesn't support HEVC. "
"A GeForce GTX 900-series (Maxwell) or later GPU is required for HEVC streaming."); "A GeForce GTX 900-series (Maxwell) or later GPU is required for HEVC streaming."));
// Moonlight-common-c will handle this case already, but we want // Moonlight-common-c will handle this case already, but we want
// to set this explicitly here so we can do our hardware acceleration // to set this explicitly here so we can do our hardware acceleration
@ -625,12 +625,12 @@ bool Session::validateLaunch(SDL_Window* testWindow)
// Check that the app supports HDR // Check that the app supports HDR
if (!m_App.hdrSupported) { if (!m_App.hdrSupported) {
emitLaunchWarning(m_App.name + " doesn't support HDR10."); emitLaunchWarning(tr("%1 doesn't support HDR10.").arg(m_App.name));
} }
// Check that the server GPU supports HDR // Check that the server GPU supports HDR
else if (!(m_Computer->serverCodecModeSupport & 0x200)) { else if (!(m_Computer->serverCodecModeSupport & 0x200)) {
emitLaunchWarning("Your host PC GPU doesn't support HDR streaming. " emitLaunchWarning(tr("Your host PC GPU doesn't support HDR streaming. "
"A GeForce GTX 1000-series (Pascal) or later GPU is required for HDR streaming."); "A GeForce GTX 1000-series (Pascal) or later GPU is required for HDR streaming."));
} }
else if (!isHardwareDecodeAvailable(testWindow, else if (!isHardwareDecodeAvailable(testWindow,
m_Preferences->videoDecoderSelection, m_Preferences->videoDecoderSelection,
@ -638,7 +638,7 @@ bool Session::validateLaunch(SDL_Window* testWindow)
m_StreamConfig.width, m_StreamConfig.width,
m_StreamConfig.height, m_StreamConfig.height,
m_StreamConfig.fps)) { m_StreamConfig.fps)) {
emitLaunchWarning("This PC's GPU doesn't support HEVC Main10 decoding for HDR streaming."); emitLaunchWarning(tr("This PC's GPU doesn't support HEVC Main10 decoding for HDR streaming."));
} }
else { else {
// TODO: Also validate display capabilites // TODO: Also validate display capabilites
@ -651,7 +651,7 @@ bool Session::validateLaunch(SDL_Window* testWindow)
if (m_StreamConfig.width >= 3840) { if (m_StreamConfig.width >= 3840) {
// Only allow 4K on GFE 3.x+ // Only allow 4K on GFE 3.x+
if (m_Computer->gfeVersion.isEmpty() || m_Computer->gfeVersion.startsWith("2.")) { if (m_Computer->gfeVersion.isEmpty() || m_Computer->gfeVersion.startsWith("2.")) {
emitLaunchWarning("GeForce Experience 3.0 or higher is required for 4K streaming."); emitLaunchWarning(tr("GeForce Experience 3.0 or higher is required for 4K streaming."));
m_StreamConfig.width = 1920; m_StreamConfig.width = 1920;
m_StreamConfig.height = 1080; m_StreamConfig.height = 1080;
@ -666,29 +666,29 @@ bool Session::validateLaunch(SDL_Window* testWindow)
audioTestPassed = testAudio(AUDIO_CONFIGURATION_STEREO); audioTestPassed = testAudio(AUDIO_CONFIGURATION_STEREO);
if (audioTestPassed) { if (audioTestPassed) {
m_StreamConfig.audioConfiguration = AUDIO_CONFIGURATION_STEREO; m_StreamConfig.audioConfiguration = AUDIO_CONFIGURATION_STEREO;
emitLaunchWarning("Your selected surround sound setting is not supported by the current audio device."); emitLaunchWarning(tr("Your selected surround sound setting is not supported by the current audio device."));
} }
} }
// If nothing worked, warn the user that audio will not work // If nothing worked, warn the user that audio will not work
m_AudioDisabled = !audioTestPassed; m_AudioDisabled = !audioTestPassed;
if (m_AudioDisabled) { if (m_AudioDisabled) {
emitLaunchWarning("Failed to open audio device. Audio will be unavailable during this session."); emitLaunchWarning(tr("Failed to open audio device. Audio will be unavailable during this session."));
} }
// Check for unmapped gamepads // Check for unmapped gamepads
if (!SdlInputHandler::getUnmappedGamepads().isEmpty()) { if (!SdlInputHandler::getUnmappedGamepads().isEmpty()) {
emitLaunchWarning("An attached gamepad has no mapping and won't be usable. Visit the Moonlight help to resolve this."); emitLaunchWarning(tr("An attached gamepad has no mapping and won't be usable. Visit the Moonlight help to resolve this."));
} }
// NVENC will fail to initialize when using dimensions over 4096 and H.264. // NVENC will fail to initialize when using dimensions over 4096 and H.264.
if (m_StreamConfig.width > 4096 || m_StreamConfig.height > 4096) { if (m_StreamConfig.width > 4096 || m_StreamConfig.height > 4096) {
if (m_Computer->maxLumaPixelsHEVC == 0) { if (m_Computer->maxLumaPixelsHEVC == 0) {
emit displayLaunchError("Your host PC's GPU doesn't support streaming video resolutions over 4K."); emit displayLaunchError(tr("Your host PC's GPU doesn't support streaming video resolutions over 4K."));
return false; return false;
} }
else if (!m_StreamConfig.supportsHevc) { else if (!m_StreamConfig.supportsHevc) {
emit displayLaunchError("Video resolutions over 4K are only supported by the HEVC codec."); emit displayLaunchError(tr("Video resolutions over 4K are only supported by the HEVC codec."));
return false; return false;
} }
} }
@ -702,10 +702,10 @@ bool Session::validateLaunch(SDL_Window* testWindow)
m_StreamConfig.height, m_StreamConfig.height,
m_StreamConfig.fps)) { m_StreamConfig.fps)) {
if (m_Preferences->videoCodecConfig == StreamingPreferences::VCC_AUTO) { if (m_Preferences->videoCodecConfig == StreamingPreferences::VCC_AUTO) {
emit displayLaunchError("Your selection to force hardware decoding cannot be satisfied due to missing hardware decoding support on this PC's GPU."); emit displayLaunchError(tr("Your selection to force hardware decoding cannot be satisfied due to missing hardware decoding support on this PC's GPU."));
} }
else { else {
emit displayLaunchError("Your codec selection and force hardware decoding setting are not compatible. This PC's GPU lacks support for decoding your chosen codec."); emit displayLaunchError(tr("Your codec selection and force hardware decoding setting are not compatible. This PC's GPU lacks support for decoding your chosen codec."));
} }
// Fail the launch, because we won't manage to get a decoder for the actual stream // Fail the launch, because we won't manage to get a decoder for the actual stream
@ -1013,7 +1013,7 @@ bool Session::startConnectionAsync()
m_InputHandler->getAttachedGamepadMask()); m_InputHandler->getAttachedGamepadMask());
} }
} catch (const GfeHttpResponseException& e) { } catch (const GfeHttpResponseException& e) {
emit displayLaunchError("GeForce Experience returned error: " + e.toQString()); emit displayLaunchError(tr("GeForce Experience returned error: %1").arg(e.toQString()));
return false; return false;
} catch (const QtNetworkReplyException& e) { } catch (const QtNetworkReplyException& e) {
emit displayLaunchError(e.toQString()); emit displayLaunchError(e.toQString());
@ -1394,7 +1394,7 @@ void Session::exec(int displayOriginX, int displayOriginY)
SDL_AtomicUnlock(&m_DecoderLock); SDL_AtomicUnlock(&m_DecoderLock);
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Failed to recreate decoder after reset"); "Failed to recreate decoder after reset");
emit displayLaunchError("Unable to initialize video decoder. Please check your streaming settings and try again."); emit displayLaunchError(tr("Unable to initialize video decoder. Please check your streaming settings and try again."));
goto DispatchDeferredCleanup; goto DispatchDeferredCleanup;
} }

Binary file not shown.

View file

@ -1,563 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>AppView</name>
<message>
<location filename="../app/gui/AppView.qml" line="118"/>
<location filename="../app/gui/AppView.qml" line="245"/>
<source>Resume Game</source>
<translation>Reprendre le jeu</translation>
</message>
<message>
<location filename="../app/gui/AppView.qml" line="146"/>
<location filename="../app/gui/AppView.qml" line="250"/>
<source>Quit Game</source>
<translation>Quitter le jeu</translation>
</message>
<message>
<location filename="../app/gui/AppView.qml" line="245"/>
<source>Launch Game</source>
<translation>Lancer le jeu</translation>
</message>
<message>
<location filename="../app/gui/AppView.qml" line="258"/>
<source>Hide Game</source>
<translation>Cacher le jeu</translation>
</message>
</context>
<context>
<name>CliQuitStreamSegue</name>
<message>
<location filename="../app/gui/CliQuitStreamSegue.qml" line="9"/>
<source>Establishing connection to PC...</source>
<translation>connexion au PC...</translation>
</message>
<message>
<location filename="../app/gui/CliQuitStreamSegue.qml" line="13"/>
<source>Quitting app...</source>
<translation>Fermeture de l&apos;app...</translation>
</message>
</context>
<context>
<name>CliStartStreamSegue</name>
<message>
<location filename="../app/gui/CliStartStreamSegue.qml" line="9"/>
<source>Establishing connection to PC...</source>
<translation>connexion au PC...</translation>
</message>
<message>
<location filename="../app/gui/CliStartStreamSegue.qml" line="13"/>
<source>Loading app list...</source>
<translation>Chargement de la liste des applications...</translation>
</message>
</context>
<context>
<name>PcView</name>
<message>
<location filename="../app/gui/PcView.qml" line="20"/>
<source>Computers</source>
<translation>Ordinateurs</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="67"/>
<source>Unable to connect to the specified PC.</source>
<translation>Impossible de se connecter au PC spécifié.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="70"/>
<source>
This PC&apos;s Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.</source>
<translation>
La connexion Internet de ce PC bloque Moonlight. Le streaming sur Internet peut ne pas fonctionner lorsqu&apos;il est connecté à ce réseau.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="73"/>
<source>Click the Help button for possible solutions.</source>
<translation>Cliquez sur le bouton Aide pour connaître les solutions possibles.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="102"/>
<source>Searching for PCs with NVIDIA GameStream enabled...</source>
<translation>La recherche de PC avec NVIDIA GameStream activé...</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="103"/>
<source>Automatic PC discovery is disabled. Add your PC manually.</source>
<translation>La découverte automatique des PC est désactivée. Ajoutez votre PC manuellement.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="167"/>
<source>View Apps</source>
<translation>Voir les applications</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="177"/>
<source>View Hidden Apps</source>
<translation>Voir les applications cachées</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="187"/>
<source>Wake PC</source>
<translation>Réveiller le PC</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="193"/>
<source>Test Network</source>
<translation>Test Réseau</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="202"/>
<source>Rename PC</source>
<translation>Renommer le PC</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="211"/>
<source>Delete PC</source>
<translation>Supprimer le PC</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="241"/>
<source>You cannot pair while a previous session is still running on the host PC. Quit any running games or reboot the host PC, then try pairing again.</source>
<translation>Vous ne pouvez pas effectuer de couplage alors qu&apos;une session précédente est encore en cours sur le PC hôte. Fermez les jeux en cours ou redémarrez le PC hôte, puis essayez à nouveau d&apos;effectuer l&apos;appariement.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="307"/>
<source>Are you sure you want to remove this PC?</source>
<translation>Êtes-vous sûr de vouloir supprimer ce PC ?</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="324"/>
<source>Moonlight is testing your network connection to determine if NVIDIA GameStream is blocked.
This may take a few seconds</source>
<translation>Moonlight teste votre connexion réseau pour déterminer si NVIDIA GameStream est bloqué
This may take a few seconds</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="331"/>
<source>The network test could not be performed because none of Moonlight&apos;s connection testing servers were reachable from this PC. Check your Internet connection or try again later.</source>
<translation>Le test de réseau n&apos;a pas pu être effectué car aucun des serveurs de test de connexion de Moonlight n&apos;était accessible depuis ce PC. Vérifiez votre connexion Internet ou réessayez plus tard.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="335"/>
<source>This network does not appear to be blocking Moonlight. If you still have trouble connecting, check your PC&apos;s firewall settings.
If you are trying to stream over the Internet, install the Moonlight Internet Hosting Tool on your gaming PC and run the included Internet Streaming Tester to check your gaming PC&apos;s Internet connection.</source>
<translation>Ce réseau ne semble pas bloquer Moonlight. Si vous avez toujours des problèmes de connexion, vérifiez les paramètres du pare-feu de votre PC.
Si vous essayez d&apos;utiliser la diffusion en continu sur Internet, installez l&apos;outil d&apos;hébergement Internet Moonlight sur votre PC de jeu et exécutez le testeur de diffusion en continu sur Internet inclus pour vérifier la connexion Internet de votre PC de jeu.</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="339"/>
<source>Your PC&apos;s current network connection seems to be blocking Moonlight. Streaming over the Internet may not work while connected to this network.
The following network ports were blocked:
</source>
<translation>La connexion réseau actuelle de votre PC semble bloquer le Moonlight. Il se peut que la diffusion en continu sur Internet ne fonctionne pas lorsque vous êtes connecté à ce réseau.
Les ports de réseau suivants ont é bloqués :
</translation>
</message>
<message>
<location filename="../app/gui/PcView.qml" line="351"/>
<source>Enter the new name for this PC:</source>
<translation>Saisissez le nouveau nom de ce PC :</translation>
</message>
</context>
<context>
<name>SettingsView</name>
<message>
<location filename="../app/gui/SettingsView.qml" line="11"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="53"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;Basic Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Paramètres de base&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="63"/>
<source>Resolution and FPS</source>
<translation>Résolution et FPS</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="71"/>
<source>Setting values too high for your PC or network connection may cause lag, stuttering, or errors.</source>
<translation>Le fait de fixer des valeurs trop élevées pour votre PC ou votre connexion réseau peut entraîner un décalage, des bégaiements ou des erreurs.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="218"/>
<source>30 FPS</source>
<translation>30 FPS</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="219"/>
<source>60 FPS</source>
<translation>60 FPS</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="224"/>
<location filename="../app/gui/SettingsView.qml" line="249"/>
<source>90 FPS (Unsupported)</source>
<translation>90 FPS (Non supporté)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="227"/>
<location filename="../app/gui/SettingsView.qml" line="252"/>
<source>120 FPS (Unsupported)</source>
<translation>120 FPS (Non supporté)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="236"/>
<source> FPS (Unsupported)</source>
<translation> FPS (Non supporté)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="305"/>
<source>Video bitrate: </source>
<translation>Bitrate vidéo : </translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="313"/>
<source>Lower the bitrate on slower connections. Raise the bitrate to increase image quality.</source>
<translation>Baissez le débit binaire sur les connexions plus lentes. Augmentez le débit binaire pour améliorer la qualité de l&apos;image.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="339"/>
<source>Display mode</source>
<translation>Mode d&apos;affichage</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="351"/>
<source> (Recommended)</source>
<translation> (Recommandé)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="380"/>
<source>Full-screen</source>
<translation>Plein écran</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="384"/>
<source>Borderless windowed</source>
<translation>fenêtré sans bordure</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="388"/>
<source>Windowed</source>
<translation>Fenêtré</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="399"/>
<source>Full-screen generally provides the best performance, but borderless windowed may work better with features like macOS Spaces, Alt+Tab, screenshot tools, on-screen overlays, etc.</source>
<translation>Le plein écran offre généralement les meilleures performances, mais les fenêtres sans bordure peuvent fonctionner mieux avec des fonctionnalités telles que MacOS Spaces, Alt+Tab, les outils de capture d&apos;écran, les superpositions à l&apos;écran, etc.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="416"/>
<source>Disabling V-Sync allows sub-frame rendering latency, but it can display visible tearing</source>
<translation>La désactivation de V-Sync permet une latence de rendu des sous-images plus faible, mais elle peut afficher des déchirures visibles</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="423"/>
<source>Frame pacing</source>
<translation>Frame pacing</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="433"/>
<source>Frame pacing reduces micro-stutter by delaying frames that come in too early</source>
<translation>Frame pacing réduit les micro-bégaiements en retardant les images qui arrivent trop tôt</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="443"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;Audio Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Réglages audio&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="453"/>
<source>Audio configuration</source>
<translation>Configuration audio</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="503"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;UI Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Réglages de l&apos;interface utilisateur&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="513"/>
<source>Maximize Moonlight window on startup</source>
<translation>Maximiser la fenêtre Moonlight au démarrage</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="525"/>
<source>Show connection quality warnings</source>
<translation>Afficher les avertissements sur la qualité de la connexion</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="537"/>
<source>Discord Rich Presence integration</source>
<translation>Intégration de la présence Discord Rich</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="547"/>
<source>Updates your Discord status to display the name of the game you&apos;re streaming.</source>
<translation>Met à jour votre statut Discord pour afficher le nom du jeu que vous diffusez en continu.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="565"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;Input Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Paramètres d&apos;entrée&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="575"/>
<source>Force gamepad #1 always present</source>
<translation>Forcé la manette de jeu Force #1 à être toujours présente</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="585"/>
<source>Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.
</source>
<translation>Forces a single gamepad to always stay connected to the host, even if no gamepads are actually connected to this PC.
</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="586"/>
<source>Only enable this option when streaming a game that doesn&apos;t support gamepads being connected after startup.</source>
<translation>N&apos;activez cette option que lorsque vous diffusez en continu un jeu qui ne prend pas en charge la connexion des manettes de jeu après le démarrage.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="593"/>
<source>Optimize mouse for remote desktop instead of games</source>
<translation>Optimiser la souris pour le bureau à distance plutôt que pour les jeux</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="604"/>
<source>This enables mouse control without capturing the client&apos;s mouse cursor. It will not work in most games.
You can toggle this while streaming using Ctrl+Alt+Shift+M.</source>
<translation>Cela permet de contrôler la souris sans avoir à capturer le curseur du client. Cela ne fonctionne pas dans la plupart des jeux.
Vous pouvez le basculer pendant la diffusion en utilisant Ctrl+Alt+Shift+M.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="612"/>
<source>Use touchscreen as a trackpad</source>
<translation>Utiliser l&apos;écran tactile comme trackpad</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="622"/>
<source>When checked, the touchscreen acts like a trackpad. When unchecked, the touchscreen will directly control the mouse pointer.</source>
<translation>Lorsqu&apos;on le vérifie, l&apos;écran tactile agit comme un pavé tactile. Lorsqu&apos;il n&apos;est pas coché, l&apos;écran tactile contrôle directement le pointeur de la souris.</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="629"/>
<source>Gamepad mouse mode support</source>
<translation>Prise en charge du mode souris de la manette de jeu</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="639"/>
<source>When enabled, holding the Start button will toggle mouse mode</source>
<translation>Lorsqu&apos;il est activé, le maintien du bouton &quot;Start&quot; permet de passer en mode souris</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="646"/>
<source>Swap mouse buttons</source>
<translation>Échanger les boutons de la souris</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="656"/>
<source>When checked, swap the left and right mouse buttons</source>
<translation>Lorsque la case est cochée, permuter les boutons gauche et droit de la souris</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="665"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;Host Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Paramètres de l&apos;hôte&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="675"/>
<source>Optimize game settings for streaming</source>
<translation>Optimiser les paramètres du jeu pour la diffusion en continu</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="686"/>
<source>Play audio on host PC</source>
<translation>Lecture audio sur le PC hôte</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="697"/>
<source>Quit app on host PC after ending stream</source>
<translation>Quitter l&apos;application sur le PC hôte après avoir terminé le flux</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="707"/>
<source>This will close the app or game you are streaming when you end your stream. You will lose any unsaved progress!</source>
<translation>Cela fermera l&apos;application ou le jeu que vous êtes en train de diffuser lorsque vous aurez terminé votre flux. Vous perdrez tout progrès non sauvegardé !</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="716"/>
<source>&lt;font color=&quot;skyblue&quot;&gt;Advanced Settings&lt;/font&gt;</source>
<translation>&lt;font color=&quot;skyblue&quot;&gt;Paramètres avancés&lt;/font&gt;</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="726"/>
<source>Video decoder</source>
<translation>Décodeur vidéo</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="751"/>
<location filename="../app/gui/SettingsView.qml" line="797"/>
<source>Automatic (Recommended)</source>
<translation>Automatique (recommandé)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="755"/>
<source>Force software decoding</source>
<translation>Forcer le décodage des logiciels</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="759"/>
<source>Force hardware decoding</source>
<translation>Forcer le décodage du matériel</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="772"/>
<source>Video codec</source>
<translation>Codec vidéo</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="822"/>
<source>Unlock unsupported FPS options</source>
<translation>Débloquer les options non supportées du FPS</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="841"/>
<source>Automatically find PCs on the local network (Recommended)</source>
<translation>Trouver automatiquement les PC sur le réseau local (recommandé)</translation>
</message>
<message>
<location filename="../app/gui/SettingsView.qml" line="866"/>
<source>Automatically detect blocked connections (Recommended)</source>
<translation>Détecter automatiquement les connexions bloquées (recommandé)</translation>
</message>
</context>
<context>
<name>StreamSegue</name>
<message>
<location filename="../app/gui/StreamSegue.qml" line="68"/>
<source>
This PC&apos;s Internet connection is blocking Moonlight. Streaming over the Internet may not work while connected to this network.</source>
<translation>
La connexion Internet de ce PC bloque Moonlight. Le streaming sur Internet peut ne pas fonctionner lorsqu&apos;il est connecté à ce réseau.</translation>
</message>
<message>
<location filename="../app/gui/StreamSegue.qml" line="151"/>
<source>Tip: Press Start+Select+L1+R1 to disconnect your session</source>
<translation>Tip: Appuyez sur Start+Select+L1+R1 pour déconnecter votre session</translation>
</message>
<message>
<location filename="../app/gui/StreamSegue.qml" line="152"/>
<source>Tip: Press Ctrl+Alt+Shift+Q to disconnect your session</source>
<translation>Tip: Appuyez sur Ctrl + Alt + Shift + Q pour déconnecter votre session</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../app/gui/main.qml" line="226"/>
<location filename="../app/gui/main.qml" line="236"/>
<location filename="../app/gui/main.qml" line="365"/>
<location filename="../app/gui/main.qml" line="380"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="243"/>
<source>Join our community on Discord</source>
<translation>Rejoignez notre communauté sur Discord</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="255"/>
<source>Computers</source>
<translation>Ordinateurs</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="262"/>
<source>Add PC manually</source>
<translation>Ajouter un PC manuellement</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="302"/>
<source>Update available for Moonlight: Version </source>
<translation>Mise à jour disponible pour Moonlight : Version </translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="326"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="387"/>
<source>No functioning hardware accelerated H.264 video decoder was detected by Moonlight. </source>
<translation>Aucun décodeur vidéo H.264 accéléré par le matériel n&apos;a é détecté par Moonlight. </translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="388"/>
<source>Your streaming performance may be severely degraded in this configuration.</source>
<translation>Dans cette configuration, les performances de votre streaming peuvent être fortement dégradées.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="389"/>
<source>Click the Help button for more information on solving this problem.</source>
<translation>Cliquez sur le bouton Aide pour obtenir plus d&apos;informations sur la manière de résoudre ce problème.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="395"/>
<source>Hardware acceleration doesn&apos;t work on XWayland. Continuing on XWayland may result in poor streaming performance. </source>
<translation>L&apos;accélération matérielle ne fonctionne pas sur XWayland. Continuer sur XWayland peut entraîner de mauvaises performances de streaming. </translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="396"/>
<source>Try running with QT_QPA_PLATFORM=wayland or switch to X11.</source>
<translation>Essayez de fonctionner avec QT_QPA_PLATFORM=wayland ou passez à X11.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="397"/>
<source>Click the Help button for more information.</source>
<translation>Cliquez sur le bouton Aide pour plus d&apos;informations.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="404"/>
<source>This PC is running a 64-bit version of Windows. Please download the x64 version of Moonlight for the best streaming performance.</source>
<translation>Ce PC fonctionne avec une version 64 bits de Windows. Veuillez télécharger la version x64 de Moonlight pour obtenir les meilleures performances de diffusion en continu.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="413"/>
<source>Moonlight detected gamepads without a mapping:
</source>
<translation>Moonlight a détecté des manettes de jeu san configuration:
</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="415"/>
<source>Click the Help button for information on how to map your gamepads.</source>
<translation>Cliquez sur le bouton Aide pour obtenir des informations sur la configuration de vos manettes de jeu.</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="423"/>
<source>Are you sure you want to quit?</source>
<translation>Vous êtes sûr de vouloir quitter?</translation>
</message>
<message>
<location filename="../app/gui/main.qml" line="453"/>
<source>Enter the IP address of your GameStream PC:</source>
<translation>Saisissez l&apos;adresse IP de votre PC GameStream :</translation>
</message>
</context>
</TS>

View file

@ -1,4 +1,3 @@
TRANSLATIONS += languages/qml_fr.ts
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = \ SUBDIRS = \
moonlight-common-c \ moonlight-common-c \