diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 022a327..d1d6ebf 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -78,5 +78,9 @@ jobs: contains(github.event.head_commit.message, '[run-ci]') steps: - uses: actions/checkout@v2 + - name: Download Dependencies + run: | + sudo apt update -qq + sudo apt install gettext -qq - name: Build Burn-My-Windows run: make diff --git a/.gitignore b/.gitignore index 77585ec..11da693 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.blend1 *.blend2 *.blend3 +/locale /schemas/gschemas.compiled /resources/burn-my-windows.gresource /resources/burn-my-windows.gresource.xml \ No newline at end of file diff --git a/Makefile b/Makefile index 6dc34d4..c6d8430 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,13 @@ SHELL := /bin/bash JS_FILES = $(shell find -type f -and \( -name "*.js" \)) +UI_FILES = $(shell find -type f -and \( -name "*.ui" \)) RESOURCE_FILES = $(shell find resources -mindepth 2 -type f) -.PHONY: zip install uninstall clean +LOCALES_PO = $(wildcard po/*.po) +LOCALES_MO = $(patsubst po/%.po,locale/%/LC_MESSAGES/burn-my-windows.mo,$(LOCALES_PO)) + +.PHONY: zip install uninstall all-po pot clean zip: burn-my-windows@schneegans.github.com.zip @@ -14,23 +18,31 @@ install: burn-my-windows@schneegans.github.com.zip uninstall: gnome-extensions uninstall "burn-my-windows@schneegans.github.com" +all-po: $(LOCALES_PO) + +pot: $(JS_FILES) $(UI_FILES) + @echo "Generating 'burn-my-windows.pot'..." + @xgettext --from-code=UTF-8 \ + --add-comments=Translators \ + --copyright-holder="Simon Schneegans" \ + --package-name="Burn-My-Windows" \ + --output=po/burn-my-windows.pot \ + $(JS_FILES) $(UI_FILES) + clean: rm -rf \ burn-my-windows@schneegans.github.com.zip \ resources/burn-my-windows.gresource \ resources/burn-my-windows.gresource.xml \ - schemas/gschemas.compiled + schemas/gschemas.compiled \ + locale \ + ui/*.ui~ \ + po/*.po~ -burn-my-windows@schneegans.github.com.zip: schemas/gschemas.compiled resources/burn-my-windows.gresource $(JS_FILES) - @# Check if the VERSION variable was passed and set version to it - @if [[ "$(VERSION)" != "" ]]; then \ - sed -i "s| \"version\":.*| \"version\": $(VERSION)|g" metadata.json; \ - fi - @# TODO Maybe echo version number of the release that was built, in order to facilitate double-checking before publishing it? - +burn-my-windows@schneegans.github.com.zip: schemas/gschemas.compiled resources/burn-my-windows.gresource $(JS_FILES) $(LOCALES_MO) @echo "Packing zip file..." @rm --force burn-my-windows@schneegans.github.com.zip - @zip -r burn-my-windows@schneegans.github.com.zip -- *.js src/*.js resources/burn-my-windows.gresource schemas/gschemas.compiled metadata.json LICENSE + @zip -r burn-my-windows@schneegans.github.com.zip -- *.js src/*.js resources/burn-my-windows.gresource schemas/gschemas.compiled $(LOCALES_MO) metadata.json LICENSE @#Check if the zip size is too big to be uploaded @if [[ "$$(stat -c %s burn-my-windows@schneegans.github.com.zip)" -gt 4096000 ]]; then \ @@ -48,4 +60,15 @@ resources/burn-my-windows.gresource.xml: $(RESOURCE_FILES) schemas/gschemas.compiled: schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml @echo "Compiling schemas..." - @glib-compile-schemas schemas \ No newline at end of file + @glib-compile-schemas schemas + +locale/%/LC_MESSAGES/burn-my-windows.mo: po/%.po + @echo "Compiling $@" + @mkdir -p locale/$*/LC_MESSAGES + @msgfmt -c -o $@ $< + +po/%.po: + @echo "Updating $@" + msgmerge --previous --update $@ po/burn-my-windows.pot + @# Output translation progress + @msgfmt --check --verbose --output-file=/dev/null $@ \ No newline at end of file diff --git a/README.md b/README.md index 34dad0d..06ce1d1 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ + + When I released the [Desktop Cube Extension](https://github.com/Schneegans/Desktop-Cube/), many people requested to revive one of the most useless features of Linux desktop history: Setting windows on fire! This extension is not only more useless than the cube, but it is also much more hacky. So I expect some bug! [Let's incinerate them all](https://github.com/Schneegans/Burn-My-Windows/issues)! @@ -25,7 +27,7 @@ Effect | Preview ## 💞 These People _love_ this Extension -While coding new features is the most awesome way to contribute, providing financial support will help me stay motivated to invest my spare time to keep the project alive in the future. +While [coding new features](docs/how-to-create-new-effects.md) or [translating the extension](https://hosted.weblate.org/engage/burn-my-windows/) are the most awesome ways to contribute, providing financial support will help me stay motivated to invest my spare time to keep the project alive in the future.

🥇 Current Gold Sponsors

@@ -116,7 +118,7 @@ gnome-extensions enable burn-my-windows@schneegans.github.com ## :octocat: I want to contribute! That's great! -Most likely, you want to [create a new effect](docs/how-to-create-new-effects.md)? +Most likely, you want to [create a new effect](docs/how-to-create-new-effects.md) or to [translate the extension](https://hosted.weblate.org/engage/burn-my-windows/)? Here are some basic rules to get you started: Commits should start with a Capital letter and should be written in present tense (e.g. __:tada: Add cool new feature__ instead of __:tada: Added cool new feature__). You should also start your commit message with **one** applicable emoji. diff --git a/docs/changelog.md b/docs/changelog.md index 18b212e..6857dcb 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -12,6 +12,7 @@ #### Other Enhancements +* **Translations!** It is now possible to [translate the preferences dialog](https://hosted.weblate.org/engage/burn-my-windows/). * Added a menu entry with a link to the guide for creating new effect types. * Added a new option to the Matrix Effect: **Vertical Overshooting**: This can add some vertical variation to the start and end position of the letter drops. * Thanks to improved timing, the default animation time of several effects could be reduced. diff --git a/docs/how-to-create-new-effects.md b/docs/how-to-create-new-effects.md index a69d5ae..2a5714d 100644 --- a/docs/how-to-create-new-effects.md +++ b/docs/how-to-create-new-effects.md @@ -334,7 +334,7 @@ Remember to replace any occurrence of `simple-fade` with your effect's nick-name 1 - Reset to Default Value + Reset to Default Value @@ -382,7 +382,7 @@ Remember to replace any occurrence of `simple-fade` with your effect's nick-name 1 - Reset to Default Value + Reset to Default Value @@ -467,7 +467,7 @@ Remember to replace any occurrence of `simple-fade` with your effect's nick-name edit-clear-symbolic - Reset to Default Value + Reset to Default Value @@ -506,7 +506,7 @@ Remember to replace any occurrence of `simple-fade` with your effect's nick-name edit-clear-symbolic - Reset to Default Value + Reset to Default Value diff --git a/po/burn-my-windows.pot b/po/burn-my-windows.pot new file mode 100644 index 0000000..e2f8ed2 --- /dev/null +++ b/po/burn-my-windows.pot @@ -0,0 +1,273 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Simon Schneegans +# This file is distributed under the same license as the Burn-My-Windows package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Burn-My-Windows\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-01-28 21:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Translators: %s will be replaced by the effect's name. +#: prefs.js:336 +#, javascript-format +msgid "Preview for %s" +msgstr "" + +#: prefs.js:358 +msgid "Close this Window to Preview the Effect!" +msgstr "" + +#: src/BrokenGlass.js:57 +msgid "Broken Glass" +msgstr "" + +#: src/TVEffect.js:56 +msgid "TV Effect" +msgstr "" + +#: src/TRexAttack.js:56 +msgid "T-Rex Attack" +msgstr "" + +#: src/Wisps.js:55 +msgid "Wisps" +msgstr "" + +#: src/Fire.js:58 +msgid "Fire" +msgstr "" + +#: src/Fire.js:130 +msgid "Default Fire" +msgstr "" + +#: src/Fire.js:140 +msgid "Hell Fire" +msgstr "" + +#: src/Fire.js:150 +msgid "Dark and Smutty" +msgstr "" + +#: src/Fire.js:160 +msgid "Cold Breeze" +msgstr "" + +#: src/Fire.js:170 +msgid "Santa is Coming" +msgstr "" + +#: src/EnergizeA.js:54 +msgid "Energize A" +msgstr "" + +#: src/EnergizeB.js:54 +msgid "Energize B" +msgstr "" + +#: src/Matrix.js:58 +msgid "Matrix" +msgstr "" + +#: resources/ui/common/main-menu.ui:6 +msgid "Visit Homepage" +msgstr "" + +#: resources/ui/common/main-menu.ui:10 +msgid "View Changelog" +msgstr "" + +#: resources/ui/common/main-menu.ui:16 +msgid "Report a Bug" +msgstr "" + +#: resources/ui/common/main-menu.ui:20 +msgid "Create a Custom Effect" +msgstr "" + +#: resources/ui/common/main-menu.ui:24 +msgid "Donate" +msgstr "" + +#: resources/ui/common/main-menu.ui:26 +msgid "Via PayPal" +msgstr "" + +#: resources/ui/common/main-menu.ui:30 +msgid "Via GitHub" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:24 resources/ui/gtk4/BrokenGlass.ui:24 +#: resources/ui/gtk4/Wisps.ui:24 resources/ui/gtk4/Fire.ui:49 +#: resources/ui/gtk4/TRexAttack.ui:24 resources/ui/gtk4/TVEffect.ui:24 +#: resources/ui/gtk4/EnergizeA.ui:24 resources/ui/gtk4/EnergizeB.ui:24 +#: resources/ui/gtk3/Wisps.ui:42 resources/ui/gtk3/Fire.ui:93 +#: resources/ui/gtk3/TVEffect.ui:35 resources/ui/gtk3/EnergizeA.ui:42 +#: resources/ui/gtk3/EnergizeB.ui:42 +msgid "Animation Time [ms]" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:52 resources/ui/gtk4/Matrix.ui:98 +#: resources/ui/gtk4/Matrix.ui:144 resources/ui/gtk4/Matrix.ui:190 +#: resources/ui/gtk4/Matrix.ui:224 resources/ui/gtk4/Matrix.ui:258 +#: resources/ui/gtk4/BrokenGlass.ui:52 resources/ui/gtk4/BrokenGlass.ui:98 +#: resources/ui/gtk4/BrokenGlass.ui:144 resources/ui/gtk4/BrokenGlass.ui:190 +#: resources/ui/gtk4/BrokenGlass.ui:244 resources/ui/gtk4/Wisps.ui:52 +#: resources/ui/gtk4/Wisps.ui:98 resources/ui/gtk4/Wisps.ui:132 +#: resources/ui/gtk4/Fire.ui:77 resources/ui/gtk4/Fire.ui:123 +#: resources/ui/gtk4/Fire.ui:169 resources/ui/gtk4/Fire.ui:222 +#: resources/ui/gtk4/Fire.ui:280 resources/ui/gtk4/TRexAttack.ui:52 +#: resources/ui/gtk4/TRexAttack.ui:98 resources/ui/gtk4/TRexAttack.ui:144 +#: resources/ui/gtk4/TRexAttack.ui:190 resources/ui/gtk4/TRexAttack.ui:224 +#: resources/ui/gtk4/TVEffect.ui:52 resources/ui/gtk4/TVEffect.ui:86 +#: resources/ui/gtk4/EnergizeA.ui:52 resources/ui/gtk4/EnergizeA.ui:98 +#: resources/ui/gtk4/EnergizeA.ui:132 resources/ui/gtk4/EnergizeB.ui:52 +#: resources/ui/gtk4/EnergizeB.ui:98 resources/ui/gtk4/EnergizeB.ui:132 +#: resources/ui/gtk4/prefs.ui:185 resources/ui/gtk3/Wisps.ui:68 +#: resources/ui/gtk3/Wisps.ui:117 resources/ui/gtk3/Wisps.ui:160 +#: resources/ui/gtk3/Fire.ui:119 resources/ui/gtk3/Fire.ui:167 +#: resources/ui/gtk3/Fire.ui:215 resources/ui/gtk3/Fire.ui:277 +#: resources/ui/gtk3/Fire.ui:345 resources/ui/gtk3/TVEffect.ui:61 +#: resources/ui/gtk3/TVEffect.ui:104 resources/ui/gtk3/EnergizeA.ui:68 +#: resources/ui/gtk3/EnergizeA.ui:117 resources/ui/gtk3/EnergizeA.ui:160 +#: resources/ui/gtk3/EnergizeB.ui:68 resources/ui/gtk3/EnergizeB.ui:117 +#: resources/ui/gtk3/EnergizeB.ui:160 resources/ui/gtk3/prefs.ui:233 +msgid "Reset to Default Value" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:70 resources/ui/gtk4/BrokenGlass.ui:70 +#: resources/ui/gtk4/Wisps.ui:70 resources/ui/gtk4/Fire.ui:95 +#: resources/ui/gtk4/EnergizeA.ui:70 resources/ui/gtk4/EnergizeB.ui:70 +#: resources/ui/gtk3/Wisps.ui:91 resources/ui/gtk3/Fire.ui:141 +#: resources/ui/gtk3/EnergizeA.ui:91 resources/ui/gtk3/EnergizeB.ui:91 +msgid "Scale" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:116 +msgid "Randomness" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:162 +msgid "Vertical Overshooting" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:208 +msgid "Trail Color" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:242 +msgid "Tip Color" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:116 +msgid "Gravity" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:162 +msgid "Blow Force" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:212 +msgid "Shatter From Pointer Location" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:221 +msgid "" +"The shards will fly away from where your mouse pointer was when closing the " +"window." +msgstr "" + +#: resources/ui/gtk4/Wisps.ui:116 resources/ui/gtk4/TVEffect.ui:70 +#: resources/ui/gtk4/EnergizeA.ui:116 resources/ui/gtk4/EnergizeB.ui:116 +#: resources/ui/gtk3/Wisps.ui:139 resources/ui/gtk3/TVEffect.ui:83 +#: resources/ui/gtk3/EnergizeA.ui:139 resources/ui/gtk3/EnergizeB.ui:139 +msgid "Color" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:25 resources/ui/gtk3/Fire.ui:49 +msgid "Presets" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:141 resources/ui/gtk3/Fire.ui:189 +msgid "Speed" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:191 resources/ui/gtk3/Fire.ui:241 +msgid "3D Noise" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:200 resources/ui/gtk3/Fire.ui:250 +msgid "Creates a more dynamic fire but requires more GPU power." +msgstr "" + +#: resources/ui/gtk4/Fire.ui:240 resources/ui/gtk3/Fire.ui:300 +msgid "Gradient" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:70 +msgid "Claw Scratch Scale" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:116 +msgid "Claw Scratch Count" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:162 +msgid "Warp Effect" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:208 +msgid "Flash Color" +msgstr "" + +#: resources/ui/gtk4/effectPage.ui:41 resources/ui/gtk3/effectPage.ui:41 +msgid "Preview this Effect" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:27 resources/ui/gtk3/prefs.ui:251 +msgid "General Options" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:47 resources/ui/gtk3/prefs.ui:49 +msgid "Welcome to Burn-My-Windows!" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:58 resources/ui/gtk3/prefs.ui:60 +msgid "If you like this extension, recommend it to your friends :)" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:85 resources/ui/gtk3/prefs.ui:88 +msgid "Open Window Animation" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:94 resources/ui/gtk4/prefs.ui:138 +#: resources/ui/gtk3/prefs.ui:97 resources/ui/gtk3/prefs.ui:161 +msgid "If multiple are selected, one is chosen randomly." +msgstr "" + +#: resources/ui/gtk4/prefs.ui:109 resources/ui/gtk4/prefs.ui:153 +#: resources/ui/gtk3/prefs.ui:118 resources/ui/gtk3/prefs.ui:182 +msgid "Choose Effects" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:129 resources/ui/gtk3/prefs.ui:152 +msgid "Close Window Animation" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:169 resources/ui/gtk3/prefs.ui:212 +msgid "Also Add Effects to Dialogs" +msgstr "" + +#: resources/ui/gtk3/Fire.ui:63 +msgid "Choose a Preset" +msgstr "" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..aca711f --- /dev/null +++ b/po/de.po @@ -0,0 +1,277 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Simon Schneegans +# This file is distributed under the same license as the Burn-My-Windows package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Burn-My-Windows\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-01-28 21:25+0100\n" +"PO-Revision-Date: 2022-01-28 20:28+0000\n" +"Last-Translator: Simon Schneegans \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11-dev\n" + +#. Translators: %s will be replaced by the effect's name. +#: prefs.js:336 +#, javascript-format +msgid "Preview for %s" +msgstr "Vorschau für %s" + +#: prefs.js:358 +msgid "Close this Window to Preview the Effect!" +msgstr "Schließen Sie dieses Fenster, um eine Vorschau des Effekts anzuzeigen!" + +#: src/BrokenGlass.js:57 +msgid "Broken Glass" +msgstr "Glassplitter" + +#: src/TVEffect.js:56 +msgid "TV Effect" +msgstr "TV-Effekt" + +#: src/TRexAttack.js:56 +msgid "T-Rex Attack" +msgstr "T-Rex-Angriff" + +#: src/Wisps.js:55 +msgid "Wisps" +msgstr "Irrlichter" + +#: src/Fire.js:58 +msgid "Fire" +msgstr "Feuer" + +#: src/Fire.js:130 +msgid "Default Fire" +msgstr "Standardfeuer" + +#: src/Fire.js:140 +msgid "Hell Fire" +msgstr "Höllenfeuer" + +#: src/Fire.js:150 +msgid "Dark and Smutty" +msgstr "Dunkel und schmutzig" + +#: src/Fire.js:160 +msgid "Cold Breeze" +msgstr "Kalte Brise" + +#: src/Fire.js:170 +msgid "Santa is Coming" +msgstr "Weihnachtsgrüße" + +#: src/EnergizeA.js:54 +msgid "Energize A" +msgstr "Energie A" + +#: src/EnergizeB.js:54 +msgid "Energize B" +msgstr "Energie B" + +#: src/Matrix.js:58 +msgid "Matrix" +msgstr "Matrix" + +#: resources/ui/common/main-menu.ui:6 +msgid "Visit Homepage" +msgstr "Homepage besuchen" + +#: resources/ui/common/main-menu.ui:10 +msgid "View Changelog" +msgstr "Changelog anzeigen" + +#: resources/ui/common/main-menu.ui:16 +msgid "Report a Bug" +msgstr "Fehler melden" + +#: resources/ui/common/main-menu.ui:20 +msgid "Create a Custom Effect" +msgstr "Einen neuen Effekt erstellen" + +#: resources/ui/common/main-menu.ui:24 +msgid "Donate" +msgstr "Spenden" + +#: resources/ui/common/main-menu.ui:26 +msgid "Via PayPal" +msgstr "Mit PayPal" + +#: resources/ui/common/main-menu.ui:30 +msgid "Via GitHub" +msgstr "Mit GitHub" + +#: resources/ui/gtk4/Matrix.ui:24 resources/ui/gtk4/BrokenGlass.ui:24 +#: resources/ui/gtk4/Wisps.ui:24 resources/ui/gtk4/Fire.ui:49 +#: resources/ui/gtk4/TRexAttack.ui:24 resources/ui/gtk4/TVEffect.ui:24 +#: resources/ui/gtk4/EnergizeA.ui:24 resources/ui/gtk4/EnergizeB.ui:24 +#: resources/ui/gtk3/Wisps.ui:42 resources/ui/gtk3/Fire.ui:93 +#: resources/ui/gtk3/TVEffect.ui:35 resources/ui/gtk3/EnergizeA.ui:42 +#: resources/ui/gtk3/EnergizeB.ui:42 +msgid "Animation Time [ms]" +msgstr "Animationszeit [ms]" + +#: resources/ui/gtk4/Matrix.ui:52 resources/ui/gtk4/Matrix.ui:98 +#: resources/ui/gtk4/Matrix.ui:144 resources/ui/gtk4/Matrix.ui:190 +#: resources/ui/gtk4/Matrix.ui:224 resources/ui/gtk4/Matrix.ui:258 +#: resources/ui/gtk4/BrokenGlass.ui:52 resources/ui/gtk4/BrokenGlass.ui:98 +#: resources/ui/gtk4/BrokenGlass.ui:144 resources/ui/gtk4/BrokenGlass.ui:190 +#: resources/ui/gtk4/BrokenGlass.ui:244 resources/ui/gtk4/Wisps.ui:52 +#: resources/ui/gtk4/Wisps.ui:98 resources/ui/gtk4/Wisps.ui:132 +#: resources/ui/gtk4/Fire.ui:77 resources/ui/gtk4/Fire.ui:123 +#: resources/ui/gtk4/Fire.ui:169 resources/ui/gtk4/Fire.ui:222 +#: resources/ui/gtk4/Fire.ui:280 resources/ui/gtk4/TRexAttack.ui:52 +#: resources/ui/gtk4/TRexAttack.ui:98 resources/ui/gtk4/TRexAttack.ui:144 +#: resources/ui/gtk4/TRexAttack.ui:190 resources/ui/gtk4/TRexAttack.ui:224 +#: resources/ui/gtk4/TVEffect.ui:52 resources/ui/gtk4/TVEffect.ui:86 +#: resources/ui/gtk4/EnergizeA.ui:52 resources/ui/gtk4/EnergizeA.ui:98 +#: resources/ui/gtk4/EnergizeA.ui:132 resources/ui/gtk4/EnergizeB.ui:52 +#: resources/ui/gtk4/EnergizeB.ui:98 resources/ui/gtk4/EnergizeB.ui:132 +#: resources/ui/gtk4/prefs.ui:185 resources/ui/gtk3/Wisps.ui:68 +#: resources/ui/gtk3/Wisps.ui:117 resources/ui/gtk3/Wisps.ui:160 +#: resources/ui/gtk3/Fire.ui:119 resources/ui/gtk3/Fire.ui:167 +#: resources/ui/gtk3/Fire.ui:215 resources/ui/gtk3/Fire.ui:277 +#: resources/ui/gtk3/Fire.ui:345 resources/ui/gtk3/TVEffect.ui:61 +#: resources/ui/gtk3/TVEffect.ui:104 resources/ui/gtk3/EnergizeA.ui:68 +#: resources/ui/gtk3/EnergizeA.ui:117 resources/ui/gtk3/EnergizeA.ui:160 +#: resources/ui/gtk3/EnergizeB.ui:68 resources/ui/gtk3/EnergizeB.ui:117 +#: resources/ui/gtk3/EnergizeB.ui:160 resources/ui/gtk3/prefs.ui:233 +msgid "Reset to Default Value" +msgstr "Auf Standardwert zurücksetzen" + +#: resources/ui/gtk4/Matrix.ui:70 resources/ui/gtk4/BrokenGlass.ui:70 +#: resources/ui/gtk4/Wisps.ui:70 resources/ui/gtk4/Fire.ui:95 +#: resources/ui/gtk4/EnergizeA.ui:70 resources/ui/gtk4/EnergizeB.ui:70 +#: resources/ui/gtk3/Wisps.ui:91 resources/ui/gtk3/Fire.ui:141 +#: resources/ui/gtk3/EnergizeA.ui:91 resources/ui/gtk3/EnergizeB.ui:91 +msgid "Scale" +msgstr "Größe" + +#: resources/ui/gtk4/Matrix.ui:116 +msgid "Randomness" +msgstr "Zufälligkeit" + +#: resources/ui/gtk4/Matrix.ui:162 +msgid "Vertical Overshooting" +msgstr "Vertikales Überschießen" + +#: resources/ui/gtk4/Matrix.ui:208 +msgid "Trail Color" +msgstr "Farbe der Spur" + +#: resources/ui/gtk4/Matrix.ui:242 +msgid "Tip Color" +msgstr "Farbe der Spitze" + +#: resources/ui/gtk4/BrokenGlass.ui:116 +msgid "Gravity" +msgstr "Schwerkraft" + +#: resources/ui/gtk4/BrokenGlass.ui:162 +msgid "Blow Force" +msgstr "Schlagkraft" + +#: resources/ui/gtk4/BrokenGlass.ui:212 +msgid "Shatter From Pointer Location" +msgstr "Von Mauszeigerposition zerbrechen" + +#: resources/ui/gtk4/BrokenGlass.ui:221 +msgid "" +"The shards will fly away from where your mouse pointer was when closing the " +"window." +msgstr "" +"Die Scherben fliegen von der Stelle weg, an der sich Ihr Mauszeiger beim " +"Schließen des Fensters befand." + +#: resources/ui/gtk4/Wisps.ui:116 resources/ui/gtk4/TVEffect.ui:70 +#: resources/ui/gtk4/EnergizeA.ui:116 resources/ui/gtk4/EnergizeB.ui:116 +#: resources/ui/gtk3/Wisps.ui:139 resources/ui/gtk3/TVEffect.ui:83 +#: resources/ui/gtk3/EnergizeA.ui:139 resources/ui/gtk3/EnergizeB.ui:139 +msgid "Color" +msgstr "Farbe" + +#: resources/ui/gtk4/Fire.ui:25 resources/ui/gtk3/Fire.ui:49 +msgid "Presets" +msgstr "Voreinstellungen" + +#: resources/ui/gtk4/Fire.ui:141 resources/ui/gtk3/Fire.ui:189 +msgid "Speed" +msgstr "Geschwindigkeit" + +#: resources/ui/gtk4/Fire.ui:191 resources/ui/gtk3/Fire.ui:241 +msgid "3D Noise" +msgstr "3D-Rauschen" + +#: resources/ui/gtk4/Fire.ui:200 resources/ui/gtk3/Fire.ui:250 +msgid "Creates a more dynamic fire but requires more GPU power." +msgstr "Erzeugt ein dynamischeres Feuer, erfordert jedoch mehr GPU-Leistung." + +#: resources/ui/gtk4/Fire.ui:240 resources/ui/gtk3/Fire.ui:300 +msgid "Gradient" +msgstr "Farbverlauf" + +#: resources/ui/gtk4/TRexAttack.ui:70 +msgid "Claw Scratch Scale" +msgstr "Kratzergröße" + +#: resources/ui/gtk4/TRexAttack.ui:116 +msgid "Claw Scratch Count" +msgstr "Kratzeranzahl" + +#: resources/ui/gtk4/TRexAttack.ui:162 +msgid "Warp Effect" +msgstr "Warp-Effekt" + +#: resources/ui/gtk4/TRexAttack.ui:208 +msgid "Flash Color" +msgstr "Blitzfarbe" + +#: resources/ui/gtk4/effectPage.ui:41 resources/ui/gtk3/effectPage.ui:41 +msgid "Preview this Effect" +msgstr "Vorschau dieses Effekts" + +#: resources/ui/gtk4/prefs.ui:27 resources/ui/gtk3/prefs.ui:251 +msgid "General Options" +msgstr "Allgemeine Optionen" + +#: resources/ui/gtk4/prefs.ui:47 resources/ui/gtk3/prefs.ui:49 +msgid "Welcome to Burn-My-Windows!" +msgstr "Willkommen bei Burn-My-Windows!" + +#: resources/ui/gtk4/prefs.ui:58 resources/ui/gtk3/prefs.ui:60 +msgid "If you like this extension, recommend it to your friends :)" +msgstr "Wenn Sie diese Erweiterung mögen, empfehlen Sie sie Ihren Freunden :)" + +#: resources/ui/gtk4/prefs.ui:85 resources/ui/gtk3/prefs.ui:88 +msgid "Open Window Animation" +msgstr "Fenster-Öffnen-Animation" + +#: resources/ui/gtk4/prefs.ui:94 resources/ui/gtk4/prefs.ui:138 +#: resources/ui/gtk3/prefs.ui:97 resources/ui/gtk3/prefs.ui:161 +msgid "If multiple are selected, one is chosen randomly." +msgstr "Wenn mehrere ausgewählt sind, wird eine zufällig ausgewählt." + +#: resources/ui/gtk4/prefs.ui:109 resources/ui/gtk4/prefs.ui:153 +#: resources/ui/gtk3/prefs.ui:118 resources/ui/gtk3/prefs.ui:182 +msgid "Choose Effects" +msgstr "Effekte auswählen" + +#: resources/ui/gtk4/prefs.ui:129 resources/ui/gtk3/prefs.ui:152 +msgid "Close Window Animation" +msgstr "Fenster-Schließen-Animation" + +#: resources/ui/gtk4/prefs.ui:169 resources/ui/gtk3/prefs.ui:212 +msgid "Also Add Effects to Dialogs" +msgstr "Effekte auch zu Dialogen hinzufügen" + +#: resources/ui/gtk3/Fire.ui:63 +msgid "Choose a Preset" +msgstr "Wählen Sie eine Voreinstellung" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..a091fa1 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Simon Schneegans +# This file is distributed under the same license as the Burn-My-Windows package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Burn-My-Windows\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-01-28 21:25+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Translators: %s will be replaced by the effect's name. +#: prefs.js:336 +#, javascript-format +msgid "Preview for %s" +msgstr "" + +#: prefs.js:358 +msgid "Close this Window to Preview the Effect!" +msgstr "" + +#: src/BrokenGlass.js:57 +msgid "Broken Glass" +msgstr "" + +#: src/TVEffect.js:56 +msgid "TV Effect" +msgstr "" + +#: src/TRexAttack.js:56 +msgid "T-Rex Attack" +msgstr "" + +#: src/Wisps.js:55 +msgid "Wisps" +msgstr "" + +#: src/Fire.js:58 +msgid "Fire" +msgstr "" + +#: src/Fire.js:130 +msgid "Default Fire" +msgstr "" + +#: src/Fire.js:140 +msgid "Hell Fire" +msgstr "" + +#: src/Fire.js:150 +msgid "Dark and Smutty" +msgstr "" + +#: src/Fire.js:160 +msgid "Cold Breeze" +msgstr "" + +#: src/Fire.js:170 +msgid "Santa is Coming" +msgstr "" + +#: src/EnergizeA.js:54 +msgid "Energize A" +msgstr "" + +#: src/EnergizeB.js:54 +msgid "Energize B" +msgstr "" + +#: src/Matrix.js:58 +msgid "Matrix" +msgstr "" + +#: resources/ui/common/main-menu.ui:6 +msgid "Visit Homepage" +msgstr "" + +#: resources/ui/common/main-menu.ui:10 +msgid "View Changelog" +msgstr "" + +#: resources/ui/common/main-menu.ui:16 +msgid "Report a Bug" +msgstr "" + +#: resources/ui/common/main-menu.ui:20 +msgid "Create a Custom Effect" +msgstr "" + +#: resources/ui/common/main-menu.ui:24 +msgid "Donate" +msgstr "" + +#: resources/ui/common/main-menu.ui:26 +msgid "Via PayPal" +msgstr "" + +#: resources/ui/common/main-menu.ui:30 +msgid "Via GitHub" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:24 resources/ui/gtk4/BrokenGlass.ui:24 +#: resources/ui/gtk4/Wisps.ui:24 resources/ui/gtk4/Fire.ui:49 +#: resources/ui/gtk4/TRexAttack.ui:24 resources/ui/gtk4/TVEffect.ui:24 +#: resources/ui/gtk4/EnergizeA.ui:24 resources/ui/gtk4/EnergizeB.ui:24 +#: resources/ui/gtk3/Wisps.ui:42 resources/ui/gtk3/Fire.ui:93 +#: resources/ui/gtk3/TVEffect.ui:35 resources/ui/gtk3/EnergizeA.ui:42 +#: resources/ui/gtk3/EnergizeB.ui:42 +msgid "Animation Time [ms]" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:52 resources/ui/gtk4/Matrix.ui:98 +#: resources/ui/gtk4/Matrix.ui:144 resources/ui/gtk4/Matrix.ui:190 +#: resources/ui/gtk4/Matrix.ui:224 resources/ui/gtk4/Matrix.ui:258 +#: resources/ui/gtk4/BrokenGlass.ui:52 resources/ui/gtk4/BrokenGlass.ui:98 +#: resources/ui/gtk4/BrokenGlass.ui:144 resources/ui/gtk4/BrokenGlass.ui:190 +#: resources/ui/gtk4/BrokenGlass.ui:244 resources/ui/gtk4/Wisps.ui:52 +#: resources/ui/gtk4/Wisps.ui:98 resources/ui/gtk4/Wisps.ui:132 +#: resources/ui/gtk4/Fire.ui:77 resources/ui/gtk4/Fire.ui:123 +#: resources/ui/gtk4/Fire.ui:169 resources/ui/gtk4/Fire.ui:222 +#: resources/ui/gtk4/Fire.ui:280 resources/ui/gtk4/TRexAttack.ui:52 +#: resources/ui/gtk4/TRexAttack.ui:98 resources/ui/gtk4/TRexAttack.ui:144 +#: resources/ui/gtk4/TRexAttack.ui:190 resources/ui/gtk4/TRexAttack.ui:224 +#: resources/ui/gtk4/TVEffect.ui:52 resources/ui/gtk4/TVEffect.ui:86 +#: resources/ui/gtk4/EnergizeA.ui:52 resources/ui/gtk4/EnergizeA.ui:98 +#: resources/ui/gtk4/EnergizeA.ui:132 resources/ui/gtk4/EnergizeB.ui:52 +#: resources/ui/gtk4/EnergizeB.ui:98 resources/ui/gtk4/EnergizeB.ui:132 +#: resources/ui/gtk4/prefs.ui:185 resources/ui/gtk3/Wisps.ui:68 +#: resources/ui/gtk3/Wisps.ui:117 resources/ui/gtk3/Wisps.ui:160 +#: resources/ui/gtk3/Fire.ui:119 resources/ui/gtk3/Fire.ui:167 +#: resources/ui/gtk3/Fire.ui:215 resources/ui/gtk3/Fire.ui:277 +#: resources/ui/gtk3/Fire.ui:345 resources/ui/gtk3/TVEffect.ui:61 +#: resources/ui/gtk3/TVEffect.ui:104 resources/ui/gtk3/EnergizeA.ui:68 +#: resources/ui/gtk3/EnergizeA.ui:117 resources/ui/gtk3/EnergizeA.ui:160 +#: resources/ui/gtk3/EnergizeB.ui:68 resources/ui/gtk3/EnergizeB.ui:117 +#: resources/ui/gtk3/EnergizeB.ui:160 resources/ui/gtk3/prefs.ui:233 +msgid "Reset to Default Value" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:70 resources/ui/gtk4/BrokenGlass.ui:70 +#: resources/ui/gtk4/Wisps.ui:70 resources/ui/gtk4/Fire.ui:95 +#: resources/ui/gtk4/EnergizeA.ui:70 resources/ui/gtk4/EnergizeB.ui:70 +#: resources/ui/gtk3/Wisps.ui:91 resources/ui/gtk3/Fire.ui:141 +#: resources/ui/gtk3/EnergizeA.ui:91 resources/ui/gtk3/EnergizeB.ui:91 +msgid "Scale" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:116 +msgid "Randomness" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:162 +msgid "Vertical Overshooting" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:208 +msgid "Trail Color" +msgstr "" + +#: resources/ui/gtk4/Matrix.ui:242 +msgid "Tip Color" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:116 +msgid "Gravity" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:162 +msgid "Blow Force" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:212 +msgid "Shatter From Pointer Location" +msgstr "" + +#: resources/ui/gtk4/BrokenGlass.ui:221 +msgid "" +"The shards will fly away from where your mouse pointer was when closing the " +"window." +msgstr "" + +#: resources/ui/gtk4/Wisps.ui:116 resources/ui/gtk4/TVEffect.ui:70 +#: resources/ui/gtk4/EnergizeA.ui:116 resources/ui/gtk4/EnergizeB.ui:116 +#: resources/ui/gtk3/Wisps.ui:139 resources/ui/gtk3/TVEffect.ui:83 +#: resources/ui/gtk3/EnergizeA.ui:139 resources/ui/gtk3/EnergizeB.ui:139 +msgid "Color" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:25 resources/ui/gtk3/Fire.ui:49 +msgid "Presets" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:141 resources/ui/gtk3/Fire.ui:189 +msgid "Speed" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:191 resources/ui/gtk3/Fire.ui:241 +msgid "3D Noise" +msgstr "" + +#: resources/ui/gtk4/Fire.ui:200 resources/ui/gtk3/Fire.ui:250 +msgid "Creates a more dynamic fire but requires more GPU power." +msgstr "" + +#: resources/ui/gtk4/Fire.ui:240 resources/ui/gtk3/Fire.ui:300 +msgid "Gradient" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:70 +msgid "Claw Scratch Scale" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:116 +msgid "Claw Scratch Count" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:162 +msgid "Warp Effect" +msgstr "" + +#: resources/ui/gtk4/TRexAttack.ui:208 +msgid "Flash Color" +msgstr "" + +#: resources/ui/gtk4/effectPage.ui:41 resources/ui/gtk3/effectPage.ui:41 +msgid "Preview this Effect" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:27 resources/ui/gtk3/prefs.ui:251 +msgid "General Options" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:47 resources/ui/gtk3/prefs.ui:49 +msgid "Welcome to Burn-My-Windows!" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:58 resources/ui/gtk3/prefs.ui:60 +msgid "If you like this extension, recommend it to your friends :)" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:85 resources/ui/gtk3/prefs.ui:88 +msgid "Open Window Animation" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:94 resources/ui/gtk4/prefs.ui:138 +#: resources/ui/gtk3/prefs.ui:97 resources/ui/gtk3/prefs.ui:161 +msgid "If multiple are selected, one is chosen randomly." +msgstr "" + +#: resources/ui/gtk4/prefs.ui:109 resources/ui/gtk4/prefs.ui:153 +#: resources/ui/gtk3/prefs.ui:118 resources/ui/gtk3/prefs.ui:182 +msgid "Choose Effects" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:129 resources/ui/gtk3/prefs.ui:152 +msgid "Close Window Animation" +msgstr "" + +#: resources/ui/gtk4/prefs.ui:169 resources/ui/gtk3/prefs.ui:212 +msgid "Also Add Effects to Dialogs" +msgstr "" + +#: resources/ui/gtk3/Fire.ui:63 +msgid "Choose a Preset" +msgstr "" diff --git a/prefs.js b/prefs.js index ffe9c17..9d383c0 100644 --- a/prefs.js +++ b/prefs.js @@ -15,6 +15,8 @@ const {Gio, Gtk, Gdk, GLib, GObject} = imports.gi; +const _ = imports.gettext.domain('burn-my-windows').gettext; + const ExtensionUtils = imports.misc.extensionUtils; const Me = imports.misc.extensionUtils.getCurrentExtension(); const utils = Me.imports.src.utils; @@ -330,7 +332,8 @@ var PreferencesDialog = class PreferencesDialog { // Create the preview-window. const window = new Gtk.Window({ - title: `Preview for ${Effect.getLabel()}`, + // Translators: %s will be replaced by the effect's name. + title: _('Preview for %s').replace("%s", Effect.getLabel()), default_width: 800, default_height: 450, modal: true, @@ -348,9 +351,13 @@ var PreferencesDialog = class PreferencesDialog { orientation: Gtk.Orientation.VERTICAL, valign: Gtk.Align.CENTER, spacing: 10, + margin_start:50, + margin_end:50 }); - const label = Gtk.Label.new('Close this Window to Preview the Effect!'); + const label = Gtk.Label.new(_('Close this Window to Preview the Effect!')); + label.wrap = true; + label.justify = Gtk.Justification.CENTER; label.get_style_context().add_class('large-title'); const image = new Gtk.Image({ @@ -376,8 +383,10 @@ var PreferencesDialog = class PreferencesDialog { } } -// Nothing to do for now... -function init() {} +// This is used for setting up the translations. +function init() { + ExtensionUtils.initTranslations(); +} // This function is called when the preferences window is created to build and return a // Gtk widget. We create a new instance of the PreferencesDialog class each time this diff --git a/resources/ui/common/main-menu.ui b/resources/ui/common/main-menu.ui index 0d8a0b8..94a86b8 100644 --- a/resources/ui/common/main-menu.ui +++ b/resources/ui/common/main-menu.ui @@ -1,5 +1,5 @@ - +
diff --git a/resources/ui/gtk3/EnergizeA.ui b/resources/ui/gtk3/EnergizeA.ui index 79afebc..327c1e8 100644 --- a/resources/ui/gtk3/EnergizeA.ui +++ b/resources/ui/gtk3/EnergizeA.ui @@ -1,5 +1,5 @@ - + 10000 @@ -65,7 +65,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -114,7 +114,7 @@ 1
- Reset to Default Value + Reset to Default Value @@ -157,7 +157,7 @@ 1
- Reset to Default Value + Reset to Default Value diff --git a/resources/ui/gtk3/EnergizeB.ui b/resources/ui/gtk3/EnergizeB.ui index 051821d..fbc8f0e 100644 --- a/resources/ui/gtk3/EnergizeB.ui +++ b/resources/ui/gtk3/EnergizeB.ui @@ -1,5 +1,5 @@ - + 10000 @@ -65,7 +65,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -114,7 +114,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -157,7 +157,7 @@ 1 - Reset to Default Value + Reset to Default Value diff --git a/resources/ui/gtk3/Fire.ui b/resources/ui/gtk3/Fire.ui index 4b43025..85e703b 100644 --- a/resources/ui/gtk3/Fire.ui +++ b/resources/ui/gtk3/Fire.ui @@ -1,5 +1,5 @@ - + 10000 @@ -116,7 +116,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -164,7 +164,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -212,7 +212,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -274,7 +274,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -342,7 +342,7 @@ 1 - Reset to Default Value + Reset to Default Value diff --git a/resources/ui/gtk3/TVEffect.ui b/resources/ui/gtk3/TVEffect.ui index adebe01..f7ef186 100644 --- a/resources/ui/gtk3/TVEffect.ui +++ b/resources/ui/gtk3/TVEffect.ui @@ -1,5 +1,5 @@ - + 5000 @@ -58,7 +58,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -101,7 +101,7 @@ 1 - Reset to Default Value + Reset to Default Value diff --git a/resources/ui/gtk3/Wisps.ui b/resources/ui/gtk3/Wisps.ui index ff096ae..a9fff34 100644 --- a/resources/ui/gtk3/Wisps.ui +++ b/resources/ui/gtk3/Wisps.ui @@ -1,5 +1,5 @@ - + 10000 @@ -65,7 +65,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -114,7 +114,7 @@ 1 - Reset to Default Value + Reset to Default Value @@ -157,7 +157,7 @@ 1 - Reset to Default Value + Reset to Default Value diff --git a/resources/ui/gtk3/effectPage.ui b/resources/ui/gtk3/effectPage.ui index 2ec5311..52419a5 100644 --- a/resources/ui/gtk3/effectPage.ui +++ b/resources/ui/gtk3/effectPage.ui @@ -1,5 +1,5 @@ - +