diff --git a/.github/workflows/flatpak-builder.yml b/.github/workflows/flatpak-builder.yml index 0d13dc9..c868945 100644 --- a/.github/workflows/flatpak-builder.yml +++ b/.github/workflows/flatpak-builder.yml @@ -14,6 +14,6 @@ jobs: - uses: actions/checkout@v3 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: - bundle: hu.kramo.Cartridges.flatpak - manifest-path: hu.kramo.Cartridges.json + bundle: hu.kramo.Cartridges.Devel.flatpak + manifest-path: flatpak/hu.kramo.Cartridges.Devel.json cache-key: flatpak-builder-${{ github.sha }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 636492c..7e9f264 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -24,9 +24,9 @@ jobs: pacman --noconfirm -Rs mingw-w64-ucrt-x86_64-desktop-file-utils mingw-w64-ucrt-x86_64-meson git find /ucrt64/share/locale/ -type f ! -name "*cartridges.mo" -delete - name: "Inno Setup" - run: iscc ".\.windows\Cartridges.iss" + run: iscc ".\windows\Cartridges.iss" - name: "Upload Artifact" uses: actions/upload-artifact@v3 with: name: "Installer" - path: ".windows/Output/Cartridges Setup.exe" \ No newline at end of file + path: "windows/Output/Cartridges Setup.exe" \ No newline at end of file diff --git a/README.md b/README.md index cc6b323..ffc0fab 100644 --- a/README.md +++ b/README.md @@ -53,15 +53,12 @@ For updates and questions, join our [Discord server][discord-url]! ## Linux -### Flathub (Recommended) +### Flathub + +The app is available on Flathub. Download on Flathub -### From Releases - -1. Download the latest release from [Releases](https://github.com/kra-mo/cartridges/releases). -2. Install the downloaded file via GNOME Software or `flatpak install hu.kramo.Cartridges.flatpak`. - ## Windows ### From Releases diff --git a/data/cartridges.gresource.xml b/data/cartridges.gresource.xml.in similarity index 92% rename from data/cartridges.gresource.xml rename to data/cartridges.gresource.xml.in index afa550b..203edea 100644 --- a/data/cartridges.gresource.xml +++ b/data/cartridges.gresource.xml.in @@ -1,6 +1,6 @@ - + gtk/window.ui gtk/help-overlay.ui gtk/game.ui diff --git a/data/gtk/window.blp b/data/gtk/window.blp index 2ff8f0f..46c90f2 100644 --- a/data/gtk/window.blp +++ b/data/gtk/window.blp @@ -18,7 +18,6 @@ Adw.StatusPage hidden_notice_no_results { } Adw.StatusPage notice_empty { - icon-name: "hu.kramo.Cartridges-symbolic"; title: _("No Games"); description: _("Use the + button to add games."); vexpand: true; diff --git a/data/hu.kramo.Cartridges.desktop.in b/data/hu.kramo.Cartridges.desktop.in index 531f739..643d02f 100644 --- a/data/hu.kramo.Cartridges.desktop.in +++ b/data/hu.kramo.Cartridges.desktop.in @@ -3,7 +3,7 @@ Name=Cartridges GenericName=Game Launcher Comment=Launch all your games Exec=cartridges -Icon=hu.kramo.Cartridges +Icon=@APP_ID@ Terminal=false Type=Application Categories=GNOME;GTK;Game; diff --git a/data/hu.kramo.Cartridges.gschema.xml b/data/hu.kramo.Cartridges.gschema.xml.in similarity index 77% rename from data/hu.kramo.Cartridges.gschema.xml rename to data/hu.kramo.Cartridges.gschema.xml.in index abb05bd..a2f04de 100644 --- a/data/hu.kramo.Cartridges.gschema.xml +++ b/data/hu.kramo.Cartridges.gschema.xml.in @@ -1,9 +1,9 @@ - - - false - + + + false + false @@ -46,19 +46,19 @@ "~/.var/app/com.heroicgameslauncher.hgl/config/heroic/" - - true - - - true - - - true - + + true + + + true + + + true + true - + "~/.var/app/com.usebottles.bottles/data/bottles/" @@ -79,8 +79,8 @@ false - - + + 1110 @@ -92,13 +92,13 @@ - - - - - + + + + + "a-z" - \ No newline at end of file + diff --git a/data/hu.kramo.Cartridges.metainfo.xml.in b/data/hu.kramo.Cartridges.metainfo.xml.in index 53070dd..a318483 100644 --- a/data/hu.kramo.Cartridges.metainfo.xml.in +++ b/data/hu.kramo.Cartridges.metainfo.xml.in @@ -1,6 +1,6 @@ - hu.kramo.Cartridges.desktop + @APP_ID@.desktop CC0-1.0 GPL-3.0-or-later Cartridges @@ -15,7 +15,7 @@ https://github.com/kra-mo/cartridges https://github.com/kra-mo/cartridges/blob/main/CONTRIBUTING.md kramo - hu.kramo.Cartridges.desktop + @APP_ID@.desktop pointing keyboard @@ -44,6 +44,15 @@ + + +
    +
  • Fixes a bug with custom install locations
  • +
  • Fixes a potential bug with deleted Steam libraries
  • +
  • Translations since 1.5
  • +
+
+
    diff --git a/data/icons/hicolor/scalable/apps/hu.kramo.Cartridges.Devel.svg b/data/icons/hicolor/scalable/apps/hu.kramo.Cartridges.Devel.svg new file mode 100644 index 0000000..0d54b23 --- /dev/null +++ b/data/icons/hicolor/scalable/apps/hu.kramo.Cartridges.Devel.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/hicolor/symbolic/apps/hu.kramo.Cartridges.Devel-symbolic.svg b/data/icons/hicolor/symbolic/apps/hu.kramo.Cartridges.Devel-symbolic.svg new file mode 100644 index 0000000..2f56644 --- /dev/null +++ b/data/icons/hicolor/symbolic/apps/hu.kramo.Cartridges.Devel-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/meson.build b/data/icons/meson.build index 25f8a5c..3d42f8d 100644 --- a/data/icons/meson.build +++ b/data/icons/meson.build @@ -1,13 +1,11 @@ -application_id = 'hu.kramo.Cartridges' - scalable_dir = join_paths('hicolor', 'scalable', 'apps') install_data( - join_paths(scalable_dir, ('@0@.svg').format(application_id)), + join_paths(scalable_dir, ('@0@.svg').format(app_id)), install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) ) symbolic_dir = join_paths('hicolor', 'symbolic', 'apps') install_data( - join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)), + join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id)), install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) ) diff --git a/data/meson.build b/data/meson.build index df0f8b8..071fb69 100644 --- a/data/meson.build +++ b/data/meson.build @@ -11,7 +11,11 @@ blueprints = custom_target('blueprints', ) gnome.compile_resources('cartridges', - 'cartridges.gresource.xml', + configure_file( + input: 'cartridges.gresource.xml.in', + output: 'cartridges.gresource.xml', + configuration: conf + ), gresource_bundle: true, install: true, install_dir: pkgdatadir, @@ -19,8 +23,12 @@ gnome.compile_resources('cartridges', ) desktop_file = i18n.merge_file( - input: 'hu.kramo.Cartridges.desktop.in', - output: 'hu.kramo.Cartridges.desktop', + input: configure_file( + input: 'hu.kramo.Cartridges.desktop.in', + output: app_id + '.desktop.in', + configuration: conf + ), + output: app_id + '.desktop', type: 'desktop', po_dir: '../po', install: true, @@ -33,8 +41,12 @@ if desktop_utils.found() endif appstream_file = i18n.merge_file( - input: 'hu.kramo.Cartridges.metainfo.xml.in', - output: 'hu.kramo.Cartridges.metainfo.xml', + input: configure_file( + input: 'hu.kramo.Cartridges.metainfo.xml.in', + output: app_id + '.metainfo.xml.in', + configuration: conf + ), + output: app_id + '.metainfo.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') @@ -45,7 +57,12 @@ if appstream_util.found() test('Validate appstream file', appstream_util, args: ['validate', appstream_file]) endif -install_data('hu.kramo.Cartridges.gschema.xml', +install_data( + configure_file( + input: 'hu.kramo.Cartridges.gschema.xml.in', + output: app_id + '.gschema.xml', + configuration: conf + ), install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) diff --git a/hu.kramo.Cartridges.json b/flatpak/hu.kramo.Cartridges.Devel.json similarity index 97% rename from hu.kramo.Cartridges.json rename to flatpak/hu.kramo.Cartridges.Devel.json index fff931d..719deed 100644 --- a/hu.kramo.Cartridges.json +++ b/flatpak/hu.kramo.Cartridges.Devel.json @@ -1,5 +1,5 @@ { - "id" : "hu.kramo.Cartridges", + "id" : "hu.kramo.Cartridges.Devel", "runtime" : "org.gnome.Platform", "runtime-version" : "44", "sdk" : "org.gnome.Sdk", @@ -117,10 +117,13 @@ "name" : "cartridges", "builddir" : true, "buildsystem" : "meson", + "config-opts": [ + "-Dprofile=development" + ], "sources" : [ { "type" : "dir", - "path" : "." + "path" : ".." } ] } diff --git a/meson.build b/meson.build index c123352..2a65b03 100644 --- a/meson.build +++ b/meson.build @@ -1,14 +1,32 @@ project('cartridges', - version: '1.5', + version: '1.5.4', meson_version: '>= 0.59.0', default_options: [ 'warning_level=2', 'werror=false', ], ) i18n = import('i18n') gnome = import('gnome') +python = import('python') pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) +profile = get_option('profile') +if profile == 'development' + app_id = 'hu.kramo.Cartridges.Devel' + prefix = '/hu/kramo/Cartridges/Devel' +elif profile == 'release' + app_id = 'hu.kramo.Cartridges' + prefix = '/hu/kramo/Cartridges' +endif + +conf = configuration_data() +conf.set('PYTHON', python.find_installation('python3').full_path()) +conf.set('APP_ID', app_id) +conf.set('PREFIX', prefix) +conf.set('VERSION', meson.project_version()) +conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir'))) +conf.set('pkgdatadir', pkgdatadir) + subdir('data') subdir('src') subdir('po') diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..5026cd2 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,9 @@ +option( + 'profile', + type: 'combo', + choices: [ + 'release', + 'development', + ], + value: 'release' +) diff --git a/po/LINGUAS b/po/LINGUAS index b320eed..c85c56b 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -17,3 +17,4 @@ pt_BR fa pl sv +tr diff --git a/po/POTFILES b/po/POTFILES index fec8a42..271d33c 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -1,7 +1,8 @@ data/hu.kramo.Cartridges.desktop.in -data/hu.kramo.Cartridges.gschema.xml +data/hu.kramo.Cartridges.gschema.xml.in data/hu.kramo.Cartridges.metainfo.xml.in +data/gtk/details_window.blp data/gtk/game.blp data/gtk/help-overlay.blp data/gtk/preferences.blp diff --git a/po/ar.po b/po/ar.po index d359b81..e5ea6f3 100644 --- a/po/ar.po +++ b/po/ar.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-04-14 12:29+0000\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-26 18:10+0000\n" "Last-Translator: Ali Aljishi \n" "Language-Team: Arabic \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +37,7 @@ msgstr "شغِّل كلَّ ألعابك" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "لعب;مشغل;ستيم;لوترس;هروك;قوارير;إتش;هيرويك;بوتلز;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -54,7 +54,7 @@ msgstr "" msgid "Library" msgstr "المكتبة" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "حرِّر تفاصيل اللعبة" @@ -68,15 +68,52 @@ msgstr "تفاصيل اللعبة" msgid "Preferences" msgstr "التفضيلات" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "ألغِ" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "غلاف جديد" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "احذف الغلاف" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "العنوان" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "عنوان اللعبة" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "المطوِّر" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "المطوِّر أو الناشر (اختياري)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "ملفُّ التنفيذ" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "الملفُّ المفتوح أو الأمر المشغَّل عند بدء اللعبة" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "معلومات أكثر" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "حرِّر" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "أخفِ" @@ -85,7 +122,7 @@ msgstr "أخفِ" msgid "Remove" msgstr "أزل" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "اكشف" @@ -110,7 +147,7 @@ msgstr "أظهر التفضيلات" msgid "Shortcuts" msgstr "الاختصارات" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "تراجع" @@ -154,7 +191,7 @@ msgstr "تبدأ صورة الغلاف اللعبة" msgid "Swaps the behavior of the cover image and the play button" msgstr "يبدِّل سلوك صورة الغلاف وزرِّ «العب»" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "الصور" @@ -359,61 +396,61 @@ msgstr "عن «خراطيش»" msgid "translator_credits" msgstr "Ali Aljishi " -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "اليوم" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "أمس" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "أضيفت في: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "أبدًا" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "لُعبت آخر مرَّة في: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "طبِّق" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "أضف لعبةً جديدةً" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "أكِّد" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "ملف.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "البرنامج" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\المسار\\إلى\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/المسار/إلى/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -435,19 +472,19 @@ msgstr "" "\n" "ولا تنسَ إحاطة المسار بعلامتي تنصيص مزدوجتين حالما تضمَّن مسافات!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "تعذَّرت إضافة اللعبة" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "لا يجوز كون عنوان اللعبة فارغًا." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "لا يجوز كون ملفِّ التنفيذ فارغًا." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "تعذَّر تطبيق التفضيلات" @@ -519,23 +556,17 @@ msgid "Importing Covers…" msgstr "تُستورد الغُلُف…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "لم يُعثر على ألعاب" +msgstr "لم يُعثر على ألعاب جديدة" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "اُستوردت اللعبة" +msgstr "اُستوردت لعبة واحدة" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "اُستوردت الألعاب" +msgstr "اُستوردت {} لعبة" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -559,24 +590,6 @@ msgstr "تعذَّر الاتصال ب‍ SteamGridDB" #~ msgid "Details" #~ msgstr "التفاصيل" -#~ msgid "The title of the game" -#~ msgstr "عنوان اللعبة" - -#~ msgid "Developer" -#~ msgstr "المطوِّر" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "المطوِّر أو الناشر (اختياري)" - -#~ msgid "Executable" -#~ msgstr "ملفُّ التنفيذ" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "الملفُّ المفتوح أو الأمر المشغَّل عند بدء اللعبة" - -#~ msgid "Cancel" -#~ msgstr "ألغِ" - #~ msgid "No new games were found on your system." #~ msgstr "لم يُعثر على ألعاب جديدة في نظامك." @@ -611,19 +624,16 @@ msgstr "تعذَّر الاتصال ب‍ SteamGridDB" #~ msgstr "/path/to/{file_name}" #, fuzzy -#~| msgid "General" #~ msgctxt "shortcuts window" #~ msgid "General" #~ msgstr "عام" #, fuzzy -#~| msgid "Search" #~ msgctxt "shortcuts window" #~ msgid "Search" #~ msgstr "ابحث" #, fuzzy -#~| msgid "Undo" #~ msgctxt "shortcuts window" #~ msgid "Undo" #~ msgstr "تراجع" @@ -672,3 +682,9 @@ msgstr "تعذَّر الاتصال ب‍ SteamGridDB" #~ msgid "Talking to Steam" #~ msgstr "يُتواصل مع ستيم" + +#~ msgid "Game Imported" +#~ msgstr "اُستوردت اللعبة" + +#~ msgid "Games Imported" +#~ msgstr "اُستوردت الألعاب" diff --git a/po/cartridges.pot b/po/cartridges.pot index 11a5c13..992daec 100644 --- a/po/cartridges.pot +++ b/po/cartridges.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,7 +48,7 @@ msgstr "" msgid "Library" msgstr "" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "" @@ -62,15 +62,52 @@ msgstr "" msgid "Preferences" msgstr "" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "" @@ -79,7 +116,7 @@ msgstr "" msgid "Remove" msgstr "" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "" @@ -104,7 +141,7 @@ msgstr "" msgid "Shortcuts" msgstr "" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "" @@ -148,7 +185,7 @@ msgstr "" msgid "Swaps the behavior of the cover image and the play button" msgstr "" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "" @@ -353,61 +390,61 @@ msgstr "" msgid "translator_credits" msgstr "" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -420,19 +457,19 @@ msgid "" "If the path contains spaces, make sure to wrap it in double quotes!" msgstr "" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "" -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "" -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "" diff --git a/po/de.po b/po/de.po index 4fa90e7..90a42dc 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" "PO-Revision-Date: 2023-04-17 17:20+0000\n" "Last-Translator: Ettore Atalan \n" "Language-Team: German \n" "Language-Team: Spanish " -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Hoy" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Ayer" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Añadido: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Nunca" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Último jugado: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Aplicar" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Añadir juego nuevo" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Confirmar" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "archivo.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "programa" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\ruta\\hasta\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/ruta/hasta/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -437,19 +474,19 @@ msgstr "" "\n" "Si la ruta contiene espacios, ¡asegúrese de entrecomillarla!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "No se puede añadir el juego" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "El título del juego no puede estar vacío." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "El ejecutable no puede estar vacío." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "No se pudieron aplicar las preferencias" @@ -562,24 +599,6 @@ msgstr "No se puede conectar a SteamGridDB" #~ msgid "Details" #~ msgstr "Detalles" -#~ msgid "The title of the game" -#~ msgstr "El título del juego" - -#~ msgid "Developer" -#~ msgstr "Desarrollador" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "El desarrollador o editor (opcional)" - -#~ msgid "Executable" -#~ msgstr "Ejecutable" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Archivo a abrir o comando a ejecutar al iniciar el juego" - -#~ msgid "Cancel" -#~ msgstr "Cancelar" - #~ msgid "No new games were found on your system." #~ msgstr "No se encontraron nuevos juegos en tú sistema." diff --git a/po/fa.po b/po/fa.po index c841382..77faf13 100644 --- a/po/fa.po +++ b/po/fa.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" "PO-Revision-Date: 2023-04-22 10:48+0000\n" "Last-Translator: سید حسین موسوی فرد \n" "Language-Team: Persian \n" "Language-Team: Finnish \n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-24 20:27+0000\n" +"Last-Translator: rene-coty \n" "Language-Team: French \n" "Language: fr\n" @@ -39,7 +39,7 @@ msgstr "Lancez tous vos jeux" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "gaming;jeux;lanceur;steam;lutris;heroic;bouteilles;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -57,7 +57,7 @@ msgstr "" msgid "Library" msgstr "Bibliothèque" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Modifier les détails du jeu" @@ -71,15 +71,52 @@ msgstr "Détails du jeu" msgid "Preferences" msgstr "Préférences" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Annuler" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Titre" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Le titre du jeu" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Développeur" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Le développeur ou l’éditeur (facultatif)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Exécutable" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Fichier à ouvrir ou commande à exécuter au lancement du jeu" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Modifier" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Masquer" @@ -88,7 +125,7 @@ msgstr "Masquer" msgid "Remove" msgstr "Supprimer" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Ne plus masquer" @@ -113,7 +150,7 @@ msgstr "Afficher les préférences" msgid "Shortcuts" msgstr "Raccourcis" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Annuler" @@ -158,7 +195,7 @@ msgid "Swaps the behavior of the cover image and the play button" msgstr "" "Intervertit le comportement de l’image de la pochette et du bouton de lecture" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Images" @@ -365,61 +402,61 @@ msgstr "À propos de Cartridges" msgid "translator_credits" msgstr "Irénée Thirion" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Aujourd’hui" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Hier" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Ajouté : {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Jamais" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Dernière session : {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Appliquer" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Ajouter un nouveau jeu" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Confirmer" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "fichier.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "programme" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\chemin\\vers\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/chemin/vers/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -443,19 +480,19 @@ msgstr "" "Si le chemin d'accès contient des espaces, veillez à le mettre entre " "guillemets !" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Impossible d’ajouter le jeu" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Le titre du jeu ne peut pas être vide." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "L’exécutable ne peut pas être vide." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Impossible d’appliquer les préférences" @@ -528,23 +565,17 @@ msgid "Importing Covers…" msgstr "Importation des pochettes des jeux…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Aucun jeu trouvé" +msgstr "Aucun nouveau jeu trouvé" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Jeu importé" +msgstr "1 jeu importé" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Jeux importés" +msgstr "{} jeux importés" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -569,24 +600,6 @@ msgstr "Impossible de se connecter à SteamGridDB" #~ msgid "Details" #~ msgstr "Détails" -#~ msgid "The title of the game" -#~ msgstr "Le titre du jeu" - -#~ msgid "Developer" -#~ msgstr "Développeur" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Le développeur ou l’éditeur (facultatif)" - -#~ msgid "Executable" -#~ msgstr "Exécutable" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Fichier à ouvrir ou commande à exécuter au lancement du jeu" - -#~ msgid "Cancel" -#~ msgstr "Annuler" - #~ msgid "No new games were found on your system." #~ msgstr "Aucun nouveau jeu n’a été trouvé sur votre système." diff --git a/po/hu.po b/po/hu.po index f353a3c..3175544 100644 --- a/po/hu.po +++ b/po/hu.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-04-11 21:31+0000\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-26 18:10+0000\n" "Last-Translator: kramo \n" "Language-Team: Hungarian \n" @@ -18,7 +18,7 @@ msgstr "" "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.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +37,7 @@ msgstr "Indítsa el az összes játékát" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "játék;indító;steam;lutris;heroic;palackok;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -54,7 +54,7 @@ msgstr "" msgid "Library" msgstr "Könyvtár" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Játék Szerkesztése" @@ -68,15 +68,52 @@ msgstr "Játék Tulajdonságai" msgid "Preferences" msgstr "Beállítások" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Mégse" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "Új borító" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "Borító törlése" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Cím" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "A játék címe" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Fejlesztő" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "A fejlesztő vagy kiadó (nem kötelező)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Program" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Fájl megnyitása vagy parancs futtatása a játék indításakor" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "Több infó" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Szerkesztés" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Elrejtés" @@ -85,7 +122,7 @@ msgstr "Elrejtés" msgid "Remove" msgstr "Eltávolítás" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Elrejtés visszavonása" @@ -110,7 +147,7 @@ msgstr "Beállítások megjelenítése" msgid "Shortcuts" msgstr "Gyorsbillentyűk" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Visszavonás" @@ -154,7 +191,7 @@ msgstr "A borítókép indítja el a játékot" msgid "Swaps the behavior of the cover image and the play button" msgstr "Felcseréli a \"Játék\" gomb és a borítókép funkcióját" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Képek" @@ -359,61 +396,61 @@ msgstr "A Kazetták névjegye" msgid "translator_credits" msgstr "kramo https://kramo.hu" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Ma" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Tegnap" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Hozzáadva: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Soha" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Legutóbbi játékmenet: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Alkalmazás" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Új játék hozzáadása" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Megerősítés" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "fájl.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "program" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\útvonal\\ide\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/útvonal/ide/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -436,19 +473,19 @@ msgstr "" "\n" "Ha az elérési útvonalban szóközök vannak, rakja az útvonalat idézőjelek közé!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Nem lehet hozzáadni a játékot" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "A cím nem lehet üres." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "A program nem lehet üres." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Nem lehet menteni a beállításokat" @@ -521,23 +558,17 @@ msgid "Importing Covers…" msgstr "Borítóképek importálása folyamatban…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Nem találhatóak játékok" +msgstr "Nem találhatóak új játékok" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Játékok importálva" +msgstr "1 játék importálva" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Játékok importálva" +msgstr "{} játék importálva" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -561,24 +592,6 @@ msgstr "Nem lehet csatlakozni a SteamGridDB-hez" #~ msgid "Details" #~ msgstr "Tulajdonságok" -#~ msgid "The title of the game" -#~ msgstr "A játék címe" - -#~ msgid "Developer" -#~ msgstr "Fejlesztő" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "A fejlesztő vagy kiadó (nem kötelező)" - -#~ msgid "Executable" -#~ msgstr "Program" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Fájl megnyitása vagy parancs futtatása a játék indításakor" - -#~ msgid "Cancel" -#~ msgstr "Mégse" - #~ msgid "No new games were found on your system." #~ msgstr "Nem találhatóak új játékok a rendszerén." @@ -701,3 +714,9 @@ msgstr "Nem lehet csatlakozni a SteamGridDB-hez" #~ msgid "Set Steam Location" #~ msgstr "Steam mappa kiválasztása" + +#~ msgid "Game Imported" +#~ msgstr "Játékok importálva" + +#~ msgid "Games Imported" +#~ msgstr "Játékok importálva" diff --git a/po/it.po b/po/it.po index f823343..073013a 100644 --- a/po/it.po +++ b/po/it.po @@ -8,9 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-04-14 12:29+0000\n" -"Last-Translator: Alessandro Iepure \n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-26 18:10+0000\n" +"Last-Translator: albanobattistella \n" "Language-Team: Italian \n" "Language: it\n" @@ -18,7 +18,7 @@ msgstr "" "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.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +37,7 @@ msgstr "Avvia tutti i tuoi giochi" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "gioco;launcher;steam;lutris;heroic;bottles;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -55,7 +55,7 @@ msgstr "" msgid "Library" msgstr "Libreria" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Modifica dettagli del gioco" @@ -69,15 +69,52 @@ msgstr "Dettagli del gioco" msgid "Preferences" msgstr "Preferenze" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Annulla" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "Nuova copertina" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "Elimina copertina" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Titolo" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Titolo del gioco" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Sviluppatore" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Lo sviluppatore o l'editore (opzionale)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Eseguibile" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "File da aprire o comando da lanciare per avviare il gioco" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "Altre informazioni" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Modifica" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Nascondi" @@ -86,7 +123,7 @@ msgstr "Nascondi" msgid "Remove" msgstr "Rimuovi" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Mostra" @@ -111,7 +148,7 @@ msgstr "Mostra preferenze" msgid "Shortcuts" msgstr "Scorciatoie da tastiera" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Annulla" @@ -155,7 +192,7 @@ msgstr "La copertina avvia il gioco" msgid "Swaps the behavior of the cover image and the play button" msgstr "Inverti il comportamento della copertina con il pulsante di avvio" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Immagini" @@ -361,61 +398,61 @@ msgstr "Informazioni su Cartucce" msgid "translator_credits" msgstr "Alessandro Iepure https://ale.iepure.me" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Oggi" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Ieri" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Aggiunto il: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Mai" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Ultima riproduzione: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Applica" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Aggiungi un Nuovo Gioco" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Conferma" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "file.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "programma" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\path\\to{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/percorso/to/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -437,19 +474,19 @@ msgstr "" "\n" "Se il percorso contiene spazi, assicurarsi di avvolgerlo in doppi apici!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Impossibile aggiungere il gioco" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Il titolo del gioco non può essere vuoto." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "L'eseguibile non può essere vuoto." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Impossibile applicare le preferenze" @@ -522,23 +559,17 @@ msgid "Importing Covers…" msgstr "Import delle copertine…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Nessun Gioco Trovato" +msgstr "Nessun nuovo gioco trovato" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Gioco importato" +msgstr "1 gioco importato" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Giochi importati" +msgstr "{} giochi importati" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -564,24 +595,6 @@ msgstr "Impossibile connettersi a SteamGridDB" #~ msgid "Details" #~ msgstr "Dettagli" -#~ msgid "The title of the game" -#~ msgstr "Titolo del gioco" - -#~ msgid "Developer" -#~ msgstr "Sviluppatore" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Lo sviluppatore o l'editore (opzionale)" - -#~ msgid "Executable" -#~ msgstr "Eseguibile" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "File da aprire o comando da lanciare per avviare il gioco" - -#~ msgid "Cancel" -#~ msgstr "Annulla" - #~ msgid "No new games were found on your system." #~ msgstr "Nessun nuovo gioco trovato nel tuo sistema." @@ -618,19 +631,16 @@ msgstr "Impossibile connettersi a SteamGridDB" #~ msgstr "/percorso/per/{file_name}" #, fuzzy -#~| msgid "General" #~ msgctxt "shortcuts window" #~ msgid "General" #~ msgstr "Generale" #, fuzzy -#~| msgid "Search" #~ msgctxt "shortcuts window" #~ msgid "Search" #~ msgstr "Cerca" #, fuzzy -#~| msgid "Undo" #~ msgctxt "shortcuts window" #~ msgid "Undo" #~ msgstr "Annulla" @@ -679,3 +689,9 @@ msgstr "Impossibile connettersi a SteamGridDB" #~ msgid "Talking to Steam" #~ msgstr "Parlando con Steam" + +#~ msgid "Game Imported" +#~ msgstr "Gioco importato" + +#~ msgid "Games Imported" +#~ msgstr "Giochi importati" diff --git a/po/ko.po b/po/ko.po index ad11a9e..d06ac8c 100644 --- a/po/ko.po +++ b/po/ko.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" "PO-Revision-Date: 2023-03-28 22:23+0000\n" "Last-Translator: MJKim \n" "Language-Team: Korean \n" "Language-Team: Norwegian Bokmål " -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "I dag" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "I går" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Tillagt: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Aldri" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Sist spilt: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Bruk" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Legg til nytt spill" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Bekreft" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "fil.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "program" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\sti\\til\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/sti/til/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -452,19 +489,19 @@ msgstr "" "Hvis stien inneholder mellomrom må du pakke den inn i doble engelske " "sitattegn." -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Kunne ikke legge til spill" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Spillnavnet kan ikke være tomt." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "Kjørbar fil må angis." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Kunne ikke ta i bruk endringer" @@ -586,24 +623,6 @@ msgstr "Kunne ikke koble til SteamGridDB" #~ msgid "Details" #~ msgstr "Detaljer" -#~ msgid "The title of the game" -#~ msgstr "Navnet på spillet" - -#~ msgid "Developer" -#~ msgstr "Utvikler" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Utvikler eller utgiver (valgfritt)" - -#~ msgid "Executable" -#~ msgstr "Kjørbar" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Fil å åpne eller kommando å kjøre ved oppstart av spillet" - -#~ msgid "Cancel" -#~ msgstr "Avbryt" - #~ msgid "No new games were found on your system." #~ msgstr "Fant ingen nye spill på systemet ditt." diff --git a/po/nl.po b/po/nl.po index 89d4c48..a6ed93a 100644 --- a/po/nl.po +++ b/po/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" "PO-Revision-Date: 2023-04-14 12:29+0000\n" "Last-Translator: Philip Goto \n" "Language-Team: Dutch \n" "Language-Team: Polish \n" "Language-Team: Portuguese \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Romanian \n" "Language-Team: Russian \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\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" -"X-Generator: Weblate 4.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +37,7 @@ msgstr "Запустите все свои игры" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "gaming;launcher;steam;lutris;heroic;bottles;itch;игры;стим;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -55,7 +55,7 @@ msgstr "" msgid "Library" msgstr "Библиотека" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Редактировать подробности об игре" @@ -69,15 +69,52 @@ msgstr "Подробности об игре" msgid "Preferences" msgstr "Параметры" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Отменить" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Название" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Название игры" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Разработчик" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Разработчик или издатель (необязательно)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Исполняемый" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Файл для открытия или команда для запуска игры" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Редактировать" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Скрыть" @@ -86,7 +123,7 @@ msgstr "Скрыть" msgid "Remove" msgstr "Удалить" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Показать" @@ -111,7 +148,7 @@ msgstr "Показать параметры" msgid "Shortcuts" msgstr "Комбинации клавиш" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Отменить" @@ -155,7 +192,7 @@ msgstr "Запуск игры используя изображение обло msgid "Swaps the behavior of the cover image and the play button" msgstr "Меняет местами поведение изображения обложки и кнопки запуска" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Изображения" @@ -360,61 +397,61 @@ msgstr "О приложении" msgid "translator_credits" msgstr "Ser82-png" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Сегодня" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Вчера" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Добавлено: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Никогда" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Последняя игра: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Применить" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Добавить новую игру" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Подтвердить" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "file.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "программа" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\путь\\к\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/путь/к/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -436,19 +473,19 @@ msgstr "" "\n" "Если путь содержит пробелы, обязательно заключите его в двойные кавычки!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Не удалось добавить игру" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Название игры не может быть пустым." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "Исполняемый файл не может быть пустым." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Не удалось применить параметры" @@ -521,23 +558,17 @@ msgid "Importing Covers…" msgstr "Импорт обложек…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Игры не найдены" +msgstr "Новых игр не найдено" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Игра импортирована" +msgstr "1 игра импортирована" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Игры импортированы" +msgstr "{} игр(ы) импортировано" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -561,24 +592,6 @@ msgstr "Не удалось подключиться к SteamGridDB" #~ msgid "Details" #~ msgstr "Подробности" -#~ msgid "The title of the game" -#~ msgstr "Название игры" - -#~ msgid "Developer" -#~ msgstr "Разработчик" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Разработчик или издатель (необязательно)" - -#~ msgid "Executable" -#~ msgstr "Исполняемый" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Файл для открытия или команда для запуска игры" - -#~ msgid "Cancel" -#~ msgstr "Отменить" - #~ msgid "No new games were found on your system." #~ msgstr "В вашей системе не найдено новых игр." diff --git a/po/sv.po b/po/sv.po index 8ac0b80..10ec809 100644 --- a/po/sv.po +++ b/po/sv.po @@ -2,13 +2,14 @@ # Copyright (C) YEAR kramo # This file is distributed under the same license as the Cartridges package. # micke , 2023. +# micke , 2023. msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-05-18 13:36+0000\n" -"Last-Translator: micke \n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-24 20:27+0000\n" +"Last-Translator: micke \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -35,7 +36,7 @@ msgstr "Starta alla dina spel" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "gaming;spelstartare;steam;lutris;heroic;bottles;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -52,7 +53,7 @@ msgstr "" msgid "Library" msgstr "Bibliotek" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Redigera speldetaljer" @@ -66,15 +67,52 @@ msgstr "Speldetaljer" msgid "Preferences" msgstr "Inställningar" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Avbryt" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Titel" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Spelets titel" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Utvecklare" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Utvecklaren eller utgivaren (valfritt)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Körbar" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Fil som ska öppnas eller kommando som ska köras när spelet startas" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Redigera" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Dölj" @@ -83,7 +121,7 @@ msgstr "Dölj" msgid "Remove" msgstr "Ta bort" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Visa" @@ -108,7 +146,7 @@ msgstr "Visa inställningar" msgid "Shortcuts" msgstr "Genvägar" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Ångra" @@ -152,7 +190,7 @@ msgstr "Omslagsbild startar spel" msgid "Swaps the behavior of the cover image and the play button" msgstr "Byt beteende för omslagsbilden och Spela-knappen" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Bilder" @@ -358,61 +396,61 @@ msgstr "Om Cartridges" msgid "translator_credits" msgstr "Micke" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Idag" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Igår" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Tillagt: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Aldrig" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Senast spelat: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Tillämpa" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Lägg till nytt spel" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Bekräfta" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "fil.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "program" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\sökväg\\till\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/sökväg/till/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -435,19 +473,19 @@ msgstr "" "Om sökvägen innehåller mellanslag, se till att den omsluts av dubbla " "citationstecken!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Kunde inte lägga till spelet" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Spelets titel kan inte vara tom." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "Den körbara filen kan inte vara tom." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Kunde inte tillämpa inställningar" @@ -519,23 +557,17 @@ msgid "Importing Covers…" msgstr "Importerar omslagsbilder…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Inga spel hittades" +msgstr "Inga nya spel hittades" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Spel Importerat" +msgstr "1 spel Importerat" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Spel importerade" +msgstr "{} spel importerade" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -559,24 +591,6 @@ msgstr "Kunde inte ansluta till SteamGridDB" #~ msgid "Details" #~ msgstr "Detaljer" -#~ msgid "The title of the game" -#~ msgstr "Spelets titel" - -#~ msgid "Developer" -#~ msgstr "Utvecklare" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Utvecklaren eller utgivaren (valfritt)" - -#~ msgid "Executable" -#~ msgstr "Körbar" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Fil som ska öppnas eller kommando som ska köras när spelet startas" - -#~ msgid "Cancel" -#~ msgstr "Avbryt" - #~ msgid "No new games were found on your system." #~ msgstr "Inga nya spel hittades på ditt system." diff --git a/po/ta.po b/po/ta.po index d5da421..9c34c6f 100644 --- a/po/ta.po +++ b/po/ta.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-04-14 12:29+0000\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-24 20:27+0000\n" "Last-Translator: \"K.B.Dharun Krishna\" \n" "Language-Team: Tamil \n" @@ -18,7 +18,7 @@ msgstr "" "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.17-dev\n" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +37,7 @@ msgstr "உங்கள் எல்லா விளையாட்டுகள #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "விளையாட்டு; துவக்கி; steam;lutris;heroic;பாட்டில்கள்;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -56,7 +56,7 @@ msgstr "" msgid "Library" msgstr "நூலகம்" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "விளையாட்டு விவரங்களைத் திருத்து" @@ -70,15 +70,52 @@ msgstr "விளையாட்டு விவரங்கள்" msgid "Preferences" msgstr "விருப்பங்கள்" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "ரத்துசெய்" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "தலைப்பு" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "விளையாட்டின் தலைப்பு" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "டெவலப்பர்" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "டெவலப்பர் அல்லது வெளியீட்டாளர் (விரும்பினால்)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "செயல்படுத்தக்கூடியது" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "விளையாட்டைத் தொடங்கும் போது திறக்க கோப்பு அல்லது இயக்க கட்டளை" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "தொகு" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "மறை" @@ -87,7 +124,7 @@ msgstr "மறை" msgid "Remove" msgstr "அகற்று" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "மறை காட்டு" @@ -112,7 +149,7 @@ msgstr "விருப்பங்களைக் காட்டு" msgid "Shortcuts" msgstr "குறுக்குவழிகள்" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "செயல்தவிர்" @@ -156,7 +193,7 @@ msgstr "அட்டைப் படம் விளையாட்டை தொ msgid "Swaps the behavior of the cover image and the play button" msgstr "அட்டைப் படத்தின் நடத்தை மற்றும் பிளே பட்டனை மாற்றுகிறது" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "படங்கள்" @@ -362,61 +399,61 @@ msgstr "கார்ட்ரிட்ஜ்கள் பற்றி" msgid "translator_credits" msgstr "K.B.Dharun Krishna " -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "இன்று" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "நேற்று" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "சேர்க்கப்பட்டது: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "ஒருபோதும் இல்லை" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "கடைசியாக விளையாடியது: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "விண்ணப்பி" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "புதிய விளையாட்டைச் சேர்க்கவும்" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "உறுதிப்படுத்தவும்" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "கோப்பு.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "பயன்பாடு" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" msgstr "C:\\பாதை\\டு \\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/பாதை/டு/ {}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -438,19 +475,19 @@ msgstr "" "\n" "பாதையில் இடைவெளிகள் இருந்தால், அதை இரட்டை மேற்கோள்களில் போர்த்துவதை உறுதிசெய்யவும்!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "விளையாட்டைச் சேர்க்க முடியவில்லை" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "விளையாட்டு தலைப்பு காலியாக இருக்கக்கூடாது." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "இயங்கக்கூடியது காலியாக இருக்க முடியாது." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "விருப்பத்தேர்வுகளைப் பயன்படுத்த முடியவில்லை" @@ -523,23 +560,17 @@ msgid "Importing Covers…" msgstr "அட்டைகளை இறக்குமதி செய்கிறது…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "விளையாட்டுகள் எதுவும் இல்லை" +msgstr "புதிய விளையாட்டுகள் எதுவும் கண்டறியப்படவில்லை" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "விளையாட்டு இறக்குமதி செய்யப்பட்டது" +msgstr "1 விளையாட்டு இறக்குமதி செய்யப்பட்டது" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "விளையாட்டுகள் இறக்குமதி செய்யப்பட்டன" +msgstr "{} விளையாட்டுகள் இறக்குமதி செய்யப்பட்டன" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -563,24 +594,6 @@ msgstr "ஸ்டீம்கிரிட் டிபி (SteamGridDB) உட #~ msgid "Details" #~ msgstr "விவரங்கள்" -#~ msgid "The title of the game" -#~ msgstr "விளையாட்டின் தலைப்பு" - -#~ msgid "Developer" -#~ msgstr "டெவலப்பர்" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "டெவலப்பர் அல்லது வெளியீட்டாளர் (விரும்பினால்)" - -#~ msgid "Executable" -#~ msgstr "செயல்படுத்தக்கூடியது" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "விளையாட்டைத் தொடங்கும் போது திறக்க கோப்பு அல்லது இயக்க கட்டளை" - -#~ msgid "Cancel" -#~ msgstr "ரத்துசெய்" - #~ msgid "No new games were found on your system." #~ msgstr "உங்கள் கணினியில் புதிய விளையாட்டுகள் எதுவும் இல்லை." diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..d4b5108 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,575 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR kramo +# This file is distributed under the same license as the Cartridges package. +# Sabri Ünal , 2023. +msgid "" +msgstr "" +"Project-Id-Version: Cartridges\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-26 18:10+0000\n" +"Last-Translator: Sabri Ünal \n" +"Language-Team: Turkish \n" +"Language: tr\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.18-dev\n" + +#: data/hu.kramo.Cartridges.desktop.in:3 +#: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 +#: src/main.py:109 +msgid "Cartridges" +msgstr "Kartuşlar" + +#: data/hu.kramo.Cartridges.desktop.in:4 +msgid "Game Launcher" +msgstr "Oyun Başlatıcı" + +#: data/hu.kramo.Cartridges.desktop.in:5 +#: data/hu.kramo.Cartridges.metainfo.xml.in:7 +msgid "Launch all your games" +msgstr "Tüm oyunlarınızı başlatın" + +#: data/hu.kramo.Cartridges.desktop.in:11 +msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" +msgstr "oyun;başlatıcı;steam;lutris;heroic;bottles;itch;" + +#: data/hu.kramo.Cartridges.metainfo.xml.in:9 +msgid "" +"Cartridges is a simple game launcher for all of your games. It has support " +"for importing games from Steam, Lutris, Heroic and more with no login " +"necessary. You can sort and hide games or download cover art from " +"SteamGridDB." +msgstr "" +"Kartuşlar, tüm oyunlarınız için basit bir oyun başlatıcıdır. Oturum açmaya " +"gerek kalmadan Steam, Lutris, Heroic ve daha fazla sağlayıcıdan oyun içe " +"aktarma desteğine sahiptir. Oyunları sıralayabilir, gizleyebilir veya " +"SteamGridDB'den kapak resmi indirebilirsiniz." + +#: data/hu.kramo.Cartridges.metainfo.xml.in:30 +msgid "Library" +msgstr "Kütüphane" + +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 +msgid "Edit Game Details" +msgstr "Oyun Ayrıntılarını Düzenle" + +#: data/hu.kramo.Cartridges.metainfo.xml.in:38 data/gtk/window.blp:72 +msgid "Game Details" +msgstr "Oyun Ayrıntıları" + +#: data/hu.kramo.Cartridges.metainfo.xml.in:42 data/gtk/window.blp:417 +#: src/utils/importer.py:92 src/utils/importer.py:124 +#: src/utils/steamgriddb.py:115 +msgid "Preferences" +msgstr "Tercihler" + +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "İptal" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "Yeni Kapak" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "Kapağı Sil" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 +#: data/gtk/game.blp:80 +msgid "Title" +msgstr "Başlık" + +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Oyunun başlığı" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Geliştirici" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Geliştirici veya yayıncı (isteğe bağlı)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Yürütülebilir" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Oyun başlatılırken açılacak dosya veya çalıştırılacak komut" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "Daha Fazla Bilgi" + +#: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 +msgid "Edit" +msgstr "Düzenle" + +#: data/gtk/game.blp:107 src/window.py:205 +msgid "Hide" +msgstr "Gizle" + +#: data/gtk/game.blp:112 data/gtk/game.blp:131 data/gtk/preferences.blp:56 +#: data/gtk/window.blp:210 +msgid "Remove" +msgstr "Kaldır" + +#: data/gtk/game.blp:126 src/window.py:207 +msgid "Unhide" +msgstr "Göster" + +#: data/gtk/help-overlay.blp:11 data/gtk/preferences.blp:9 +msgid "General" +msgstr "Genel" + +#: data/gtk/help-overlay.blp:14 +msgid "Quit" +msgstr "Çık" + +#: data/gtk/help-overlay.blp:19 data/gtk/window.blp:218 data/gtk/window.blp:258 +#: data/gtk/window.blp:324 +msgid "Search" +msgstr "Ara" + +#: data/gtk/help-overlay.blp:24 +msgid "Show preferences" +msgstr "Tercihleri göster" + +#: data/gtk/help-overlay.blp:29 +msgid "Shortcuts" +msgstr "Kısayollar" + +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 +msgid "Undo" +msgstr "Geri Al" + +#: data/gtk/help-overlay.blp:39 +msgid "Open menu" +msgstr "Menüyü aç" + +#: data/gtk/help-overlay.blp:45 +msgid "Games" +msgstr "Oyunlar" + +#: data/gtk/help-overlay.blp:48 +msgid "Add new game" +msgstr "Yeni oyun ekle" + +#: data/gtk/help-overlay.blp:53 +msgid "Import games" +msgstr "Oyunları içe aktar" + +#: data/gtk/help-overlay.blp:58 +msgid "Show hidden games" +msgstr "Gizli oyunları göster" + +#: data/gtk/help-overlay.blp:63 +msgid "Remove game" +msgstr "Oyunu kaldır" + +#: data/gtk/preferences.blp:13 data/gtk/preferences.blp:206 +msgid "Behavior" +msgstr "Davranış" + +#: data/gtk/preferences.blp:16 +msgid "Exit After Launching Games" +msgstr "Oyunu Başlatıldıktan Sonra Çık" + +#: data/gtk/preferences.blp:25 +msgid "Cover Image Launches Game" +msgstr "Kapak Görüntüsü Oyunu Başlatır" + +#: data/gtk/preferences.blp:26 +msgid "Swaps the behavior of the cover image and the play button" +msgstr "Kapak görüntüsünün ve oyna düğmesinin davranışını değiştirir" + +#: data/gtk/preferences.blp:36 src/details_window.py:84 +msgid "Images" +msgstr "Görüntüler" + +#: data/gtk/preferences.blp:39 +msgid "High Quality Images" +msgstr "Yüksek Kaliteli Görüntüler" + +#: data/gtk/preferences.blp:40 +msgid "Save game covers losslessly at the cost of storage" +msgstr "" +"Oyun kapaklarını, daha çok depolama alanı gerektirmesine rağmen, kayıpsız " +"kaydet" + +#: data/gtk/preferences.blp:50 +msgid "Danger Zone" +msgstr "Tehlikeli Bölge" + +#: data/gtk/preferences.blp:53 +msgid "Remove All Games" +msgstr "Tüm Oyunları Kaldır" + +#: data/gtk/preferences.blp:69 data/gtk/window.blp:28 data/gtk/window.blp:443 +msgid "Import" +msgstr "İçe Aktar" + +#: data/gtk/preferences.blp:73 +msgid "Sources" +msgstr "Kaynaklar" + +#: data/gtk/preferences.blp:76 +msgid "Steam" +msgstr "Steam" + +#: data/gtk/preferences.blp:80 +msgid "Steam Install Location" +msgstr "Steam Kurulu Konumu" + +#: data/gtk/preferences.blp:90 +msgid "Lutris" +msgstr "Lutris" + +#: data/gtk/preferences.blp:94 +msgid "Lutris Install Location" +msgstr "Lutris Kurulu Konumu" + +#: data/gtk/preferences.blp:103 +msgid "Lutris Cache Location" +msgstr "Lutris Önbellek Konumu" + +#: data/gtk/preferences.blp:112 +msgid "Import Steam Games" +msgstr "Steam Oyunlarını İçe Aktar" + +#: data/gtk/preferences.blp:122 +msgid "Heroic" +msgstr "Heroic" + +#: data/gtk/preferences.blp:126 +msgid "Heroic Install Location" +msgstr "Heroic Kurulu Konumu" + +#: data/gtk/preferences.blp:135 +msgid "Import Epic Games" +msgstr "Epic Oyunlarını İçe Aktar" + +#: data/gtk/preferences.blp:144 +msgid "Import GOG Games" +msgstr "GOG Oyunlarını İçe Aktar" + +#: data/gtk/preferences.blp:153 +msgid "Import Sideloaded Games" +msgstr "Yandan Yüklenmiş Oyunları İçe Aktar" + +#: data/gtk/preferences.blp:163 +msgid "Bottles" +msgstr "Şişeler" + +#: data/gtk/preferences.blp:167 +msgid "Bottles Install Location" +msgstr "Şişeler Kurulu Konumu" + +#: data/gtk/preferences.blp:177 +msgid "itch" +msgstr "itch" + +#: data/gtk/preferences.blp:181 +msgid "itch Install Location" +msgstr "itch Kurulu Konumu" + +#: data/gtk/preferences.blp:194 +msgid "SteamGridDB" +msgstr "SteamGridDB" + +#: data/gtk/preferences.blp:198 +msgid "Authentication" +msgstr "Kimlik Doğrulaması" + +#: data/gtk/preferences.blp:201 +msgid "API Key" +msgstr "API anahtarı" + +#: data/gtk/preferences.blp:209 +msgid "Use SteamGridDB" +msgstr "SteamGridDB Kullan" + +#: data/gtk/preferences.blp:210 +msgid "Download images when adding or importing games" +msgstr "Oyun eklerken veya içe aktarırken görüntüleri indir" + +#: data/gtk/preferences.blp:219 +msgid "Prefer Over Official Images" +msgstr "Resmî Görsellere Yeğle" + +#: data/gtk/preferences.blp:228 +msgid "Prefer Animated Images" +msgstr "Hareketli Görselleri Yeğle" + +#: data/gtk/window.blp:6 data/gtk/window.blp:14 +msgid "No Games Found" +msgstr "Hiçbir Oyun Bulunamadı" + +#: data/gtk/window.blp:7 data/gtk/window.blp:15 +msgid "Try a different search." +msgstr "Başka arama dene." + +#: data/gtk/window.blp:22 +msgid "No Games" +msgstr "Oyun Yok" + +#: data/gtk/window.blp:23 +msgid "Use the + button to add games." +msgstr "Oyun eklemek için + düğmesini kullanın." + +#: data/gtk/window.blp:41 +msgid "No Hidden Games" +msgstr "Gizli Oyun Yok" + +#: data/gtk/window.blp:42 +msgid "Games you hide will appear here." +msgstr "Gizlediğiniz oyunlar burada belirecek." + +#: data/gtk/window.blp:65 data/gtk/window.blp:305 +msgid "Back" +msgstr "Geri" + +#: data/gtk/window.blp:122 +msgid "Game Title" +msgstr "Oyun Başlığı" + +#: data/gtk/window.blp:177 +msgid "Play" +msgstr "Oyna" + +#: data/gtk/window.blp:244 data/gtk/window.blp:436 +msgid "Add Game" +msgstr "Oyun Ekle" + +#: data/gtk/window.blp:251 data/gtk/window.blp:317 +msgid "Main Menu" +msgstr "Ana Menü" + +#: data/gtk/window.blp:312 +msgid "Hidden Games" +msgstr "Gizli Oyunlar" + +#: data/gtk/window.blp:375 +msgid "Sort" +msgstr "Sırala" + +#: data/gtk/window.blp:378 +msgid "A-Z" +msgstr "A-Z" + +#: data/gtk/window.blp:384 +msgid "Z-A" +msgstr "Z-A" + +#: data/gtk/window.blp:390 +msgid "Newest" +msgstr "En Yeni" + +#: data/gtk/window.blp:396 +msgid "Oldest" +msgstr "En Eski" + +#: data/gtk/window.blp:402 +msgid "Last Played" +msgstr "Son Oynanan" + +#: data/gtk/window.blp:409 +msgid "Show Hidden" +msgstr "Gizlileri Göster" + +#: data/gtk/window.blp:422 +msgid "Keyboard Shortcuts" +msgstr "Klavye Kısayolları" + +#: data/gtk/window.blp:427 +msgid "About Cartridges" +msgstr "Kartuşlar Hakkında" + +#. Translators: Replace this with your name for it to show up in the about window +#: src/main.py:127 +msgid "translator_credits" +msgstr "Sabri Ünal " + +#: src/window.py:187 +msgid "Today" +msgstr "Bugün" + +#: src/window.py:189 +msgid "Yesterday" +msgstr "Dün" + +#. The variable is the date when the game was added +#: src/window.py:228 +msgid "Added: {}" +msgstr "Eklendi: {}" + +#: src/window.py:231 +msgid "Never" +msgstr "Asla" + +#. The variable is the date when the game was last played +#: src/window.py:235 +msgid "Last played: {}" +msgstr "Son oynanma: {}" + +#: src/details_window.py:75 +msgid "Apply" +msgstr "Uygula" + +#: src/details_window.py:81 +msgid "Add New Game" +msgstr "Yeni Oyun Ekle" + +#: src/details_window.py:82 +msgid "Confirm" +msgstr "Doğrula" + +#. Translate this string as you would translate "file" +#: src/details_window.py:94 +msgid "file.txt" +msgstr "dosya.txt" + +#. As in software +#: src/details_window.py:96 +msgid "program" +msgstr "program" + +#. Translate this string as you would translate "path to {}" +#: src/details_window.py:101 src/details_window.py:103 +msgid "C:\\path\\to\\{}" +msgstr "C:\\yol\\klasör\\{}" + +#. Translate this string as you would translate "path to {}" +#: src/details_window.py:107 src/details_window.py:109 +msgid "/path/to/{}" +msgstr "/yol/klasör/{}" + +#: src/details_window.py:113 +msgid "" +"To launch the executable \"{}\", use the command:\n" +"\n" +"\"{}\"\n" +"\n" +"To open the file \"{}\" with the default application, use:\n" +"\n" +"{} \"{}\"\n" +"\n" +"If the path contains spaces, make sure to wrap it in double quotes!" +msgstr "" +"\"{}\" yürütülebilirini başlatmak için şu komutu kullanın:\n" +"\n" +"\"{}\"\n" +"\n" +"\"{}\" dosyasını öntanımlı uygulamayla açmak için şunu kullanın:\n" +"\n" +"\"{}\"\n" +"\n" +"Yol boşluk içeriyorsa, çift tırnak içine aldığınızdan emin olun!" + +#: src/details_window.py:143 src/details_window.py:149 +msgid "Couldn't Add Game" +msgstr "Oyun Eklenemedi" + +#: src/details_window.py:143 src/details_window.py:176 +msgid "Game title cannot be empty." +msgstr "Oyun başlığı boş olamaz." + +#: src/details_window.py:149 src/details_window.py:184 +msgid "Executable cannot be empty." +msgstr "Çalıştırılabilir boş olamaz." + +#: src/details_window.py:175 src/details_window.py:183 +msgid "Couldn't Apply Preferences" +msgstr "Tercihler Uygulanamadı" + +#. The variable is the title of the game +#: src/game.py:208 +msgid "{} launched" +msgstr "{} başlatıldı" + +#. The variable is the title of the game +#: src/game.py:220 +msgid "{} hidden" +msgstr "{} gizli" + +#: src/game.py:220 +msgid "{} unhidden" +msgstr "{} görünür" + +#. The variable is the title of the game +#: src/game.py:233 +msgid "{} removed" +msgstr "{} kaldırıldı" + +#: src/preferences.py:97 +msgid "All games removed" +msgstr "Tüm oyunlar kaldırıldı" + +#: src/preferences.py:136 +msgid "Cache Not Found" +msgstr "Önbellek Bulunamadı" + +#: src/preferences.py:137 +msgid "Select the Lutris cache directory." +msgstr "Lutris önbellek dizinini seç." + +#: src/preferences.py:139 src/preferences.py:292 +msgid "Set Location" +msgstr "Konum Ayarla" + +#: src/preferences.py:166 +msgid "" +"An API key is required to use SteamGridDB. You can generate one {}here{}." +msgstr "" +"SteamGridDBʼyi kullanmak için API anahtarı gereklidir. {}Buradan{} bir tane " +"oluşturabilirsiniz." + +#: src/preferences.py:286 +msgid "Installation Not Found" +msgstr "Kurulum Bulunamadı" + +#. The variable is the name of the game launcher +#: src/preferences.py:288 +msgid "Select the {} configuration directory." +msgstr "{} yapılandırma dizinini seç." + +#. The variable is the name of the game launcher +#: src/preferences.py:290 +msgid "Select the {} data directory." +msgstr "{} veri dizinini seç." + +#: src/utils/create_dialog.py:25 +msgid "Dismiss" +msgstr "Vazgeç" + +#: src/utils/importer.py:41 +msgid "Importing Games…" +msgstr "Oyunlar İçe Aktarılıyor…" + +#: src/utils/importer.py:76 +msgid "Importing Covers…" +msgstr "Kapaklar İçe Aktarılıyor…" + +#: src/utils/importer.py:91 +msgid "No new games found" +msgstr "Yeni oyun bulunamadı" + +#: src/utils/importer.py:98 +msgid "1 game imported" +msgstr "1 oyun içe aktarıldı" + +#. The variable is the number of games +#: src/utils/importer.py:104 +msgid "{} games imported" +msgstr "{} oyun içe aktarıldı" + +#: src/utils/importer.py:121 src/utils/steamgriddb.py:112 +msgid "Couldn't Connect to SteamGridDB" +msgstr "SteamGridDBʼye bağlanılamadı" diff --git a/po/uk.po b/po/uk.po index 28bbb65..dcdcbf2 100644 --- a/po/uk.po +++ b/po/uk.po @@ -3,12 +3,13 @@ # This file is distributed under the same license as the cartridges package. # kramo , 2023. # Dan , 2023. +# Вова Смірнов , 2023. msgid "" msgstr "" "Project-Id-Version: cartridges\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-23 07:30+0200\n" -"PO-Revision-Date: 2023-04-14 12:29+0000\n" +"POT-Creation-Date: 2023-05-25 17:48+0200\n" +"PO-Revision-Date: 2023-05-26 18:10+0000\n" "Last-Translator: Dan \n" "Language-Team: Ukrainian \n" @@ -16,9 +17,9 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" -"X-Generator: Weblate 4.17-dev\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" +"X-Generator: Weblate 4.18-dev\n" #: data/hu.kramo.Cartridges.desktop.in:3 #: data/hu.kramo.Cartridges.metainfo.xml.in:6 data/gtk/window.blp:48 @@ -37,7 +38,7 @@ msgstr "Запустіть усі свої ігри" #: data/hu.kramo.Cartridges.desktop.in:11 msgid "gaming;launcher;steam;lutris;heroic;bottles;itch;" -msgstr "" +msgstr "ігри;лаунчер;steam;lutris;heroic;bottles;itch;" #: data/hu.kramo.Cartridges.metainfo.xml.in:9 msgid "" @@ -55,7 +56,7 @@ msgstr "" msgid "Library" msgstr "Бібліотека" -#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:65 +#: data/hu.kramo.Cartridges.metainfo.xml.in:34 src/details_window.py:66 msgid "Edit Game Details" msgstr "Редагувати інформацію про гру" @@ -69,15 +70,52 @@ msgstr "Подробиці гри" msgid "Preferences" msgstr "Параметри" +#: data/gtk/details_window.blp:25 +msgid "Cancel" +msgstr "Скасувати" + +#: data/gtk/details_window.blp:57 +msgid "New Cover" +msgstr "Нова обкладинка" + +#: data/gtk/details_window.blp:75 +msgid "Delete Cover" +msgstr "Видалити обкладинку" + +#: data/gtk/details_window.blp:101 data/gtk/details_window.blp:106 #: data/gtk/game.blp:80 msgid "Title" msgstr "Назва" +#: data/gtk/details_window.blp:102 +msgid "The title of the game" +msgstr "Назва гри" + +#: data/gtk/details_window.blp:112 data/gtk/details_window.blp:117 +msgid "Developer" +msgstr "Розробник" + +#: data/gtk/details_window.blp:113 +msgid "The developer or publisher (optional)" +msgstr "Розробник або видавець (необов'язково)" + +#: data/gtk/details_window.blp:123 data/gtk/details_window.blp:153 +msgid "Executable" +msgstr "Виконуваний" + +#: data/gtk/details_window.blp:124 +msgid "File to open or command to run when launching the game" +msgstr "Файл для відкриття або команда для запуску під час запуску гри" + +#: data/gtk/details_window.blp:130 +msgid "More Info" +msgstr "Більше інформації" + #: data/gtk/game.blp:102 data/gtk/game.blp:121 data/gtk/window.blp:196 msgid "Edit" msgstr "Редагувати" -#: data/gtk/game.blp:107 src/window.py:202 +#: data/gtk/game.blp:107 src/window.py:205 msgid "Hide" msgstr "Приховати" @@ -86,7 +124,7 @@ msgstr "Приховати" msgid "Remove" msgstr "Видалити" -#: data/gtk/game.blp:126 src/window.py:204 +#: data/gtk/game.blp:126 src/window.py:207 msgid "Unhide" msgstr "Показати" @@ -111,7 +149,7 @@ msgstr "Показати параметри" msgid "Shortcuts" msgstr "Ярлики" -#: data/gtk/help-overlay.blp:34 src/game.py:167 src/preferences.py:98 +#: data/gtk/help-overlay.blp:34 src/game.py:169 src/preferences.py:98 msgid "Undo" msgstr "Відмінити" @@ -155,7 +193,7 @@ msgstr "Обкладинка запускає гру" msgid "Swaps the behavior of the cover image and the play button" msgstr "Міняє місцями поведінку зображення обкладинки та кнопки відтворення" -#: data/gtk/preferences.blp:36 src/details_window.py:79 +#: data/gtk/preferences.blp:36 src/details_window.py:84 msgid "Images" msgstr "Зображення" @@ -360,61 +398,61 @@ msgstr "Про Cartridges" msgid "translator_credits" msgstr "kefir2105" -#: src/window.py:184 +#: src/window.py:187 msgid "Today" msgstr "Сьогодні" -#: src/window.py:186 +#: src/window.py:189 msgid "Yesterday" msgstr "Вчора" #. The variable is the date when the game was added -#: src/window.py:225 +#: src/window.py:228 msgid "Added: {}" msgstr "Додано: {}" -#: src/window.py:228 +#: src/window.py:231 msgid "Never" msgstr "Ніколи" #. The variable is the date when the game was last played -#: src/window.py:232 +#: src/window.py:235 msgid "Last played: {}" msgstr "Останній раз грали: {}" -#: src/details_window.py:70 +#: src/details_window.py:75 msgid "Apply" msgstr "Застосувати" -#: src/details_window.py:76 +#: src/details_window.py:81 msgid "Add New Game" msgstr "Додати нову гру" -#: src/details_window.py:77 +#: src/details_window.py:82 msgid "Confirm" msgstr "Підтвердити" #. Translate this string as you would translate "file" -#: src/details_window.py:89 +#: src/details_window.py:94 msgid "file.txt" msgstr "file.txt" #. As in software -#: src/details_window.py:91 +#: src/details_window.py:96 msgid "program" msgstr "програма" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:96 src/details_window.py:98 +#: src/details_window.py:101 src/details_window.py:103 msgid "C:\\path\\to\\{}" -msgstr "C:\\path\\to\\{}" +msgstr "C:\\шлях\\до\\{}" #. Translate this string as you would translate "path to {}" -#: src/details_window.py:102 src/details_window.py:104 +#: src/details_window.py:107 src/details_window.py:109 msgid "/path/to/{}" msgstr "/path/to/{}" -#: src/details_window.py:108 +#: src/details_window.py:113 msgid "" "To launch the executable \"{}\", use the command:\n" "\n" @@ -437,19 +475,19 @@ msgstr "" "\n" "Якщо шлях містить пробіли, обов'язково візьміть його в подвійні лапки!" -#: src/details_window.py:139 src/details_window.py:145 +#: src/details_window.py:143 src/details_window.py:149 msgid "Couldn't Add Game" msgstr "Не вдалося додати гру" -#: src/details_window.py:139 src/details_window.py:172 +#: src/details_window.py:143 src/details_window.py:176 msgid "Game title cannot be empty." msgstr "Назва гри не може бути порожньою." -#: src/details_window.py:145 src/details_window.py:180 +#: src/details_window.py:149 src/details_window.py:184 msgid "Executable cannot be empty." msgstr "Виконуваний файл не може бути порожнім." -#: src/details_window.py:171 src/details_window.py:179 +#: src/details_window.py:175 src/details_window.py:183 msgid "Couldn't Apply Preferences" msgstr "Не вдалося застосувати параметри" @@ -522,23 +560,17 @@ msgid "Importing Covers…" msgstr "Імпорт обкладинок…" #: src/utils/importer.py:91 -#, fuzzy -#| msgid "No Games Found" msgid "No new games found" -msgstr "Ігор не знайдено" +msgstr "Нових ігор не знайдено" #: src/utils/importer.py:98 -#, fuzzy -#| msgid "Game Imported" msgid "1 game imported" -msgstr "Ігру імпортовано" +msgstr "1 гру імпортовано" #. The variable is the number of games #: src/utils/importer.py:104 -#, fuzzy -#| msgid "Games Imported" msgid "{} games imported" -msgstr "Ігри імпортовано" +msgstr "{} гри імпортовано" #: src/utils/importer.py:121 src/utils/steamgriddb.py:112 msgid "Couldn't Connect to SteamGridDB" @@ -562,24 +594,6 @@ msgstr "Не вдалося підключитися до SteamGridDB" #~ msgid "Details" #~ msgstr "Деталі" -#~ msgid "The title of the game" -#~ msgstr "Назва гри" - -#~ msgid "Developer" -#~ msgstr "Розробник" - -#~ msgid "The developer or publisher (optional)" -#~ msgstr "Розробник або видавець (необов'язково)" - -#~ msgid "Executable" -#~ msgstr "Виконуваний" - -#~ msgid "File to open or command to run when launching the game" -#~ msgstr "Файл для відкриття або команда для запуску під час запуску гри" - -#~ msgid "Cancel" -#~ msgstr "Скасувати" - #~ msgid "No new games were found on your system." #~ msgstr "У вашій системі не знайдено жодної нової гри." diff --git a/src/details_window.py b/src/details_window.py index d0cd7a3..d896bc2 100644 --- a/src/details_window.py +++ b/src/details_window.py @@ -33,7 +33,7 @@ from src.utils.save_cover import resize_cover, save_cover from src.utils.steamgriddb import SGDBSave -@Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/details_window.ui") +@Gtk.Template(resource_path=shared.PREFIX + "/gtk/details_window.ui") class DetailsWindow(Adw.Window): __gtype_name__ = "DetailsWindow" diff --git a/src/game.py b/src/game.py index d45dae2..e269885 100644 --- a/src/game.py +++ b/src/game.py @@ -24,13 +24,13 @@ import subprocess from pathlib import Path from time import time -from gi.repository import Adw, Gio, Gtk +from gi.repository import Adw, Gtk from src import shared from src.game_cover import GameCover -@Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/game.ui") +@Gtk.Template(resource_path=shared.PREFIX + "/gtk/game.ui") class Game(Gtk.Box): __gtype_name__ = "Game" @@ -66,6 +66,7 @@ class Game(Gtk.Box): self.win = shared.win self.app = self.win.get_application() + self.version = shared.SPEC_VERSION self.update_values(data) @@ -180,7 +181,7 @@ class Game(Gtk.Box): args = ( "flatpak-spawn --host /bin/sh -c " + shlex.quote(string) # Flatpak - if os.getenv("FLATPAK_ID") == "hu.kramo.Cartridges" + if os.getenv("FLATPAK_ID") == shared.APP_ID else string # Others ) @@ -192,7 +193,7 @@ class Game(Gtk.Box): creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if os.name == "nt" else 0, ) - if Gio.Settings.new("hu.kramo.Cartridges").get_boolean("exit-after-launch"): + if shared.schema.get_boolean("exit-after-launch"): self.app.quit() # The variable is the title of the game diff --git a/src/game_cover.py b/src/game_cover.py index b82ec8c..cca0eba 100644 --- a/src/game_cover.py +++ b/src/game_cover.py @@ -20,6 +20,8 @@ from gi.repository import GdkPixbuf, Gio, GLib from PIL import Image, ImageFilter, ImageStat +from src import shared + class GameCover: pixbuf = None @@ -30,7 +32,7 @@ class GameCover: anim_iter = None placeholder_pixbuf = GdkPixbuf.Pixbuf.new_from_resource_at_scale( - "/hu/kramo/Cartridges/library_placeholder.svg", 400, 600, False + shared.PREFIX + "/library_placeholder.svg", 400, 600, False ) def __init__(self, pictures, path=None): @@ -91,7 +93,7 @@ class GameCover: ) else: self.blurred = GdkPixbuf.Pixbuf.new_from_resource_at_scale( - "/hu/kramo/Cartridges/library_placeholder.svg", 2, 2, False + shared.PREFIX + "/library_placeholder.svg", 2, 2, False ) self.luminance = (0.1, 0.8) diff --git a/src/importer/sources/lutris_source.py b/src/importer/sources/lutris_source.py index e80b278..850c4d5 100644 --- a/src/importer/sources/lutris_source.py +++ b/src/importer/sources/lutris_source.py @@ -68,7 +68,7 @@ class LutrisSourceIterator(SourceIterator): # Create game values = { - "version": shared.spec_version, + "version": shared.SPEC_VERSION, "added": int(time()), "hidden": row[4], "name": row[1], diff --git a/src/importer/sources/steam_source.py b/src/importer/sources/steam_source.py index dd407ce..af79195 100644 --- a/src/importer/sources/steam_source.py +++ b/src/importer/sources/steam_source.py @@ -72,7 +72,7 @@ class SteamSourceIterator(SourceIterator): # Build game from local data appid = local_data["appid"] values = { - "version": shared.spec_version, + "version": shared.SPEC_VERSION, "added": int(time()), "name": local_data["name"], "source": self.source.id, diff --git a/src/importers/bottles_importer.py b/src/importers/bottles_importer.py index 04a9fe0..faaa346 100644 --- a/src/importers/bottles_importer.py +++ b/src/importers/bottles_importer.py @@ -28,22 +28,19 @@ from src.utils.check_install import check_install def bottles_installed(path=None): location_key = "bottles-location" - bottles_dir = ( - path if path else Path(shared.schema.get_string(location_key)).expanduser() - ) check = "library.yml" - if not (bottles_dir / check).is_file(): - locations = ( - (Path(),) - if path - else ( - Path.home() / ".var/app/com.usebottles.bottles/data/bottles", - shared.data_dir / "bottles", - ) + locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(location_key)).expanduser(), + Path.home() / ".var/app/com.usebottles.bottles/data/bottles", + shared.data_dir / "bottles", ) + ) - bottles_dir = check_install(check, locations, (shared.schema, location_key)) + bottles_dir = check_install(check, locations, (shared.schema, location_key)) return bottles_dir @@ -57,7 +54,7 @@ def bottles_importer(): data = (bottles_dir / "library.yml").read_text("utf-8") - library = yaml.load(data, Loader=yaml.Loader) + library = yaml.safe_load(data) importer = shared.importer importer.total_queue += len(library) diff --git a/src/importers/heroic_importer.py b/src/importers/heroic_importer.py index 85e84d9..549b4c1 100644 --- a/src/importers/heroic_importer.py +++ b/src/importers/heroic_importer.py @@ -29,25 +29,22 @@ from src.utils.check_install import check_install def heroic_installed(path=None): location_key = "heroic-location" - heroic_dir = ( - path if path else Path(shared.schema.get_string(location_key)).expanduser() - ) check = "config.json" - if not (heroic_dir / check).is_file(): - locations = ( - (Path(),) - if path - else ( - Path.home() / ".var/app/com.heroicgameslauncher.hgl/config/heroic", - shared.config_dir / "heroic", - ) + locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(location_key)).expanduser(), + Path.home() / ".var/app/com.heroicgameslauncher.hgl/config/heroic", + shared.config_dir / "heroic", ) + ) - if os.name == "nt" and not path: - locations += (Path(os.getenv("appdata")) / "heroic",) + if os.name == "nt" and not path: + locations += (Path(os.getenv("appdata")) / "heroic",) - heroic_dir = check_install(check, locations, (shared.schema, location_key)) + heroic_dir = check_install(check, locations, (shared.schema, location_key)) return heroic_dir @@ -63,7 +60,7 @@ def heroic_importer(): # Import Epic games if not shared.schema.get_boolean("heroic-import-epic"): pass - elif (heroic_dir / "store_cache" / "legendary_library.json").exists(): + elif (heroic_dir / "store_cache" / "legendary_library.json").is_file(): library = json.load( (heroic_dir / "store_cache" / "legendary_library.json").open() ) @@ -107,7 +104,7 @@ def heroic_importer(): ).hexdigest() ) - importer.save_game(values, image_path if image_path.exists() else None) + importer.save_game(values, image_path if image_path.is_file() else None) except KeyError: pass @@ -115,9 +112,9 @@ def heroic_importer(): # Import GOG games if not shared.schema.get_boolean("heroic-import-gog"): pass - elif (heroic_dir / "gog_store" / "installed.json").exists() and ( + elif (heroic_dir / "gog_store" / "installed.json").is_file() and ( heroic_dir / "store_cache" / "gog_library.json" - ).exists(): + ).is_file(): installed = json.load((heroic_dir / "gog_store" / "installed.json").open()) importer.total_queue += len(installed["installed"]) @@ -159,12 +156,12 @@ def heroic_importer(): values["source"] = "heroic_gog" values["added"] = current_time - importer.save_game(values, image_path if image_path.exists() else None) + importer.save_game(values, image_path if image_path.is_file() else None) # Import sideloaded games if not shared.schema.get_boolean("heroic-import-sideload"): pass - elif (heroic_dir / "sideload_apps" / "library.json").exists(): + elif (heroic_dir / "sideload_apps" / "library.json").is_file(): library = json.load((heroic_dir / "sideload_apps" / "library.json").open()) importer.total_queue += len(library["games"]) @@ -198,4 +195,4 @@ def heroic_importer(): / sha256(item["art_square"].encode()).hexdigest() ) - importer.save_game(values, image_path if image_path.exists() else None) + importer.save_game(values, image_path if image_path.is_file() else None) diff --git a/src/importers/itch_importer.py b/src/importers/itch_importer.py index 2eb14c0..ba8ad6b 100644 --- a/src/importers/itch_importer.py +++ b/src/importers/itch_importer.py @@ -122,25 +122,22 @@ def get_games_async(rows, importer): def itch_installed(path=None): location_key = "itch-location" - itch_dir = ( - path if path else Path(shared.schema.get_string(location_key)).expanduser() - ) check = Path("db") / "butler.db" - if not (itch_dir / check).is_file(): - locations = ( - (Path(),) - if path - else ( - Path.home() / ".var/app/io.itch.itch/config/itch", - shared.config_dir / "itch", - ) + locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(location_key)).expanduser(), + Path.home() / ".var/app/io.itch.itch/config/itch", + shared.config_dir / "itch", ) + ) - if os.name == "nt" and not path: - locations += (Path(os.getenv("appdata")) / "itch",) + if os.name == "nt" and not path: + locations += (Path(os.getenv("appdata")) / "itch",) - itch_dir = check_install(check, locations, (shared.schema, location_key)) + itch_dir = check_install(check, locations, (shared.schema, location_key)) return itch_dir diff --git a/src/importers/lutris_importer.py b/src/importers/lutris_importer.py index d8a10b5..a698caf 100644 --- a/src/importers/lutris_importer.py +++ b/src/importers/lutris_importer.py @@ -28,44 +28,38 @@ from src.utils.check_install import check_install def lutris_installed(path=None): location_key = "lutris-location" - lutris_dir = ( - path if path else Path(shared.schema.get_string(location_key)).expanduser() - ) check = "pga.db" - if not (lutris_dir / check).is_file(): - locations = ( - (Path(),) - if path - else ( - Path.home() / ".var/app/net.lutris.Lutris/data/lutris", - shared.data_dir / "lutris", - ) + locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(location_key)).expanduser(), + Path.home() / ".var/app/net.lutris.Lutris/data/lutris", + shared.data_dir / "lutris", ) + ) - lutris_dir = check_install(check, locations, (shared.schema, location_key)) + lutris_dir = check_install(check, locations, (shared.schema, location_key)) return lutris_dir def lutris_cache_exists(path=None): cache_key = "lutris-cache-location" - cache_dir = path if path else Path(shared.schema.get_string(cache_key)).expanduser() cache_check = "coverart" - if not (cache_dir / cache_check).exists(): - cache_locations = ( - (Path(),) - if path - else ( - Path.home() / ".var" / "app" / "net.lutris.Lutris" / "cache" / "lutris", - shared.cache_dir / "lutris", - ) + cache_locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(cache_key)).expanduser(), + Path.home() / ".var" / "app" / "net.lutris.Lutris" / "cache" / "lutris", + shared.cache_dir / "lutris", ) + ) - cache_dir = check_install( - cache_check, cache_locations, (shared.schema, cache_key) - ) + cache_dir = check_install(cache_check, cache_locations, (shared.schema, cache_key)) return cache_dir @@ -136,4 +130,4 @@ def lutris_importer(): values["source"] = f"lutris_{row[3]}" image_path = cache_dir / "coverart" / f"{row[2]}.jpg" - importer.save_game(values, image_path if image_path.exists() else None) + importer.save_game(values, image_path if image_path.is_file() else None) diff --git a/src/importers/steam_importer.py b/src/importers/steam_importer.py index 7ecaa83..f0a0757 100644 --- a/src/importers/steam_importer.py +++ b/src/importers/steam_importer.py @@ -35,9 +35,10 @@ def update_values_from_data(content, values): values["blacklisted"] = True else: data = basic_data["data"] - values["developer"] = ", ".join(data["developers"]) + if data.get("developers"): + values["developer"] = ", ".join(data["developers"]) - if data["type"] != "game": + if data.get("type") != "game": values["blacklisted"] = True return values @@ -88,11 +89,11 @@ def get_game(task, datatypes, current_time, appmanifest, steam_dir): open_file.raise_for_status() content = open_file.json() except requests.exceptions.RequestException: - task.return_value((values, image_path if image_path.exists() else None)) + task.return_value((values, image_path if image_path.is_file() else None)) return values = update_values_from_data(content, values) - task.return_value((values, image_path if image_path.exists() else None)) + task.return_value((values, image_path if image_path.is_file() else None)) def get_games_async(appmanifests, steam_dir, importer): @@ -124,28 +125,24 @@ def get_games_async(appmanifests, steam_dir, importer): def steam_installed(path=None): location_key = "steam-location" - steam_dir = Path(shared.schema.get_string(location_key)).expanduser() check = "steamapps" - if not (steam_dir / check).is_file(): - subdirs = ("steam", "Steam") - locations = ( - (path,) - if path - else ( - steam_dir, - Path.home() / ".steam", - shared.data_dir / "Steam", - Path.home() / ".var/app/com.valvesoftware.Steam/data/Steam", - ) + subdirs = ("steam", "Steam") + locations = ( + (path,) + if path + else ( + Path(shared.schema.get_string(location_key)).expanduser(), + Path.home() / ".steam", + shared.data_dir / "Steam", + Path.home() / ".var/app/com.valvesoftware.Steam/data/Steam", ) + ) - if os.name == "nt": - locations += (Path(os.getenv("programfiles(x86)")) / "Steam",) + if os.name == "nt": + locations += (Path(os.getenv("programfiles(x86)")) / "Steam",) - steam_dir = check_install( - check, locations, (shared.schema, location_key), subdirs - ) + steam_dir = check_install(check, locations, (shared.schema, location_key), subdirs) return steam_dir @@ -166,13 +163,12 @@ def steam_importer(): steam_dirs = [steam_dir] for directory in steam_dirs: - if not (directory / "steamapps").exists(): - steam_dirs.remove(directory) - - for directory in steam_dirs: - for open_file in (directory / "steamapps").iterdir(): - if open_file.is_file() and "appmanifest" in open_file.name: - appmanifests.append(open_file) + try: + for open_file in (directory / "steamapps").iterdir(): + if open_file.is_file() and "appmanifest" in open_file.name: + appmanifests.append(open_file) + except FileNotFoundError: + continue importer = shared.importer importer.total_queue += len(appmanifests) diff --git a/src/main.py b/src/main.py index 8e4b6c9..1511815 100644 --- a/src/main.py +++ b/src/main.py @@ -54,12 +54,15 @@ class CartridgesApplication(Adw.Application): def __init__(self): super().__init__( - application_id="hu.kramo.Cartridges", flags=Gio.ApplicationFlags.FLAGS_NONE + application_id=shared.APP_ID, flags=Gio.ApplicationFlags.FLAGS_NONE ) def do_activate(self): # pylint: disable=arguments-differ """Called on app creation""" + # Set fallback icon-name + Gtk.Window.set_default_icon_name(shared.APP_ID) + # Create the main window self.win = self.props.active_window # pylint: disable=no-member if not self.win: @@ -136,9 +139,9 @@ class CartridgesApplication(Adw.Application): about = Adw.AboutWindow( transient_for=self.win, application_name=_("Cartridges"), - application_icon="hu.kramo.Cartridges", + application_icon=shared.APP_ID, developer_name="kramo", - version="1.5", + version=shared.VERSION, developers=[ "kramo https://kramo.hu", "Arcitec https://github.com/Arcitec", diff --git a/src/meson.build b/src/meson.build index 5f47002..c5ef74f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,13 +1,5 @@ moduledir = join_paths(pkgdatadir, 'src') -python = import('python') - -conf = configuration_data() -conf.set('PYTHON', python.find_installation('python3').path()) -conf.set('VERSION', meson.project_version()) -conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir'))) -conf.set('pkgdatadir', pkgdatadir) - configure_file( input: 'cartridges.in', output: 'cartridges', @@ -28,7 +20,11 @@ install_data( 'details_window.py', 'game.py', 'game_cover.py', - 'shared.py', + configure_file( + input: 'shared.py.in', + output: 'shared.py', + configuration: conf + ) ], install_dir: moduledir ) \ No newline at end of file diff --git a/src/preferences.py b/src/preferences.py index 2bb2129..e0a5aff 100644 --- a/src/preferences.py +++ b/src/preferences.py @@ -35,7 +35,7 @@ from src.importers.steam_importer import steam_installed from src.utils.create_dialog import create_dialog -@Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/preferences.ui") +@Gtk.Template(resource_path=shared.PREFIX + "/gtk/preferences.ui") class PreferencesWindow(Adw.PreferencesWindow): __gtype_name__ = "PreferencesWindow" @@ -259,7 +259,7 @@ class PreferencesWindow(Adw.PreferencesWindow): getattr(win, f'{source_id.replace("-", "_")}_action_row').set_subtitle( # Remove the path if the dir is picked via the Flatpak portal re.sub( - "/run/user/\\d*/doc/......../", + "/run/user/\\d*/doc/.*/", "", str( Path(shared.schema.get_string(f"{source_id}-location")).expanduser() diff --git a/src/shared.py b/src/shared.py.in similarity index 85% rename from src/shared.py rename to src/shared.py.in index 71b900d..a55a0e9 100644 --- a/src/shared.py +++ b/src/shared.py.in @@ -1,4 +1,4 @@ -# shared.py +# shared.py.in # # Copyright 2022-2023 kramo # @@ -22,8 +22,13 @@ from pathlib import Path from gi.repository import Gdk, Gio -schema = Gio.Settings.new("hu.kramo.Cartridges") -state_schema = Gio.Settings.new("hu.kramo.Cartridges.State") +APP_ID = "@APP_ID@" +VERSION = "@VERSION@" +PREFIX = "@PREFIX@" +SPEC_VERSION = 1.5 # The version of the game_id.json spec + +schema = Gio.Settings.new(APP_ID) +state_schema = Gio.Settings.new(APP_ID + ".State") data_dir = ( Path(os.getenv("XDG_DATA_HOME")) @@ -51,5 +56,5 @@ image_size = (200 * scale_factor, 300 * scale_factor) # pylint: disable=invalid-name win = None -store = None -spec_version = 2.0 # The version of the game_id.json spec +importer = None +store = None \ No newline at end of file diff --git a/src/store/store.py b/src/store/store.py index ebed6ba..4c260c9 100644 --- a/src/store/store.py +++ b/src/store/store.py @@ -27,7 +27,7 @@ class Store: """ # Ignore games from a newer spec version - if game.version > shared.spec_version: + if game.version > shared.SPEC_VERSION: return None # Ignore games that are already there diff --git a/src/utils/check_install.py b/src/utils/check_install.py index 272df18..2f74395 100644 --- a/src/utils/check_install.py +++ b/src/utils/check_install.py @@ -24,10 +24,9 @@ from pathlib import Path def check_install(check, locations, setting=None, subdirs=(Path(),)): for location in locations: for subdir in (Path(),) + subdirs: - if (location / subdir / check).is_file() or ( - location / subdir / check - ).exists(): + if (location / subdir / check).exists(): if setting: setting[0].set_string(setting[1], str(location / subdir)) - return location / subdir + + return False diff --git a/src/window.py b/src/window.py index 5f1631b..4fc7ccf 100644 --- a/src/window.py +++ b/src/window.py @@ -19,10 +19,12 @@ from datetime import datetime -from gi.repository import Adw, Gio, GLib, Gtk +from gi.repository import Adw, GLib, Gtk + +from src import shared -@Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/window.ui") +@Gtk.Template(resource_path=shared.PREFIX + "/gtk/window.ui") class CartridgesWindow(Adw.ApplicationWindow): __gtype_name__ = "CartridgesWindow" @@ -86,6 +88,11 @@ class CartridgesWindow(Adw.ApplicationWindow): self.set_library_child() + self.notice_empty.set_icon_name(shared.APP_ID + "-symbolic") + + if "Devel" in shared.APP_ID: + self.add_css_class("devel") + # Connect search entries self.search_bar.connect_entry(self.search_entry) self.hidden_search_bar.connect_entry(self.hidden_search_entry) @@ -139,9 +146,8 @@ class CartridgesWindow(Adw.ApplicationWindow): ) filtered = text != "" and not ( - text in game.name.lower() or text in game.developer.lower() - if game.developer - else None + text in game.name.lower() + or (text in game.developer.lower() if game.developer else False) ) game.filtered = filtered @@ -291,9 +297,7 @@ class CartridgesWindow(Adw.ApplicationWindow): self.sort_state = str(state).strip("'") self.library.invalidate_sort() - Gio.Settings(schema_id="hu.kramo.Cartridges.State").set_string( - "sort-mode", self.sort_state - ) + shared.state_schema.set_string("sort-mode", self.sort_state) def on_toggle_search_action(self, *_args): if self.stack.get_visible_child() == self.library_view: diff --git a/.windows/Cartridges.iss b/windows/Cartridges.iss similarity index 99% rename from .windows/Cartridges.iss rename to windows/Cartridges.iss index dccbdc2..89ee8fd 100644 --- a/.windows/Cartridges.iss +++ b/windows/Cartridges.iss @@ -1,5 +1,5 @@ #define MyAppName "Cartridges" -#define MyAppVersion "1.5" +#define MyAppVersion "1.5.4" #define MyAppPublisher "kramo" #define MyAppURL "https://github.com/kra-mo/cartridges" #define MyAppExeName "pythonw.exe" diff --git a/.windows/icon.ico b/windows/icon.ico similarity index 100% rename from .windows/icon.ico rename to windows/icon.ico