Add localisation support

- Tested with Dutch and Chinese.
- Chinese translation courtesy of @YuzukiTsuru
This commit is contained in:
Floris Bos 2020-05-23 15:57:58 +02:00
parent 224ebebb04
commit 73b9ae764d
5 changed files with 702 additions and 3 deletions

View file

@ -8,7 +8,7 @@ endif()
project(rpi-imager LANGUAGES CXX)
set(IMAGER_VERSION_MAJOR 1)
set(IMAGER_VERSION_MINOR 2)
set(IMAGER_VERSION_MINOR 3)
set(IMAGER_VERSION_STR "${IMAGER_VERSION_MAJOR}.${IMAGER_VERSION_MINOR}")
set(IMAGER_VERSION_CSV "${IMAGER_VERSION_MAJOR},${IMAGER_VERSION_MINOR},0,0")
add_definitions(-DIMAGER_VERSION_STR="${IMAGER_VERSION_STR}")
@ -62,6 +62,13 @@ set(SOURCES "main.cpp" "imagewriter.cpp" "networkaccessmanagerfactory.cpp"
"drivelistitem.cpp" "drivelistmodel.cpp" "downloadthread.cpp" "downloadextractthread.cpp"
"driveformatthread.cpp" "powersaveblocker.cpp" "qml.qrc")
find_package(Qt5 COMPONENTS Core Quick Widgets LinguistTools REQUIRED)
#qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} i18n/rpi-imager_nl.ts i18n/rpi-imager_zh_cn.ts)
qt5_add_translation(QM_FILES i18n/rpi-imager_nl.ts i18n/rpi-imager_zh_cn.ts)
configure_file(i18n/translations.qrc "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY)
set(SOURCES ${SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ${QM_FILES})
if (WIN32)
# Adding WIN32 prevents a console window being opened on Windows
add_executable(${PROJECT_NAME} WIN32 ${SOURCES} ${HEADERS} ${DEPENDENCIES})
@ -69,8 +76,6 @@ else()
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${DEPENDENCIES})
endif()
find_package(Qt5 COMPONENTS Core Quick Widgets REQUIRED)
# Because dependencies are typically not available by default on Windows, build bundled code
if (WIN32)
# Target Windows 7 (needed for drivelist module)

343
i18n/rpi-imager_nl.ts Normal file
View file

@ -0,0 +1,343 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl_NL">
<context>
<name>DownloadExtractThread</name>
<message>
<location filename="../downloadextractthread.cpp" line="166"/>
<source>Error writing to storage</source>
<translation>Fout bij schrijven naar opslag</translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="188"/>
<location filename="../downloadextractthread.cpp" line="348"/>
<source>Error extracting archive: %1</source>
<translation>Fout bij uitpakken archiefbestand: %1</translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="234"/>
<source>Error mounting FAT32 partition</source>
<translation>Fout bij mounten FAT32 partitie</translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="244"/>
<source>Operating system did not mount FAT32 partition</source>
<translation>Besturingssysteem heeft FAT32 partitie niet gemount</translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="267"/>
<source>Error changing to directory &apos;%1&apos;</source>
<translation>Fout bij openen map &apos;%1&apos;</translation>
</message>
</context>
<context>
<name>DownloadThread</name>
<message>
<location filename="../downloadthread.cpp" line="126"/>
<source>Error running diskpart: %1</source>
<translation>Fout bij uitvoeren diskpart: %1</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="147"/>
<source>Error removing existing partitions</source>
<translation>Fout bij verwijderen bestaande partities</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="174"/>
<source>Error running authopen to gain access to disk device &apos;%1&apos;</source>
<translation>Fout bij uitvoeren authopen: &apos;%1&apos;</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="192"/>
<source>Cannot open storage device &apos;%1&apos;.</source>
<translation>Fout bij openen opslagapparaat &apos;%1&apos;.</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="207"/>
<source>Write error while zero&apos;ing out MBR</source>
<translation>Fout bij wissen MBR</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="219"/>
<source>Write error while trying to zero out last part of card.
Card could be advertising wrong capacity (possible counterfeit)</source>
<translation>Fout bij wissen laatste deel van de SD kaart.
Kaart geeft mogelijk onjuiste capaciteit aan (mogelijk counterfeit)</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="523"/>
<source>Error writing to storage (while flushing)</source>
<translation>Fout bij schrijven naar opslag (tijdens flushen)</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="529"/>
<source>Error writing to storage (while fsync)</source>
<translation>Fout bij schrijven naar opslag (tijdens fsync)</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="546"/>
<source>Download corrupt. Hash does not match</source>
<translation>Download corrupt. Hash komt niet overeen</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="576"/>
<source>Error writing first block (partition table)</source>
<translation>Fout bij schrijven naar eerste deel van kaart (partitie tabel)</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="620"/>
<source>Error reading from storage.
SD card may be broken.</source>
<translation>Fout bij lezen van SD kaart. Kaart is mogelijk defect.</translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="638"/>
<source>Verifying write failed. Contents of SD card is different from what was written to it.</source>
<translation>Verificatie mislukt. De gegevens die op de SD kaart staan wijken af van wat er naar geschreven is.</translation>
</message>
</context>
<context>
<name>DriveFormatThread</name>
<message>
<location filename="../driveformatthread.cpp" line="63"/>
<location filename="../driveformatthread.cpp" line="124"/>
<location filename="../driveformatthread.cpp" line="181"/>
<source>Error partitioning: %1</source>
<translation>Fout bij partitioneren: %1</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="84"/>
<source>Error starting fat32format</source>
<translation>Fout bij starten fat32format</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="94"/>
<source>Error running fat32format: %1</source>
<translation>Fout bij uitvoeren fat32format: %1</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="104"/>
<source>Error determining new drive letter</source>
<translation>Fout bij vaststellen nieuwe letter van schijfstation</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="109"/>
<source>Invalid device: %1</source>
<translation>Ongeldig device: %1</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="144"/>
<source>Error formatting (through udisks2)</source>
<translation>Fout bij formatteren (via udisks2)</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="170"/>
<source>Error starting sfdisk</source>
<translation>Fout bij starten sfdisk</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="192"/>
<source>Error starting mkfs.fat</source>
<translation>Fout bij starten mkfs.fat</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="202"/>
<source>Error running mkfs.fat: %1</source>
<translation>Fout bij uitvoeren mkfs.fat: %1</translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="209"/>
<source>Formatting not implemented for this platform</source>
<translation>Formatteren is niet geimplementeerd op dit besturingssysteem</translation>
</message>
</context>
<context>
<name>ImageWriter</name>
<message>
<location filename="../imagewriter.cpp" line="152"/>
<source>Storage capacity is not large enough.
Needs to be at least %1 GB</source>
<translation>Opslagcapaciteit niet groot genoeg.
Deze dient minimaal %1 GB te zijn</translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="158"/>
<source>Input file is not a valid disk image.
File size %1 bytes is not a multiple of 512 bytes.</source>
<translation>Invoerbestand is geen disk image.
Bestandsgrootte %1 bytes is geen veelvoud van 512 bytes.</translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="178"/>
<source>Downloading and writing image</source>
<translation>Downloaden en schrijven van image</translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="379"/>
<source>Select image</source>
<translation>Selecteer image</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.qml" line="23"/>
<source>Raspberry Pi Imager v%1</source>
<translation>Raspberry Pi Imager v%1</translation>
</message>
<message>
<location filename="../main.qml" line="68"/>
<location filename="../main.qml" line="276"/>
<source>Operating System</source>
<translation>Besturingssysteem</translation>
</message>
<message>
<location filename="../main.qml" line="80"/>
<source>CHOOSE OS</source>
<translation>SELECTEER OS</translation>
</message>
<message>
<location filename="../main.qml" line="102"/>
<location filename="../main.qml" line="584"/>
<source>SD Card</source>
<translation>SD kaart</translation>
</message>
<message>
<location filename="../main.qml" line="114"/>
<location filename="../main.qml" line="901"/>
<source>CHOOSE SD CARD</source>
<translation>SELECTEER SD KAART</translation>
</message>
<message>
<location filename="../main.qml" line="141"/>
<source>WRITE</source>
<translation>SCHRIJF</translation>
</message>
<message>
<location filename="../main.qml" line="156"/>
<location filename="../main.qml" line="846"/>
<source>Writing... %1%</source>
<translation>Schrijven... %1%</translation>
</message>
<message>
<location filename="../main.qml" line="194"/>
<source>CANCEL WRITE</source>
<translation>Annuleer schrijven</translation>
</message>
<message>
<location filename="../main.qml" line="197"/>
<location filename="../main.qml" line="843"/>
<source>Cancelling...</source>
<translation>Annuleren...</translation>
</message>
<message>
<location filename="../main.qml" line="208"/>
<source>CANCEL VERIFY</source>
<translation>ANNULEER VERIFICATIE</translation>
</message>
<message>
<location filename="../main.qml" line="211"/>
<location filename="../main.qml" line="866"/>
<location filename="../main.qml" line="919"/>
<source>Finalizing...</source>
<translation>Afronden...</translation>
</message>
<message>
<location filename="../main.qml" line="338"/>
<location filename="../main.qml" line="895"/>
<source>Erase</source>
<translation>Wissen</translation>
</message>
<message>
<location filename="../main.qml" line="339"/>
<source>Format card as FAT32</source>
<translation>Formatteer kaart als FAT32</translation>
</message>
<message>
<location filename="../main.qml" line="346"/>
<source>Use custom</source>
<translation>Gebruik eigen bestand</translation>
</message>
<message>
<location filename="../main.qml" line="347"/>
<source>Select a custom .img from your computer</source>
<translation>Selecteer een eigen .img bestand</translation>
</message>
<message>
<location filename="../main.qml" line="354"/>
<location filename="../main.qml" line="507"/>
<source>Error parsing os_list.json</source>
<translation>Fout bij parsen os_list.json</translation>
</message>
<message>
<location filename="../main.qml" line="378"/>
<source>Back</source>
<translation>Terug</translation>
</message>
<message>
<location filename="../main.qml" line="379"/>
<source>Go back to main menu</source>
<translation>Terug naar hoofdmenu</translation>
</message>
<message>
<location filename="../main.qml" line="434"/>
<source>Released: %1</source>
<translation>Release datum: %1</translation>
</message>
<message>
<location filename="../main.qml" line="437"/>
<source>Cached on your computer</source>
<translation>Opgeslagen op computer</translation>
</message>
<message>
<location filename="../main.qml" line="439"/>
<source>Online - %1 GB download</source>
<translation>Online %1 GB download</translation>
</message>
<message>
<location filename="../main.qml" line="660"/>
<source>Mounted as %1</source>
<translation>Mounted op %1</translation>
</message>
<message>
<location filename="../main.qml" line="775"/>
<source>QUIT APP</source>
<translation>AFSLUITEN</translation>
</message>
<message>
<location filename="../main.qml" line="785"/>
<source>CONTINUE</source>
<translation>VERDER GAAN</translation>
</message>
<message>
<location filename="../main.qml" line="825"/>
<source>Error downloading OS list from Internet</source>
<translation>Fout bij downloaden van lijst met besturingssystemen</translation>
</message>
<message>
<location filename="../main.qml" line="869"/>
<source>Verifying... %1%</source>
<translation>Verifiëren... %1%</translation>
</message>
<message>
<location filename="../main.qml" line="887"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
<location filename="../main.qml" line="894"/>
<source>Write Successful</source>
<translation>Klaar met schrijven</translation>
</message>
<message>
<location filename="../main.qml" line="896"/>
<source>&lt;b&gt;%2&lt;/b&gt; has been erased&lt;br&gt;&lt;br&gt;You can now remove the SD card from the reader</source>
<translation>&lt;b&gt;%2&lt;/b&gt; is gewist&lt;br&gt;&lt;br&gt;U kunt nu de SD kaart uit de lezer halen</translation>
</message>
<message>
<location filename="../main.qml" line="898"/>
<source>&lt;b&gt;%1&lt;/b&gt; has been written to &lt;b&gt;%2&lt;/b&gt;&lt;br&gt;&lt;br&gt;You can now remove the SD card from the reader</source>
<translation type="unfinished">&lt;b&gt;%1&lt;/b&gt; is geschreven naar &lt;b&gt;%2&lt;/b&gt;&lt;br&gt;&lt;br&gt;U kunt nu de SD kaart uit de lezer halen</translation>
</message>
</context>
</TS>

340
i18n/rpi-imager_zh_cn.ts Normal file
View file

@ -0,0 +1,340 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>DownloadExtractThread</name>
<message>
<location filename="../downloadextractthread.cpp" line="166"/>
<source>Error writing to storage</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="188"/>
<location filename="../downloadextractthread.cpp" line="348"/>
<source>Error extracting archive: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="234"/>
<source>Error mounting FAT32 partition</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="244"/>
<source>Operating system did not mount FAT32 partition</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadextractthread.cpp" line="267"/>
<source>Error changing to directory &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DownloadThread</name>
<message>
<location filename="../downloadthread.cpp" line="126"/>
<source>Error running diskpart: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="147"/>
<source>Error removing existing partitions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="174"/>
<source>Error running authopen to gain access to disk device &apos;%1&apos;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="192"/>
<source>Cannot open storage device &apos;%1&apos;.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="207"/>
<source>Write error while zero&apos;ing out MBR</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="219"/>
<source>Write error while trying to zero out last part of card.
Card could be advertising wrong capacity (possible counterfeit)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="523"/>
<source>Error writing to storage (while flushing)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="529"/>
<source>Error writing to storage (while fsync)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="546"/>
<source>Download corrupt. Hash does not match</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="576"/>
<source>Error writing first block (partition table)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="620"/>
<source>Error reading from storage.
SD card may be broken.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../downloadthread.cpp" line="638"/>
<source>Verifying write failed. Contents of SD card is different from what was written to it.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DriveFormatThread</name>
<message>
<location filename="../driveformatthread.cpp" line="63"/>
<location filename="../driveformatthread.cpp" line="124"/>
<location filename="../driveformatthread.cpp" line="181"/>
<source>Error partitioning: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="84"/>
<source>Error starting fat32format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="94"/>
<source>Error running fat32format: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="104"/>
<source>Error determining new drive letter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="109"/>
<source>Invalid device: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="144"/>
<source>Error formatting (through udisks2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="170"/>
<source>Error starting sfdisk</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="192"/>
<source>Error starting mkfs.fat</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="202"/>
<source>Error running mkfs.fat: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../driveformatthread.cpp" line="209"/>
<source>Formatting not implemented for this platform</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImageWriter</name>
<message>
<location filename="../imagewriter.cpp" line="152"/>
<source>Storage capacity is not large enough.
Needs to be at least %1 GB</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="158"/>
<source>Input file is not a valid disk image.
File size %1 bytes is not a multiple of 512 bytes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="178"/>
<source>Downloading and writing image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../imagewriter.cpp" line="379"/>
<source>Select image</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../main.qml" line="23"/>
<source>Raspberry Pi Imager v%1</source>
<translation> v%1</translation>
</message>
<message>
<location filename="../main.qml" line="68"/>
<location filename="../main.qml" line="276"/>
<source>Operating System</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="80"/>
<source>CHOOSE OS</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="102"/>
<location filename="../main.qml" line="584"/>
<source>SD Card</source>
<translation>SD卡</translation>
</message>
<message>
<location filename="../main.qml" line="114"/>
<location filename="../main.qml" line="901"/>
<source>CHOOSE SD CARD</source>
<translation>SD卡</translation>
</message>
<message>
<location filename="../main.qml" line="141"/>
<source>WRITE</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="156"/>
<location filename="../main.qml" line="846"/>
<source>Writing... %1%</source>
<translation>...%1%</translation>
</message>
<message>
<location filename="../main.qml" line="194"/>
<source>CANCEL WRITE</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="197"/>
<location filename="../main.qml" line="843"/>
<source>Cancelling...</source>
<translation>...</translation>
</message>
<message>
<location filename="../main.qml" line="208"/>
<source>CANCEL VERIFY</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="211"/>
<location filename="../main.qml" line="866"/>
<location filename="../main.qml" line="919"/>
<source>Finalizing...</source>
<translation>...</translation>
</message>
<message>
<location filename="../main.qml" line="338"/>
<location filename="../main.qml" line="895"/>
<source>Erase</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="339"/>
<source>Format card as FAT32</source>
<translation>SD卡为FAT32格式</translation>
</message>
<message>
<location filename="../main.qml" line="346"/>
<source>Use custom</source>
<translation>使</translation>
</message>
<message>
<location filename="../main.qml" line="347"/>
<source>Select a custom .img from your computer</source>
<translation>使</translation>
</message>
<message>
<location filename="../main.qml" line="354"/>
<location filename="../main.qml" line="507"/>
<source>Error parsing os_list.json</source>
<translation> os_list.json </translation>
</message>
<message>
<location filename="../main.qml" line="378"/>
<source>Back</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="379"/>
<source>Go back to main menu</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="434"/>
<source>Released: %1</source>
<translation>...%1</translation>
</message>
<message>
<location filename="../main.qml" line="437"/>
<source>Cached on your computer</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="439"/>
<source>Online - %1 GB download</source>
<translation>%1 GB</translation>
</message>
<message>
<location filename="../main.qml" line="660"/>
<source>Mounted as %1</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../main.qml" line="775"/>
<source>QUIT APP</source>
<translation>退</translation>
</message>
<message>
<location filename="../main.qml" line="785"/>
<source>CONTINUE</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="825"/>
<source>Error downloading OS list from Internet</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="869"/>
<source>Verifying... %1%</source>
<translation>...%1%</translation>
</message>
<message>
<location filename="../main.qml" line="887"/>
<source>Error</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="894"/>
<source>Write Successful</source>
<translation></translation>
</message>
<message>
<location filename="../main.qml" line="896"/>
<source>&lt;b&gt;%2&lt;/b&gt; has been erased&lt;br&gt;&lt;br&gt;You can now remove the SD card from the reader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.qml" line="898"/>
<source>&lt;b&gt;%1&lt;/b&gt; has been written to &lt;b&gt;%2&lt;/b&gt;&lt;br&gt;&lt;br&gt;You can now remove the SD card from the reader</source>
<translation>&lt;b&gt;%1&lt;/b&gt; &lt;b&gt;%2&lt;/b&gt;&lt;br&gt;&lt;br&gt;SD</translation>
</message>
</context>
</TS>

6
i18n/translations.qrc Normal file
View file

@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/i18n">
<file>rpi-imager_nl.qm</file>
<file>rpi-imager_zh_cn.qm</file>
</qresource>
</RCC>

View file

@ -16,6 +16,8 @@
#include <QtWidgets/QApplication>
#include <QMessageLogContext>
#include <QQuickWindow>
#include <QTranslator>
#include <QLocale>
static QTextStream cerr(stderr);
@ -40,6 +42,9 @@ int main(int argc, char *argv[])
ImageWriter imageWriter;
NetworkAccessManagerFactory namf;
QQmlApplicationEngine engine;
QTranslator translator;
if (translator.load(QLocale(), "rpi-imager", "_", QLatin1String(":/i18n")))
QCoreApplication::installTranslator(&translator);
/* Parse commandline arguments (if any) */
QString customRepo;