diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml index 6037c100e..df962a675 100644 --- a/.github/workflows/spelling.yml +++ b/.github/workflows/spelling.yml @@ -34,12 +34,12 @@ name: Check Spelling # For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key on: - push: - branches: - - '**' - - '!l10n_dev' - tags-ignore: - - "**" +# push: +# branches: +# - '**' +# - '!l10n_dev' +# tags-ignore: +# - "**" pull_request_target: branches: - '**' @@ -65,7 +65,7 @@ jobs: outputs: followup: ${{ steps.spelling.outputs.followup }} runs-on: ubuntu-latest - if: (contains(github.event_name, 'pull_request') && github.head_ref != 'l10n_dev') || github.event_name == 'push' + if: (contains(github.event_name, 'pull_request') && github.head_ref != 'l10n_dev') concurrency: group: spelling-${{ github.event.pull_request.number || github.ref }} # note: If you use only_check_changed_files, you do not want cancel-in-progress @@ -103,21 +103,21 @@ jobs: - comment-push: - name: Report (Push) - # If your workflow isn't running on push, you can remove this job - runs-on: ubuntu-latest - needs: spelling - permissions: - contents: write - if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' - steps: - - name: comment - uses: check-spelling/check-spelling@main - with: - checkout: true - spell_check_this: check-spelling/spell-check-this@main - task: ${{ needs.spelling.outputs.followup }} +# comment-push: +# name: Report (Push) +# # If your workflow isn't running on push, you can remove this job +# runs-on: ubuntu-latest +# needs: spelling +# permissions: +# contents: write +# if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' +# steps: +# - name: comment +# uses: check-spelling/check-spelling@main +# with: +# checkout: true +# spell_check_this: check-spelling/spell-check-this@main +# task: ${{ needs.spelling.outputs.followup }} comment-pr: name: Report (PR) diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index 35b624a2a..8fc179093 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -336,7 +336,7 @@ Indietro / Menu contestuale Navigazione tra le voci Apri il menu di scelta rapida - Apri la cartella Contaning + Apri cartella superiore Esegui come amministratore Cronologia Query Torna al risultato nel menu contestuale diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index b19383e44..ed2760857 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -335,7 +335,7 @@ Queira por favor mover a pasta do seu perfil de {0} para {1} Recuar/Menu de contexto Navegação nos itens Abrir menu de contexto - Abrir pasta + Abrir pasta do resultado Executar como administrador Histórico de consultas Voltar aos resultados no menu de contexto diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index ec3ca684b..2bda02604 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -234,7 +234,7 @@ Arg For File - Default Web Browser + Varsayılan İnternet Tarayıcısı The default setting follows the OS default browser setting. If specified separately, flow uses that browser. Browser Browser Name diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml index 962f41708..3e174aa4e 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml @@ -89,9 +89,9 @@ Añadir al acceso rápido Añade elemento actual al acceso rápido Añadido/a correctamente - Añadido/a correctamente al acceso rápido + Añadido correctamente al acceso rápido Eliminado/a correctamente - Eliminado/a correctamente del acceso rápido + Eliminado correctamente del acceso rápido Añade al acceso rápido para que se pueda abrir con la palabra clave de acción que activa la búsqueda del explorador Eliminar del acceso rápido Eliminar del acceso rápido diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml index bd93ece22..40f1fb80c 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml @@ -79,7 +79,7 @@ Otvoriť umiestnenie aktuálnej položky Otvoriť v editore: Nepodarilo sa otvoriť súbor {0} v editore {1} – {2} - Otvori v príkazovom riadku: + Otvoriť v príkazovom riadku: Nepodarilo sa otvoriť priečinok {0} v prostredí {1} – {2} Vylúčiť položku a jej podpriečinky z indexu vyhľadávania Vylúčiť z indexu vyhľadávania diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/da.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/da.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/da.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/de.xaml index 43cb0328d..48f1fb754 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/de.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indikator Stellt Vorschläge für Plugin-Befehle bereit - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es-419.xaml index 8385355a9..2786e5c35 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es-419.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Indicador de Plugins Sugiere palabras clave de plugins - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es.xaml index ef611c1ad..6ee0843cd 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es.xaml @@ -1,7 +1,9 @@  + Activa {0} palabra clave de acción del complemento + Indicador de complementos Proporciona sugerencias de palabras de acción para los complementos - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/fr.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/fr.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/fr.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/it.xaml index 35e176367..9590cdf33 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/it.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Indicatore Plugin Fornisce suggerimenti sulle parole d'azione dei plugin - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ko.xaml index 328b63ced..41a4abfcf 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ko.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + 플러그인 인디케이터 플러그인의 액션 키워드 제안을 제공합니다 - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nb.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nb.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nb.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nl.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nl.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nl.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pl.xaml index c9d607b65..f8e3eb3ff 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pl.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pl.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Pokazuje podpowiedzi jakich zainstalowanych wtyczek możesz użyć - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-br.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-br.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-br.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-pt.xaml index 355f709fa..057cb36aa 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-pt.xaml @@ -1,7 +1,9 @@  + Palavra-chave para ativar o plugin {0} + Plugin Indicador Disponibiliza sugestões de palavras-chave para os plugins - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ru.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ru.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ru.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sk.xaml index 34548c30a..6b1083bfe 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sk.xaml @@ -1,7 +1,9 @@  + Aktivovať plugin {0} aktivačným príkazom + Plugin Indicator Ponúka návrhy pre akcie pluginov - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sr.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sr.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sr.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/tr.xaml index 9196c9e75..f7f4d8d76 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/tr.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/tr.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Eklenti Göstergesi Eklenti eylemleri hakkında kelime önerileri sunar - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/uk-UA.xaml index 985aa6920..893948d3d 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/uk-UA.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/uk-UA.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + Plugin Indicator Provides plugins action words suggestions - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-cn.xaml index 81d413847..9abaed7c4 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-cn.xaml @@ -1,7 +1,9 @@  + 激活 {0} 插件的关键字 + 插件关键词提示 提供插件关键词搜索提示 - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-tw.xaml index a25bf1d0c..0c6477a34 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-tw.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-tw.xaml @@ -1,7 +1,9 @@  + Activate {0} plugin action keyword + 套件關鍵字提示 提供套件關鍵字搜尋提示 - + diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/it.xaml index 27e5918c7..362fb41f3 100644 --- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/it.xaml @@ -15,7 +15,7 @@ Impossibile trovare il file dei metadati plugin.json dal file zip estratto. Errore: esiste già un plugin che ha la stessa o maggiore versione con {0}. Errore durante l'installazione del plugin - Errore durante il tentativo di installare {0} + Error occurred while trying to install {0} Nessun aggiornamento disponibile Tutti i plugin sono aggiornati {0} da {1} {2}{3}Vuoi aggiornare questo plugin? Dopo l'aggiornamento, Flow si riavvierà automaticamente. diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/da.xaml index a059b7259..905f7e787 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/da.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/da.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games @@ -79,7 +79,7 @@ Customized Explorer Args - You can customized the explorer used for opening the container folder by inputting the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available. + You can customized the explorer used for opening the container folder by inputing the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available. Enter the customized args you want to add for your customized explorer. %s for parent directory, %f for full path (which only works for win32). Check the explorer's website for details. diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/de.xaml index 92433bf7d..bf844188e 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/de.xaml @@ -53,7 +53,7 @@ Dateiendungen dürfen nicht leer sein Protocols can't be empty - Indexiere Dateiendungen + Indexiere Dateiendungen URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/es-419.xaml index 3b1c593fa..4a18143bf 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/es-419.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games @@ -79,7 +79,7 @@ Customized Explorer Args - You can customized the explorer used for opening the container folder by inputting the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is avaliable. + You can customized the explorer used for opening the container folder by inputing the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available. Enter the customized args you want to add for your customized explorer. %s for parent directory, %f for full path (which only works for win32). Check the explorer's website for details. diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/es.xaml index 61f595a95..4955c4ea2 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/es.xaml @@ -53,7 +53,7 @@ Las extensiones de archivo no pueden estar vacías Los protocolos no pueden estar vacíos - Extensiones de archivo + Extensiones de archivo Protocolos URL Juegos Steam Juegos Epic diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/fr.xaml index dd6187acb..2c03b733d 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/fr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/fr.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games @@ -79,7 +79,7 @@ Customized Explorer Args - You can customized the explorer used for opening the container folder by inputting the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is avaliable. + You can customized the explorer used for opening the container folder by inputing the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available. Enter the customized args you want to add for your customized explorer. %s for parent directory, %f for full path (which only works for win32). Check the explorer's website for details. diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/it.xaml index e890b69cc..46a28f00a 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/it.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games @@ -79,7 +79,7 @@ Customized Explorer Args - You can customized the explorer used for opening the container folder by inputting the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is avaliable. + You can customized the explorer used for opening the container folder by inputing the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available. Enter the customized args you want to add for your customized explorer. %s for parent directory, %f for full path (which only works for win32). Check the explorer's website for details. diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml index bee3b6081..863735769 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - Index file suffixes + Index file suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/ko.xaml index bcd03812d..9741a7fe2 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/ko.xaml @@ -53,7 +53,7 @@ 파일 확장자는 비울 수 없습니다 Protocols can't be empty - 파일 확장자 + 파일 확장자 URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/nb.xaml index adb3c14c2..e62854305 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/nb.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/nb.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/nl.xaml index 9c0376277..3c3b20afd 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/nl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/nl.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/pl.xaml index 3ec2c49c9..c46a92006 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/pl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/pl.xaml @@ -53,7 +53,7 @@ Musisz podać rozszerzenia plików Protocols can't be empty - Rozszerzenia indeksowanych plików + Rozszerzenia indeksowanych plików URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-br.xaml index c1852aeb9..f9cbcb9f9 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-br.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-br.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-pt.xaml index 743b380e9..669fe3182 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/pt-pt.xaml @@ -53,7 +53,7 @@ Não pode indicar sufixos vazios Os protocolos não podem estar vazios - Sufixos de ficheiros + Sufixos de ficheiros Protocolos de URL Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/ru.xaml index f8d28c5a8..d0ec4eee1 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/ru.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/ru.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/sk.xaml index e017b58f9..ee62a823e 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/sk.xaml @@ -53,7 +53,7 @@ Pole s príponami nemôže byť prázdne Protokoly musia byť vyplnené - Prípony súborov + Prípony súborov Protokoly URL Hry v službe Steam Hry v službe Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/sr.xaml index a81d64415..f77bce039 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/sr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/sr.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/tr.xaml index a13543483..3d1f087f2 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/tr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/tr.xaml @@ -53,7 +53,7 @@ Dosya uzantıları boş olamaz Protocols can't be empty - İndekslenecek Uzantılar + İndekslenecek Uzantılar URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/uk-UA.xaml index c645210fd..83062ce6e 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/uk-UA.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/uk-UA.xaml @@ -53,7 +53,7 @@ File suffixes can't be empty Protocols can't be empty - File Suffixes + File Suffixes URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-cn.xaml index b438dc9a1..3a6fbda5d 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-cn.xaml @@ -53,7 +53,7 @@ 文件后缀不能为空 协议不能为空 - 文件后缀 + 文件后缀 URL 协议 Steam 游戏 Epic 游戏 diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-tw.xaml index 1bfa9465e..d27b5f78f 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-tw.xaml +++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/zh-tw.xaml @@ -53,7 +53,7 @@ 副檔名不能為空 Protocols can't be empty - 索引副檔名清單 + 索引副檔名清單 URL Protocols Steam Games Epic Games diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs index b93fb23c9..78c66d604 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLinkHelper.cs @@ -3,6 +3,7 @@ using System.Text; using System.Runtime.InteropServices; using Accessibility; using System.Runtime.InteropServices.ComTypes; +using Flow.Launcher.Plugin.Program.Logger; namespace Flow.Launcher.Plugin.Program.Programs { @@ -119,9 +120,19 @@ namespace Flow.Launcher.Plugin.Program.Programs // To set the app description if (!String.IsNullOrEmpty(target)) { - buffer = new StringBuilder(MAX_PATH); - ((IShellLinkW)link).GetDescription(buffer, MAX_PATH); - description = buffer.ToString(); + try + { + buffer = new StringBuilder(MAX_PATH); + ((IShellLinkW)link).GetDescription(buffer, MAX_PATH); + description = buffer.ToString(); + } + catch (COMException e) + { + // C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\MiracastView.lnk always cause exception + ProgramLogger.LogException($"|IShellLinkW|retrieveTargetPath|{path}" + + "|Error caused likely due to trying to get the description of the program", + e); + } buffer.Clear(); ((IShellLinkW)link).GetArguments(buffer, MAX_PATH); diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs new file mode 100644 index 000000000..4f344d89e --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/ShellLocalization.cs @@ -0,0 +1,92 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; + + +namespace Flow.Launcher.Plugin.Program.Programs +{ + // From PT Run + /// + /// Class to get localized name of shell items like 'My computer'. The localization is based on the 'windows display language'. + /// Reused code from https://stackoverflow.com/questions/41423491/how-to-get-localized-name-of-known-folder for the method + /// + public static class ShellLocalization + { + internal const uint DONTRESOLVEDLLREFERENCES = 0x00000001; + internal const uint LOADLIBRARYASDATAFILE = 0x00000002; + + [DllImport("shell32.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + internal static extern int SHGetLocalizedName(string pszPath, StringBuilder pszResModule, ref int cch, out int pidsRes); + + [DllImport("user32.dll", EntryPoint = "LoadStringW", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + internal static extern int LoadString(IntPtr hModule, int resourceID, StringBuilder resourceValue, int len); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, ExactSpelling = true, EntryPoint = "LoadLibraryExW")] + internal static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags); + + [DllImport("kernel32.dll", ExactSpelling = true)] + internal static extern int FreeLibrary(IntPtr hModule); + + [DllImport("kernel32.dll", EntryPoint = "ExpandEnvironmentStringsW", CharSet = CharSet.Unicode, ExactSpelling = true)] + internal static extern uint ExpandEnvironmentStrings(string lpSrc, StringBuilder lpDst, int nSize); + + /// + /// Returns the localized name of a shell item. + /// + /// Path to the shell item (e. g. shortcut 'File Explorer.lnk'). + /// The localized name as string or . + public static string GetLocalizedName(string path) + { + StringBuilder resourcePath = new StringBuilder(1024); + StringBuilder localizedName = new StringBuilder(1024); + int len, id; + len = resourcePath.Capacity; + + // If there is no resource to localize a file name the method returns a non zero value. + if (SHGetLocalizedName(path, resourcePath, ref len, out id) == 0) + { + _ = ExpandEnvironmentStrings(resourcePath.ToString(), resourcePath, resourcePath.Capacity); + IntPtr hMod = LoadLibraryEx(resourcePath.ToString(), IntPtr.Zero, DONTRESOLVEDLLREFERENCES | LOADLIBRARYASDATAFILE); + if (hMod != IntPtr.Zero) + { + if (LoadString(hMod, id, localizedName, localizedName.Capacity) != 0) + { + string lString = localizedName.ToString(); + _ = FreeLibrary(hMod); + return lString; + } + + _ = FreeLibrary(hMod); + } + } + + return string.Empty; + } + + /// + /// This method returns the localized path to a shell item (folder or file) + /// + /// The path to localize + /// The localized path or the original path if localized version is not available + public static string GetLocalizedPath(string path) + { + path = Environment.ExpandEnvironmentVariables(path); + string ext = Path.GetExtension(path); + var pathParts = path.Split("\\"); + string[] locPath = new string[pathParts.Length]; + + for (int i = 0; i < pathParts.Length; i++) + { + int iElements = i + 1; + string lName = GetLocalizedName(string.Join("\\", pathParts[..iElements])); + locPath[i] = !string.IsNullOrEmpty(lName) ? lName : pathParts[i]; + } + + string newPath = string.Join("\\", locPath); + newPath = !newPath.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase) ? newPath + ext : newPath; + + return newPath; + } + } +} diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/UWP.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/UWP.cs index b1ec70068..2f84fdbf5 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/UWP.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/UWP.cs @@ -249,24 +249,24 @@ namespace Flow.Launcher.Plugin.Program.Programs private static IEnumerable CurrentUserPackages() { - var u = WindowsIdentity.GetCurrent().User; + var user = WindowsIdentity.GetCurrent().User; - if (u != null) + if (user != null) { - var id = u.Value; - PackageManager m; + var userId = user.Value; + PackageManager packageManager; try { - m = new PackageManager(); + packageManager = new PackageManager(); } catch { // Bug from https://github.com/microsoft/CsWinRT, using Microsoft.Windows.SDK.NET.Ref 10.0.19041.0. // Only happens on the first time, so a try catch can fix it. - m = new PackageManager(); + packageManager = new PackageManager(); } - var ps = m.FindPackagesForUser(id); - ps = ps.Where(p => + var packages = packageManager.FindPackagesForUser(userId); + packages = packages.Where(p => { try { @@ -277,12 +277,12 @@ namespace Flow.Launcher.Plugin.Program.Programs } catch (Exception e) { - ProgramLogger.LogException("UWP", "CurrentUserPackages", $"{id}", "An unexpected error occurred and " + ProgramLogger.LogException("UWP", "CurrentUserPackages", $"{p.Id.FullName}", "An unexpected error occurred and " + $"unable to verify if package is valid", e); return false; } }); - return ps; + return packages; } else { diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs index 3373948a3..dec43530e 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs @@ -23,7 +23,7 @@ namespace Flow.Launcher.Plugin.Program.Programs public class Win32 : IProgram, IEquatable { public string Name { get; set; } - public string UniqueIdentifier { get => _uid; set => _uid = value == null ? string.Empty : value.ToLowerInvariant(); } // For path comparison + public string UniqueIdentifier { get => _uid; set => _uid = value == null ? string.Empty : value.ToLowerInvariant(); } // For path comparison public string IcoPath { get; set; } /// /// Path of the file. It's the path of .lnk and .url for .lnk and .url files. @@ -34,16 +34,22 @@ namespace Flow.Launcher.Plugin.Program.Programs /// public string LnkResolvedPath { get; set; } /// - /// Path of the actual executable file. + /// Path of the actual executable file. Args are included. /// public string ExecutablePath => LnkResolvedPath ?? FullPath; public string ParentDirectory { get; set; } + /// + /// Name of the executable for .lnk files + /// public string ExecutableName { get; set; } public string Description { get; set; } public bool Valid { get; set; } public bool Enabled { get; set; } public string Location => ParentDirectory; + // Localized name based on windows display language + public string LocalizedName { get; set; } = string.Empty; + private const string ShortcutExtension = "lnk"; private const string UrlExtension = "url"; private const string ExeExtension = "exe"; @@ -63,48 +69,90 @@ namespace Flow.Launcher.Plugin.Program.Programs Enabled = false }; + private static MatchResult Match(string query, IReadOnlyCollection candidates) + { + if (candidates.Count == 0) + return null; + + var match = candidates.Select(candidate => StringMatcher.FuzzySearch(query, candidate)) + .MaxBy(match => match.Score); + + return match?.IsSearchPrecisionScoreMet() ?? false ? match : null; + } public Result Result(string query, IPublicAPI api) { string title; MatchResult matchResult; - // We suppose Name won't be null - if (!Main._settings.EnableDescription || Description == null || Name.StartsWith(Description)) + // Name of the result + // Check equality to avoid matching again in candidates + bool useLocalizedName = !string.IsNullOrEmpty(LocalizedName) && !Name.Equals(LocalizedName); + string resultName = useLocalizedName ? LocalizedName : Name; + + if (!Main._settings.EnableDescription) { - title = Name; - matchResult = StringMatcher.FuzzySearch(query, title); - } - else if (Description.StartsWith(Name)) - { - title = Description; - matchResult = StringMatcher.FuzzySearch(query, Description); + title = resultName; + matchResult = StringMatcher.FuzzySearch(query, resultName); } else { - title = $"{Name}: {Description}"; - var nameMatch = StringMatcher.FuzzySearch(query, Name); - var descriptionMatch = StringMatcher.FuzzySearch(query, Description); - if (descriptionMatch.Score > nameMatch.Score) + if (string.IsNullOrEmpty(Description) || resultName.StartsWith(Description)) { - for (int i = 0; i < descriptionMatch.MatchData.Count; i++) - { - descriptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": " - } - matchResult = descriptionMatch; + // Description is invalid or included in resultName + // Description is always localized, so Name.StartsWith(Description) is generally useless + title = resultName; + matchResult = StringMatcher.FuzzySearch(query, resultName); + } + else if (Description.StartsWith(resultName)) + { + // resultName included in Description + title = Description; + matchResult = StringMatcher.FuzzySearch(query, Description); + } + else + { + // Search in both + title = $"{resultName}: {Description}"; + var nameMatch = StringMatcher.FuzzySearch(query, resultName); + var descriptionMatch = StringMatcher.FuzzySearch(query, Description); + if (descriptionMatch.Score > nameMatch.Score) + { + for (int i = 0; i < descriptionMatch.MatchData.Count; i++) + { + descriptionMatch.MatchData[i] += resultName.Length + 2; // 2 is ": " + } + matchResult = descriptionMatch; + } + else + { + matchResult = nameMatch; + } } - else matchResult = nameMatch; } + List candidates = new List(); + if (!matchResult.IsSearchPrecisionScoreMet()) { if (ExecutableName != null) // only lnk program will need this one - matchResult = StringMatcher.FuzzySearch(query, ExecutableName); - - if (!matchResult.IsSearchPrecisionScoreMet()) + { + candidates.Add(ExecutableName); + } + if (useLocalizedName) + { + candidates.Add(Name); + } + matchResult = Match(query, candidates); + if (matchResult == null) + { return null; - - matchResult.MatchData = new List(); + } + else + { + // Nothing to highlight in title in this case + matchResult.MatchData.Clear(); + } } string subtitle = string.Empty; @@ -267,51 +315,40 @@ namespace Flow.Launcher.Plugin.Program.Programs ShellLinkHelper _helper = new ShellLinkHelper(); string target = _helper.retrieveTargetPath(path); - if (!string.IsNullOrEmpty(target)) + if (!string.IsNullOrEmpty(target) && File.Exists(target)) { - var extension = Extension(target); - if (extension == ExeExtension && File.Exists(target)) + program.LnkResolvedPath = Path.GetFullPath(target); + program.ExecutableName = Path.GetFileName(target); + + var args = _helper.arguments; + if (!string.IsNullOrEmpty(args)) { - program.LnkResolvedPath = Path.GetFullPath(target); - program.ExecutableName = Path.GetFileName(target); + program.LnkResolvedPath += " " + args; + } - var args = _helper.arguments; - if(!string.IsNullOrEmpty(args)) + var description = _helper.description; + if (!string.IsNullOrEmpty(description)) + { + program.Description = description; + } + else + { + var info = FileVersionInfo.GetVersionInfo(target); + if (!string.IsNullOrEmpty(info.FileDescription)) { - program.LnkResolvedPath += " " + args; - } - - var description = _helper.description; - if (!string.IsNullOrEmpty(description)) - { - program.Description = description; - } - else - { - var info = FileVersionInfo.GetVersionInfo(target); - if (!string.IsNullOrEmpty(info.FileDescription)) - { - program.Description = info.FileDescription; - } + program.Description = info.FileDescription; } } } - return program; - } - catch (COMException e) - { - // C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\MiracastView.lnk always cause exception - ProgramLogger.LogException($"|Win32|LnkProgram|{path}" + - "|Error caused likely due to trying to get the description of the program", - e); + program.LocalizedName = ShellLocalization.GetLocalizedName(path); - return Default; + return program; } catch (FileNotFoundException e) { ProgramLogger.LogException($"|Win32|LnkProgram|{path}" + - "|An unexpected error occurred in the calling method LnkProgram", e); + "|An unexpected error occurred in the calling method LnkProgram", e); return Default; } @@ -378,7 +415,7 @@ namespace Flow.Launcher.Plugin.Program.Programs catch (FileNotFoundException e) { ProgramLogger.LogException($"|Win32|ExeProgram|{path}" + - $"|File not found when trying to load the program from {path}", e); + $"|File not found when trying to load the program from {path}", e); return Default; } @@ -398,8 +435,7 @@ namespace Flow.Launcher.Plugin.Program.Programs return Directory.EnumerateFiles(directory, "*", new EnumerationOptions { - IgnoreInaccessible = true, - RecurseSubdirectories = recursive + IgnoreInaccessible = true, RecurseSubdirectories = recursive }).Where(x => suffixes.Contains(Extension(x))); } @@ -408,7 +444,7 @@ namespace Flow.Launcher.Plugin.Program.Programs var extension = Path.GetExtension(path)?.ToLowerInvariant(); if (!string.IsNullOrEmpty(extension)) { - return extension.Substring(1); // remove dot + return extension.Substring(1); // remove dot } else { @@ -420,7 +456,7 @@ namespace Flow.Launcher.Plugin.Program.Programs { // Disabled custom sources are not in DisabledProgramSources var paths = directories.AsParallel() - .SelectMany(s => EnumerateProgramsInDir(s, suffixes)); + .SelectMany(s => EnumerateProgramsInDir(s, suffixes)); // Remove disabled programs in DisabledProgramSources var programs = ExceptDisabledSource(paths).Select(x => GetProgramFromPath(x, protocols)); @@ -452,8 +488,8 @@ namespace Flow.Launcher.Plugin.Program.Programs var paths = pathEnv.Split(";", StringSplitOptions.RemoveEmptyEntries).DistinctBy(p => p.ToLowerInvariant()); var toFilter = paths.Where(x => commonParents.All(parent => !IsSubPathOf(x, parent))) - .AsParallel() - .SelectMany(p => EnumerateProgramsInDir(p, suffixes, recursive: false)); + .AsParallel() + .SelectMany(p => EnumerateProgramsInDir(p, suffixes, recursive: false)); var programs = ExceptDisabledSource(toFilter.Distinct()) .Select(x => GetProgramFromPath(x, protocols)); @@ -483,7 +519,7 @@ namespace Flow.Launcher.Plugin.Program.Programs toFilter = toFilter.Distinct().Where(p => suffixes.Contains(Extension(p))); var programs = ExceptDisabledSource(toFilter) - .Select(x => GetProgramFromPath(x, protocols)).Where(x => x.Valid).ToList(); // ToList due to disposing issue + .Select(x => GetProgramFromPath(x, protocols)).Where(x => x.Valid).ToList(); // ToList due to disposing issue return programs; } @@ -537,7 +573,8 @@ namespace Flow.Launcher.Plugin.Program.Programs ExeExtension => ExeProgram(path), UrlExtension => UrlProgram(path, protocols), _ => Win32Program(path) - }; ; + }; + ; } public static IEnumerable ExceptDisabledSource(IEnumerable paths) @@ -577,7 +614,6 @@ namespace Flow.Launcher.Plugin.Program.Programs private static IEnumerable ProgramsHasher(IEnumerable programs) { - // TODO: Unable to distinguish multiple lnks to the same executable but with different params return programs.GroupBy(p => p.ExecutablePath.ToLowerInvariant()) .AsParallel() .SelectMany(g => @@ -748,10 +784,10 @@ namespace Flow.Launcher.Plugin.Program.Programs { var rel = Path.GetRelativePath(basePath, subPath); return rel != "." - && rel != ".." - && !rel.StartsWith("../") - && !rel.StartsWith(@"..\") - && !Path.IsPathRooted(rel); + && rel != ".." + && !rel.StartsWith("../") + && !rel.StartsWith(@"..\") + && !Path.IsPathRooted(rel); } private static List GetCommonParents(IEnumerable programSources) @@ -766,7 +802,7 @@ namespace Flow.Launcher.Plugin.Program.Programs foreach (var source in group) { if (parents.Any(p => IsSubPathOf(source.Location, p.Location) && - source != p)) + source != p)) { parents.Remove(source); } diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml index c72fcb7f3..1005e4b8f 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml @@ -32,7 +32,7 @@ ¿Está seguro que desea apagar el equipo? ¿Está seguro que desea reiniciar el equipo? ¿Está seguro que desea reiniciar el equipo con opciones de arranque avanzadas? - Are you sure you want to log off? + ¿Está seguro que desea cerrar la sesión? Comandos del sistema Proporciona comandos relacionados con el sistema. Por ejemplo, apagar, bloquear, configurar, etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml index 76543aa4c..e53fd601d 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml @@ -32,7 +32,7 @@ Tem certeza de que deseja desligar o computador? Tem a certeza que deseja reiniciar o computador? Tem certeza de que deseja reiniciar o computador com as opções avançadas de arranque? - Are you sure you want to log off? + Tem certeza de que deseja terminar a sessão? Comandos do sistema Disponibiliza os comandos relacionados com o sistema tais como: desligar, bloquear, reiniciar... diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml index c9ed95c35..e0e3382a9 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml @@ -32,7 +32,7 @@ Naozaj chcete počítač vypnúť? Naozaj chcete počítač reštartovať? Naozaj chcete počítač reštartovať s pokročilými možnosťami spúšťania? - Are you sure you want to log off? + Naozaj sa chcete odstrániť? Systémové príkazy Poskytuje príkazy súvisiace so systémom ako je vypnutie, uzamknutie počítača atď. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml index c1174244a..50d556e98 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml @@ -32,7 +32,7 @@ 您确定要关机吗? 您确定要重启吗 您确定要以高级启动选项重启计算机吗? - Are you sure you want to log off? + 你确定要注销吗? 系统命令 系统系统相关的命令。例如,关机,锁定,设置等 diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/da.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/da.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/da.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/de.xaml index 437f2c016..328482307 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/de.xaml @@ -6,7 +6,7 @@ New Tab Öffne URL:{0} - Kann URL nicht öffnen:{0} + Kann URL nicht öffnen:{0} URL Öffne eine eingegebene URL mit Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/es-419.xaml index d17ba7fa5..66a1710ea 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/es-419.xaml @@ -6,7 +6,7 @@ Nueva Pestaña Abrir url:{0} - No se puede abrir la url:{0} + Can't open url:{0} URL Abre la URL escrita desde Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/es.xaml index ebac4dafd..fe83fa6f6 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/es.xaml @@ -6,7 +6,7 @@ Nueva pestaña Abrir url:{0} - No se puede abrir la url:{0} + No se puede abrir la url:{0} URL Abre la URL escrita desde Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/fr.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/fr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/fr.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/it.xaml index 1b0ea4b62..1bed23b88 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/it.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml index 6727d6f79..532ff793d 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml @@ -6,7 +6,7 @@ New Tab 次のURLを開く:{0} - 次のURLを開くことができません:{0} + 次のURLを開くことができません:{0} URL 入力したURLをFlow Launcherから開くプラグインです。 diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/ko.xaml index e7e22d9aa..489a6d4b7 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/ko.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Flow Launcher에 입력한 URL 열기 diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/nb.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/nb.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/nb.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/nl.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/nl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/nl.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/pl.xaml index ff8359df3..8f1125d59 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/pl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/pl.xaml @@ -6,7 +6,7 @@ New Tab Otwórz adres URL: {0} - Nie udało się otworzyć adresu: {0} + Nie udało się otworzyć adresu: {0} URL Otwórz wpisany adres URL z poziomu Flow Launchera diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-br.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-br.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-br.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-pt.xaml index b94eb1f80..38d757721 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/pt-pt.xaml @@ -6,7 +6,7 @@ Novo separador Abrir URL:{0} - Impossível abrir URL:{0} + Não foi possível abrir o URL:{0} URL Abrir o URL no Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml index 90151d44c..b2f2a018d 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/sk.xaml @@ -6,7 +6,7 @@ Nová karta Otvoriť URL:{0} - Adresa URL sa nedá otvoriť:{0} + Adresa URL sa nedá otvoriť:{0} Adresa URL Otvoriť zadanú adresu URL z Flow Launchera diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/sr.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/sr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/sr.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/tr.xaml index cd44325c6..b8ae6a93c 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/tr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/tr.xaml @@ -6,7 +6,7 @@ New Tab URL'yi Aç: {0} - URL Açılamıyor: {0} + URL Açılamıyor: {0} URL Flow Launcher'a yazılan URL'leri açar diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/uk-UA.xaml index 9997fa841..418731021 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/uk-UA.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/uk-UA.xaml @@ -6,7 +6,7 @@ New Tab Open url:{0} - Can't open url:{0} + Can't open url:{0} URL Open the typed URL from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-cn.xaml index 103df5161..7d548e51a 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-cn.xaml @@ -6,7 +6,7 @@ 新标签 打开链接:{0} - 无法打开链接:{0} + 无法打开链接:{0} 打开链接 从 Flow Launcher 打开链接 diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-tw.xaml index 33a9264b7..bf64f3604 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-tw.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/zh-tw.xaml @@ -6,7 +6,7 @@ New Tab 開啟連結:{0} - 無法開啟連結:{0} + 無法開啟連結:{0} URL 從 Flow Launcher 開啟連結 diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml index 57f763662..52cc648f7 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml @@ -9,7 +9,7 @@ Choose 삭제 편집 - + 추가 Disabled 확인 diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx index 863a6a48e..49c4b7839 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx @@ -701,7 +701,7 @@ Area Gaming - Game Mode + Oyun Modu Area Gaming