aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--i18n.md30
-rw-r--r--po/uk.po90
-rw-r--r--share/applications/isodumper.desktop1
-rw-r--r--tools/po-compile.sh17
-rwxr-xr-xtools/po-update.sh67
5 files changed, 159 insertions, 46 deletions
diff --git a/i18n.md b/i18n.md
new file mode 100644
index 0000000..2049415
--- /dev/null
+++ b/i18n.md
@@ -0,0 +1,30 @@
+# Translating IsoDumper
+
+First, make sure you have installed the `gettext` package.
+
+Here are the steps to add/update a translation (you should run all scripts from
+the source root):
+
+1. Get an up-to-date copy of the source files. Preferrably, make a clone on
+ GitHub and clone it locally on your machine; this way you can later make a
+ pull request to the main project.
+
+2. Run `./tools/po-update.sh <language>`; it will create/update the file
+ `./po/<language>.po`.
+
+3. Edit `./po/<language>.po` with your favourite editor (just make sure it saves
+ the file with the UTF-8 encoding). For each string in english (msgid), edit
+ the translation (msgstr); if you leave msgstr empty, the string will remain
+ untranslated.
+
+ Alternatively, you can use the excellent `poedit`.
+
+4. Run `./tools/po-compile.sh`. It will bring up-to-date all the compiled
+ language files, necessary at runtime.
+
+5. Start IsoDumper (`./bin/isodumper`). By default it will pick up the system languge
+ from your environment; to start it in another language, run
+ `LANGUAGE=<language> ./bin/isodumper`.
+
+You can edit the translation iteratively, just repeat from step 3.
+If the upstream changes, do a `git pull` and then repeat from step 2.
diff --git a/po/uk.po b/po/uk.po
index 35f23c8..82fa865 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,22 +1,22 @@
# Ukrainian translation for usb-imagewriter
-# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
# This file is distributed under the same license as the usb-imagewriter package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
#
+# Yuri Chornoivan <yurchor@ukr.net>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: usb-imagewriter\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-19 22:15+0200\n"
-"PO-Revision-Date: 2009-03-04 20:27+0000\n"
-"Last-Translator: Вова Щербан \\ Vova Svoka <Unknown>\n"
-"Language-Team: Ukrainian <uk@li.org>\n"
+"PO-Revision-Date: 2013-09-25 18:56+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2009-06-12 12:08+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
+"X-Generator: Lokalize 1.5\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<"
+"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ../lib/isodumper.py:113
msgid "Image: "
@@ -24,19 +24,19 @@ msgstr "Образ: "
#: ../lib/isodumper.py:114
msgid "Target Device: "
-msgstr "Цільовий пристрій: "
+msgstr "Пристрій призначення: "
#: ../lib/isodumper.py:130
msgid "Unmounting all partitions of "
-msgstr "Відключення всіх розділів "
+msgstr "Демонтуємо усі розділи "
#: ../lib/isodumper.py:132
msgid "Trying to unmount "
-msgstr "Пробую відключити "
+msgstr "Намагаємося демонтувати "
#: ../lib/isodumper.py:138 ../lib/isodumper.py:144
msgid "Error, umount "
-msgstr "Помилка відключення "
+msgstr "Помилка демонтування "
#: ../lib/isodumper.py:138
msgid " was terminated by signal "
@@ -44,11 +44,11 @@ msgstr " було перервано сигналом "
#: ../lib/isodumper.py:142
msgid " successfully unmounted"
-msgstr " успішно відключено"
+msgstr " успішно демонтовано"
#: ../lib/isodumper.py:144
msgid " returned "
-msgstr " повернув "
+msgstr " повернуто "
#: ../lib/isodumper.py:147
msgid "Execution failed: "
@@ -56,33 +56,31 @@ msgstr "Помилка виконання: "
#: ../lib/isodumper.py:155
msgid "Could not read mtab !"
-msgstr "Не можу прочитати файл mtab!"
+msgstr "Не вдалося прочитати файл mtab!"
#: ../lib/isodumper.py:164 ../lib/isodumper.py:187
msgid "Reading error."
-msgstr ""
+msgstr "Помилка читання."
#: ../lib/isodumper.py:170
msgid "You have not the rights for writing on the device"
-msgstr ""
+msgstr "У вас немає прав доступу для запису на пристрій"
#: ../lib/isodumper.py:175
msgid "Writing "
-msgstr "Запис "
+msgstr "Записуємо "
#: ../lib/isodumper.py:175
msgid " to "
-msgstr " до "
+msgstr " на "
#: ../lib/isodumper.py:176
-#, fuzzy
msgid "Executing copy from "
-msgstr "Виконання: dd if="
+msgstr "Виконуємо копіювання з "
#: ../lib/isodumper.py:192
-#, fuzzy
msgid "Writing error."
-msgstr "Запис "
+msgstr "Помилка під час спроби запису."
#: ../lib/isodumper.py:197
msgid "Wrote: "
@@ -94,15 +92,15 @@ msgstr "Образ "
#: ../lib/isodumper.py:205
msgid " successfully written to"
-msgstr " успішно записано до"
+msgstr " успішно записано на"
#: ../lib/isodumper.py:206
msgid "Bytes written: "
-msgstr ""
+msgstr "Записано байтів: "
#: ../share/isodumper/isodumper.glade.h:1
msgid "IsoDumper"
-msgstr ""
+msgstr "IsoDumper"
#: ../share/isodumper/isodumper.glade.h:2
msgid ""
@@ -114,14 +112,13 @@ msgid ""
" the device during the following operation."
msgstr ""
"<b>Попередження</b>\n"
-" Це призведе до <b>втрати всіх даних</b> \n"
-" на цільовому пристрої, ви хочете продовжити?\n"
+" Це призведе до <b>втрати усіх даних</b> \n"
+" на пристрої призначення, ви хочете продовжити?\n"
"\n"
-" Якщо Ви скажете ТАК, будь ласка, <b>не відключайте</b>\n"
+" Якщо ви підтвердите запис, будь ласка, <b>не демонтуйте</b>\n"
" пристрій протягом наступної операції."
#: ../share/isodumper/isodumper.glade.h:8
-#, fuzzy
msgid ""
"<b>Error</b>\n"
" Something went wrong, please see the details\n"
@@ -131,11 +128,12 @@ msgid ""
" homedir/.isodumper when the application is closed."
msgstr ""
"<b>Помилка</b>\n"
-" Щось пішло не так, будьласка, передивіться\n"
-" вікно деталей, щоб зрозуміти помилку.\n"
+" Щось пішло не так, будь ласка, ознайомтеся\n"
+" з подробицями, щоб визначити причину.\n"
" \n"
-" Файл журналу з вмістом помилки буде записано до\n"
-" Вашої домашньої теки, якщо додаток буде завершено."
+" Файл журналу isodumper.log з текстом повідомлень буде записано до\n"
+" вашої домашньої теки (підтека .isodumper), коли роботу програми буде\n"
+" завершено."
#: ../share/isodumper/isodumper.glade.h:14
msgid "Write Image:"
@@ -143,7 +141,7 @@ msgstr "Записати образ:"
#: ../share/isodumper/isodumper.glade.h:15
msgid "Select an image file to be written to the device"
-msgstr "Виберіть файл образу, що буде записано на пристрій"
+msgstr "Виберіть файл образу, який буде записано на пристрій"
#: ../share/isodumper/isodumper.glade.h:16
msgid "Select Image"
@@ -151,7 +149,7 @@ msgstr "Виберіть образ"
#: ../share/isodumper/isodumper.glade.h:17
msgid "to"
-msgstr "до"
+msgstr "на"
#: ../share/isodumper/isodumper.glade.h:18
msgid "Select target device to write the image to"
@@ -163,11 +161,11 @@ msgstr " "
#: ../share/isodumper/isodumper.glade.h:20
msgid "Details"
-msgstr "Докладніше"
+msgstr "Подробиці"
#: ../share/isodumper/isodumper.glade.h:21
msgid "Write to device"
-msgstr "Записати на пристрій:"
+msgstr "Записати на пристрій"
#: ../share/isodumper/isodumper.glade.h:22
msgid ""
@@ -178,13 +176,12 @@ msgid ""
" to which the image can be written."
msgstr ""
"<b>Помилка</b>\n"
-" Не знайдено цільового пристрою. \n"
+" Не знайдено пристрою призначення. \n"
"\n"
-" Піключіть USB пристрій,\n"
-" на який повинно записати образ."
+" З’єднайте з комп’ютером пристрій USB,\n"
+" на який слід записати образ."
#: ../share/isodumper/isodumper.glade.h:27
-#, fuzzy
msgid ""
"<b>Success</b>\n"
" The image was successfully written to the\n"
@@ -195,12 +192,13 @@ msgid ""
" you close the application."
msgstr ""
"<b>Успіх</b>\n"
-" Образ успішно записано до \n"
-" цільового пристрою.\n"
+" Образ успішно записано на пристрій\n"
+" призначення.\n"
" \n"
-" Ви можете вільно вимкнути його,\n"
-" Файл журналу дій буде записнано до Вашої\n"
-" домашньої теки, якщо додаток буде закрито."
+" Ви можете від’єднати пристрій від комп’ютера.\n"
+" Файл журналу дій isodumper.log записано буде записано\n"
+" до теки .isodumper вашої домашньої теки, щойно роботу\n"
+" програми буде завершено."
#~ msgid "The dd process ended with an error !"
#~ msgstr "Виконання dd завершилось з помилкою!"
diff --git a/share/applications/isodumper.desktop b/share/applications/isodumper.desktop
index 990312e..877e624 100644
--- a/share/applications/isodumper.desktop
+++ b/share/applications/isodumper.desktop
@@ -4,6 +4,7 @@ Comment=A GUI tool to write .img and .iso files to USB Keys
Comment[fr]=Outil graphique pour écrire des fichiers .IMG et .ISO sur clés USB
Comment[de]=Ein Programm zum scheiben von *.img and *.iso Dateien auf USB-Sicks
Comment[pt]=Um Programa para gravar ficheiros *.img e *.iso em dispositivos USB
+Comment[uk]=Програма з графічним інтерфейсом для запису файлів img та iso на носії USB
Icon=isodumper.png
Exec=isodumper
Type=Application
diff --git a/tools/po-compile.sh b/tools/po-compile.sh
new file mode 100644
index 0000000..2b4d364
--- /dev/null
+++ b/tools/po-compile.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+cd "$(readlink -f "$(dirname "$0")/..")"
+
+find "$PWD/po" -type f -name '*.po' | \
+while read po_file; do
+ language="$(basename "$po_file")"
+ language="${language%.po}"
+ target="$PWD/po/$language/LC_MESSAGES/isodumper.mo"
+ /bin/mkdir --parents "$(dirname "$target")"
+ /usr/bin/msgfmt \
+ --check \
+ --output-file="$target" \
+ "$po_file"
+done
diff --git a/tools/po-update.sh b/tools/po-update.sh
new file mode 100755
index 0000000..27c2606
--- /dev/null
+++ b/tools/po-update.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+if test -z "$1"; then
+ echo "Use: $0 <locale>"
+ exit 2
+fi
+LL_CC="$1"
+shift
+
+set -e
+
+cd "$(readlink -f "$(dirname "$0")/..")"
+
+VERSION=(0.1)
+DOMAIN=(isodumper)
+
+SOURCE_FILES=$(/bin/mktemp --tmpdir $DOMAIN-po-update-XXXXXX)
+find "lib" -name '*.py' >"$SOURCE_FILES"
+
+POT_DIR="$PWD/po"
+test -d "$POT_DIR"
+
+POT_FILE="$POT_DIR/$DOMAIN.pot"
+
+/usr/bin/xgettext \
+ --package-name "$DOMAIN" \
+ --package-version "$VERSION" \
+ --default-domain="$L_NAME" \
+ --language=Python --from-code=UTF-8 --files-from="$SOURCE_FILES" \
+ --no-escape --indent --add-location --sort-by-file \
+ --add-comments=I18N \
+ --output="$POT_FILE"
+
+/bin/sed --in-place --expression="s/charset=CHARSET/charset=UTF-8/" "$POT_FILE"
+
+PO_FILE="$POT_DIR/$LL_CC.po"
+
+test -r "$PO_FILE" || /usr/bin/msginit \
+ --no-translator --locale="$LL_CC" \
+ --input="$POT_FILE" \
+ --output-file="$PO_FILE"
+
+#unfmt() {
+# local SOURCE="/usr/share/locale/$LL_CC/LC_MESSAGES/$1.mo"
+# if [ ! -f $SOURCE ]
+# then
+# local SOURCE="/usr/share/locale-langpack/$LL_CC/LC_MESSAGES/$1.mo"
+# fi
+# local TARGET="$(mktemp --tmpdir $1-$LL_CC-XXXXXX.po)"
+# /usr/bin/msgunfmt \
+# --no-escape --indent \
+# --output-file="$TARGET" \
+# "$SOURCE"
+# echo "$TARGET"
+#}
+
+#/usr/bin/msgmerge \
+# --update --no-fuzzy-matching \
+# --no-escape --indent --add-location --sort-by-file \
+# --lang="$LL_CC" \
+# --compendium="$(unfmt gtk30)" \
+# --compendium="$(unfmt gtk30-properties)" \
+# "$PO_FILE" "$POT_FILE"
+
+# /bin/sed --in-place --expression="s/Language: \\\\n/Language: $L_NAME\\\\n/" "$PO_FILE"
+
+echo "Language file is $PO_FILE"