diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 68e6004..638a7f9 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.7.3 +current_version = 1.8.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)(-(?P[a-z]+))? commit = True tag = False diff --git a/.github/workflows/league-patch.yml b/.github/workflows/league-patch.yml index bb16b42..c219e7f 100644 --- a/.github/workflows/league-patch.yml +++ b/.github/workflows/league-patch.yml @@ -21,7 +21,7 @@ jobs: shell: bash - name: Create Pull Request - uses: peter-evans/create-pull-request@v6.0.2 + uses: peter-evans/create-pull-request@v6.0.3 with: commit-message: Bump League Patch to ${{ steps.patch.outputs.patch }} title: Bump League Patch to ${{ steps.patch.outputs.patch }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 956163b..976816c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Related: [versioning strategy](./VERSIONING.md). +## v1.8.0 - Apr 15, 2024 +### Added +- Polish translation by **The_Shade2** (Thank you!) + +### Changed +- Updates to Traditional Chinese translation by @nico12313 (Thank you!) + +### Fixed +- Reverted `launchy` update since it broke link opening in the browser +- Dependency updates + ## v1.7.3 - Apr 04, 2024 ### Fixed - #167 Honor Level 3 Orbs now have proper display names diff --git a/CREDITS.md b/CREDITS.md index e419c4c..b519a82 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,10 +1,16 @@ # Credits +## Original source + +Disenchanter is based on [Anujan/disenchant-champ-shards](https://github.com/Anujan/disenchant-champ-shards). + ## Translation credits +- Esperanto + - @marvinscham - German (Deutsch) - @marvinscham +- Polish (Polski) + - **The_Shade2** - Traditional Chinese (繁體中文) - - @nico12313 -- Esperanto - - @marvinscham \ No newline at end of file + - @nico12313 \ No newline at end of file diff --git a/Gemfile b/Gemfile index eaee087..306d061 100644 --- a/Gemfile +++ b/Gemfile @@ -8,8 +8,8 @@ gem 'base64', '~> 0.2' gem 'colorize', '~> 1.1' gem 'i18n', '~> 1.14' gem 'json', '~> 2.7' -gem 'launchy', '~> 3.0' -gem 'openssl', '3.1.0' # Reverted from 3.2.0 since it couldnt install +gem 'launchy', '2.5.2' # Reverted from 3.0.0 since it does no longer work +gem 'openssl', '3.1.0' # Reverted from 3.2.0 since it couldnt install gem 'open-uri', '~> 0.4.1' gem 'win32-shortcut', '~> 0.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 8d2f17f..9e6a1ef 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,7 +5,6 @@ GEM public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) base64 (0.2.0) - childprocess (5.0.0) colorize (1.1.0) concurrent-ruby (1.2.3) date (3.3.4) @@ -13,9 +12,8 @@ GEM concurrent-ruby (~> 1.0) json (2.7.2) language_server-protocol (3.17.0.3) - launchy (3.0.0) + launchy (2.5.2) addressable (~> 2.8) - childprocess (~> 5.0) ocran (1.3.15) open-uri (0.4.1) stringio @@ -26,12 +24,12 @@ GEM parser (3.3.0.5) ast (~> 2.4.1) racc - public_suffix (5.0.4) + public_suffix (5.0.5) racc (1.7.3) rainbow (3.1.1) regexp_parser (2.9.0) rexml (3.2.6) - rubocop (1.63.0) + rubocop (1.63.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -62,7 +60,7 @@ DEPENDENCIES colorize (~> 1.1) i18n (~> 1.14) json (~> 2.7) - launchy (~> 3.0) + launchy (= 2.5.2) ocran (= 1.3.15) open-uri (~> 0.4.1) openssl (= 3.1.0) diff --git a/README.md b/README.md index 3c917a8..0fcda93 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,6 @@ Mass disenchant LoL loot like champion shards, eternals, mythic essence and more [](https://ko-fi.com/marvinscham) -Based on [Anujan/disenchant-champ-shards](https://github.com/Anujan/disenchant-champ-shards). - -可以在[這裡](https://github.com/nico12313/disenchanter/tree/Traditional-Chinese-Translation)找到繁體中文版本的應用程式. - ## Usage diff --git a/i18n/pl.yml b/i18n/pl.yml new file mode 100644 index 0000000..b67db15 --- /dev/null +++ b/i18n/pl.yml @@ -0,0 +1,199 @@ +pl: + common: + actions: Akcje + disenchanted: Rozmienione + opened: Otworzono + crafted: Stworzono + redeemed: Wykorzystany + press_enter_to_exit: Wciśnij Enter aby wyjść. + invalid_answer: Nieprawidłowa odpowiedź, opcje + done: Zrobione! + exiting: Wychodzenie… + yup: Tak + nah: Nie + confirm_banner: POTWIEDŹ + not_owned: Nie posiadane + meta: + auto_loaded_locale: 'Wykryty język klienta: %{locale_name}' + locale_name: Polski + manually_set_locale: Ustawiono na %{locale_name}! + translation_note: 'Brakujące lub złe tłumaczenie? Pomóż, oferując swoje: %{url}' + loot: + glorious_champion_capsule: Wspaniałą Kapsuła Bohaterów + honor_4_orb: Kula Honoru 4. Poziomu + honor_5_orb: Kula Honoru 5. Poziomu + blue_essence: Niebieska Esencja + blue_essence_short: NE + orange_essence: Pomarańczowa Esencja + orange_essence_short: PE + materials: Materiały + champions: Czempioni + skins: Skórki + tacticians: Taktycy + eternals: Patronowie + eternal_shards: Odłamki Zestawu patronów + eternal_permanents: Trwały Odłamek Zestawu Patronów + emotes: Emotki + ward_skins: Skórki Totemów + ward_skin_shards: Odłamki Skórek Totemów + ward_skin_permanents: Trwałe Odłamki Skórek Totemów + icons: Ikony + capsules: Kapsuły + key_fragments: Fragmenty Klucza + shards: Odłamki + permanents: Trwałe Odłamki + mythic_essence: Mityczna Esencja + skin_shards: Odłamki Skórek + skin_permanents: Trwałe Odłamki Skórek + champion_capsule: Kapsuła Czempionów + honor_3_orb: Kula Honoru 3. Poziomu + update_checker: + up_to_date: Jesteś na bieżąco! + local_beta_note: Witamy w przyszłości! + local_beta_version: 'Najnowsza wersja zdalna: v%{version}' + update_available: Nowa wersja %{version} dostępna! + ask_download_now: Czy Chciałbyś pobrać nową wersję teraz? + done_downloading: Pobieranie zakończone! + menu: + choose_option: Okej, którą opcję Chciałbyś wybrać? + what_to_do: Co Chciałbyś zrobić? + option: Opcje + back_to_main: Powrót do menu głównego + option_chosen: Opcja wybrana + option_done: Zrobione + language: + preferred: Jaki jest Twój preferowany język? + main: + hello: Cześć! :) + version_info: Uruchamiane Disenchanter %{version} + logged_in_as: 'Zalogowano jako %{name} #%{tagline}.' + confirm_banner_intro: 'Twój łup jest bezpieczny, żadne akcje nie zostaną przeprowadzone + dopóki nie Potwierdzisz banneru takiego jak ten:' + confirm_banner_example: Wykonać tę akcję? + all_done: To tyle! + see_you: Do zobaczenia następnym razem :) + what_to_do: 'Co Chciałbyś zrobić? (Podpowiedź: idź z góry na dół, aby niczego + nie pominąć!)' + options: + language_settings: Ustawienia języka + open_mastery_chart: Otwórz profil Mastery Chart + open_usage_stats: Otwórz globalne statystyki Disenchanter + open_repository: Otwórz repozytorium GitHub + exit: Wyjdź + summoner_check_failed: Nie można zdobyć informacji o Przywoływaczu. Spróbuj + zrestartować swojego Klienta League. + time_saved: Zaoszczędziliśmy Ci około %{time_saved} sekund czekania na zakończenie + animacji. + exit_shortcut_notice: Możesz opuścić ten skrypt w dowolnym momencie używając + [CTRL + C]. + champions: + options: + all: Rozmień wszystkie odłamki czempionów + mastery_threshold: Pozostaw wystarczająco (1/2) odłamków aby w pełni ulepszyć + czempionów na poziomie Maestrii co najmniej x (wybierz od 1 do 6) + collector: Pozostaw jeden odłamek czempiona niezależnie od jego poziomu Maestrii + tokens: Pozostaw wystarczająco (1/2) odłamków dla czempionów dla których Posiadasz + żetony 6/7 Maestrii + mastery_full: Pozostaw wystarczająco (1/2) odłamków aby w pełni ulepszyć Maestrię + wszystkich czempionów (Rozmień tylko te odłamki, bez możliwego użycia) + materials: + options: + mythic_essence: Mityczna Esencja + key_fragments: Fragmenty Klucza + capsules: Kapsuły + mastery_tokens: Żetony Maestrii + mythic: + options: + blue_essence: Niebieska Esencja + orange_essence: Pomarańczowa Esencja + random_skin_shards: Losowy Odłamek Skórki + recipes_unavailable: Receptury dla %{loot} wydają się być niedostępne. + recipe_found: 'Znaleziono recepturę: %{thing_to_craft} za %{amount} Mitycznej + Esencji' + handler: + generic: + found_nothing: Nie znaleziono %{name} do rozłożenia. + found_some: Znaleziono %{count} %{name}. + found_no_owned: Nie znaleziono posiadanych %{name} do rozłożenia. + filtered_down: Odfiltrowano do %{count} przedmiotów. + disenchant_preview: 'Rozłożylibyśmy %{count} %{loot} używając wybranej opcji:' + ask_disenchant: Rozłożyć %{count} %{loot} na %{currency}? + keep_unowned: Zachować jeszcze nie posiadany %{loot}? + action_cancelled: Akcja anulowana + exception: + skipping_step: Coś poszło nie tak. Pomijanie kroku… + error_occurred: Wydarzył się błąd w trakcie przetwarzania %{name}. + create_an_issue: Proszę zrobić zrzut ekranu i stworzyć zagadnienie na %{url} + send_email_instead: Jeśli nie Posiadasz konta GitHub, wyślij je na %{email} + network_error: Oops, prawdopodobnie Osiągnęliśmy limit API. Proszę spróbować + ponownie lub zgłosić na %{email} jeśli będzie się to powtarzać. + capsule: + found_capsules: 'Znaleziono %{count} kapsuł:' + no_capsules_found: Nie znaleziono kapsuł nie potrzebujących kluczy do otworzenia. + ask_open_capsules: Otworzyć %{count} (nie potrzebujące kluczy) kapsuły? + champion: + no_shards_found: Nie znaleziono odłamków czempionów do rozłożenia. + found_shards: Znaleziono %{count} odłamki czempionów. + already_done: 'Sprawa już załatwiona: nie zostały żadne odłamki pasujące do + twojego wyboru.' + present_selection: 'Rozłożylibyśmy %{count} odłamków czempionów używając wybranej + opcji:' + shards_to_keep: Zachowywanie %{count} + ask_include_permanents: Czy powinniśmy uwzględnić trwałe odłamki czempionów + w procesie? + ask_disenchant: Rozłożyć %{count} odłamków czempionów na %{amount} Niebieskiej + Esencji? + exclusions: + ask: Czy chciałbyś dodać wykluczenia? + ask_which: Okej, którzy czempioni? + entry_requirements: (Wpisz/wklej DOKŁADNE imię czempiona) + recognized: 'Wykluczenia rozpoznane:' + by_mastery: + ask_which_level: Na którym co najmniej poziomie powinni być czempioni, aby + ich odłamki zostały zachowane? + note_level7: na 7 poziomie Maestrii + note_below_threshold: poniżej progu + note_more_valuable: wartość wyższa niż ulepszenie Maestrii poziomu 7 + no_unowned_champs_found: Nie znaleziono odłamków nieposiadanych czempionów. + ask_keep_unowned_champs: Zachować odłamki dla czempionów, których jeszcze nie + Posiadasz? + found_champs_with_tokens: Znaleziono %{count} czempionów z posiadanymi odłamkami + Maestrii + url: + opening_mastery_chart: Otwieranie Twojego profilu na %{url} w Twojej przeglądarce… + opening_repository: Otwieranie repozytorium GitHub na %{url} w Twojej przeglądarce… + opening_stats: Otwieranie Globalnych Statystyk na %{url} w Twojej przeglądarce… + esports_emotes: + ask_re_roll: Wymienić na losowe %{count} już posiadane Emotki Esport? + none_found: Nie znaleziono Emotek Esportu do wymiany na losową. + found_some: Znaleziono %{count} Emotek Esport. + mastery_tokens: + none_found: Nie znaleziono możliwych do ulepszenia zestawów Odłamków Maestrii. + confirm_total_upgrades: Ulepsz %{count} czempionów używając + could_upgrade_champions: 'Moglibyśmy ulepszyć takowych czempionów:' + missing_essence: Brakuje Ci %{essence_missing} Niebieskiej Esencji potrzebnej + by kontynuować. Pomijanie… + to_mastery_level: na Poziom Maestrii + using: używając + using_champion_shard: odłamku czempiona. + using_champion_permanent: trwałego odłamku czempiona. + using_blue_essence: '%{recipe_cost} Niebieskiej Esencji.' + mythic_essence: + amount_to_use: Dobra, ile Mitycznej Esencji powinniśmy użyć to stworzenia %{target_name}? + none_found: Nie znaleziono Mitycznej Esencji do użycia. + found_some: Znaleziono %{amount} Mitycznej Esencji. + not_enough: Nie wystarczająco Mitycznej Esencji na to. + cancelled: Mityczne tworzenie anulowane. + craft_confirm: Stworzyć %{quantity} %{loot_name} z %{total_cost} Mitycznej Esencji? + key_fragments: + not_enough_fragments: Nie wystarczająca ilość fragmentów klucza, by cokolwiek + stworzyć. + found_fragments: Znaleziono %{count} fragmentów klucza. + ask_craft_keys: Stworzyć %{key_count} klucze z %{fragment_count} fragmentów + kluczy? + stat_submission: + ask_contribute: Czy Chciałbyś dodać Swoje (anonimowe) statystyki do globalnych + statystyk? + thanks: Wielkie Dzięki! + your_stats: 'Twoje statystyki:' + ask_submit: Złożyć anonimowe statystyki? diff --git a/i18n/zh_TW.yml b/i18n/zh_TW.yml index 5373d52..98d0c92 100644 --- a/i18n/zh_TW.yml +++ b/i18n/zh_TW.yml @@ -8,6 +8,8 @@ zh_TW: exit: 離開 open_usage_stats: 前往網頁:分解者全球統計數據 open_repository: 前往網頁:GitHub專案頁面 + language_settings: 語言設定 + open_mastery_chart: 開啟專精氣泡圖個人檔案 what_to_do: '你現在希望做些甚麼? (提示: 先從海克斯材料開始, 可以確保你接下來不會放過任何東西! 例如海克斯寶箱開出的造型碎片!)' summoner_check_failed: 無法獲取召喚師資訊. 請重新啟動英雄聯盟客戶端. logged_in_as: '你當前的登入身分為 %{name} #%{tagline}.' @@ -42,6 +44,8 @@ zh_TW: mastery_full: 保留足夠(1到2個)的碎片給所有還沒達到專精7的英雄(只會分解完全沒有用處的碎片) collector: 完全不考慮專精,為每個英雄留一個碎片 choose_option: 好的, 你希望執行哪個選項? + language: + preferred: 你的偏好語言為何? common: press_enter_to_exit: 按下 Enter鍵 離開. invalid_answer: 錯誤答案, 選項 @@ -54,6 +58,8 @@ zh_TW: opened: 開啟 crafted: 製作 redeemed: 領取 + done: 完成! + not_owned: 未擁有 loot: eternals: 永恆精雕 skin_shards: 造型碎片 @@ -81,12 +87,15 @@ zh_TW: eternal_permanents: 永恆精雕 ward_skin_shards: 守衛造型碎片 ward_skin_permanents: 永久守衛造型 + shards: 碎片 + permanents: 永久物品 handler: exception: error_occurred: 在處理 %{name} 時發生了一個錯誤. send_email_instead: 如果你沒有或不希望申請一個 GitHub 帳號, 請將本截圖及你遇到的問題用英文寄信至 %{email} create_an_issue: 請截圖並在 %{url} 發起一個新的問題討論串 skipping_step: 跳過這一步驟... + network_error: 噢, 我們似乎超出了某個 API 的限制. 請等等再重新嘗試, 如果還是一直發生請回報至 %{email}. generic: disenchant_preview: '我們將分解 %{count} 個 %{loot} 基於你選擇的選項:' keep_unowned: 保留你未擁有的 %{loot} 嗎? @@ -138,6 +147,7 @@ zh_TW: ask: 你希望增加例外嗎? ask_which: 好的, 該去除哪些英雄? recognized: '已正確讀取的例外:' + ask_include_permanents: 需要包含永久英雄嗎? url: opening_repository: 正在使用你的瀏覽器開啟位於 %{url} 的 Github 專案頁面... opening_stats: 正在使用你的瀏覽器開啟位於 %{url} 的全球數據統計... @@ -153,5 +163,7 @@ zh_TW: up_to_date: 目前使用的是最新版本, 沒問題! update_available: 新版本 %{version} 可下載! meta: - auto_loaded_locale: '' + auto_loaded_locale: '偵測到客戶端語言為: %{locale_name}' locale_name: 繁體中文 + manually_set_locale: 設為 %{locale_name}! + translation_note: '看到缺漏或不好的翻譯? 來幫忙提出你的翻譯: %{url}' diff --git a/scripts/build.sh b/scripts/build.sh index 675dcee..e370222 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -7,11 +7,11 @@ ocran src/main.rb \ ./i18n/*.yml \ --gemfile ./Gemfile \ --icon ./assets/BE_icon.ico \ - --output ./build/disenchanter.exe - + --output ./build/disenchanter.exe && \ ocran src/updater.rb \ --gemfile ./Gemfile \ --icon ./assets/BE_icon.ico \ - --output ./build/disenchanter_up.exe + --output ./build/disenchanter_up.exe && \ +echo "Success!" || echo "Something went wrong." rm ./build/.build.lockfile diff --git a/sonar-project.properties b/sonar-project.properties index 36e6393..e67d06a 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,5 +1,5 @@ sonar.projectKey=marvinscham_disenchanter_AY088C575jK4ghmshIlp -sonar.projectVersion=v1.7.3 +sonar.projectVersion=v1.8.0 sonar.sources=. sonar.sourceEncoding=UTF-8 diff --git a/src/class/menu/language_menu.rb b/src/class/menu/language_menu.rb index de5a562..041a50b 100644 --- a/src/class/menu/language_menu.rb +++ b/src/class/menu/language_menu.rb @@ -10,6 +10,7 @@ def initialize(client) things_todo = { 'en' => 'English', 'de' => 'Deutsch', + 'pl' => 'Polski', 'zh' => '繁體中文', 'eo' => 'Esperanto', 'x' => I18n.t(:'menu.back_to_main') @@ -28,6 +29,8 @@ def handle_option(thing_todo) 'de_DE' when 'eo' 'eo' + when 'pl' + 'pl' when 'zh' 'zh_TW' else diff --git a/src/main.rb b/src/main.rb index edb37ce..6f374a7 100644 --- a/src/main.rb +++ b/src/main.rb @@ -17,7 +17,7 @@ def run check_build_env - current_version = 'v1.7.3' + current_version = 'v1.8.0' stat_tracker = StatTracker.new client = Client.new(stat_tracker, current_version) diff --git a/src/modules/locale.rb b/src/modules/locale.rb index a71d856..547388a 100644 --- a/src/modules/locale.rb +++ b/src/modules/locale.rb @@ -28,7 +28,8 @@ def map_locale(locale) 'en_US' => 'en', 'en_AU' => 'en', 'en_PH' => 'en', - 'en_SG' => 'en' + 'en_SG' => 'en', + 'pl_PL' => 'pl' } return dictionary[locale] if dictionary.key?(locale)