Qt: Translation Fixes From Crowdin

Co-Authored-By: TellowKrinkle <3315070+TellowKrinkle@users.noreply.github.com>
This commit is contained in:
KamFretoZ 2025-12-09 09:05:03 +07:00 committed by lightningterror
parent 47fe2344a5
commit 7f233ca620
14 changed files with 110 additions and 100 deletions

View File

@ -272,7 +272,7 @@ if (NOT APPLE)
) )
endif() endif()
file(GLOB TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Translations/*.ts) file(GLOB TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Translations/pcsx2-qt_*-*.ts)
target_precompile_headers(pcsx2-qt PRIVATE PrecompiledHeader.h) target_precompile_headers(pcsx2-qt PRIVATE PrecompiledHeader.h)
set_source_files_properties(PrecompiledHeader.cpp PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties(PrecompiledHeader.cpp PROPERTIES HEADER_FILE_ONLY TRUE)

View File

@ -1876,7 +1876,7 @@ void MainWindow::onInputRecPlayActionTriggered()
QFileDialog dialog(this); QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile); dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setWindowTitle("Select a File"); dialog.setWindowTitle(tr("Select a File"));
dialog.setNameFilter(tr("Input Recording Files (*.p2m2)")); dialog.setNameFilter(tr("Input Recording Files (*.p2m2)"));
QStringList fileNames; QStringList fileNames;
if (dialog.exec()) if (dialog.exec())
@ -3058,7 +3058,7 @@ void MainWindow::populateLoadStateMenu(QMenu* menu, const QString& filename, con
} }
const u32 deleted = VMManager::DeleteSaveStates(serial.toUtf8().constData(), crc, true); const u32 deleted = VMManager::DeleteSaveStates(serial.toUtf8().constData(), crc, true);
QMessageBox::information(this, tr("Delete Save States"), tr("%1 save states deleted.").arg(deleted)); QMessageBox::information(this, tr("Delete Save States"), tr("%n save states deleted.", "", deleted));
}); });
} }
} }

View File

@ -15,7 +15,7 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QGroupBox" name="groupBox"> <widget class="QGroupBox" name="screenshotGroupBox">
<property name="title"> <property name="title">
<string>Screenshot Capture Setup</string> <string>Screenshot Capture Setup</string>
</property> </property>
@ -42,7 +42,7 @@
</property> </property>
<item> <item>
<property name="text"> <property name="text">
<string>Window Resolution (Aspect Corrected)</string> <string>Display Resolution (Aspect Corrected)</string>
</property> </property>
</item> </item>
<item> <item>
@ -186,6 +186,9 @@
<property name="singleStep"> <property name="singleStep">
<number>1</number> <number>1</number>
</property> </property>
<property name="value">
<number>67</number>
</property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0" colspan="2">
@ -273,6 +276,9 @@
<property name="singleStep"> <property name="singleStep">
<number>100</number> <number>100</number>
</property> </property>
<property name="value">
<number>420</number>
</property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="3" column="0">
@ -325,7 +331,7 @@
<number>16</number> <number>16</number>
</property> </property>
<property name="value"> <property name="value">
<number>240</number> <number>480</number>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -472,7 +472,7 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog,
dialog()->registerWidgetHelp(m_display.interlacing, tr("Deinterlacing"), tr("Automatic (Default)"), tr("Determines the deinterlacing method to be used on the interlaced screen of the emulated console. Automatic should be able to correctly deinterlace most games, but if you see visibly shaky graphics, try one of the other options.")); dialog()->registerWidgetHelp(m_display.interlacing, tr("Deinterlacing"), tr("Automatic (Default)"), tr("Determines the deinterlacing method to be used on the interlaced screen of the emulated console. Automatic should be able to correctly deinterlace most games, but if you see visibly shaky graphics, try one of the other options."));
dialog()->registerWidgetHelp(m_capture.screenshotSize, tr("Screenshot Resolution"), tr("Screen Resolution"), dialog()->registerWidgetHelp(m_capture.screenshotSize, tr("Screenshot Resolution"), tr("Display Resolution"),
tr("Determines the resolution at which screenshots will be saved. Internal resolutions preserve more detail at the cost of " tr("Determines the resolution at which screenshots will be saved. Internal resolutions preserve more detail at the cost of "
"file size.")); "file size."));
@ -765,10 +765,10 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* settings_dialog,
tr("Shows the current controller state of the system in the bottom-left corner of the display.")); tr("Shows the current controller state of the system in the bottom-left corner of the display."));
dialog()->registerWidgetHelp(m_osd.showVideoCapture, tr("Show Video Capture Status"), tr("Checked"), dialog()->registerWidgetHelp(m_osd.showVideoCapture, tr("Show Video Capture Status"), tr("Checked"),
tr("Shows the status of the currently active video capture in the top-right corner of the display..")); tr("Shows the status of the currently active video capture in the top-right corner of the display."));
dialog()->registerWidgetHelp(m_osd.showInputRec, tr("Show Input Recording Status"), tr("Checked"), dialog()->registerWidgetHelp(m_osd.showInputRec, tr("Show Input Recording Status"), tr("Checked"),
tr("Shows the status of the currently active input recording in the top-right corner of the display..")); tr("Shows the status of the currently active input recording in the top-right corner of the display."));
dialog()->registerWidgetHelp(m_osd.showTextureReplacements, tr("Show Texture Replacement Status"), tr("Unchecked"), dialog()->registerWidgetHelp(m_osd.showTextureReplacements, tr("Show Texture Replacement Status"), tr("Unchecked"),
tr("Shows the status of the number of dumped and loaded texture replacements in the top-right corner of the display.")); tr("Shows the status of the number of dumped and loaded texture replacements in the top-right corner of the display."));

View File

@ -93,7 +93,7 @@
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="nativeScalingLabel"> <widget class="QLabel" name="nativeScalingLabel">
<property name="text"> <property name="text">
<string>Native Scaling</string> <string>Native Scaling:</string>
</property> </property>
<property name="buddy"> <property name="buddy">
<cstring>nativeScaling</cstring> <cstring>nativeScaling</cstring>

View File

@ -261,8 +261,10 @@ void SetupWizardDialog::onDirectoryListContextMenuRequested(const QPoint& point)
const int row = selection[0].row(); const int row = selection[0].row();
QMenu menu; QMenu menu;
//: Part of the right-click menu for game directory entries
menu.addAction(tr("Remove"), [this]() { onRemoveSearchDirectoryButtonClicked(); }); menu.addAction(tr("Remove"), [this]() { onRemoveSearchDirectoryButtonClicked(); });
menu.addSeparator(); menu.addSeparator();
//: Part of the right-click menu for game directory entries
menu.addAction(tr("Open Directory..."), menu.addAction(tr("Open Directory..."),
[this, row]() { QtUtils::OpenURL(this, QUrl::fromLocalFile(m_ui.searchDirectoryList->item(row, 0)->text())); }); [this, row]() { QtUtils::OpenURL(this, QUrl::fromLocalFile(m_ui.searchDirectoryList->item(row, 0)->text())); });
menu.exec(m_ui.searchDirectoryList->mapToGlobal(point)); menu.exec(m_ui.searchDirectoryList->mapToGlobal(point));

View File

@ -82,7 +82,7 @@ void InputRecordingViewer::openFile()
{ {
QFileDialog dialog(this); QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile); dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setWindowTitle("Select a File"); dialog.setWindowTitle(tr("Select a File"));
dialog.setNameFilter(tr("Input Recording Files (*.p2m2)")); dialog.setNameFilter(tr("Input Recording Files (*.p2m2)"));
QStringList fileNames; QStringList fileNames;
if (dialog.exec()) if (dialog.exec())

View File

@ -589,18 +589,18 @@ Login token generated on %2.</source>
<location filename="../../pcsx2/Achievements.cpp" line="1104"/> <location filename="../../pcsx2/Achievements.cpp" line="1104"/>
<source>You have unlocked {} of %n achievements</source> <source>You have unlocked {} of %n achievements</source>
<comment>Achievement popup</comment> <comment>Achievement popup</comment>
<translation> <translation type="unfinished">
<numerusform>You have unlocked {} of %n achievements</numerusform> <numerusform></numerusform>
<numerusform>You have unlocked {} of %n achievements</numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../pcsx2/Achievements.cpp" line="1107"/> <location filename="../../pcsx2/Achievements.cpp" line="1107"/>
<source>and earned {} of %n points</source> <source>and earned {} of %n points</source>
<comment>Achievement popup</comment> <comment>Achievement popup</comment>
<translation> <translation type="unfinished">
<numerusform>and earned {} of %n points</numerusform> <numerusform></numerusform>
<numerusform>and earned {} of %n points</numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -622,18 +622,18 @@ Login token generated on %2.</source>
<location filename="../../pcsx2/Achievements.cpp" line="1191"/> <location filename="../../pcsx2/Achievements.cpp" line="1191"/>
<source>%n achievements</source> <source>%n achievements</source>
<comment>Mastery popup</comment> <comment>Mastery popup</comment>
<translation> <translation type="unfinished">
<numerusform>%n achievement</numerusform> <numerusform></numerusform>
<numerusform>%n achievements</numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../pcsx2/Achievements.cpp" line="1193"/> <location filename="../../pcsx2/Achievements.cpp" line="1193"/>
<source>%n points</source> <source>%n points</source>
<comment>Mastery popup</comment> <comment>Mastery popup</comment>
<translation> <translation type="unfinished">
<numerusform>%n point</numerusform> <numerusform></numerusform>
<numerusform>%n points</numerusform> <numerusform></numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -9641,7 +9641,7 @@ Do you want to load this save and continue?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9650"/> <location filename="../../pcsx2/ImGui/FullscreenUI.cpp" line="9618"/>
<source>Please enter your user name and password for retroachievements.org below. <source>Please enter your user name and password for retroachievements.org below.
Your password will not be saved in PCSX2, an access token will be generated and used instead.</source> Your password will not be saved in PCSX2, an access token will be generated and used instead.</source>
@ -25530,6 +25530,7 @@ PCSX2 will be able to run once you&apos;ve placed your BIOS image inside the fol
</message> </message>
<message> <message>
<location filename="../../pcsx2/VMManager.cpp" line="3204"/> <location filename="../../pcsx2/VMManager.cpp" line="3204"/>
<source>Texture dumping is enabled, this will continually dump textures to disk.</source> <source>Texture dumping is enabled, this will continually dump textures to disk.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -513,7 +513,7 @@ bool GSDevice11::Create(GSVSyncMode vsync_mode, bool allow_present_throttle)
if (m_feature_level < D3D_FEATURE_LEVEL_11_0) if (m_feature_level < D3D_FEATURE_LEVEL_11_0)
{ {
Host::AddIconOSDMessage("d3d11_feature_level_warning", ICON_FA_TRIANGLE_EXCLAMATION, Host::AddIconOSDMessage("d3d11_feature_level_warning", ICON_FA_TRIANGLE_EXCLAMATION,
TRANSLATE_SV("GS", "The Direct3D11 renderer is running at feature level 10.0. This is an UNSUPPORTED configuration.\n" TRANSLATE_SV("GS", "The Direct3D 11 renderer is running at feature level 10.0. This is an UNSUPPORTED configuration.\n"
"Do not request support, please upgrade your hardware/drivers first."), "Do not request support, please upgrade your hardware/drivers first."),
Host::OSD_WARNING_DURATION); Host::OSD_WARNING_DURATION);
} }

View File

@ -4723,9 +4723,9 @@ void FullscreenUI::DrawGraphicsSettingsPage(SettingsInterface* bsi, bool show_ad
FSUI_NSTR("Disabled (Ignore Transfers)"), FSUI_NSTR("Disabled (Ignore Transfers)"),
}; };
static constexpr const char* s_screenshot_sizes[] = { static constexpr const char* s_screenshot_sizes[] = {
FSUI_NSTR("Screen Resolution"), FSUI_NSTR("Display Resolution (Aspect Corrected)"),
FSUI_NSTR("Internal Resolution"), FSUI_NSTR("Internal Resolution (Aspect Corrected)"),
FSUI_NSTR("Internal Resolution (Aspect Uncorrected)"), FSUI_NSTR("Internal Resolution (No Aspect Correction)"),
}; };
static constexpr const char* s_screenshot_formats[] = { static constexpr const char* s_screenshot_formats[] = {
FSUI_NSTR("PNG"), FSUI_NSTR("PNG"),

View File

@ -765,9 +765,9 @@ std::optional<InputBindingKey> SDLInputSource::ParseKeyString(const std::string_
{ {
shown_prompt = true; shown_prompt = true;
Host::ReportInfoAsync(TRANSLATE("SDLInputSource", "SDL3 Migration"), Host::ReportInfoAsync(TRANSLATE("SDLInputSource", "SDL3 Migration"),
TRANSLATE("SDLInputSource", "As part of our upgrade to SDL3, we've had to migrate your binds\n" TRANSLATE("SDLInputSource", "As part of our upgrade to SDL3, we've had to migrate your binds.\n"
"Your controller did not match the Xbox layout and may need rebinding\n" "Your controller did not match the Xbox layout and may need rebinding.\n"
"Please verify your controller settings and amend if required")); "Please verify your controller settings and amend if required."));
// Also apply BPM setting for legacy binds // Also apply BPM setting for legacy binds
// We assume this is a Nintendo controller, BPM will check if it is // We assume this is a Nintendo controller, BPM will check if it is

View File

@ -93,7 +93,7 @@ bool InputRecording::play(const std::string& filename)
if (!FileSystem::FileExists(savestatePath.c_str())) if (!FileSystem::FileExists(savestatePath.c_str()))
{ {
InputRec::consoleLog(fmt::format("Could not locate savestate file at location - {}", savestatePath)); InputRec::consoleLog(fmt::format("Could not locate savestate file at location - {}", savestatePath));
InputRec::log(TRANSLATE_STR("InputRecording", "Savestate load failed for input recording"), Host::OSD_ERROR_DURATION); InputRec::log(TRANSLATE_STR("InputRecording", "Failed to load state for input recording"), Host::OSD_ERROR_DURATION);
m_file.close(); m_file.close();
return false; return false;
} }
@ -103,7 +103,7 @@ bool InputRecording::play(const std::string& filename)
const auto loaded = VMManager::LoadState(savestatePath.c_str()); const auto loaded = VMManager::LoadState(savestatePath.c_str());
if (!loaded) if (!loaded)
{ {
InputRec::log(TRANSLATE_STR("InputRecording", "Load state failed for input recording, unsupported version?"), Host::OSD_ERROR_DURATION); InputRec::log(TRANSLATE_STR("InputRecording", "Failed to load state for input recording, unsupported version?"), Host::OSD_ERROR_DURATION);
m_file.close(); m_file.close();
m_is_active = false; m_is_active = false;
return false; return false;

View File

@ -581,9 +581,10 @@ bool Pad::Freeze(StateWrapper& sw)
const auto& [port, slot] = sioConvertPadToPortAndSlot(unifiedSlot); const auto& [port, slot] = sioConvertPadToPortAndSlot(unifiedSlot);
Host::AddIconOSDMessage(fmt::format("UnfreezePad{}Changed", unifiedSlot), ICON_FA_GAMEPAD, Host::AddIconOSDMessage(fmt::format("UnfreezePad{}Changed", unifiedSlot), ICON_FA_GAMEPAD,
//: {0} and {1} are the port and multitap slot, {2} and {3} are controller types (e.g. "DualShock 2", "Jogcon")
fmt::format(TRANSLATE_FS("Pad", fmt::format(TRANSLATE_FS("Pad",
"Controller port {0}, slot {1} has a {2} connected, but the save state has a " "Controller port {0}, slot {1} has a {2} connected, but the save state has a "
"{3}.\nEjecting {3} and replacing it with {2}."), "{3}.\nEjecting {2} and replacing it with {3}."),
port, slot, port, slot,
GetControllerTypeName(currentPad ? currentPad->GetType() : Pad::ControllerType::NotConnected), GetControllerTypeName(currentPad ? currentPad->GetType() : Pad::ControllerType::NotConnected),
GetControllerTypeName(statePadType))); GetControllerTypeName(statePadType)));

View File

@ -1243,7 +1243,7 @@ namespace usb_msd
{ {
static constexpr const SettingInfo settings[] = { static constexpr const SettingInfo settings[] = {
{SettingInfo::Type::Path, "ImagePathMsd", TRANSLATE_NOOP("USB", "Image Path"), {SettingInfo::Type::Path, "ImagePathMsd", TRANSLATE_NOOP("USB", "Image Path"),
TRANSLATE_NOOP("USB", "Sets the path to image which will back the virtual mass storage device.")}, TRANSLATE_NOOP("USB", "Sets the path to the disk image which will back the virtual mass storage device.")},
}; };
return settings; return settings;
} }
@ -1251,7 +1251,7 @@ namespace usb_msd
{ {
static constexpr const SettingInfo settings[] = { static constexpr const SettingInfo settings[] = {
{SettingInfo::Type::Path, "ImagePathMsac", TRANSLATE_NOOP("USB", "Image Path"), {SettingInfo::Type::Path, "ImagePathMsac", TRANSLATE_NOOP("USB", "Image Path"),
TRANSLATE_NOOP("USB", "Sets the path to image which will back the virtual mass storage device.")}, TRANSLATE_NOOP("USB", "Sets the path to the disk image which will back the virtual mass storage device.")},
}; };
return settings; return settings;
} }