diff --git a/packaging/nsis/wireshark.nsi b/packaging/nsis/wireshark.nsi
index cb7c2ba051..159ed80fe6 100644
--- a/packaging/nsis/wireshark.nsi
+++ b/packaging/nsis/wireshark.nsi
@@ -227,7 +227,7 @@ Function .onInit
MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
"$OLD_DISPLAYNAME is already installed.\
- $\n$\nWould you like to uninstall it first?" \
+ $\n$\nWould you like to uninstall it first?" \
/SD IDYES \
IDYES prep_uninstaller \
IDNO done
diff --git a/packaging/portableapps/win32/WiresharkPortable.nsi b/packaging/portableapps/win32/WiresharkPortable.nsi
index 50538ac646..38ae7ebb65 100755
--- a/packaging/portableapps/win32/WiresharkPortable.nsi
+++ b/packaging/portableapps/win32/WiresharkPortable.nsi
@@ -213,16 +213,16 @@ Section "Main"
EnvironmentVariables:
; set the U3 environment variables
StrCpy $PDRIVE $EXEDIR 2
- System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_SERIAL", "0000060414068917").r0'
+ ;System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_SERIAL", "0000060414068917").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_PATH", "$PDRIVE").r0'
- System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DOCUMENT_PATH", "$PDRIVE\Documents").r0'
- System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR", "Wireshark Developers").r0'
+ ;System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DOCUMENT_PATH", "$PDRIVE\Documents").r0'
+ ;System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR", "Wireshark Developers").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_PRODUCT", "PortableApps").r0'
- System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR_ID", "0000").r0'
+ ;System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_VENDOR_ID", "0000").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_APP_DATA_PATH", "$EXEDIR\Data").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_HOST_EXEC_PATH", "$EXEDIR\App\Wireshark").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_DEVICE_EXEC_PATH", "$EXEDIR\App\Wireshark").r0'
- System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_ENV_VERSION", "1.0").r0'
+ ;System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_ENV_VERSION", "1.0").r0'
System::Call 'Kernel32::SetEnvironmentVariableA(t,t) i("U3_ENV_LANGUAGE", "1033").r0'
StrCmp $SECONDARYLAUNCH "true" LaunchAndExit
diff --git a/ui/qt/CMakeLists.txt b/ui/qt/CMakeLists.txt
index 7269d7abe6..c4ba1fc528 100644
--- a/ui/qt/CMakeLists.txt
+++ b/ui/qt/CMakeLists.txt
@@ -194,6 +194,7 @@ set(QTSHARK_QRC
set(QTSHARK_TS
qtshark_de.ts
+ qtshark_en.ts # lupdate -pluralonly
qtshark_fr.ts
qtshark_zh_CN.ts
)
diff --git a/ui/qt/Makefile.common b/ui/qt/Makefile.common
index beac38ac59..7ca3cc991e 100644
--- a/ui/qt/Makefile.common
+++ b/ui/qt/Makefile.common
@@ -203,20 +203,23 @@ QRC_FILES = \
#
# .ts files.
+# qtshark_en should be pluralonly.
#
TS_FILES = \
+ qtshark_de.ts \
+ qtshark_en.ts \
qtshark_fr.ts \
- qtshark_zh_CN.ts \
- qtshark_de.ts
+ qtshark_zh_CN.ts
#
# .qm files.
#
# Should be auto-generated ?
QM_FILES = \
+ qtshark_de.qm \
+ qtshark_en.qm \
qtshark_fr.qm \
- qtshark_zh_CN.qm \
- qtshark_de.qm
+ qtshark_zh_CN.qm
#
# The .rcc.cpp files generated from them.
diff --git a/ui/qt/QtShark.pro b/ui/qt/QtShark.pro
index 83abfe558e..c7ba7da1e9 100644
--- a/ui/qt/QtShark.pro
+++ b/ui/qt/QtShark.pro
@@ -438,10 +438,12 @@ RESOURCES += \
welcome.qrc \
+# qtshark_en should be pluralonly.
TRANSLATIONS = \
qtshark_de.ts \
- qtshark_zh_CN.ts \
- qtshark_fr.ts
+ qtshark_en.ts \
+ qtshark_fr.ts \
+ qtshark_zh_CN.ts
ICON = ../../packaging/macosx/Resources/Wireshark.icns
diff --git a/ui/qt/follow_stream_dialog.cpp b/ui/qt/follow_stream_dialog.cpp
index 1590afc064..b1126f49d1 100644
--- a/ui/qt/follow_stream_dialog.cpp
+++ b/ui/qt/follow_stream_dialog.cpp
@@ -136,8 +136,9 @@ void FollowStreamDialog::fillHintLabel(int text_pos)
hint = QString("Packet %1. ").arg(pkt);
}
- hint.append(QString("%1 client pkts, %2 server pkts, %3 turns.")
- .arg(client_packet_count_).arg(server_packet_count_).arg(turns_));
+ hint += tr("%Ln client pkt(s), ", "", client_packet_count_)
+ + tr("%Ln server pkt(s), ", "", server_packet_count_)
+ + tr("%Ln turn(s).", "", turns_);
if (pkt > 0) {
hint.append(QString(" Click to select."));
diff --git a/ui/qt/i18n.qrc b/ui/qt/i18n.qrc
index 48eed8f265..e5bafa310d 100644
--- a/ui/qt/i18n.qrc
+++ b/ui/qt/i18n.qrc
@@ -22,7 +22,8 @@
qtshark_de.qm
- qtshark_zh_CN.qm
+ qtshark_en.qm
qtshark_fr.qm
+ qtshark_zh_CN.qm
diff --git a/ui/qt/qtshark_en.qm b/ui/qt/qtshark_en.qm
new file mode 100755
index 0000000000..fc4bf1e190
Binary files /dev/null and b/ui/qt/qtshark_en.qm differ
diff --git a/ui/qt/qtshark_en.ts b/ui/qt/qtshark_en.ts
new file mode 100755
index 0000000000..6b4b312cae
--- /dev/null
+++ b/ui/qt/qtshark_en.ts
@@ -0,0 +1,50 @@
+
+
+
+
+ FollowStreamDialog
+
+
+ %Ln client pkt(s),
+
+ %Ln client pkt,
+ %Ln client pkts,
+
+
+
+
+ %Ln server pkt(s),
+
+ %Ln server pkt,
+ %Ln server pkts,
+
+
+
+
+ %Ln turn(s).
+
+ %Ln turn.
+ %Ln turns.
+
+
+
+
+ SequenceDialog
+
+
+ %Ln node(s)
+
+ %Ln node
+ %Ln nodes
+
+
+
+
+ %Ln item(s)
+
+ %Ln item
+ %Ln items
+
+
+
+
diff --git a/ui/qt/sequence_dialog.cpp b/ui/qt/sequence_dialog.cpp
index dfb954e124..f814e1c5bd 100644
--- a/ui/qt/sequence_dialog.cpp
+++ b/ui/qt/sequence_dialog.cpp
@@ -281,7 +281,8 @@ void SequenceDialog::mouseMoved(QMouseEvent *event)
}
if (hint.isEmpty()) {
- hint += QString("%1 nodes, %2 items").arg(seq_analysis_.num_nodes).arg(num_items_);
+ hint += tr("%Ln node(s)", "", seq_analysis_.num_nodes) + QString(", ")
+ + tr("%Ln item(s)", "", num_items_);
}
hint.prepend("");
diff --git a/wsutil/u3.c b/wsutil/u3.c
index 217d9f3bac..73bf80b9bd 100644
--- a/wsutil/u3.c
+++ b/wsutil/u3.c
@@ -89,8 +89,6 @@ void u3_runtime_info(GString *str)
g_string_append(str, " from a ");
}
- g_string_append(str, " U3 device");
-
if((u3devicepath_lcl =
#ifdef _WIN32
getenv_utf8