mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Merge pull request #3904 from Flow-Launcher/dev
Release 2.0.0 | Plugin 5.0.0
This commit is contained in:
commit
e0930924b1
372 changed files with 17121 additions and 3165 deletions
3
.github/actions/spelling/allow.txt
vendored
3
.github/actions/spelling/allow.txt
vendored
|
|
@ -6,3 +6,6 @@ runcount
|
|||
Firefox
|
||||
Português
|
||||
Português (Brasil)
|
||||
favicons
|
||||
moz
|
||||
workaround
|
||||
|
|
|
|||
5
.github/actions/spelling/expect.txt
vendored
5
.github/actions/spelling/expect.txt
vendored
|
|
@ -103,3 +103,8 @@ Reloadable
|
|||
metadatas
|
||||
WMP
|
||||
VSTHRD
|
||||
CJK
|
||||
Msix
|
||||
dummyprofile
|
||||
browserbookmark
|
||||
copyurl
|
||||
|
|
|
|||
14
.github/actions/spelling/patterns.txt
vendored
14
.github/actions/spelling/patterns.txt
vendored
|
|
@ -124,6 +124,10 @@
|
|||
# version suffix <word>v#
|
||||
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||
|
||||
# Non-English
|
||||
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||
|
||||
|
||||
\bjjw24\b
|
||||
\bappref-ms\b
|
||||
\bTobiasSekan\b
|
||||
|
|
@ -134,3 +138,13 @@
|
|||
\bčeština\b
|
||||
\bPortuguês\b
|
||||
\bIoc\b
|
||||
\bXiao\s*He\b
|
||||
\bZi\s*Ran\s*Ma\b
|
||||
\bWei\s*Ruan\b
|
||||
\bZhi\s*Neng\s*ABC\b
|
||||
\bZi\s*Guang\s*Pin\s*Yin\b
|
||||
\bPin\s*Yin\s*Jia\s*Jia\b
|
||||
\bXing\s*Kong\s*Jian\s*Dao\b
|
||||
\bDa\s*Niu\b
|
||||
\bXiao\s*Lang\b
|
||||
\b[Ss]ettings [Ss]ettings\b
|
||||
|
|
|
|||
2
.github/update_release_pr.py
vendored
2
.github/update_release_pr.py
vendored
|
|
@ -89,7 +89,7 @@ def get_prs(
|
|||
count += 1
|
||||
|
||||
print(
|
||||
f"Found {count} PRs with {label if label else 'no filter on'} label, state as {state}, and milestone {pr["milestone"] if pr["milestone"] is not None else "None"}"
|
||||
f"Found {count} PRs with {label if label else 'no filter on'} label, state as {state}, and milestone {milestone_title if milestone_title else "any"}"
|
||||
)
|
||||
|
||||
return pr_list
|
||||
|
|
|
|||
30
.github/workflows/default_plugins.yml
vendored
30
.github/workflows/default_plugins.yml
vendored
|
|
@ -10,11 +10,11 @@ jobs:
|
|||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: 7.0.x
|
||||
dotnet-version: 9.0.x
|
||||
|
||||
- name: Update Plugins To Production Version
|
||||
run: |
|
||||
|
|
@ -42,7 +42,7 @@ jobs:
|
|||
|
||||
- name: Build BrowserBookmark
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.BrowserBookmark"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.BrowserBookmark"
|
||||
7z a -tzip "Flow.Launcher.Plugin.BrowserBookmark.zip" "./Flow.Launcher.Plugin.BrowserBookmark/*"
|
||||
rm -r "Flow.Launcher.Plugin.BrowserBookmark"
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ jobs:
|
|||
|
||||
- name: Build Calculator
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.Calculator"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.Calculator"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Calculator.zip" "./Flow.Launcher.Plugin.Calculator/*"
|
||||
rm -r "Flow.Launcher.Plugin.Calculator"
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ jobs:
|
|||
|
||||
- name: Build Explorer
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.Explorer"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.Explorer"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Explorer.zip" "./Flow.Launcher.Plugin.Explorer/*"
|
||||
rm -r "Flow.Launcher.Plugin.Explorer"
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ jobs:
|
|||
|
||||
- name: Build PluginIndicator
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.PluginIndicator/Flow.Launcher.Plugin.PluginIndicator.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.PluginIndicator"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.PluginIndicator/Flow.Launcher.Plugin.PluginIndicator.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.PluginIndicator"
|
||||
7z a -tzip "Flow.Launcher.Plugin.PluginIndicator.zip" "./Flow.Launcher.Plugin.PluginIndicator/*"
|
||||
rm -r "Flow.Launcher.Plugin.PluginIndicator"
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ jobs:
|
|||
|
||||
- name: Build PluginsManager
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.PluginsManager"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.PluginsManager/Flow.Launcher.Plugin.PluginsManager.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.PluginsManager"
|
||||
7z a -tzip "Flow.Launcher.Plugin.PluginsManager.zip" "./Flow.Launcher.Plugin.PluginsManager/*"
|
||||
rm -r "Flow.Launcher.Plugin.PluginsManager"
|
||||
|
||||
|
|
@ -162,7 +162,7 @@ jobs:
|
|||
|
||||
- name: Build ProcessKiller
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.ProcessKiller"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.ProcessKiller"
|
||||
7z a -tzip "Flow.Launcher.Plugin.ProcessKiller.zip" "./Flow.Launcher.Plugin.ProcessKiller/*"
|
||||
rm -r "Flow.Launcher.Plugin.ProcessKiller"
|
||||
|
||||
|
|
@ -186,7 +186,7 @@ jobs:
|
|||
|
||||
- name: Build Program
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj' --framework net7.0-windows10.0.19041.0 -c Release -o "Flow.Launcher.Plugin.Program"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj' --framework net9.0-windows10.0.19041.0 -c Release -o "Flow.Launcher.Plugin.Program"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Program.zip" "./Flow.Launcher.Plugin.Program/*"
|
||||
rm -r "Flow.Launcher.Plugin.Program"
|
||||
|
||||
|
|
@ -210,7 +210,7 @@ jobs:
|
|||
|
||||
- name: Build Shell
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.Shell"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.Shell"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Shell.zip" "./Flow.Launcher.Plugin.Shell/*"
|
||||
rm -r "Flow.Launcher.Plugin.Shell"
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ jobs:
|
|||
|
||||
- name: Build Sys
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.Sys"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.Sys"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Sys.zip" "./Flow.Launcher.Plugin.Sys/*"
|
||||
rm -r "Flow.Launcher.Plugin.Sys"
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ jobs:
|
|||
|
||||
- name: Build Url
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Url/Flow.Launcher.Plugin.Url.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.Url"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.Url/Flow.Launcher.Plugin.Url.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.Url"
|
||||
7z a -tzip "Flow.Launcher.Plugin.Url.zip" "./Flow.Launcher.Plugin.Url/*"
|
||||
rm -r "Flow.Launcher.Plugin.Url"
|
||||
|
||||
|
|
@ -282,7 +282,7 @@ jobs:
|
|||
|
||||
- name: Build WebSearch
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.WebSearch"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.WebSearch"
|
||||
7z a -tzip "Flow.Launcher.Plugin.WebSearch.zip" "./Flow.Launcher.Plugin.WebSearch/*"
|
||||
rm -r "Flow.Launcher.Plugin.WebSearch"
|
||||
|
||||
|
|
@ -306,7 +306,7 @@ jobs:
|
|||
|
||||
- name: Build WindowsSettings
|
||||
run: |
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.WindowsSettings/Flow.Launcher.Plugin.WindowsSettings.csproj' --framework net7.0-windows -c Release -o "Flow.Launcher.Plugin.WindowsSettings"
|
||||
dotnet publish 'Plugins/Flow.Launcher.Plugin.WindowsSettings/Flow.Launcher.Plugin.WindowsSettings.csproj' --framework net9.0-windows -c Release -o "Flow.Launcher.Plugin.WindowsSettings"
|
||||
7z a -tzip "Flow.Launcher.Plugin.WindowsSettings.zip" "./Flow.Launcher.Plugin.WindowsSettings/*"
|
||||
rm -r "Flow.Launcher.Plugin.WindowsSettings"
|
||||
|
||||
|
|
|
|||
8
.github/workflows/dotnet.yml
vendored
8
.github/workflows/dotnet.yml
vendored
|
|
@ -16,11 +16,11 @@ jobs:
|
|||
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
FlowVersion: 1.19.5
|
||||
FlowVersion: 1.20.2
|
||||
NUGET_CERT_REVOCATION_MODE: offline
|
||||
BUILD_NUMBER: ${{ github.run_number }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set Flow.Launcher.csproj version
|
||||
id: update
|
||||
uses: vers-one/dotnet-project-version-updater@v1.7
|
||||
|
|
@ -29,9 +29,9 @@ jobs:
|
|||
"**/SolutionAssemblyInfo.cs"
|
||||
version: ${{ env.FlowVersion }}.${{ env.BUILD_NUMBER }}
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: 7.0.x
|
||||
dotnet-version: 9.0.x
|
||||
# cache: true
|
||||
# cache-dependency-path: |
|
||||
# Flow.Launcher/packages.lock.json
|
||||
|
|
|
|||
4
.github/workflows/release_pr.yml
vendored
4
.github/workflows/release_pr.yml
vendored
|
|
@ -11,9 +11,9 @@ jobs:
|
|||
update-pr:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.x"
|
||||
|
||||
|
|
|
|||
4
.github/workflows/spelling.yml
vendored
4
.github/workflows/spelling.yml
vendored
|
|
@ -72,7 +72,7 @@ jobs:
|
|||
steps:
|
||||
- name: check-spelling
|
||||
id: spelling
|
||||
uses: check-spelling/check-spelling@prerelease
|
||||
uses: check-spelling/check-spelling@v0.0.25
|
||||
with:
|
||||
suppress_push_for_open_pull_request: 1
|
||||
checkout: true
|
||||
|
|
@ -128,7 +128,7 @@ jobs:
|
|||
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
|
||||
steps:
|
||||
- name: comment
|
||||
uses: check-spelling/check-spelling@prerelease
|
||||
uses: check-spelling/check-spelling@v0.0.25
|
||||
with:
|
||||
checkout: true
|
||||
spell_check_this: check-spelling/spell-check-this@main
|
||||
|
|
|
|||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
|||
issues: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
- uses: actions/stale@v10
|
||||
with:
|
||||
stale-issue-message: 'This issue is stale because it has been open ${{ env.days-before-stale }} days with no activity. Remove stale label or comment or this will be closed in ${{ env.days-before-stale }} days.\n\nAlternatively this issue can be kept open by adding one of the following labels:\n${{ env.exempt-issue-labels }}'
|
||||
days-before-stale: ${{ env.days-before-stale }}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
|
||||
<!-- Work around https://github.com/dotnet/runtime/issues/109682 -->
|
||||
<CETCompat>false</CETCompat>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -45,8 +45,7 @@ namespace Flow.Launcher.Core.Configuration
|
|||
#endif
|
||||
IndicateDeletion(DataLocation.PortableDataPath);
|
||||
|
||||
API.ShowMsgBox("Flow Launcher needs to restart to finish disabling portable mode, " +
|
||||
"after the restart your portable data profile will be deleted and roaming data profile kept");
|
||||
API.ShowMsgBox(API.GetTranslation("restartToDisablePortableMode"));
|
||||
|
||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||
}
|
||||
|
|
@ -69,8 +68,7 @@ namespace Flow.Launcher.Core.Configuration
|
|||
#endif
|
||||
IndicateDeletion(DataLocation.RoamingDataPath);
|
||||
|
||||
API.ShowMsgBox("Flow Launcher needs to restart to finish enabling portable mode, " +
|
||||
"after the restart your roaming data profile will be deleted and portable data profile kept");
|
||||
API.ShowMsgBox(API.GetTranslation("restartToEnablePortableMode"));
|
||||
|
||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||
}
|
||||
|
|
@ -154,9 +152,8 @@ namespace Flow.Launcher.Core.Configuration
|
|||
{
|
||||
FilesFolders.RemoveFolderIfExists(roamingDataDir, (s) => API.ShowMsgBox(s));
|
||||
|
||||
if (API.ShowMsgBox("Flow Launcher has detected you enabled portable mode, " +
|
||||
"would you like to move it to a different location?", string.Empty,
|
||||
MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
if (API.ShowMsgBox(API.GetTranslation("moveToDifferentLocation"),
|
||||
string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
{
|
||||
FilesFolders.OpenPath(Constant.RootDirectory, (s) => API.ShowMsgBox(s));
|
||||
|
||||
|
|
@ -169,8 +166,7 @@ namespace Flow.Launcher.Core.Configuration
|
|||
{
|
||||
FilesFolders.RemoveFolderIfExists(portableDataDir, (s) => API.ShowMsgBox(s));
|
||||
|
||||
API.ShowMsgBox("Flow Launcher has detected you disabled portable mode, " +
|
||||
"the relevant shortcuts and uninstaller entry have been created");
|
||||
API.ShowMsgBox(API.GetTranslation("shortcutsUninstallerCreated"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -181,9 +177,8 @@ namespace Flow.Launcher.Core.Configuration
|
|||
|
||||
if (roamingLocationExists && portableLocationExists)
|
||||
{
|
||||
API.ShowMsgBox(string.Format("Flow Launcher detected your user data exists both in {0} and " +
|
||||
"{1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.",
|
||||
DataLocation.PortableDataPath, DataLocation.RoamingDataPath, Environment.NewLine));
|
||||
API.ShowMsgBox(string.Format(API.GetTranslation("userDataDuplicated"),
|
||||
DataLocation.PortableDataPath, DataLocation.RoamingDataPath, Environment.NewLine));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
{
|
||||
internal class PythonEnvironment : AbstractPluginEnvironment
|
||||
{
|
||||
private static readonly string ClassName = nameof(PythonEnvironment);
|
||||
|
||||
internal override string Language => AllowedLanguage.Python;
|
||||
|
||||
internal override string EnvName => DataLocation.PythonEnvironmentName;
|
||||
|
|
@ -39,9 +41,20 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
|
||||
// Python 3.11.4 is no longer Windows 7 compatible. If user is on Win 7 and
|
||||
// uses Python plugin they need to custom install and use v3.8.9
|
||||
JTF.Run(() => DroplexPackage.Drop(App.python_3_11_4_embeddable, InstallPath));
|
||||
JTF.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await DroplexPackage.Drop(App.python_3_11_4_embeddable, InstallPath);
|
||||
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
API.ShowMsgError(API.GetTranslation("failToInstallPythonEnv"));
|
||||
API.LogException(ClassName, "Failed to install Python environment", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
internal override PluginPair CreatePluginPair(string filePath, PluginMetadata metadata)
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
{
|
||||
internal class TypeScriptEnvironment : AbstractPluginEnvironment
|
||||
{
|
||||
private static readonly string ClassName = nameof(TypeScriptEnvironment);
|
||||
|
||||
internal override string Language => AllowedLanguage.TypeScript;
|
||||
|
||||
internal override string EnvName => DataLocation.NodeEnvironmentName;
|
||||
|
|
@ -34,9 +36,20 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
{
|
||||
FilesFolders.RemoveFolderIfExists(InstallPath, (s) => API.ShowMsgBox(s));
|
||||
|
||||
JTF.Run(() => DroplexPackage.Drop(App.nodejs_16_18_0, InstallPath));
|
||||
JTF.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await DroplexPackage.Drop(App.nodejs_16_18_0, InstallPath);
|
||||
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
API.ShowMsgError(API.GetTranslation("failToInstallTypeScriptEnv"));
|
||||
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
internal override PluginPair CreatePluginPair(string filePath, PluginMetadata metadata)
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
{
|
||||
internal class TypeScriptV2Environment : AbstractPluginEnvironment
|
||||
{
|
||||
private static readonly string ClassName = nameof(TypeScriptV2Environment);
|
||||
|
||||
internal override string Language => AllowedLanguage.TypeScriptV2;
|
||||
|
||||
internal override string EnvName => DataLocation.NodeEnvironmentName;
|
||||
|
|
@ -34,9 +36,20 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
|||
{
|
||||
FilesFolders.RemoveFolderIfExists(InstallPath, (s) => API.ShowMsgBox(s));
|
||||
|
||||
JTF.Run(() => DroplexPackage.Drop(App.nodejs_16_18_0, InstallPath));
|
||||
JTF.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await DroplexPackage.Drop(App.nodejs_16_18_0, InstallPath);
|
||||
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
PluginsSettingsFilePath = ExecutablePath;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
API.ShowMsgError(API.GetTranslation("failToInstallTypeScriptEnv"));
|
||||
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
internal override PluginPair CreatePluginPair(string filePath, PluginMetadata metadata)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using System.Threading;
|
|||
using System.Threading.Tasks;
|
||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
|
||||
namespace Flow.Launcher.Core.ExternalPlugins
|
||||
{
|
||||
|
|
@ -12,16 +13,20 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
|||
private static readonly string ClassName = nameof(PluginsManifest);
|
||||
|
||||
private static readonly CommunityPluginStore mainPluginStore =
|
||||
new("https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher.PluginsManifest/plugin_api_v2/plugins.json",
|
||||
"https://fastly.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@plugin_api_v2/plugins.json",
|
||||
"https://gcore.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@plugin_api_v2/plugins.json",
|
||||
"https://cdn.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@plugin_api_v2/plugins.json");
|
||||
new("https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher.PluginsManifest/main/plugins.json",
|
||||
"https://fastly.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@main/plugins.json",
|
||||
"https://gcore.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@main/plugins.json",
|
||||
"https://cdn.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@main/plugins.json");
|
||||
|
||||
private static readonly SemaphoreSlim manifestUpdateLock = new(1);
|
||||
|
||||
private static DateTime lastFetchedAt = DateTime.MinValue;
|
||||
private static readonly TimeSpan fetchTimeout = TimeSpan.FromMinutes(2);
|
||||
|
||||
// We should not initialize API in static constructor because it will create another API instance
|
||||
private static IPublicAPI api = null;
|
||||
private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService<IPublicAPI>();
|
||||
|
||||
public static List<UserPlugin> UserPlugins { get; private set; }
|
||||
|
||||
public static async Task<bool> UpdateManifestAsync(bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
||||
|
|
@ -35,18 +40,28 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
|||
var results = await mainPluginStore.FetchAsync(token, usePrimaryUrlOnly).ConfigureAwait(false);
|
||||
|
||||
// If the results are empty, we shouldn't update the manifest because the results are invalid.
|
||||
if (results.Count != 0)
|
||||
{
|
||||
UserPlugins = results;
|
||||
lastFetchedAt = DateTime.Now;
|
||||
if (results.Count == 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
var updatedPluginResults = new List<UserPlugin>();
|
||||
var appVersion = SemanticVersioning.Version.Parse(Constant.Version);
|
||||
|
||||
for (int i = 0; i < results.Count; i++)
|
||||
{
|
||||
if (IsMinimumAppVersionSatisfied(results[i], appVersion))
|
||||
updatedPluginResults.Add(results[i]);
|
||||
}
|
||||
|
||||
UserPlugins = updatedPluginResults;
|
||||
|
||||
lastFetchedAt = DateTime.Now;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IPublicAPI>().LogException(ClassName, "Http request failed", e);
|
||||
API.LogException(ClassName, "Http request failed", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
@ -55,5 +70,28 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool IsMinimumAppVersionSatisfied(UserPlugin plugin, SemanticVersioning.Version appVersion)
|
||||
{
|
||||
if (string.IsNullOrEmpty(plugin.MinimumAppVersion))
|
||||
return true;
|
||||
|
||||
try
|
||||
{
|
||||
if (appVersion >= SemanticVersioning.Version.Parse(plugin.MinimumAppVersion))
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed to parse the minimum app version {plugin.MinimumAppVersion} for plugin {plugin.Name}. "
|
||||
+ "Plugin excluded from manifest", e);
|
||||
return false;
|
||||
}
|
||||
|
||||
API.LogInfo(ClassName, $"Plugin {plugin.Name} requires minimum Flow Launcher version {plugin.MinimumAppVersion}, "
|
||||
+ $"but current version is {Constant.Version}. Plugin excluded from manifest.");
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<TargetFramework>net9.0-windows</TargetFramework>
|
||||
<UseWpf>true</UseWpf>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<OutputType>Library</OutputType>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
|
|
@ -54,11 +55,12 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Droplex" Version="1.7.0" />
|
||||
<PackageReference Include="FSharp.Core" Version="9.0.201" />
|
||||
<PackageReference Include="Meziantou.Framework.Win32.Jobs" Version="3.4.0" />
|
||||
<PackageReference Include="FSharp.Core" Version="9.0.300" />
|
||||
<PackageReference Include="Meziantou.Framework.Win32.Jobs" Version="3.4.3" />
|
||||
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
|
||||
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
||||
<PackageReference Include="squirrel.windows" Version="1.5.2" NoWarn="NU1701" />
|
||||
<PackageReference Include="StreamJsonRpc" Version="2.21.10" />
|
||||
<PackageReference Include="StreamJsonRpc" Version="2.22.11" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
|
|
@ -277,6 +278,122 @@ public static class PluginInstaller
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the plugin to the latest version available from its source.
|
||||
/// </summary>
|
||||
/// <param name="updateAllPlugins">Action to execute when the user chooses to update all plugins.</param>
|
||||
/// <param name="silentUpdate">If true, do not show any messages when there is no update available.</param>
|
||||
/// <param name="usePrimaryUrlOnly">If true, only use the primary URL for updates.</param>
|
||||
/// <param name="token">Cancellation token to cancel the update operation.</param>
|
||||
/// <returns></returns>
|
||||
public static async Task CheckForPluginUpdatesAsync(Action<List<PluginUpdateInfo>> updateAllPlugins, bool silentUpdate = true, bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
||||
{
|
||||
// Update the plugin manifest
|
||||
await API.UpdatePluginManifestAsync(usePrimaryUrlOnly, token);
|
||||
|
||||
// Get all plugins that can be updated
|
||||
var resultsForUpdate = (
|
||||
from existingPlugin in API.GetAllPlugins()
|
||||
join pluginUpdateSource in API.GetPluginManifest()
|
||||
on existingPlugin.Metadata.ID equals pluginUpdateSource.ID
|
||||
where string.Compare(existingPlugin.Metadata.Version, pluginUpdateSource.Version,
|
||||
StringComparison.InvariantCulture) <
|
||||
0 // if current version precedes version of the plugin from update source (e.g. PluginsManifest)
|
||||
&& !API.PluginModified(existingPlugin.Metadata.ID)
|
||||
select
|
||||
new PluginUpdateInfo()
|
||||
{
|
||||
ID = existingPlugin.Metadata.ID,
|
||||
Name = existingPlugin.Metadata.Name,
|
||||
Author = existingPlugin.Metadata.Author,
|
||||
CurrentVersion = existingPlugin.Metadata.Version,
|
||||
NewVersion = pluginUpdateSource.Version,
|
||||
IcoPath = existingPlugin.Metadata.IcoPath,
|
||||
PluginExistingMetadata = existingPlugin.Metadata,
|
||||
PluginNewUserPlugin = pluginUpdateSource
|
||||
}).ToList();
|
||||
|
||||
// No updates
|
||||
if (!resultsForUpdate.Any())
|
||||
{
|
||||
if (!silentUpdate)
|
||||
{
|
||||
API.ShowMsg(API.GetTranslation("updateNoResultTitle"), API.GetTranslation("updateNoResultSubtitle"));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// If all plugins are modified, just return
|
||||
if (resultsForUpdate.All(x => API.PluginModified(x.ID)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Show message box with button to update all plugins
|
||||
API.ShowMsgWithButton(
|
||||
API.GetTranslation("updateAllPluginsTitle"),
|
||||
API.GetTranslation("updateAllPluginsButtonContent"),
|
||||
() =>
|
||||
{
|
||||
updateAllPlugins(resultsForUpdate);
|
||||
},
|
||||
string.Join(", ", resultsForUpdate.Select(x => x.PluginExistingMetadata.Name)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates all plugins that have available updates.
|
||||
/// </summary>
|
||||
/// <param name="resultsForUpdate"></param>
|
||||
/// <param name="restart"></param>
|
||||
public static async Task UpdateAllPluginsAsync(IEnumerable<PluginUpdateInfo> resultsForUpdate, bool restart)
|
||||
{
|
||||
var anyPluginSuccess = false;
|
||||
await Task.WhenAll(resultsForUpdate.Select(async plugin =>
|
||||
{
|
||||
var downloadToFilePath = Path.Combine(Path.GetTempPath(), $"{plugin.Name}-{plugin.NewVersion}.zip");
|
||||
|
||||
try
|
||||
{
|
||||
using var cts = new CancellationTokenSource();
|
||||
|
||||
await DownloadFileAsync(
|
||||
$"{API.GetTranslation("DownloadingPlugin")} {plugin.PluginNewUserPlugin.Name}",
|
||||
plugin.PluginNewUserPlugin.UrlDownload, downloadToFilePath, cts);
|
||||
|
||||
// check if user cancelled download before installing plugin
|
||||
if (cts.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!await API.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.PluginNewUserPlugin, downloadToFilePath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
anyPluginSuccess = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, "Failed to update plugin", e);
|
||||
API.ShowMsgError(API.GetTranslation("ErrorUpdatingPlugin"));
|
||||
}
|
||||
}));
|
||||
|
||||
if (!anyPluginSuccess) return;
|
||||
|
||||
if (restart)
|
||||
{
|
||||
API.RestartApp();
|
||||
}
|
||||
else
|
||||
{
|
||||
API.ShowMsg(
|
||||
API.GetTranslation("updatebtn"),
|
||||
API.GetTranslation("PluginsUpdateSuccessNoRestart"));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Downloads a file from a URL to a local path, optionally showing a progress box and handling cancellation.
|
||||
/// </summary>
|
||||
|
|
@ -351,3 +468,15 @@ public static class PluginInstaller
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
public record PluginUpdateInfo
|
||||
{
|
||||
public string ID { get; init; }
|
||||
public string Name { get; init; }
|
||||
public string Author { get; init; }
|
||||
public string CurrentVersion { get; init; }
|
||||
public string NewVersion { get; init; }
|
||||
public string IcoPath { get; init; }
|
||||
public PluginMetadata PluginExistingMetadata { get; init; }
|
||||
public UserPlugin PluginNewUserPlugin { get; init; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
|||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Flow.Launcher.Core.ExternalPlugins;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using Flow.Launcher.Infrastructure.DialogJump;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Flow.Launcher.Plugin.SharedCommands;
|
||||
|
|
@ -40,10 +41,13 @@ namespace Flow.Launcher.Core.Plugin
|
|||
private static IEnumerable<PluginPair> _resultUpdatePlugin;
|
||||
private static IEnumerable<PluginPair> _translationPlugins;
|
||||
|
||||
private static readonly List<DialogJumpExplorerPair> _dialogJumpExplorerPlugins = new();
|
||||
private static readonly List<DialogJumpDialogPair> _dialogJumpDialogPlugins = new();
|
||||
|
||||
/// <summary>
|
||||
/// Directories that will hold Flow Launcher plugin directory
|
||||
/// </summary>
|
||||
private static readonly string[] Directories =
|
||||
public static readonly string[] Directories =
|
||||
{
|
||||
Constant.PreinstalledDirectory, DataLocation.PluginsDirectory
|
||||
};
|
||||
|
|
@ -186,6 +190,24 @@ namespace Flow.Launcher.Core.Plugin
|
|||
_homePlugins = GetPluginsForInterface<IAsyncHomeQuery>();
|
||||
_resultUpdatePlugin = GetPluginsForInterface<IResultUpdated>();
|
||||
_translationPlugins = GetPluginsForInterface<IPluginI18n>();
|
||||
|
||||
// Initialize Dialog Jump plugin pairs
|
||||
foreach (var pair in GetPluginsForInterface<IDialogJumpExplorer>())
|
||||
{
|
||||
_dialogJumpExplorerPlugins.Add(new DialogJumpExplorerPair
|
||||
{
|
||||
Plugin = (IDialogJumpExplorer)pair.Plugin,
|
||||
Metadata = pair.Metadata
|
||||
});
|
||||
}
|
||||
foreach (var pair in GetPluginsForInterface<IDialogJumpDialog>())
|
||||
{
|
||||
_dialogJumpDialogPlugins.Add(new DialogJumpDialogPair
|
||||
{
|
||||
Plugin = (IDialogJumpDialog)pair.Plugin,
|
||||
Metadata = pair.Metadata
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void UpdatePluginDirectory(List<PluginMetadata> metadatas)
|
||||
|
|
@ -288,20 +310,24 @@ namespace Flow.Launcher.Core.Plugin
|
|||
}
|
||||
}
|
||||
|
||||
public static ICollection<PluginPair> ValidPluginsForQuery(Query query)
|
||||
public static ICollection<PluginPair> ValidPluginsForQuery(Query query, bool dialogJump)
|
||||
{
|
||||
if (query is null)
|
||||
return Array.Empty<PluginPair>();
|
||||
|
||||
if (!NonGlobalPlugins.TryGetValue(query.ActionKeyword, out var plugin))
|
||||
{
|
||||
return GlobalPlugins.Where(p => !PluginModified(p.Metadata.ID)).ToList();
|
||||
if (dialogJump)
|
||||
return GlobalPlugins.Where(p => p.Plugin is IAsyncDialogJump && !PluginModified(p.Metadata.ID)).ToList();
|
||||
else
|
||||
return GlobalPlugins.Where(p => !PluginModified(p.Metadata.ID)).ToList();
|
||||
}
|
||||
|
||||
if (API.PluginModified(plugin.Metadata.ID))
|
||||
{
|
||||
if (dialogJump && plugin.Plugin is not IAsyncDialogJump)
|
||||
return Array.Empty<PluginPair>();
|
||||
|
||||
if (API.PluginModified(plugin.Metadata.ID))
|
||||
return Array.Empty<PluginPair>();
|
||||
}
|
||||
|
||||
return new List<PluginPair>
|
||||
{
|
||||
|
|
@ -388,6 +414,36 @@ namespace Flow.Launcher.Core.Plugin
|
|||
return results;
|
||||
}
|
||||
|
||||
public static async Task<List<DialogJumpResult>> QueryDialogJumpForPluginAsync(PluginPair pair, Query query, CancellationToken token)
|
||||
{
|
||||
var results = new List<DialogJumpResult>();
|
||||
var metadata = pair.Metadata;
|
||||
|
||||
try
|
||||
{
|
||||
var milliseconds = await API.StopwatchLogDebugAsync(ClassName, $"Cost for {metadata.Name}",
|
||||
async () => results = await ((IAsyncDialogJump)pair.Plugin).QueryDialogJumpAsync(query, token).ConfigureAwait(false));
|
||||
|
||||
token.ThrowIfCancellationRequested();
|
||||
if (results == null)
|
||||
return null;
|
||||
UpdatePluginMetadata(results, metadata, query);
|
||||
|
||||
token.ThrowIfCancellationRequested();
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// null will be fine since the results will only be added into queue if the token hasn't been cancelled
|
||||
return null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed to query Dialog Jump for plugin: {metadata.Name}", e);
|
||||
return null;
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
public static void UpdatePluginMetadata(IReadOnlyList<Result> results, PluginMetadata metadata, Query query)
|
||||
{
|
||||
foreach (var r in results)
|
||||
|
|
@ -463,6 +519,16 @@ namespace Flow.Launcher.Core.Plugin
|
|||
return _homePlugins.Where(p => !PluginModified(p.Metadata.ID)).Any(p => p.Metadata.ID == id);
|
||||
}
|
||||
|
||||
public static IList<DialogJumpExplorerPair> GetDialogJumpExplorers()
|
||||
{
|
||||
return _dialogJumpExplorerPlugins.Where(p => !PluginModified(p.Metadata.ID)).ToList();
|
||||
}
|
||||
|
||||
public static IList<DialogJumpDialogPair> GetDialogJumpDialogs()
|
||||
{
|
||||
return _dialogJumpDialogPlugins.Where(p => !PluginModified(p.Metadata.ID)).ToList();
|
||||
}
|
||||
|
||||
public static bool ActionKeywordRegistered(string actionKeyword)
|
||||
{
|
||||
// this method is only checking for action keywords (defined as not '*') registration
|
||||
|
|
@ -719,7 +785,7 @@ namespace Flow.Launcher.Core.Plugin
|
|||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed to delete plugin settings folder for {plugin.Name}", e);
|
||||
API.ShowMsg(API.GetTranslation("failedToRemovePluginSettingsTitle"),
|
||||
API.ShowMsgError(API.GetTranslation("failedToRemovePluginSettingsTitle"),
|
||||
string.Format(API.GetTranslation("failedToRemovePluginSettingsMessage"), plugin.Name));
|
||||
}
|
||||
}
|
||||
|
|
@ -735,7 +801,7 @@ namespace Flow.Launcher.Core.Plugin
|
|||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed to delete plugin cache folder for {plugin.Name}", e);
|
||||
API.ShowMsg(API.GetTranslation("failedToRemovePluginCacheTitle"),
|
||||
API.ShowMsgError(API.GetTranslation("failedToRemovePluginCacheTitle"),
|
||||
string.Format(API.GetTranslation("failedToRemovePluginCacheMessage"), plugin.Name));
|
||||
}
|
||||
Settings.RemovePluginSettings(plugin.ID);
|
||||
|
|
|
|||
|
|
@ -120,17 +120,13 @@ namespace Flow.Launcher.Core.Plugin
|
|||
{
|
||||
var errorPluginString = string.Join(Environment.NewLine, erroredPlugins);
|
||||
|
||||
var errorMessage = "The following "
|
||||
+ (erroredPlugins.Count > 1 ? "plugins have " : "plugin has ")
|
||||
+ "errored and cannot be loaded:";
|
||||
var errorMessage = erroredPlugins.Count > 1 ?
|
||||
API.GetTranslation("pluginsHaveErrored") :
|
||||
API.GetTranslation("pluginHasErrored");
|
||||
|
||||
_ = Task.Run(() =>
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IPublicAPI>().ShowMsgBox($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
|
||||
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
|
||||
$"Please refer to the logs for more information", "",
|
||||
MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
});
|
||||
API.ShowMsgError($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
|
||||
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
|
||||
API.GetTranslation("referToLogs"));
|
||||
}
|
||||
|
||||
return plugins;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace Flow.Launcher.Core.Resource
|
|||
public static Language German = new Language("de", "Deutsch");
|
||||
public static Language Korean = new Language("ko", "한국어");
|
||||
public static Language Serbian = new Language("sr", "Srpski");
|
||||
public static Language Serbian_Cyrillic = new Language("sr-Cyrl-RS", "Српски");
|
||||
public static Language Portuguese_Portugal = new Language("pt-pt", "Português");
|
||||
public static Language Portuguese_Brazil = new Language("pt-br", "Português (Brasil)");
|
||||
public static Language Spanish = new Language("es", "Spanish");
|
||||
|
|
@ -47,6 +48,7 @@ namespace Flow.Launcher.Core.Resource
|
|||
German,
|
||||
Korean,
|
||||
Serbian,
|
||||
Serbian_Cyrillic,
|
||||
Portuguese_Portugal,
|
||||
Portuguese_Brazil,
|
||||
Spanish,
|
||||
|
|
@ -79,7 +81,8 @@ namespace Flow.Launcher.Core.Resource
|
|||
"da" => "System",
|
||||
"de" => "System",
|
||||
"ko" => "시스템",
|
||||
"sr" => "Систем",
|
||||
"sr" => "Sistem",
|
||||
"sr-Cyrl-RS" => "Систем",
|
||||
"pt-pt" => "Sistema",
|
||||
"pt-br" => "Sistema",
|
||||
"es" => "Sistema",
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
|
@ -28,22 +27,20 @@ namespace Flow.Launcher.Core.Resource
|
|||
private const string DefaultFile = "en.xaml";
|
||||
private const string Extension = ".xaml";
|
||||
private readonly Settings _settings;
|
||||
private readonly List<string> _languageDirectories = new();
|
||||
private readonly List<ResourceDictionary> _oldResources = new();
|
||||
private readonly List<string> _languageDirectories = [];
|
||||
private readonly List<ResourceDictionary> _oldResources = [];
|
||||
private static string SystemLanguageCode;
|
||||
|
||||
public Internationalization(Settings settings)
|
||||
{
|
||||
_settings = settings;
|
||||
AddFlowLauncherLanguageDirectory();
|
||||
}
|
||||
|
||||
private void AddFlowLauncherLanguageDirectory()
|
||||
{
|
||||
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
||||
_languageDirectories.Add(directory);
|
||||
}
|
||||
#region Initialization
|
||||
|
||||
/// <summary>
|
||||
/// Initialize the system language code based on the current culture.
|
||||
/// </summary>
|
||||
public static void InitSystemLanguageCode()
|
||||
{
|
||||
var availableLanguages = AvailableLanguages.GetAvailableLanguages();
|
||||
|
|
@ -72,35 +69,6 @@ namespace Flow.Launcher.Core.Resource
|
|||
SystemLanguageCode = DefaultLanguageCode;
|
||||
}
|
||||
|
||||
private void AddPluginLanguageDirectories()
|
||||
{
|
||||
foreach (var plugin in PluginManager.GetTranslationPlugins())
|
||||
{
|
||||
var location = Assembly.GetAssembly(plugin.Plugin.GetType()).Location;
|
||||
var dir = Path.GetDirectoryName(location);
|
||||
if (dir != null)
|
||||
{
|
||||
var pluginThemeDirectory = Path.Combine(dir, Folder);
|
||||
_languageDirectories.Add(pluginThemeDirectory);
|
||||
}
|
||||
else
|
||||
{
|
||||
API.LogError(ClassName, $"Can't find plugin path <{location}> for <{plugin.Metadata.Name}>");
|
||||
}
|
||||
}
|
||||
|
||||
LoadDefaultLanguage();
|
||||
}
|
||||
|
||||
private void LoadDefaultLanguage()
|
||||
{
|
||||
// Removes language files loaded before any plugins were loaded.
|
||||
// Prevents the language Flow started in from overwriting English if the user switches back to English
|
||||
RemoveOldLanguageFiles();
|
||||
LoadLanguage(AvailableLanguages.English);
|
||||
_oldResources.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialize language. Will change app language and plugin language based on settings.
|
||||
/// </summary>
|
||||
|
|
@ -116,13 +84,64 @@ namespace Flow.Launcher.Core.Resource
|
|||
// Get language by language code and change language
|
||||
var language = GetLanguageByLanguageCode(languageCode);
|
||||
|
||||
// Add Flow Launcher language directory
|
||||
AddFlowLauncherLanguageDirectory();
|
||||
|
||||
// Add plugin language directories first so that we can load language files from plugins
|
||||
AddPluginLanguageDirectories();
|
||||
|
||||
// Load default language resources
|
||||
LoadDefaultLanguage();
|
||||
|
||||
// Change language
|
||||
await ChangeLanguageAsync(language);
|
||||
await ChangeLanguageAsync(language, false);
|
||||
}
|
||||
|
||||
private void AddFlowLauncherLanguageDirectory()
|
||||
{
|
||||
// Check if Flow Launcher language directory exists
|
||||
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
||||
if (!Directory.Exists(directory))
|
||||
{
|
||||
API.LogError(ClassName, $"Flow Launcher language directory can't be found <{directory}>");
|
||||
return;
|
||||
}
|
||||
|
||||
_languageDirectories.Add(directory);
|
||||
}
|
||||
|
||||
private void AddPluginLanguageDirectories()
|
||||
{
|
||||
foreach (var pluginsDir in PluginManager.Directories)
|
||||
{
|
||||
if (!Directory.Exists(pluginsDir)) continue;
|
||||
|
||||
// Enumerate all top directories in the plugin directory
|
||||
foreach (var dir in Directory.GetDirectories(pluginsDir))
|
||||
{
|
||||
// Check if the directory contains a language folder
|
||||
var pluginLanguageDir = Path.Combine(dir, Folder);
|
||||
if (!Directory.Exists(pluginLanguageDir)) continue;
|
||||
|
||||
// Check if the language directory contains default language file since it will be checked later
|
||||
_languageDirectories.Add(pluginLanguageDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadDefaultLanguage()
|
||||
{
|
||||
// Removes language files loaded before any plugins were loaded.
|
||||
// Prevents the language Flow started in from overwriting English if the user switches back to English
|
||||
RemoveOldLanguageFiles();
|
||||
LoadLanguage(AvailableLanguages.English);
|
||||
_oldResources.Clear();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Change Language
|
||||
|
||||
/// <summary>
|
||||
/// Change language during runtime. Will change app language and plugin language & save settings.
|
||||
/// </summary>
|
||||
|
|
@ -151,8 +170,8 @@ namespace Flow.Launcher.Core.Resource
|
|||
|
||||
private static Language GetLanguageByLanguageCode(string languageCode)
|
||||
{
|
||||
var lowercase = languageCode.ToLower();
|
||||
var language = AvailableLanguages.GetAvailableLanguages().FirstOrDefault(o => o.LanguageCode.ToLower() == lowercase);
|
||||
var language = AvailableLanguages.GetAvailableLanguages().
|
||||
FirstOrDefault(o => o.LanguageCode.Equals(languageCode, StringComparison.OrdinalIgnoreCase));
|
||||
if (language == null)
|
||||
{
|
||||
API.LogError(ClassName, $"Language code can't be found <{languageCode}>");
|
||||
|
|
@ -164,7 +183,7 @@ namespace Flow.Launcher.Core.Resource
|
|||
}
|
||||
}
|
||||
|
||||
private async Task ChangeLanguageAsync(Language language)
|
||||
private async Task ChangeLanguageAsync(Language language, bool updateMetadata = true)
|
||||
{
|
||||
// Remove old language files and load language
|
||||
RemoveOldLanguageFiles();
|
||||
|
|
@ -176,8 +195,11 @@ namespace Flow.Launcher.Core.Resource
|
|||
// Change culture info
|
||||
ChangeCultureInfo(language.LanguageCode);
|
||||
|
||||
// Raise event for plugins after culture is set
|
||||
await Task.Run(UpdatePluginMetadataTranslations);
|
||||
if (updateMetadata)
|
||||
{
|
||||
// Raise event for plugins after culture is set
|
||||
await Task.Run(UpdatePluginMetadataTranslations);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ChangeCultureInfo(string languageCode)
|
||||
|
|
@ -200,6 +222,10 @@ namespace Flow.Launcher.Core.Resource
|
|||
thread.CurrentUICulture = currentCulture;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Prompt Pinyin
|
||||
|
||||
public bool PromptShouldUsePinyin(string languageCodeToSet)
|
||||
{
|
||||
var languageToSet = GetLanguageByLanguageCode(languageCodeToSet);
|
||||
|
|
@ -212,14 +238,18 @@ namespace Flow.Launcher.Core.Resource
|
|||
|
||||
// No other languages should show the following text so just make it hard-coded
|
||||
// "Do you want to search with pinyin?"
|
||||
string text = languageToSet == AvailableLanguages.Chinese ? "是否启用拼音搜索?" : "是否啓用拼音搜索?" ;
|
||||
string text = languageToSet == AvailableLanguages.Chinese ? "是否启用拼音搜索?" : "是否啓用拼音搜索?";
|
||||
|
||||
if (Ioc.Default.GetRequiredService<IPublicAPI>().ShowMsgBox(text, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
||||
if (API.ShowMsgBox(text, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Language Resources Management
|
||||
|
||||
private void RemoveOldLanguageFiles()
|
||||
{
|
||||
var dicts = Application.Current.Resources.MergedDictionaries;
|
||||
|
|
@ -255,46 +285,6 @@ namespace Flow.Launcher.Core.Resource
|
|||
}
|
||||
}
|
||||
|
||||
public List<Language> LoadAvailableLanguages()
|
||||
{
|
||||
var list = AvailableLanguages.GetAvailableLanguages();
|
||||
list.Insert(0, new Language(Constant.SystemLanguageCode, AvailableLanguages.GetSystemTranslation(SystemLanguageCode)));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static string GetTranslation(string key)
|
||||
{
|
||||
var translation = Application.Current.TryFindResource(key);
|
||||
if (translation is string)
|
||||
{
|
||||
return translation.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
API.LogError(ClassName, $"No Translation for key {key}");
|
||||
return $"No Translation for key {key}";
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdatePluginMetadataTranslations()
|
||||
{
|
||||
// Update plugin metadata name & description
|
||||
foreach (var p in PluginManager.GetTranslationPlugins())
|
||||
{
|
||||
if (p.Plugin is not IPluginI18n pluginI18N) return;
|
||||
try
|
||||
{
|
||||
p.Metadata.Name = pluginI18N.GetTranslatedPluginTitle();
|
||||
p.Metadata.Description = pluginI18N.GetTranslatedPluginDescription();
|
||||
pluginI18N.OnCultureInfoChanged(CultureInfo.CurrentCulture);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed for <{p.Metadata.Name}>", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static string LanguageFile(string folder, string language)
|
||||
{
|
||||
if (Directory.Exists(folder))
|
||||
|
|
@ -324,5 +314,59 @@ namespace Flow.Launcher.Core.Resource
|
|||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Available Languages
|
||||
|
||||
public List<Language> LoadAvailableLanguages()
|
||||
{
|
||||
var list = AvailableLanguages.GetAvailableLanguages();
|
||||
list.Insert(0, new Language(Constant.SystemLanguageCode, AvailableLanguages.GetSystemTranslation(SystemLanguageCode)));
|
||||
return list;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Get Translations
|
||||
|
||||
public static string GetTranslation(string key)
|
||||
{
|
||||
var translation = Application.Current.TryFindResource(key);
|
||||
if (translation is string)
|
||||
{
|
||||
return translation.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
API.LogError(ClassName, $"No Translation for key {key}");
|
||||
return $"No Translation for key {key}";
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Update Metadata
|
||||
|
||||
public static void UpdatePluginMetadataTranslations()
|
||||
{
|
||||
// Update plugin metadata name & description
|
||||
foreach (var p in PluginManager.GetTranslationPlugins())
|
||||
{
|
||||
if (p.Plugin is not IPluginI18n pluginI18N) return;
|
||||
try
|
||||
{
|
||||
p.Metadata.Name = pluginI18N.GetTranslatedPluginTitle();
|
||||
p.Metadata.Description = pluginI18N.GetTranslatedPluginDescription();
|
||||
pluginI18N.OnCultureInfoChanged(CultureInfo.CurrentCulture);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
API.LogException(ClassName, $"Failed for <{p.Metadata.Name}>", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace Flow.Launcher.Core.Resource
|
||||
{
|
||||
[Obsolete("LocalizationConverter is obsolete. Use with Flow.Launcher.Localization NuGet package instead.")]
|
||||
public class LocalizationConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (targetType == typeof(string) && value != null)
|
||||
{
|
||||
FieldInfo fi = value.GetType().GetField(value.ToString());
|
||||
if (fi != null)
|
||||
{
|
||||
string localizedDescription = string.Empty;
|
||||
var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
if ((attributes.Length > 0) && (!String.IsNullOrEmpty(attributes[0].Description)))
|
||||
{
|
||||
localizedDescription = attributes[0].Description;
|
||||
}
|
||||
|
||||
return (!String.IsNullOrEmpty(localizedDescription)) ? localizedDescription : value.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -49,8 +49,9 @@ namespace Flow.Launcher.Core
|
|||
// UpdateApp CheckForUpdate will return value only if the app is squirrel installed
|
||||
var newUpdateInfo = await updateManager.CheckForUpdate().NonNull().ConfigureAwait(false);
|
||||
|
||||
var newReleaseVersion = Version.Parse(newUpdateInfo.FutureReleaseEntry.Version.ToString());
|
||||
var currentVersion = Version.Parse(Constant.Version);
|
||||
var newReleaseVersion =
|
||||
SemanticVersioning.Version.Parse(newUpdateInfo.FutureReleaseEntry.Version.ToString());
|
||||
var currentVersion = SemanticVersioning.Version.Parse(Constant.Version);
|
||||
|
||||
_api.LogInfo(ClassName, $"Future Release <{Formatted(newUpdateInfo.FutureReleaseEntry)}>");
|
||||
|
||||
|
|
@ -71,10 +72,13 @@ namespace Flow.Launcher.Core
|
|||
|
||||
if (DataLocation.PortableDataLocationInUse())
|
||||
{
|
||||
var targetDestination = updateManager.RootAppDirectory + $"\\app-{newReleaseVersion}\\{DataLocation.PortableFolderName}";
|
||||
var targetDestination = updateManager.RootAppDirectory +
|
||||
$"\\app-{newReleaseVersion}\\{DataLocation.PortableFolderName}";
|
||||
FilesFolders.CopyAll(DataLocation.PortableDataPath, targetDestination, (s) => _api.ShowMsgBox(s));
|
||||
if (!FilesFolders.VerifyBothFolderFilesEqual(DataLocation.PortableDataPath, targetDestination, (s) => _api.ShowMsgBox(s)))
|
||||
_api.ShowMsgBox(string.Format(_api.GetTranslation("update_flowlauncher_fail_moving_portable_user_profile_data"),
|
||||
if (!FilesFolders.VerifyBothFolderFilesEqual(DataLocation.PortableDataPath, targetDestination,
|
||||
(s) => _api.ShowMsgBox(s)))
|
||||
_api.ShowMsgBox(string.Format(
|
||||
_api.GetTranslation("update_flowlauncher_fail_moving_portable_user_profile_data"),
|
||||
DataLocation.PortableDataPath,
|
||||
targetDestination));
|
||||
}
|
||||
|
|
@ -87,24 +91,27 @@ namespace Flow.Launcher.Core
|
|||
|
||||
_api.LogInfo(ClassName, $"Update success:{newVersionTips}");
|
||||
|
||||
if (_api.ShowMsgBox(newVersionTips, _api.GetTranslation("update_flowlauncher_new_update"), MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
if (_api.ShowMsgBox(newVersionTips, _api.GetTranslation("update_flowlauncher_new_update"),
|
||||
MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
{
|
||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (e is HttpRequestException or WebException or SocketException || e.InnerException is TimeoutException)
|
||||
if (e is HttpRequestException or WebException or SocketException ||
|
||||
e.InnerException is TimeoutException)
|
||||
{
|
||||
_api.LogException(ClassName, $"Check your connection and proxy settings to github-cloud.s3.amazonaws.com.", e);
|
||||
_api.LogException(ClassName,
|
||||
$"Check your connection and proxy settings to github-cloud.s3.amazonaws.com.", e);
|
||||
}
|
||||
else
|
||||
{
|
||||
_api.LogException(ClassName, $"Error Occurred", e);
|
||||
}
|
||||
|
||||
|
||||
if (!silentUpdate)
|
||||
_api.ShowMsg(_api.GetTranslation("update_flowlauncher_fail"),
|
||||
_api.ShowMsgError(_api.GetTranslation("update_flowlauncher_fail"),
|
||||
_api.GetTranslation("update_flowlauncher_check_connection"));
|
||||
}
|
||||
finally
|
||||
|
|
@ -116,14 +123,11 @@ namespace Flow.Launcher.Core
|
|||
[UsedImplicitly]
|
||||
private class GithubRelease
|
||||
{
|
||||
[JsonPropertyName("prerelease")]
|
||||
public bool Prerelease { get; [UsedImplicitly] set; }
|
||||
[JsonPropertyName("prerelease")] public bool Prerelease { get; [UsedImplicitly] set; }
|
||||
|
||||
[JsonPropertyName("published_at")]
|
||||
public DateTime PublishedAt { get; [UsedImplicitly] set; }
|
||||
[JsonPropertyName("published_at")] public DateTime PublishedAt { get; [UsedImplicitly] set; }
|
||||
|
||||
[JsonPropertyName("html_url")]
|
||||
public string HtmlUrl { get; [UsedImplicitly] set; }
|
||||
[JsonPropertyName("html_url")] public string HtmlUrl { get; [UsedImplicitly] set; }
|
||||
}
|
||||
|
||||
// https://github.com/Squirrel/Squirrel.Windows/blob/master/src/Squirrel/UpdateManager.Factory.cs
|
||||
|
|
@ -138,10 +142,7 @@ namespace Flow.Launcher.Core
|
|||
var latest = releases.Where(r => !r.Prerelease).OrderByDescending(r => r.PublishedAt).First();
|
||||
var latestUrl = latest.HtmlUrl.Replace("/tag/", "/download/");
|
||||
|
||||
var client = new WebClient
|
||||
{
|
||||
Proxy = Http.WebProxy
|
||||
};
|
||||
var client = new WebClient { Proxy = Http.WebProxy };
|
||||
var downloader = new FileDownloader(client);
|
||||
|
||||
var manager = new UpdateManager(latestUrl, urlDownloader: downloader);
|
||||
|
|
@ -158,10 +159,7 @@ namespace Flow.Launcher.Core
|
|||
|
||||
private static string Formatted<T>(T t)
|
||||
{
|
||||
var formatted = JsonSerializer.Serialize(t, new JsonSerializerOptions
|
||||
{
|
||||
WriteIndented = true
|
||||
});
|
||||
var formatted = JsonSerializer.Serialize(t, new JsonSerializerOptions { WriteIndented = true });
|
||||
|
||||
return formatted;
|
||||
}
|
||||
|
|
|
|||
277
Flow.Launcher.Core/packages.lock.json
Normal file
277
Flow.Launcher.Core/packages.lock.json
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
{
|
||||
"version": 1,
|
||||
"dependencies": {
|
||||
"net9.0-windows7.0": {
|
||||
"Droplex": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.7.0, )",
|
||||
"resolved": "1.7.0",
|
||||
"contentHash": "wutfIus/Ufw/9TDsp86R1ycnIH+wWrj4UhcmrzAHWjsdyC2iM07WEQ9+APTB7pQynsDnYH1r2i58XgAJ3lxUXA==",
|
||||
"dependencies": {
|
||||
"YamlDotNet": "9.1.0"
|
||||
}
|
||||
},
|
||||
"FSharp.Core": {
|
||||
"type": "Direct",
|
||||
"requested": "[9.0.300, )",
|
||||
"resolved": "9.0.300",
|
||||
"contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ=="
|
||||
},
|
||||
"Meziantou.Framework.Win32.Jobs": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.4.3, )",
|
||||
"resolved": "3.4.3",
|
||||
"contentHash": "REjInKnQ0OrhjjtSMPQtLtdURctCroB4L8Sd2gjTOYDysklvsdnrStx1tHS7uLv+fSyFF3aazZmo5Ka0v1oz/w=="
|
||||
},
|
||||
"Microsoft.IO.RecyclableMemoryStream": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.0.1, )",
|
||||
"resolved": "3.0.1",
|
||||
"contentHash": "s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g=="
|
||||
},
|
||||
"SemanticVersioning": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.0.0, )",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "RR+8GbPQ/gjDqov/1QN1OPoUlbUruNwcL3WjWCeLw+MY7+od/ENhnkYxCfAC6rQLIu3QifaJt3kPYyP3RumqMQ=="
|
||||
},
|
||||
"squirrel.windows": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.5.2, )",
|
||||
"resolved": "1.5.2",
|
||||
"contentHash": "89Y/CFxWm7SEOjvuV2stVa8p+SNM9GOLk4tUNm2nUF792nfkimAgwRA/umVsdyd/OXBH8byXSh4V1qck88ZAyQ==",
|
||||
"dependencies": {
|
||||
"DeltaCompressionDotNet": "[1.0.0, 2.0.0)",
|
||||
"Mono.Cecil": "0.9.6.1",
|
||||
"Splat": "1.6.2"
|
||||
}
|
||||
},
|
||||
"StreamJsonRpc": {
|
||||
"type": "Direct",
|
||||
"requested": "[2.22.11, )",
|
||||
"resolved": "2.22.11",
|
||||
"contentHash": "TQcqBFswLNpdSJANjhxZmIIe0Yl0kGqzjZ+uHLdhrkxntofvNu6C53XPEEYQ3Wkj8AorKumkuv/VMvTH4BHOZw==",
|
||||
"dependencies": {
|
||||
"MessagePack": "2.5.192",
|
||||
"Microsoft.VisualStudio.Threading.Only": "17.13.61",
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8",
|
||||
"Nerdbank.Streams": "2.12.87",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.IO.Pipelines": "8.0.0"
|
||||
}
|
||||
},
|
||||
"Ben.Demystifier": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.4.1",
|
||||
"contentHash": "axFeEMfmEORy3ipAzOXG/lE+KcNptRbei3F0C4kQCdeiQtW+qJW90K5iIovITGrdLt8AjhNCwk5qLSX9/rFpoA==",
|
||||
"dependencies": {
|
||||
"System.Reflection.Metadata": "5.0.0"
|
||||
}
|
||||
},
|
||||
"BitFaster.Caching": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.5.4",
|
||||
"contentHash": "1QroTY1PVCZOSG9FnkkCrmCKk/+bZCgI/YXq376HnYwUDJ4Ho0EaV4YaA/5v5WYLnwIwIO7RZkdWbg9pxIpueQ=="
|
||||
},
|
||||
"CommunityToolkit.Mvvm": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.4.0",
|
||||
"contentHash": "tqVU8yc/ADO9oiTRyTnwhFN68hCwvkliMierptWOudIAvWY1mWCh5VFh+guwHJmpMwfg0J0rY+yyd5Oy7ty9Uw=="
|
||||
},
|
||||
"DeltaCompressionDotNet": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.0.0",
|
||||
"contentHash": "nwbZAYd+DblXAIzlnwDSnl0CiCm8jWLfHSYnoN4wYhtIav6AegB3+T/vKzLbU2IZlPB8Bvl8U3NXpx3eaz+N5w=="
|
||||
},
|
||||
"InputSimulator": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.0.4",
|
||||
"contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA=="
|
||||
},
|
||||
"JetBrains.Annotations": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2024.3.0",
|
||||
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
||||
},
|
||||
"MemoryPack": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "wy3JTBNBsO8LfQcBvvYsWr3lm2Oakolrfu0UQ3oSJSEiD+7ye0GUhYTaXuYYBowqsXBXWD9gf2218ae0JRiYVQ==",
|
||||
"dependencies": {
|
||||
"MemoryPack.Core": "1.21.4",
|
||||
"MemoryPack.Generator": "1.21.4"
|
||||
}
|
||||
},
|
||||
"MemoryPack.Core": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "6RszGorZ0ejNmp37ZcboPBMvvPCuNW2jlrdQfcs/lMzE5b3pmPF6hsm/laDc34hRlbAST1ZxaX/DvYu2DF5sBQ=="
|
||||
},
|
||||
"MemoryPack.Generator": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "g14EsSS85yn0lHTi0J9ivqlZMf09A2iI51fmI+0KkzIzyCbWOBWPi5mdaY7YWmXprk12aYh9u/qfWHQUYthlwg=="
|
||||
},
|
||||
"MessagePack": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.5.192",
|
||||
"contentHash": "Jtle5MaFeIFkdXtxQeL9Tu2Y3HsAQGoSntOzrn6Br/jrl6c8QmG22GEioT5HBtZJR0zw0s46OnKU8ei2M3QifA==",
|
||||
"dependencies": {
|
||||
"MessagePack.Annotations": "2.5.192",
|
||||
"Microsoft.NET.StringTools": "17.6.3"
|
||||
}
|
||||
},
|
||||
"MessagePack.Annotations": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.5.192",
|
||||
"contentHash": "jaJuwcgovWIZ8Zysdyf3b7b34/BrADw4v82GaEZymUhDd3ScMPrYd/cttekeDteJJPXseJxp04yTIcxiVUjTWg=="
|
||||
},
|
||||
"Microsoft.NET.StringTools": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.6.3",
|
||||
"contentHash": "N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA=="
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==",
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Threading.Analyzers": "17.14.15",
|
||||
"Microsoft.VisualStudio.Threading.Only": "17.14.15",
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8"
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading.Analyzers": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw=="
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading.Only": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==",
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8"
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Validation": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.8.8",
|
||||
"contentHash": "rWXThIpyQd4YIXghNkiv2+VLvzS+MCMKVRDR0GAMlflsdo+YcAN2g2r5U1Ah98OFjQMRexTFtXQQ2LkajxZi3g=="
|
||||
},
|
||||
"Microsoft.Win32.SystemEvents": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.0",
|
||||
"contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ=="
|
||||
},
|
||||
"Mono.Cecil": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.9.6.1",
|
||||
"contentHash": "yMsurNaOxxKIjyW9pEB+tRrR1S3DFnN1+iBgKvYvXG8kW0Y6yknJeMAe/tl3+P78/2C6304TgF7aVqpqXgEQ9Q=="
|
||||
},
|
||||
"Nerdbank.Streams": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.12.87",
|
||||
"contentHash": "oDKOeKZ865I5X8qmU3IXMyrAnssYEiYWTobPGdrqubN3RtTzEHIv+D6fwhdcfrdhPJzHjCkK/ORztR/IsnmA6g==",
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Threading.Only": "17.13.61",
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8",
|
||||
"System.IO.Pipelines": "8.0.0"
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"type": "Transitive",
|
||||
"resolved": "13.0.3",
|
||||
"contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
|
||||
},
|
||||
"NHotkey": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A=="
|
||||
},
|
||||
"NHotkey.Wpf": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==",
|
||||
"dependencies": {
|
||||
"NHotkey": "3.0.0"
|
||||
}
|
||||
},
|
||||
"NLog": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.0.1",
|
||||
"contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
|
||||
},
|
||||
"NLog.OutputDebugString": {
|
||||
"type": "Transitive",
|
||||
"resolved": "6.0.1",
|
||||
"contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
|
||||
"dependencies": {
|
||||
"NLog": "6.0.1"
|
||||
}
|
||||
},
|
||||
"SharpVectors.Wpf": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.8.4.2",
|
||||
"contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
|
||||
},
|
||||
"Splat": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.6.2",
|
||||
"contentHash": "DeH0MxPU+D4JchkIDPYG4vUT+hsWs9S41cFle0/4K5EJMXWurx5DzAkj2366DfK14/XKNhsu6tCl4dZXJ3CD4w=="
|
||||
},
|
||||
"System.Drawing.Common": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.0",
|
||||
"contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==",
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.SystemEvents": "7.0.0"
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA=="
|
||||
},
|
||||
"System.Reflection.Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "5.0.0",
|
||||
"contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ=="
|
||||
},
|
||||
"ToolGood.Words.Pinyin": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.1.0.3",
|
||||
"contentHash": "VKcf8sUq/+LyY99WgLhOu7Q32ROEyR30/2xCCj9ADRi45wVC7kpXrYCf9vH1qirkmrIfpL8inoxAbrqAlfXxsQ=="
|
||||
},
|
||||
"YamlDotNet": {
|
||||
"type": "Transitive",
|
||||
"resolved": "9.1.0",
|
||||
"contentHash": "fuvGXU4Ec5HrsmEc+BiFTNPCRf1cGBI2kh/3RzMWgddM2M4ALhbSPoI3X3mhXZUD1qqQd9oSkFAtWjpz8z9eRg=="
|
||||
},
|
||||
"flow.launcher.infrastructure": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Ben.Demystifier": "[0.4.1, )",
|
||||
"BitFaster.Caching": "[2.5.4, )",
|
||||
"CommunityToolkit.Mvvm": "[8.4.0, )",
|
||||
"Flow.Launcher.Plugin": "[4.7.0, )",
|
||||
"InputSimulator": "[1.0.4, )",
|
||||
"MemoryPack": "[1.21.4, )",
|
||||
"Microsoft.VisualStudio.Threading": "[17.14.15, )",
|
||||
"NHotkey.Wpf": "[3.0.0, )",
|
||||
"NLog": "[6.0.1, )",
|
||||
"NLog.OutputDebugString": "[6.0.1, )",
|
||||
"SharpVectors.Wpf": "[1.8.4.2, )",
|
||||
"System.Drawing.Common": "[7.0.0, )",
|
||||
"ToolGood.Words.Pinyin": "[3.1.0.3, )"
|
||||
}
|
||||
},
|
||||
"flow.launcher.plugin": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"JetBrains.Annotations": "[2024.3.0, )"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1079
Flow.Launcher.Infrastructure/DialogJump/DialogJump.cs
Normal file
1079
Flow.Launcher.Infrastructure/DialogJump/DialogJump.cs
Normal file
File diff suppressed because it is too large
Load diff
63
Flow.Launcher.Infrastructure/DialogJump/DialogJumpPair.cs
Normal file
63
Flow.Launcher.Infrastructure/DialogJump/DialogJumpPair.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
using Flow.Launcher.Plugin;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure.DialogJump;
|
||||
|
||||
public class DialogJumpExplorerPair
|
||||
{
|
||||
public IDialogJumpExplorer Plugin { get; init; }
|
||||
|
||||
public PluginMetadata Metadata { get; init; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Metadata.Name;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is DialogJumpExplorerPair r)
|
||||
{
|
||||
return string.Equals(r.Metadata.ID, Metadata.ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var hashcode = Metadata.ID?.GetHashCode() ?? 0;
|
||||
return hashcode;
|
||||
}
|
||||
}
|
||||
|
||||
public class DialogJumpDialogPair
|
||||
{
|
||||
public IDialogJumpDialog Plugin { get; init; }
|
||||
|
||||
public PluginMetadata Metadata { get; init; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Metadata.Name;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is DialogJumpDialogPair r)
|
||||
{
|
||||
return string.Equals(r.Metadata.ID, Metadata.ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var hashcode = Metadata.ID?.GetHashCode() ?? 0;
|
||||
return hashcode;
|
||||
}
|
||||
}
|
||||
345
Flow.Launcher.Infrastructure/DialogJump/Models/WindowsDialog.cs
Normal file
345
Flow.Launcher.Infrastructure/DialogJump/Models/WindowsDialog.cs
Normal file
|
|
@ -0,0 +1,345 @@
|
|||
using System;
|
||||
using System.Threading;
|
||||
using Flow.Launcher.Infrastructure.Logger;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Windows.Win32;
|
||||
using Windows.Win32.Foundation;
|
||||
using Windows.Win32.UI.WindowsAndMessaging;
|
||||
using WindowsInput;
|
||||
using WindowsInput.Native;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure.DialogJump.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Class for handling Windows File Dialog instances in DialogJump.
|
||||
/// </summary>
|
||||
public class WindowsDialog : IDialogJumpDialog
|
||||
{
|
||||
private const string WindowsDialogClassName = "#32770";
|
||||
|
||||
public IDialogJumpDialogWindow CheckDialogWindow(IntPtr hwnd)
|
||||
{
|
||||
// Is it a Win32 dialog box?
|
||||
if (GetClassName(new(hwnd)) == WindowsDialogClassName)
|
||||
{
|
||||
// Is it a windows file dialog?
|
||||
var dialogType = GetFileDialogType(new(hwnd));
|
||||
if (dialogType != DialogType.Others)
|
||||
{
|
||||
return new WindowsDialogWindow(hwnd, dialogType);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#region Help Methods
|
||||
|
||||
private static unsafe string GetClassName(HWND handle)
|
||||
{
|
||||
fixed (char* buf = new char[256])
|
||||
{
|
||||
return PInvoke.GetClassName(handle, buf, 256) switch
|
||||
{
|
||||
0 => string.Empty,
|
||||
_ => new string(buf),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private static DialogType GetFileDialogType(HWND handle)
|
||||
{
|
||||
// Is it a Windows Open file dialog?
|
||||
var fileEditor = PInvoke.GetDlgItem(handle, 0x047C);
|
||||
if (fileEditor != HWND.Null && GetClassName(fileEditor) == "ComboBoxEx32") return DialogType.Open;
|
||||
|
||||
// Is it a Windows Save or Save As file dialog?
|
||||
fileEditor = PInvoke.GetDlgItem(handle, 0x0000);
|
||||
if (fileEditor != HWND.Null && GetClassName(fileEditor) == "DUIViewWndClassName") return DialogType.SaveOrSaveAs;
|
||||
|
||||
return DialogType.Others;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class WindowsDialogWindow : IDialogJumpDialogWindow
|
||||
{
|
||||
public IntPtr Handle { get; private set; } = IntPtr.Zero;
|
||||
|
||||
// After jumping folder, file editor handle of Save / SaveAs file dialogs cannot be found anymore
|
||||
// So we need to cache the current tab and use the original handle
|
||||
private IDialogJumpDialogWindowTab _currentTab { get; set; } = null;
|
||||
|
||||
private readonly DialogType _dialogType;
|
||||
|
||||
internal WindowsDialogWindow(IntPtr handle, DialogType dialogType)
|
||||
{
|
||||
Handle = handle;
|
||||
_dialogType = dialogType;
|
||||
}
|
||||
|
||||
public IDialogJumpDialogWindowTab GetCurrentTab()
|
||||
{
|
||||
return _currentTab ??= new WindowsDialogTab(Handle, _dialogType);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class WindowsDialogTab : IDialogJumpDialogWindowTab
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public IntPtr Handle { get; private set; } = IntPtr.Zero;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static readonly string ClassName = nameof(WindowsDialogTab);
|
||||
|
||||
private static readonly InputSimulator _inputSimulator = new();
|
||||
|
||||
private readonly DialogType _dialogType;
|
||||
|
||||
private bool _legacy { get; set; } = false;
|
||||
private HWND _pathControl { get; set; } = HWND.Null;
|
||||
private HWND _pathEditor { get; set; } = HWND.Null;
|
||||
private HWND _fileEditor { get; set; } = HWND.Null;
|
||||
private HWND _openButton { get; set; } = HWND.Null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
internal WindowsDialogTab(IntPtr handle, DialogType dialogType)
|
||||
{
|
||||
Handle = handle;
|
||||
_dialogType = dialogType;
|
||||
Log.Debug(ClassName, $"File dialog type: {dialogType}");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Methods
|
||||
|
||||
public string GetCurrentFolder()
|
||||
{
|
||||
if (_pathEditor.IsNull && !GetPathControlEditor()) return string.Empty;
|
||||
return GetWindowText(_pathEditor);
|
||||
}
|
||||
|
||||
public string GetCurrentFile()
|
||||
{
|
||||
if (_fileEditor.IsNull && !GetFileEditor()) return string.Empty;
|
||||
return GetWindowText(_fileEditor);
|
||||
}
|
||||
|
||||
public bool JumpFolder(string path, bool auto)
|
||||
{
|
||||
if (auto)
|
||||
{
|
||||
// Use legacy jump folder method for auto Dialog Jump because file editor is default value.
|
||||
// After setting path using file editor, we do not need to revert its value.
|
||||
return JumpFolderWithFileEditor(path, false);
|
||||
}
|
||||
|
||||
// Alt-D or Ctrl-L to focus on the path input box
|
||||
// "ComboBoxEx32" is not visible when the path editor is not with the keyboard focus
|
||||
_inputSimulator.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LMENU, VirtualKeyCode.VK_D);
|
||||
// _inputSimulator.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LCONTROL, VirtualKeyCode.VK_L);
|
||||
|
||||
if (_pathControl.IsNull && !GetPathControlEditor())
|
||||
{
|
||||
// https://github.com/idkidknow/Flow.Launcher.Plugin.DirQuickJump/issues/1
|
||||
// The dialog is a legacy one, so we can only edit file editor directly.
|
||||
Log.Debug(ClassName, "Legacy dialog, using legacy jump folder method");
|
||||
return JumpFolderWithFileEditor(path, true);
|
||||
}
|
||||
|
||||
var timeOut = !SpinWait.SpinUntil(() =>
|
||||
{
|
||||
var style = PInvoke.GetWindowLongPtr(_pathControl, WINDOW_LONG_PTR_INDEX.GWL_STYLE);
|
||||
return (style & (int)WINDOW_STYLE.WS_VISIBLE) != 0;
|
||||
}, 1000);
|
||||
if (timeOut)
|
||||
{
|
||||
// Path control is not visible, so we can only edit file editor directly.
|
||||
Log.Debug(ClassName, "Path control is not visible, using legacy jump folder method");
|
||||
return JumpFolderWithFileEditor(path, true);
|
||||
}
|
||||
|
||||
if (_pathEditor.IsNull)
|
||||
{
|
||||
// Path editor cannot be found, so we can only edit file editor directly.
|
||||
Log.Debug(ClassName, "Path editor cannot be found, using legacy jump folder method");
|
||||
return JumpFolderWithFileEditor(path, true);
|
||||
}
|
||||
SetWindowText(_pathEditor, path);
|
||||
|
||||
_inputSimulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool JumpFile(string path)
|
||||
{
|
||||
if (_fileEditor.IsNull && !GetFileEditor()) return false;
|
||||
SetWindowText(_fileEditor, path);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Open()
|
||||
{
|
||||
if (_openButton.IsNull && !GetOpenButton()) return false;
|
||||
PInvoke.PostMessage(_openButton, PInvoke.BM_CLICK, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Helper Methods
|
||||
|
||||
#region Get Handles
|
||||
|
||||
private bool GetPathControlEditor()
|
||||
{
|
||||
// Get the handle of the path editor
|
||||
// Must use PInvoke.FindWindowEx because PInvoke.GetDlgItem(Handle, 0x0000) will get another control
|
||||
_pathControl = PInvoke.FindWindowEx(new(Handle), HWND.Null, "WorkerW", null); // 0x0000
|
||||
_pathControl = PInvoke.FindWindowEx(_pathControl, HWND.Null, "ReBarWindow32", null); // 0xA005
|
||||
_pathControl = PInvoke.FindWindowEx(_pathControl, HWND.Null, "Address Band Root", null); // 0xA205
|
||||
_pathControl = PInvoke.FindWindowEx(_pathControl, HWND.Null, "msctls_progress32", null); // 0x0000
|
||||
_pathControl = PInvoke.FindWindowEx(_pathControl, HWND.Null, "ComboBoxEx32", null); // 0xA205
|
||||
if (_pathControl == HWND.Null)
|
||||
{
|
||||
_pathEditor = HWND.Null;
|
||||
_legacy = true;
|
||||
Log.Info(ClassName, "Legacy dialog");
|
||||
}
|
||||
else
|
||||
{
|
||||
_pathEditor = PInvoke.GetDlgItem(_pathControl, 0xA205); // ComboBox
|
||||
_pathEditor = PInvoke.GetDlgItem(_pathEditor, 0xA205); // Edit
|
||||
if (_pathEditor == HWND.Null)
|
||||
{
|
||||
_legacy = true;
|
||||
Log.Error(ClassName, "Failed to find path editor handle");
|
||||
}
|
||||
}
|
||||
|
||||
return !_legacy;
|
||||
}
|
||||
|
||||
private bool GetFileEditor()
|
||||
{
|
||||
if (_dialogType == DialogType.Open)
|
||||
{
|
||||
// Get the handle of the file name editor of Open file dialog
|
||||
_fileEditor = PInvoke.GetDlgItem(new(Handle), 0x047C); // ComboBoxEx32
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x047C); // ComboBox
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x047C); // Edit
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get the handle of the file name editor of Save / SaveAs file dialog
|
||||
_fileEditor = PInvoke.GetDlgItem(new(Handle), 0x0000); // DUIViewWndClassName
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x0000); // DirectUIHWND
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x0000); // FloatNotifySink
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x0000); // ComboBox
|
||||
_fileEditor = PInvoke.GetDlgItem(_fileEditor, 0x03E9); // Edit
|
||||
}
|
||||
|
||||
if (_fileEditor == HWND.Null)
|
||||
{
|
||||
Log.Error(ClassName, "Failed to find file name editor handle");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool GetOpenButton()
|
||||
{
|
||||
// Get the handle of the open button
|
||||
_openButton = PInvoke.GetDlgItem(new(Handle), 0x0001); // Open/Save/SaveAs Button
|
||||
if (_openButton == HWND.Null)
|
||||
{
|
||||
Log.Error(ClassName, "Failed to find open button handle");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Windows Text
|
||||
|
||||
private static unsafe string GetWindowText(HWND handle)
|
||||
{
|
||||
int length;
|
||||
Span<char> buffer = stackalloc char[1000];
|
||||
fixed (char* pBuffer = buffer)
|
||||
{
|
||||
// If the control has no title bar or text, or if the control handle is invalid, the return value is zero.
|
||||
length = (int)PInvoke.SendMessage(handle, PInvoke.WM_GETTEXT, 1000, (nint)pBuffer);
|
||||
}
|
||||
|
||||
return buffer[..length].ToString();
|
||||
}
|
||||
|
||||
private static unsafe nint SetWindowText(HWND handle, string text)
|
||||
{
|
||||
fixed (char* textPtr = text + '\0')
|
||||
{
|
||||
return PInvoke.SendMessage(handle, PInvoke.WM_SETTEXT, 0, (nint)textPtr).Value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Legacy Jump Folder
|
||||
|
||||
private bool JumpFolderWithFileEditor(string path, bool resetFocus)
|
||||
{
|
||||
// For Save / Save As dialog, the default value in file editor is not null and it can cause strange behaviors.
|
||||
if (resetFocus && _dialogType == DialogType.SaveOrSaveAs) return false;
|
||||
|
||||
if (_fileEditor.IsNull && !GetFileEditor()) return false;
|
||||
SetWindowText(_fileEditor, path);
|
||||
|
||||
if (_openButton.IsNull && !GetOpenButton()) return false;
|
||||
PInvoke.SendMessage(_openButton, PInvoke.BM_CLICK, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
internal enum DialogType
|
||||
{
|
||||
Others,
|
||||
Open,
|
||||
SaveOrSaveAs
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,260 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Windows.Win32;
|
||||
using Windows.Win32.Foundation;
|
||||
using Windows.Win32.System.Com;
|
||||
using Windows.Win32.UI.Shell;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure.DialogJump.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Class for handling Windows Explorer instances in DialogJump.
|
||||
/// </summary>
|
||||
public class WindowsExplorer : IDialogJumpExplorer
|
||||
{
|
||||
public IDialogJumpExplorerWindow CheckExplorerWindow(IntPtr hwnd)
|
||||
{
|
||||
IDialogJumpExplorerWindow explorerWindow = null;
|
||||
|
||||
// Is it from Explorer?
|
||||
var processName = Win32Helper.GetProcessNameFromHwnd(new(hwnd));
|
||||
if (processName.Equals("explorer.exe", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
EnumerateShellWindows((shellWindow) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (shellWindow is not IWebBrowser2 explorer) return true;
|
||||
|
||||
if (explorer.HWND != hwnd) return true;
|
||||
|
||||
explorerWindow = new WindowsExplorerWindow(hwnd);
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignored
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
return explorerWindow;
|
||||
}
|
||||
|
||||
internal static unsafe void EnumerateShellWindows(Func<object, bool> action)
|
||||
{
|
||||
// Create an instance of ShellWindows
|
||||
var clsidShellWindows = new Guid("9BA05972-F6A8-11CF-A442-00A0C90A8F39"); // ShellWindowsClass
|
||||
var iidIShellWindows = typeof(IShellWindows).GUID; // IShellWindows
|
||||
|
||||
var result = PInvoke.CoCreateInstance(
|
||||
&clsidShellWindows,
|
||||
null,
|
||||
CLSCTX.CLSCTX_ALL,
|
||||
&iidIShellWindows,
|
||||
out var shellWindowsObj);
|
||||
|
||||
if (result.Failed) return;
|
||||
|
||||
var shellWindows = (IShellWindows)shellWindowsObj;
|
||||
|
||||
// Enumerate the shell windows
|
||||
var count = shellWindows.Count;
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
if (!action(shellWindows.Item(i)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class WindowsExplorerWindow : IDialogJumpExplorerWindow
|
||||
{
|
||||
public IntPtr Handle { get; }
|
||||
|
||||
private static Guid _shellBrowserGuid = typeof(IShellBrowser).GUID;
|
||||
|
||||
internal WindowsExplorerWindow(IntPtr handle)
|
||||
{
|
||||
Handle = handle;
|
||||
}
|
||||
|
||||
public string GetExplorerPath()
|
||||
{
|
||||
if (Handle == IntPtr.Zero) return null;
|
||||
|
||||
var activeTabHandle = GetActiveTabHandle(new(Handle));
|
||||
if (activeTabHandle.IsNull) return null;
|
||||
|
||||
var window = GetExplorerByTabHandle(activeTabHandle);
|
||||
if (window == null) return null;
|
||||
|
||||
var path = GetLocation(window);
|
||||
return path;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#region Helper Methods
|
||||
|
||||
// Inspired by: https://github.com/w4po/ExplorerTabUtility
|
||||
|
||||
private static HWND GetActiveTabHandle(HWND windowHandle)
|
||||
{
|
||||
// Active tab always at the top of the z-index, so it is the first child of the ShellTabWindowClass.
|
||||
var activeTab = PInvoke.FindWindowEx(windowHandle, HWND.Null, "ShellTabWindowClass", null);
|
||||
return activeTab;
|
||||
}
|
||||
|
||||
private static IWebBrowser2 GetExplorerByTabHandle(HWND tabHandle)
|
||||
{
|
||||
if (tabHandle.IsNull) return null;
|
||||
|
||||
IWebBrowser2 window = null;
|
||||
WindowsExplorer.EnumerateShellWindows((shellWindow) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return StartSTAThread(() =>
|
||||
{
|
||||
if (shellWindow is not IWebBrowser2 explorer) return true;
|
||||
|
||||
if (explorer is not IServiceProvider sp) return true;
|
||||
|
||||
sp.QueryService(ref _shellBrowserGuid, ref _shellBrowserGuid, out var shellBrowser);
|
||||
if (shellBrowser == null) return true;
|
||||
|
||||
try
|
||||
{
|
||||
shellBrowser.GetWindow(out var hWnd); // Must execute in STA thread to get this hWnd
|
||||
|
||||
if (hWnd == tabHandle)
|
||||
{
|
||||
window = explorer;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignored
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.ReleaseComObject(shellBrowser);
|
||||
}
|
||||
|
||||
return true;
|
||||
}) ?? true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignored
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
private static bool? StartSTAThread(Func<bool> action)
|
||||
{
|
||||
bool? result = null;
|
||||
var thread = new Thread(() =>
|
||||
{
|
||||
result = action();
|
||||
})
|
||||
{
|
||||
IsBackground = true
|
||||
};
|
||||
thread.SetApartmentState(ApartmentState.STA);
|
||||
thread.Start();
|
||||
thread.Join();
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetLocation(IWebBrowser2 window)
|
||||
{
|
||||
var path = window.LocationURL.ToString();
|
||||
if (!string.IsNullOrWhiteSpace(path)) return NormalizeLocation(path);
|
||||
|
||||
// Recycle Bin, This PC, etc
|
||||
if (window.Document is not IShellFolderViewDual folderView) return null;
|
||||
|
||||
// Attempt to get the path from the folder view
|
||||
try
|
||||
{
|
||||
// CSWin32 Folder does not have Self, so we need to use dynamic type here
|
||||
// Use dynamic to bypass static typing
|
||||
dynamic folder = folderView.Folder;
|
||||
|
||||
// Access the Self property via dynamic binding
|
||||
dynamic folderItem = folder.Self;
|
||||
|
||||
// Get path from the folder item
|
||||
path = folderItem.Path;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return NormalizeLocation(path);
|
||||
}
|
||||
|
||||
private static string NormalizeLocation(string location)
|
||||
{
|
||||
if (location.IndexOf('%') > -1)
|
||||
location = Environment.ExpandEnvironmentVariables(location);
|
||||
|
||||
if (location.StartsWith("::", StringComparison.Ordinal))
|
||||
location = $"shell:{location}";
|
||||
|
||||
else if (location.StartsWith("{", StringComparison.Ordinal))
|
||||
location = $"shell:::{location}";
|
||||
|
||||
location = location.Trim(' ', '/', '\\', '\n', '\'', '"');
|
||||
|
||||
return location.Replace('/', '\\');
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#region COM Interfaces
|
||||
|
||||
// Inspired by: https://github.com/w4po/ExplorerTabUtility
|
||||
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("6d5140c1-7436-11ce-8034-00aa006009fa")]
|
||||
[ComImport]
|
||||
public interface IServiceProvider
|
||||
{
|
||||
[PreserveSig]
|
||||
int QueryService(ref Guid guidService, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out IShellBrowser ppvObject);
|
||||
}
|
||||
|
||||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
[Guid("000214E2-0000-0000-C000-000000000046")]
|
||||
[ComImport]
|
||||
public interface IShellBrowser
|
||||
{
|
||||
[PreserveSig]
|
||||
int GetWindow(out nint handle);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<TargetFramework>net9.0-windows</TargetFramework>
|
||||
<ProjectGuid>{4FD29318-A8AB-4D8F-AA47-60BC241B8DA3}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<UseWpf>true</UseWpf>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
|
|
@ -53,28 +54,30 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Ben.Demystifier" Version="0.4.1" />
|
||||
<PackageReference Include="BitFaster.Caching" Version="2.5.3" />
|
||||
<PackageReference Include="BitFaster.Caching" Version="2.5.4" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||
<PackageReference Include="Fody" Version="6.5.5">
|
||||
<PackageReference Include="Fody" Version="6.9.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
||||
<PackageReference Include="MemoryPack" Version="1.21.4" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.12.19" />
|
||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.106">
|
||||
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.14.15" />
|
||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.183">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NLog" Version="4.7.10" />
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="3.4.0">
|
||||
<PackageReference Include="NHotkey.Wpf" Version="3.0.0" />
|
||||
<PackageReference Include="NLog" Version="6.0.1" />
|
||||
<PackageReference Include="NLog.OutputDebugString" Version="6.0.1" />
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SharpVectors.Wpf" Version="1.8.4.2" />
|
||||
<!-- Do not upgrade this to higher version since it can cause this issue on WinForm platform: -->
|
||||
<!-- PlatformNotSupportedException: SystemEvents is not supported on this platform. -->
|
||||
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
||||
<!--ToolGood.Words.Pinyin v3.0.2.6 results in high memory usage when search with pinyin is enabled-->
|
||||
<!--Bumping to it or higher needs to test and ensure this is no longer a problem-->
|
||||
<PackageReference Include="ToolGood.Words.Pinyin" Version="3.0.1.4" />
|
||||
<PackageReference Include="ToolGood.Words.Pinyin" Version="3.1.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
||||
|
|
@ -20,6 +20,10 @@ namespace Flow.Launcher.Infrastructure.Http
|
|||
|
||||
private static readonly HttpClient client = new();
|
||||
|
||||
// We should not initialize API in static constructor because it will create another API instance
|
||||
private static IPublicAPI api = null;
|
||||
private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService<IPublicAPI>();
|
||||
|
||||
static Http()
|
||||
{
|
||||
// need to be added so it would work on a win10 machine
|
||||
|
|
@ -78,7 +82,7 @@ namespace Flow.Launcher.Infrastructure.Http
|
|||
}
|
||||
catch (UriFormatException e)
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IPublicAPI>().ShowMsg("Please try again", "Unable to parse Http Proxy");
|
||||
API.ShowMsgError(API.GetTranslation("pleaseTryAgain"), API.GetTranslation("parseProxyFailed"));
|
||||
Log.Exception(ClassName, "Unable to parse Uri", e);
|
||||
}
|
||||
}
|
||||
|
|
@ -220,5 +224,18 @@ namespace Flow.Launcher.Infrastructure.Http
|
|||
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task<string> GetStringAsync(string url, CancellationToken token = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.Debug(ClassName, $"Url <{url}>");
|
||||
return await client.GetStringAsync(url, token);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
22
Flow.Launcher.Infrastructure/IAlphabet.cs
Normal file
22
Flow.Launcher.Infrastructure/IAlphabet.cs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
namespace Flow.Launcher.Infrastructure
|
||||
{
|
||||
/// <summary>
|
||||
/// Translate a language to English letters using a given rule.
|
||||
/// </summary>
|
||||
public interface IAlphabet
|
||||
{
|
||||
/// <summary>
|
||||
/// Translate a string to English letters, using a given rule.
|
||||
/// </summary>
|
||||
/// <param name="stringToTranslate">String to translate.</param>
|
||||
/// <returns></returns>
|
||||
public (string translation, TranslationMapping map) Translate(string stringToTranslate);
|
||||
|
||||
/// <summary>
|
||||
/// Determine if a string should be translated to English letter with this Alphabet.
|
||||
/// </summary>
|
||||
/// <param name="stringToTranslate">String to translate.</param>
|
||||
/// <returns></returns>
|
||||
public bool ShouldTranslate(string stringToTranslate);
|
||||
}
|
||||
}
|
||||
|
|
@ -19,14 +19,14 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
private static readonly string ClassName = nameof(ImageLoader);
|
||||
|
||||
private static readonly ImageCache ImageCache = new();
|
||||
private static SemaphoreSlim storageLock { get; } = new SemaphoreSlim(1, 1);
|
||||
private static Lock storageLock { get; } = new();
|
||||
private static BinaryStorage<List<(string, bool)>> _storage;
|
||||
private static readonly ConcurrentDictionary<string, string> GuidToKey = new();
|
||||
private static IImageHashGenerator _hashGenerator;
|
||||
private static readonly bool EnableImageHash = true;
|
||||
public static ImageSource Image { get; } = new BitmapImage(new Uri(Constant.ImageIcon));
|
||||
public static ImageSource MissingImage { get; } = new BitmapImage(new Uri(Constant.MissingImgIcon));
|
||||
public static ImageSource LoadingImage { get; } = new BitmapImage(new Uri(Constant.LoadingImgIcon));
|
||||
public static ImageSource Image => ImageCache[Constant.ImageIcon, false];
|
||||
public static ImageSource MissingImage => ImageCache[Constant.MissingImgIcon, false];
|
||||
public static ImageSource LoadingImage => ImageCache[Constant.LoadingImgIcon, false];
|
||||
public const int SmallIconSize = 64;
|
||||
public const int FullIconSize = 256;
|
||||
public const int FullImageSize = 320;
|
||||
|
|
@ -36,20 +36,25 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
|
||||
public static async Task InitializeAsync()
|
||||
{
|
||||
_storage = new BinaryStorage<List<(string, bool)>>("Image");
|
||||
_hashGenerator = new ImageHashGenerator();
|
||||
|
||||
var usage = await LoadStorageToConcurrentDictionaryAsync();
|
||||
_storage.ClearData();
|
||||
|
||||
ImageCache.Initialize(usage);
|
||||
|
||||
foreach (var icon in new[] { Constant.DefaultIcon, Constant.MissingImgIcon })
|
||||
var usage = await Task.Run(() =>
|
||||
{
|
||||
ImageSource img = new BitmapImage(new Uri(icon));
|
||||
img.Freeze();
|
||||
ImageCache[icon, false] = img;
|
||||
}
|
||||
_storage = new BinaryStorage<List<(string, bool)>>("Image");
|
||||
_hashGenerator = new ImageHashGenerator();
|
||||
|
||||
var usage = LoadStorageToConcurrentDictionary();
|
||||
_storage.ClearData();
|
||||
|
||||
ImageCache.Initialize(usage);
|
||||
|
||||
foreach (var icon in new[] { Constant.DefaultIcon, Constant.ImageIcon, Constant.MissingImgIcon, Constant.LoadingImgIcon })
|
||||
{
|
||||
ImageSource img = new BitmapImage(new Uri(icon));
|
||||
img.Freeze();
|
||||
ImageCache[icon, false] = img;
|
||||
}
|
||||
|
||||
return usage;
|
||||
});
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
|
|
@ -64,42 +69,26 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
});
|
||||
}
|
||||
|
||||
public static async Task SaveAsync()
|
||||
public static void Save()
|
||||
{
|
||||
await storageLock.WaitAsync();
|
||||
|
||||
try
|
||||
lock (storageLock)
|
||||
{
|
||||
await _storage.SaveAsync(ImageCache.EnumerateEntries()
|
||||
.Select(x => x.Key)
|
||||
.ToList());
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Log.Exception(ClassName, "Failed to save image cache to file", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
storageLock.Release();
|
||||
try
|
||||
{
|
||||
_storage.Save([.. ImageCache.EnumerateEntries().Select(x => x.Key)]);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Log.Exception(ClassName, "Failed to save image cache to file", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task WaitSaveAsync()
|
||||
private static List<(string, bool)> LoadStorageToConcurrentDictionary()
|
||||
{
|
||||
await storageLock.WaitAsync();
|
||||
storageLock.Release();
|
||||
}
|
||||
|
||||
private static async Task<List<(string, bool)>> LoadStorageToConcurrentDictionaryAsync()
|
||||
{
|
||||
await storageLock.WaitAsync();
|
||||
try
|
||||
lock (storageLock)
|
||||
{
|
||||
return await _storage.TryLoadAsync(new List<(string, bool)>());
|
||||
}
|
||||
finally
|
||||
{
|
||||
storageLock.Release();
|
||||
return _storage.TryLoad([]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -174,7 +163,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
Log.Exception(ClassName, $"Failed to get thumbnail for {path} on first try", e);
|
||||
Log.Exception(ClassName, $"Failed to get thumbnail for {path} on second try", e2);
|
||||
|
||||
ImageSource image = ImageCache[Constant.MissingImgIcon, false];
|
||||
ImageSource image = MissingImage;
|
||||
ImageCache[path, false] = image;
|
||||
imageResult = new ImageResult(image, ImageType.Error);
|
||||
}
|
||||
|
|
@ -273,7 +262,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
}
|
||||
else
|
||||
{
|
||||
image = ImageCache[Constant.MissingImgIcon, false];
|
||||
image = MissingImage;
|
||||
path = Constant.MissingImgIcon;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,12 +34,6 @@ WINDOW_STYLE
|
|||
SetLastError
|
||||
WINDOW_EX_STYLE
|
||||
|
||||
GetSystemMetrics
|
||||
EnumDisplayMonitors
|
||||
MonitorFromWindow
|
||||
GetMonitorInfo
|
||||
MONITORINFOEXW
|
||||
|
||||
WM_ENTERSIZEMOVE
|
||||
WM_EXITSIZEMOVE
|
||||
WM_NCLBUTTONDBLCLK
|
||||
|
|
@ -66,3 +60,30 @@ LOCALE_TRANSIENT_KEYBOARD4
|
|||
SHParseDisplayName
|
||||
SHOpenFolderAndSelectItems
|
||||
CoTaskMemFree
|
||||
|
||||
SetWinEventHook
|
||||
UnhookWinEvent
|
||||
SendMessage
|
||||
EVENT_SYSTEM_FOREGROUND
|
||||
WINEVENT_OUTOFCONTEXT
|
||||
WM_SETTEXT
|
||||
IShellFolderViewDual2
|
||||
CoCreateInstance
|
||||
CLSCTX
|
||||
IShellWindows
|
||||
IWebBrowser2
|
||||
EVENT_OBJECT_DESTROY
|
||||
EVENT_OBJECT_LOCATIONCHANGE
|
||||
EVENT_SYSTEM_MOVESIZESTART
|
||||
EVENT_SYSTEM_MOVESIZEEND
|
||||
GetDlgItem
|
||||
PostMessage
|
||||
BM_CLICK
|
||||
WM_GETTEXT
|
||||
OpenProcess
|
||||
QueryFullProcessImageName
|
||||
EVENT_OBJECT_HIDE
|
||||
EVENT_SYSTEM_DIALOGEND
|
||||
|
||||
WM_POWERBROADCAST
|
||||
PBT_APMRESUMEAUTOMATIC
|
||||
|
|
@ -1,209 +1,193 @@
|
|||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using JetBrains.Annotations;
|
||||
using System.Text.Json;
|
||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using ToolGood.Words.Pinyin;
|
||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Flow.Launcher.Infrastructure.Logger;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure
|
||||
{
|
||||
public class TranslationMapping
|
||||
{
|
||||
private bool constructed;
|
||||
|
||||
private List<int> originalIndexs = new List<int>();
|
||||
private List<int> translatedIndexs = new List<int>();
|
||||
private int translatedLength = 0;
|
||||
|
||||
public string key { get; private set; }
|
||||
|
||||
public void setKey(string key)
|
||||
{
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public void AddNewIndex(int originalIndex, int translatedIndex, int length)
|
||||
{
|
||||
if (constructed)
|
||||
throw new InvalidOperationException("Mapping shouldn't be changed after constructed");
|
||||
|
||||
originalIndexs.Add(originalIndex);
|
||||
translatedIndexs.Add(translatedIndex);
|
||||
translatedIndexs.Add(translatedIndex + length);
|
||||
translatedLength += length - 1;
|
||||
}
|
||||
|
||||
public int MapToOriginalIndex(int translatedIndex)
|
||||
{
|
||||
if (translatedIndex > translatedIndexs.Last())
|
||||
return translatedIndex - translatedLength - 1;
|
||||
|
||||
int lowerBound = 0;
|
||||
int upperBound = originalIndexs.Count - 1;
|
||||
|
||||
int count = 0;
|
||||
|
||||
// Corner case handle
|
||||
if (translatedIndex < translatedIndexs[0])
|
||||
return translatedIndex;
|
||||
if (translatedIndex > translatedIndexs.Last())
|
||||
{
|
||||
int indexDef = 0;
|
||||
for (int k = 0; k < originalIndexs.Count; k++)
|
||||
{
|
||||
indexDef += translatedIndexs[k * 2 + 1] - translatedIndexs[k * 2];
|
||||
}
|
||||
|
||||
return translatedIndex - indexDef - 1;
|
||||
}
|
||||
|
||||
// Binary Search with Range
|
||||
for (int i = originalIndexs.Count / 2;; count++)
|
||||
{
|
||||
if (translatedIndex < translatedIndexs[i * 2])
|
||||
{
|
||||
// move to lower middle
|
||||
upperBound = i;
|
||||
i = (i + lowerBound) / 2;
|
||||
}
|
||||
else if (translatedIndex > translatedIndexs[i * 2 + 1] - 1)
|
||||
{
|
||||
lowerBound = i;
|
||||
// move to upper middle
|
||||
// due to floor of integer division, move one up on corner case
|
||||
i = (i + upperBound + 1) / 2;
|
||||
}
|
||||
else
|
||||
return originalIndexs[i];
|
||||
|
||||
if (upperBound - lowerBound <= 1 &&
|
||||
translatedIndex > translatedIndexs[lowerBound * 2 + 1] &&
|
||||
translatedIndex < translatedIndexs[upperBound * 2])
|
||||
{
|
||||
int indexDef = 0;
|
||||
|
||||
for (int j = 0; j < upperBound; j++)
|
||||
{
|
||||
indexDef += translatedIndexs[j * 2 + 1] - translatedIndexs[j * 2];
|
||||
}
|
||||
|
||||
return translatedIndex - indexDef - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void endConstruct()
|
||||
{
|
||||
if (constructed)
|
||||
throw new InvalidOperationException("Mapping has already been constructed");
|
||||
constructed = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Translate a language to English letters using a given rule.
|
||||
/// </summary>
|
||||
public interface IAlphabet
|
||||
{
|
||||
/// <summary>
|
||||
/// Translate a string to English letters, using a given rule.
|
||||
/// </summary>
|
||||
/// <param name="stringToTranslate">String to translate.</param>
|
||||
/// <returns></returns>
|
||||
public (string translation, TranslationMapping map) Translate(string stringToTranslate);
|
||||
|
||||
/// <summary>
|
||||
/// Determine if a string can be translated to English letter with this Alphabet.
|
||||
/// </summary>
|
||||
/// <param name="stringToTranslate">String to translate.</param>
|
||||
/// <returns></returns>
|
||||
public bool CanBeTranslated(string stringToTranslate);
|
||||
}
|
||||
|
||||
public class PinyinAlphabet : IAlphabet
|
||||
{
|
||||
private ConcurrentDictionary<string, (string translation, TranslationMapping map)> _pinyinCache =
|
||||
new ConcurrentDictionary<string, (string translation, TranslationMapping map)>();
|
||||
|
||||
private Settings _settings;
|
||||
private readonly ConcurrentDictionary<string, (string translation, TranslationMapping map)> _pinyinCache = new();
|
||||
private readonly Settings _settings;
|
||||
private ReadOnlyDictionary<string, string> currentDoublePinyinTable;
|
||||
|
||||
public PinyinAlphabet()
|
||||
{
|
||||
Initialize(Ioc.Default.GetRequiredService<Settings>());
|
||||
_settings = Ioc.Default.GetRequiredService<Settings>();
|
||||
LoadDoublePinyinTable();
|
||||
|
||||
_settings.PropertyChanged += (sender, e) =>
|
||||
{
|
||||
switch (e.PropertyName)
|
||||
{
|
||||
case nameof (Settings.ShouldUsePinyin):
|
||||
if (_settings.ShouldUsePinyin)
|
||||
{
|
||||
Reload();
|
||||
}
|
||||
break;
|
||||
case nameof(Settings.UseDoublePinyin):
|
||||
case nameof(Settings.DoublePinyinSchema):
|
||||
if (_settings.UseDoublePinyin)
|
||||
{
|
||||
Reload();
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void Initialize([NotNull] Settings settings)
|
||||
public void Reload()
|
||||
{
|
||||
_settings = settings ?? throw new ArgumentNullException(nameof(settings));
|
||||
LoadDoublePinyinTable();
|
||||
_pinyinCache.Clear();
|
||||
}
|
||||
|
||||
public bool CanBeTranslated(string stringToTranslate)
|
||||
private void CreateDoublePinyinTableFromStream(Stream jsonStream)
|
||||
{
|
||||
return WordsHelper.HasChinese(stringToTranslate);
|
||||
var table = JsonSerializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(jsonStream) ??
|
||||
throw new InvalidOperationException("Failed to deserialize double pinyin table: result is null");
|
||||
|
||||
var schemaKey = _settings.DoublePinyinSchema.ToString();
|
||||
if (!table.TryGetValue(schemaKey, out var schemaDict))
|
||||
{
|
||||
throw new ArgumentException($"DoublePinyinSchema '{schemaKey}' is invalid or double pinyin table is broken.");
|
||||
}
|
||||
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(schemaDict);
|
||||
}
|
||||
|
||||
private void LoadDoublePinyinTable()
|
||||
{
|
||||
if (!_settings.UseDoublePinyin)
|
||||
{
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||
return;
|
||||
}
|
||||
|
||||
var tablePath = Path.Combine(AppContext.BaseDirectory, "Resources", "double_pinyin.json");
|
||||
try
|
||||
{
|
||||
using var fs = File.OpenRead(tablePath);
|
||||
CreateDoublePinyinTableFromStream(fs);
|
||||
}
|
||||
catch (FileNotFoundException e)
|
||||
{
|
||||
Log.Exception(nameof(PinyinAlphabet), $"Double pinyin table file not found: {tablePath}", e);
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||
}
|
||||
catch (DirectoryNotFoundException e)
|
||||
{
|
||||
Log.Exception(nameof(PinyinAlphabet), $"Directory not found for double pinyin table: {tablePath}", e);
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||
}
|
||||
catch (UnauthorizedAccessException e)
|
||||
{
|
||||
Log.Exception(nameof(PinyinAlphabet), $"Access denied to double pinyin table: {tablePath}", e);
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Log.Exception(nameof(PinyinAlphabet), $"Failed to load double pinyin table from file: {tablePath}", e);
|
||||
currentDoublePinyinTable = new ReadOnlyDictionary<string, string>(new Dictionary<string, string>());
|
||||
}
|
||||
}
|
||||
|
||||
public bool ShouldTranslate(string stringToTranslate)
|
||||
{
|
||||
// If the query (stringToTranslate) does NOT contain Chinese characters,
|
||||
// we should translate the target string to pinyin for matching
|
||||
return _settings.ShouldUsePinyin && !ContainsChinese(stringToTranslate);
|
||||
}
|
||||
|
||||
public (string translation, TranslationMapping map) Translate(string content)
|
||||
{
|
||||
if (_settings.ShouldUsePinyin)
|
||||
{
|
||||
if (!_pinyinCache.ContainsKey(content))
|
||||
{
|
||||
return BuildCacheFromContent(content);
|
||||
}
|
||||
else
|
||||
{
|
||||
return _pinyinCache[content];
|
||||
}
|
||||
}
|
||||
return (content, null);
|
||||
if (!_settings.ShouldUsePinyin || !ContainsChinese(content))
|
||||
return (content, null);
|
||||
|
||||
return _pinyinCache.TryGetValue(content, out var cached) ? cached : BuildCacheFromContent(content);
|
||||
}
|
||||
|
||||
private (string translation, TranslationMapping map) BuildCacheFromContent(string content)
|
||||
{
|
||||
if (WordsHelper.HasChinese(content))
|
||||
var resultList = WordsHelper.GetPinyinList(content);
|
||||
var resultBuilder = new StringBuilder(_settings.UseDoublePinyin ? 3 : 4); // Pre-allocate with estimated capacity
|
||||
var map = new TranslationMapping();
|
||||
|
||||
var previousIsChinese = false;
|
||||
|
||||
for (var i = 0; i < resultList.Length; i++)
|
||||
{
|
||||
var resultList = WordsHelper.GetPinyinList(content);
|
||||
|
||||
StringBuilder resultBuilder = new StringBuilder();
|
||||
TranslationMapping map = new TranslationMapping();
|
||||
|
||||
bool pre = false;
|
||||
|
||||
for (int i = 0; i < resultList.Length; i++)
|
||||
if (IsChineseCharacter(content[i]))
|
||||
{
|
||||
if (content[i] >= 0x3400 && content[i] <= 0x9FD5)
|
||||
var translated = _settings.UseDoublePinyin ? ToDoublePinyin(resultList[i]) : resultList[i];
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
map.AddNewIndex(i, resultBuilder.Length, resultList[i].Length + 1);
|
||||
resultBuilder.Append(' ');
|
||||
resultBuilder.Append(resultList[i]);
|
||||
pre = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pre)
|
||||
{
|
||||
pre = false;
|
||||
resultBuilder.Append(' ');
|
||||
}
|
||||
|
||||
resultBuilder.Append(resultList[i]);
|
||||
}
|
||||
|
||||
map.AddNewIndex(resultBuilder.Length, translated.Length);
|
||||
resultBuilder.Append(translated);
|
||||
previousIsChinese = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add space after Chinese characters before non-Chinese characters
|
||||
if (previousIsChinese)
|
||||
{
|
||||
previousIsChinese = false;
|
||||
resultBuilder.Append(' ');
|
||||
}
|
||||
|
||||
map.AddNewIndex(resultBuilder.Length, resultList[i].Length);
|
||||
resultBuilder.Append(resultList[i]);
|
||||
}
|
||||
|
||||
map.endConstruct();
|
||||
|
||||
var key = resultBuilder.ToString();
|
||||
map.setKey(key);
|
||||
|
||||
return _pinyinCache[content] = (key, map);
|
||||
}
|
||||
else
|
||||
|
||||
map.EndConstruct();
|
||||
|
||||
var translation = resultBuilder.ToString();
|
||||
var result = (translation, map);
|
||||
|
||||
return _pinyinCache[content] = result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Optimized Chinese character detection using the comprehensive CJK Unicode ranges
|
||||
/// </summary>
|
||||
private static bool ContainsChinese(ReadOnlySpan<char> text)
|
||||
{
|
||||
foreach (var c in text)
|
||||
{
|
||||
return (content, null);
|
||||
if (IsChineseCharacter(c))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if a character is a Chinese character using comprehensive Unicode ranges
|
||||
/// Covers CJK Unified Ideographs, Extension A
|
||||
/// </summary>
|
||||
private static bool IsChineseCharacter(char c)
|
||||
{
|
||||
return (c >= 0x4E00 && c <= 0x9FFF) || // CJK Unified Ideographs
|
||||
(c >= 0x3400 && c <= 0x4DBF); // CJK Extension A
|
||||
}
|
||||
|
||||
private string ToDoublePinyin(string fullPinyin)
|
||||
{
|
||||
return currentDoublePinyinTable.TryGetValue(fullPinyin, out var doublePinyinValue)
|
||||
? doublePinyinValue
|
||||
: fullPinyin;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ using MemoryPack;
|
|||
namespace Flow.Launcher.Infrastructure.Storage
|
||||
{
|
||||
/// <summary>
|
||||
/// Stroage object using binary data
|
||||
/// Storage object using binary data
|
||||
/// Normally, it has better performance, but not readable
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
|
|
@ -53,6 +53,45 @@ namespace Flow.Launcher.Infrastructure.Storage
|
|||
FilePath = Path.Combine(DirectoryPath, $"{filename}{FileSuffix}");
|
||||
}
|
||||
|
||||
public T TryLoad(T defaultData)
|
||||
{
|
||||
if (Data != null) return Data;
|
||||
|
||||
if (File.Exists(FilePath))
|
||||
{
|
||||
if (new FileInfo(FilePath).Length == 0)
|
||||
{
|
||||
Log.Error(ClassName, $"Zero length cache file <{FilePath}>");
|
||||
Data = defaultData;
|
||||
Save();
|
||||
}
|
||||
|
||||
var bytes = File.ReadAllBytes(FilePath);
|
||||
Data = Deserialize(bytes, defaultData);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Info(ClassName, "Cache file not exist, load default data");
|
||||
Data = defaultData;
|
||||
Save();
|
||||
}
|
||||
return Data;
|
||||
}
|
||||
|
||||
private T Deserialize(ReadOnlySpan<byte> bytes, T defaultData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var t = MemoryPackSerializer.Deserialize<T>(bytes);
|
||||
return t ?? defaultData;
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
Log.Exception(ClassName, $"Deserialize error for file <{FilePath}>", e);
|
||||
return defaultData;
|
||||
}
|
||||
}
|
||||
|
||||
public async ValueTask<T> TryLoadAsync(T defaultData)
|
||||
{
|
||||
if (Data != null) return Data;
|
||||
|
|
@ -79,26 +118,31 @@ namespace Flow.Launcher.Infrastructure.Storage
|
|||
return Data;
|
||||
}
|
||||
|
||||
private static async ValueTask<T> DeserializeAsync(Stream stream, T defaultData)
|
||||
private async ValueTask<T> DeserializeAsync(Stream stream, T defaultData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var t = await MemoryPackSerializer.DeserializeAsync<T>(stream);
|
||||
return t ?? defaultData;
|
||||
}
|
||||
catch (System.Exception)
|
||||
catch (System.Exception e)
|
||||
{
|
||||
// Log.Exception($"|BinaryStorage.Deserialize|Deserialize error for file <{FilePath}>", e);
|
||||
Log.Exception(ClassName, $"Deserialize error for file <{FilePath}>", e);
|
||||
return defaultData;
|
||||
}
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
Save(Data.NonNull());
|
||||
}
|
||||
|
||||
public void Save(T data)
|
||||
{
|
||||
// User may delete the directory, so we need to check it
|
||||
FilesFolders.ValidateDirectory(DirectoryPath);
|
||||
|
||||
var serialized = MemoryPackSerializer.Serialize(Data);
|
||||
var serialized = MemoryPackSerializer.Serialize(data);
|
||||
File.WriteAllBytes(FilePath, serialized);
|
||||
}
|
||||
|
||||
|
|
@ -107,15 +151,6 @@ namespace Flow.Launcher.Infrastructure.Storage
|
|||
await SaveAsync(Data.NonNull());
|
||||
}
|
||||
|
||||
// ImageCache need to convert data into concurrent dictionary for usage,
|
||||
// so we would better to clear the data
|
||||
public void ClearData()
|
||||
{
|
||||
Data = default;
|
||||
}
|
||||
|
||||
// ImageCache storages data in its class,
|
||||
// so we need to pass it to SaveAsync
|
||||
public async ValueTask SaveAsync(T data)
|
||||
{
|
||||
// User may delete the directory, so we need to check it
|
||||
|
|
@ -124,5 +159,12 @@ namespace Flow.Launcher.Infrastructure.Storage
|
|||
await using var stream = new FileStream(FilePath, FileMode.Create);
|
||||
await MemoryPackSerializer.SerializeAsync(stream, data);
|
||||
}
|
||||
|
||||
// ImageCache need to convert data into concurrent dictionary for usage,
|
||||
// so we would better to clear the data
|
||||
public void ClearData()
|
||||
{
|
||||
Data = default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
|
||||
query = query.Trim();
|
||||
TranslationMapping translationMapping = null;
|
||||
if (_alphabet is not null && !_alphabet.CanBeTranslated(query))
|
||||
if (_alphabet is not null && _alphabet.ShouldTranslate(query))
|
||||
{
|
||||
// We assume that if a query can be translated (containing characters of a language, like Chinese)
|
||||
// it actually means user doesn't want it to be translated to English letters.
|
||||
|
|
@ -228,7 +228,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
return new MatchResult(false, UserSettingSearchPrecision);
|
||||
}
|
||||
|
||||
private bool IsAcronym(string stringToCompare, int compareStringIndex)
|
||||
private static bool IsAcronym(string stringToCompare, int compareStringIndex)
|
||||
{
|
||||
if (IsAcronymChar(stringToCompare, compareStringIndex) || IsAcronymNumber(stringToCompare, compareStringIndex))
|
||||
return true;
|
||||
|
|
@ -237,7 +237,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
}
|
||||
|
||||
// When counting acronyms, treat a set of numbers as one acronym ie. Visual 2019 as 2 acronyms instead of 5
|
||||
private bool IsAcronymCount(string stringToCompare, int compareStringIndex)
|
||||
private static bool IsAcronymCount(string stringToCompare, int compareStringIndex)
|
||||
{
|
||||
if (IsAcronymChar(stringToCompare, compareStringIndex))
|
||||
return true;
|
||||
|
|
|
|||
34
Flow.Launcher.Infrastructure/TranslationMapping.cs
Normal file
34
Flow.Launcher.Infrastructure/TranslationMapping.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure
|
||||
{
|
||||
public class TranslationMapping
|
||||
{
|
||||
private bool _isConstructed;
|
||||
|
||||
// Assuming one original item maps to multi translated items
|
||||
// list[i] is the last translated index + 1 of original index i
|
||||
private readonly List<int> _originalToTranslated = new();
|
||||
|
||||
public void AddNewIndex(int translatedIndex, int length)
|
||||
{
|
||||
if (_isConstructed)
|
||||
throw new InvalidOperationException("Mapping shouldn't be changed after construction");
|
||||
_originalToTranslated.Add(translatedIndex + length);
|
||||
}
|
||||
|
||||
public int MapToOriginalIndex(int translatedIndex)
|
||||
{
|
||||
var searchResult = _originalToTranslated.BinarySearch(translatedIndex);
|
||||
return searchResult >= 0 ? searchResult : ~searchResult;
|
||||
}
|
||||
|
||||
public void EndConstruct()
|
||||
{
|
||||
if (_isConstructed)
|
||||
throw new InvalidOperationException("Mapping has already been constructed");
|
||||
_isConstructed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
using System;
|
||||
using System.Windows.Markup;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure.UI
|
||||
{
|
||||
[Obsolete("EnumBindingSourceExtension is obsolete. Use with Flow.Launcher.Localization NuGet package instead.")]
|
||||
public class EnumBindingSourceExtension : MarkupExtension
|
||||
{
|
||||
private Type _enumType;
|
||||
public Type EnumType
|
||||
{
|
||||
get { return _enumType; }
|
||||
set
|
||||
{
|
||||
if (value != _enumType)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
Type enumType = Nullable.GetUnderlyingType(value) ?? value;
|
||||
if (!enumType.IsEnum)
|
||||
{
|
||||
throw new ArgumentException("Type must represent an enum.");
|
||||
}
|
||||
}
|
||||
|
||||
_enumType = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EnumBindingSourceExtension() { }
|
||||
|
||||
public EnumBindingSourceExtension(Type enumType)
|
||||
{
|
||||
EnumType = enumType;
|
||||
}
|
||||
|
||||
public override object ProvideValue(IServiceProvider serviceProvider)
|
||||
{
|
||||
if (_enumType == null)
|
||||
{
|
||||
throw new InvalidOperationException("The EnumType must be specified.");
|
||||
}
|
||||
|
||||
Type actualEnumType = Nullable.GetUnderlyingType(_enumType) ?? _enumType;
|
||||
Array enumValues = Enum.GetValues(actualEnumType);
|
||||
|
||||
if (actualEnumType == _enumType)
|
||||
{
|
||||
return enumValues;
|
||||
}
|
||||
|
||||
Array tempArray = Array.CreateInstance(actualEnumType, enumValues.Length + 1);
|
||||
enumValues.CopyTo(tempArray, 1);
|
||||
return tempArray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Windows;
|
||||
|
|
@ -39,7 +39,6 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
_storage.Save();
|
||||
}
|
||||
|
||||
private string _theme = Constant.DefaultTheme;
|
||||
public string Hotkey { get; set; } = $"{KeyConstant.Alt} + {KeyConstant.Space}";
|
||||
|
||||
private string _openResultModifiers = KeyConstant.Alt;
|
||||
|
|
@ -87,6 +86,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
public string OpenHistoryHotkey { get; set; } = $"Ctrl+H";
|
||||
public string CycleHistoryUpHotkey { get; set; } = $"{KeyConstant.Alt} + Up";
|
||||
public string CycleHistoryDownHotkey { get; set; } = $"{KeyConstant.Alt} + Down";
|
||||
public string DialogJumpHotkey { get; set; } = $"{KeyConstant.Alt} + G";
|
||||
|
||||
private string _language = Constant.SystemLanguageCode;
|
||||
public string Language
|
||||
|
|
@ -94,16 +94,20 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
get => _language;
|
||||
set
|
||||
{
|
||||
_language = value;
|
||||
OnPropertyChanged();
|
||||
if (_language != value)
|
||||
{
|
||||
_language = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
private string _theme = Constant.DefaultTheme;
|
||||
public string Theme
|
||||
{
|
||||
get => _theme;
|
||||
set
|
||||
{
|
||||
if (value != _theme)
|
||||
if (_theme != value)
|
||||
{
|
||||
_theme = value;
|
||||
OnPropertyChanged();
|
||||
|
|
@ -112,7 +116,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
}
|
||||
}
|
||||
public bool UseDropShadowEffect { get; set; } = true;
|
||||
public BackdropTypes BackdropType{ get; set; } = BackdropTypes.None;
|
||||
public BackdropTypes BackdropType { get; set; } = BackdropTypes.None;
|
||||
public string ReleaseNotesVersion { get; set; } = string.Empty;
|
||||
|
||||
/* Appearance Settings. It should be separated from the setting later.*/
|
||||
public double WindowHeightSize { get; set; } = 42;
|
||||
|
|
@ -224,11 +229,12 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int MaxHistoryResultsToShowForHomePage { get; set; } = 5;
|
||||
|
||||
public bool AutoRestartAfterChanging { get; set; } = false;
|
||||
public bool ShowUnknownSourceWarning { get; set; } = true;
|
||||
public bool AutoUpdatePlugins { get; set; } = true;
|
||||
|
||||
public int CustomExplorerIndex { get; set; } = 0;
|
||||
|
||||
|
|
@ -318,13 +324,70 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
}
|
||||
};
|
||||
|
||||
public bool EnableDialogJump { get; set; } = true;
|
||||
|
||||
public bool AutoDialogJump { get; set; } = false;
|
||||
|
||||
public bool ShowDialogJumpWindow { get; set; } = false;
|
||||
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public DialogJumpWindowPositions DialogJumpWindowPosition { get; set; } = DialogJumpWindowPositions.UnderDialog;
|
||||
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public DialogJumpResultBehaviours DialogJumpResultBehaviour { get; set; } = DialogJumpResultBehaviours.LeftClick;
|
||||
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public DialogJumpFileResultBehaviours DialogJumpFileResultBehaviour { get; set; } = DialogJumpFileResultBehaviours.FullPath;
|
||||
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public LOGLEVEL LogLevel { get; set; } = LOGLEVEL.INFO;
|
||||
|
||||
/// <summary>
|
||||
/// when false Alphabet static service will always return empty results
|
||||
/// </summary>
|
||||
public bool ShouldUsePinyin { get; set; } = false;
|
||||
private bool _useAlphabet = true;
|
||||
public bool ShouldUsePinyin
|
||||
{
|
||||
get => _useAlphabet;
|
||||
set
|
||||
{
|
||||
if (_useAlphabet != value)
|
||||
{
|
||||
_useAlphabet = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _useDoublePinyin = false;
|
||||
public bool UseDoublePinyin
|
||||
{
|
||||
get => _useDoublePinyin;
|
||||
set
|
||||
{
|
||||
if (_useDoublePinyin != value)
|
||||
{
|
||||
_useDoublePinyin = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DoublePinyinSchemas _doublePinyinSchema = DoublePinyinSchemas.XiaoHe;
|
||||
|
||||
[JsonInclude, JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public DoublePinyinSchemas DoublePinyinSchema
|
||||
{
|
||||
get => _doublePinyinSchema;
|
||||
set
|
||||
{
|
||||
if (_doublePinyinSchema != value)
|
||||
{
|
||||
_doublePinyinSchema = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool AlwaysPreview { get; set; } = false;
|
||||
|
||||
|
|
@ -337,9 +400,12 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
get => _querySearchPrecision;
|
||||
set
|
||||
{
|
||||
_querySearchPrecision = value;
|
||||
if (_stringMatcher != null)
|
||||
_stringMatcher.UserSettingSearchPrecision = value;
|
||||
if (_querySearchPrecision != value)
|
||||
{
|
||||
_querySearchPrecision = value;
|
||||
if (_stringMatcher != null)
|
||||
_stringMatcher.UserSettingSearchPrecision = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -406,13 +472,30 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
get => _hideNotifyIcon;
|
||||
set
|
||||
{
|
||||
_hideNotifyIcon = value;
|
||||
OnPropertyChanged();
|
||||
if (_hideNotifyIcon != value)
|
||||
{
|
||||
_hideNotifyIcon = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
public bool LeaveCmdOpen { get; set; }
|
||||
public bool HideWhenDeactivated { get; set; } = true;
|
||||
|
||||
private bool _showAtTopmost = false;
|
||||
public bool ShowAtTopmost
|
||||
{
|
||||
get => _showAtTopmost;
|
||||
set
|
||||
{
|
||||
if (_showAtTopmost != value)
|
||||
{
|
||||
_showAtTopmost = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool SearchQueryResultsWithDelay { get; set; }
|
||||
public int SearchDelayTime { get; set; } = 150;
|
||||
|
||||
|
|
@ -448,7 +531,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
{
|
||||
var list = FixedHotkeys();
|
||||
|
||||
// Customizeable hotkeys
|
||||
// Customizable hotkeys
|
||||
if (!string.IsNullOrEmpty(Hotkey))
|
||||
list.Add(new(Hotkey, "flowlauncherHotkey", () => Hotkey = ""));
|
||||
if (!string.IsNullOrEmpty(PreviewHotkey))
|
||||
|
|
@ -468,7 +551,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
if (!string.IsNullOrEmpty(SettingWindowHotkey))
|
||||
list.Add(new(SettingWindowHotkey, "SettingWindowHotkey", () => SettingWindowHotkey = ""));
|
||||
if (!string.IsNullOrEmpty(OpenHistoryHotkey))
|
||||
list.Add(new(OpenHistoryHotkey, "OpenHistoryHotkey", () => OpenHistoryHotkey = ""));
|
||||
list.Add(new(OpenHistoryHotkey, "OpenHistoryHotkey", () => OpenHistoryHotkey = ""));
|
||||
if (!string.IsNullOrEmpty(OpenContextMenuHotkey))
|
||||
list.Add(new(OpenContextMenuHotkey, "OpenContextMenuHotkey", () => OpenContextMenuHotkey = ""));
|
||||
if (!string.IsNullOrEmpty(SelectNextPageHotkey))
|
||||
|
|
@ -479,6 +562,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
list.Add(new(CycleHistoryUpHotkey, "CycleHistoryUpHotkey", () => CycleHistoryUpHotkey = ""));
|
||||
if (!string.IsNullOrEmpty(CycleHistoryDownHotkey))
|
||||
list.Add(new(CycleHistoryDownHotkey, "CycleHistoryDownHotkey", () => CycleHistoryDownHotkey = ""));
|
||||
if (!string.IsNullOrEmpty(DialogJumpHotkey))
|
||||
list.Add(new(DialogJumpHotkey, "dialogJumpHotkey", () => DialogJumpHotkey = ""));
|
||||
|
||||
// Custom Query Hotkeys
|
||||
foreach (var customPluginHotkey in CustomPluginHotkeys)
|
||||
|
|
@ -574,9 +659,41 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
|||
|
||||
public enum BackdropTypes
|
||||
{
|
||||
None,
|
||||
None,
|
||||
Acrylic,
|
||||
Mica,
|
||||
MicaAlt
|
||||
}
|
||||
|
||||
public enum DoublePinyinSchemas
|
||||
{
|
||||
XiaoHe,
|
||||
ZiRanMa,
|
||||
WeiRuan,
|
||||
ZhiNengABC,
|
||||
ZiGuangPinYin,
|
||||
PinYinJiaJia,
|
||||
XingKongJianDao,
|
||||
DaNiu,
|
||||
XiaoLang
|
||||
}
|
||||
|
||||
public enum DialogJumpWindowPositions
|
||||
{
|
||||
UnderDialog,
|
||||
FollowDefault
|
||||
}
|
||||
|
||||
public enum DialogJumpResultBehaviours
|
||||
{
|
||||
LeftClick,
|
||||
RightClick
|
||||
}
|
||||
|
||||
public enum DialogJumpFileResultBehaviours
|
||||
{
|
||||
FullPath,
|
||||
FullPathOpen,
|
||||
Directory
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -13,10 +13,13 @@ using System.Windows.Interop;
|
|||
using System.Windows.Markup;
|
||||
using System.Windows.Media;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin.SharedModels;
|
||||
using Microsoft.Win32;
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using Windows.Win32;
|
||||
using Windows.Win32.Foundation;
|
||||
using Windows.Win32.Graphics.Dwm;
|
||||
using Windows.Win32.System.Threading;
|
||||
using Windows.Win32.UI.Input.KeyboardAndMouse;
|
||||
using Windows.Win32.UI.Shell.Common;
|
||||
using Windows.Win32.UI.WindowsAndMessaging;
|
||||
|
|
@ -118,9 +121,9 @@ namespace Flow.Launcher.Infrastructure
|
|||
|
||||
#region Window Foreground
|
||||
|
||||
public static nint GetForegroundWindow()
|
||||
public static unsafe nint GetForegroundWindow()
|
||||
{
|
||||
return PInvoke.GetForegroundWindow().Value;
|
||||
return (nint)PInvoke.GetForegroundWindow().Value;
|
||||
}
|
||||
|
||||
public static bool SetForegroundWindow(Window window)
|
||||
|
|
@ -138,6 +141,11 @@ namespace Flow.Launcher.Infrastructure
|
|||
return IsForegroundWindow(GetWindowHandle(window));
|
||||
}
|
||||
|
||||
public static bool IsForegroundWindow(nint handle)
|
||||
{
|
||||
return IsForegroundWindow(new HWND(handle));
|
||||
}
|
||||
|
||||
internal static bool IsForegroundWindow(HWND handle)
|
||||
{
|
||||
return handle.Equals(PInvoke.GetForegroundWindow());
|
||||
|
|
@ -279,15 +287,15 @@ namespace Flow.Launcher.Infrastructure
|
|||
{
|
||||
var hWndDesktop = PInvoke.FindWindowEx(hWnd, HWND.Null, "SHELLDLL_DefView", null);
|
||||
hWndDesktop = PInvoke.FindWindowEx(hWndDesktop, HWND.Null, "SysListView32", "FolderView");
|
||||
if (hWndDesktop.Value != IntPtr.Zero)
|
||||
if (hWndDesktop != HWND.Null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var monitorInfo = MonitorInfo.GetNearestDisplayMonitor(hWnd);
|
||||
return (appBounds.bottom - appBounds.top) == monitorInfo.RectMonitor.Height &&
|
||||
(appBounds.right - appBounds.left) == monitorInfo.RectMonitor.Width;
|
||||
return (appBounds.bottom - appBounds.top) == monitorInfo.Bounds.Height &&
|
||||
(appBounds.right - appBounds.left) == monitorInfo.Bounds.Width;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -330,6 +338,9 @@ namespace Flow.Launcher.Infrastructure
|
|||
public const int SC_MAXIMIZE = (int)PInvoke.SC_MAXIMIZE;
|
||||
public const int SC_MINIMIZE = (int)PInvoke.SC_MINIMIZE;
|
||||
|
||||
public const int WM_POWERBROADCAST = (int)PInvoke.WM_POWERBROADCAST;
|
||||
public const int PBT_APMRESUMEAUTOMATIC = (int)PInvoke.PBT_APMRESUMEAUTOMATIC;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Window Handle
|
||||
|
|
@ -344,6 +355,16 @@ namespace Flow.Launcher.Infrastructure
|
|||
return new(windowHelper.Handle);
|
||||
}
|
||||
|
||||
internal static HWND GetMainWindowHandle()
|
||||
{
|
||||
// When application is exiting, the Application.Current will be null
|
||||
if (Application.Current == null) return HWND.Null;
|
||||
|
||||
// Get the FL main window
|
||||
var hwnd = GetWindowHandle(Application.Current.MainWindow, true);
|
||||
return hwnd;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region STA Thread
|
||||
|
|
@ -480,7 +501,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
/// Restores the previously backed-up keyboard layout.
|
||||
/// If it wasn't backed up or has already been restored, this method does nothing.
|
||||
/// </summary>
|
||||
public static void RestorePreviousKeyboardLayout()
|
||||
public unsafe static void RestorePreviousKeyboardLayout()
|
||||
{
|
||||
if (_previousLayout == HKL.Null) return;
|
||||
|
||||
|
|
@ -491,7 +512,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
hwnd,
|
||||
PInvoke.WM_INPUTLANGCHANGEREQUEST,
|
||||
PInvoke.INPUTLANGCHANGE_FORWARD,
|
||||
_previousLayout.Value
|
||||
new LPARAM((nint)_previousLayout.Value)
|
||||
);
|
||||
|
||||
_previousLayout = HKL.Null;
|
||||
|
|
@ -761,6 +782,62 @@ namespace Flow.Launcher.Infrastructure
|
|||
|
||||
#endregion
|
||||
|
||||
#region Window Rect
|
||||
|
||||
public static unsafe bool GetWindowRect(nint handle, out Rect outRect)
|
||||
{
|
||||
var rect = new RECT();
|
||||
var result = PInvoke.GetWindowRect(new(handle), &rect);
|
||||
if (!result)
|
||||
{
|
||||
outRect = new Rect();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Convert RECT to Rect
|
||||
outRect = new Rect(
|
||||
rect.left,
|
||||
rect.top,
|
||||
rect.right - rect.left,
|
||||
rect.bottom - rect.top
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Window Process
|
||||
|
||||
internal static unsafe string GetProcessNameFromHwnd(HWND hWnd)
|
||||
{
|
||||
return Path.GetFileName(GetProcessPathFromHwnd(hWnd));
|
||||
}
|
||||
|
||||
internal static unsafe string GetProcessPathFromHwnd(HWND hWnd)
|
||||
{
|
||||
uint pid;
|
||||
var threadId = PInvoke.GetWindowThreadProcessId(hWnd, &pid);
|
||||
if (threadId == 0) return string.Empty;
|
||||
|
||||
var process = PInvoke.OpenProcess(PROCESS_ACCESS_RIGHTS.PROCESS_QUERY_LIMITED_INFORMATION, false, pid);
|
||||
if (process != HWND.Null)
|
||||
{
|
||||
using var safeHandle = new SafeProcessHandle((nint)process.Value, true);
|
||||
uint capacity = 2000;
|
||||
Span<char> buffer = new char[capacity];
|
||||
if (!PInvoke.QueryFullProcessImageName(safeHandle, PROCESS_NAME_FORMAT.PROCESS_NAME_WIN32, buffer, ref capacity))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return buffer[..(int)capacity].ToString();
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Explorer
|
||||
|
||||
// https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shopenfolderandselectitems
|
||||
|
|
@ -791,5 +868,41 @@ namespace Flow.Launcher.Infrastructure
|
|||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Win32 Dark Mode
|
||||
|
||||
/*
|
||||
* Inspired by https://github.com/ysc3839/win32-darkmode
|
||||
*/
|
||||
|
||||
[DllImport("uxtheme.dll", EntryPoint = "#135", SetLastError = true)]
|
||||
private static extern int SetPreferredAppMode(int appMode);
|
||||
|
||||
public static void EnableWin32DarkMode(string colorScheme)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Undocumented API from Windows 10 1809
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) &&
|
||||
Environment.OSVersion.Version.Build >= 17763)
|
||||
{
|
||||
var flag = colorScheme switch
|
||||
{
|
||||
Constant.Light => 3, // ForceLight
|
||||
Constant.Dark => 2, // ForceDark
|
||||
Constant.System => 1, // AllowDark
|
||||
_ => 0 // Default
|
||||
};
|
||||
_ = SetPreferredAppMode(flag);
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignore errors on unsupported OS
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
198
Flow.Launcher.Infrastructure/packages.lock.json
Normal file
198
Flow.Launcher.Infrastructure/packages.lock.json
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
{
|
||||
"version": 1,
|
||||
"dependencies": {
|
||||
"net9.0-windows7.0": {
|
||||
"Ben.Demystifier": {
|
||||
"type": "Direct",
|
||||
"requested": "[0.4.1, )",
|
||||
"resolved": "0.4.1",
|
||||
"contentHash": "axFeEMfmEORy3ipAzOXG/lE+KcNptRbei3F0C4kQCdeiQtW+qJW90K5iIovITGrdLt8AjhNCwk5qLSX9/rFpoA==",
|
||||
"dependencies": {
|
||||
"System.Reflection.Metadata": "5.0.0"
|
||||
}
|
||||
},
|
||||
"BitFaster.Caching": {
|
||||
"type": "Direct",
|
||||
"requested": "[2.5.4, )",
|
||||
"resolved": "2.5.4",
|
||||
"contentHash": "1QroTY1PVCZOSG9FnkkCrmCKk/+bZCgI/YXq376HnYwUDJ4Ho0EaV4YaA/5v5WYLnwIwIO7RZkdWbg9pxIpueQ=="
|
||||
},
|
||||
"CommunityToolkit.Mvvm": {
|
||||
"type": "Direct",
|
||||
"requested": "[8.4.0, )",
|
||||
"resolved": "8.4.0",
|
||||
"contentHash": "tqVU8yc/ADO9oiTRyTnwhFN68hCwvkliMierptWOudIAvWY1mWCh5VFh+guwHJmpMwfg0J0rY+yyd5Oy7ty9Uw=="
|
||||
},
|
||||
"Fody": {
|
||||
"type": "Direct",
|
||||
"requested": "[6.9.2, )",
|
||||
"resolved": "6.9.2",
|
||||
"contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
|
||||
},
|
||||
"InputSimulator": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.0.4, )",
|
||||
"resolved": "1.0.4",
|
||||
"contentHash": "D0LvRCPQMX6/FJHBjng+RO+wRDuHTJrfo7IAc7rmkPvRqchdVGJWg3y70peOtDy3OLNK+HSOwVkH4GiuLnkKgA=="
|
||||
},
|
||||
"MemoryPack": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.21.4, )",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "wy3JTBNBsO8LfQcBvvYsWr3lm2Oakolrfu0UQ3oSJSEiD+7ye0GUhYTaXuYYBowqsXBXWD9gf2218ae0JRiYVQ==",
|
||||
"dependencies": {
|
||||
"MemoryPack.Core": "1.21.4",
|
||||
"MemoryPack.Generator": "1.21.4"
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading": {
|
||||
"type": "Direct",
|
||||
"requested": "[17.14.15, )",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "1DrCusT3xNLSlaJg77BsUSAzrhjdZBAvvsS0PMzyPM+fGais6SnISOhqdZQop8VVMIBLsYm2gyF9W7THjgavwA==",
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Threading.Analyzers": "17.14.15",
|
||||
"Microsoft.VisualStudio.Threading.Only": "17.14.15",
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8"
|
||||
}
|
||||
},
|
||||
"Microsoft.Windows.CsWin32": {
|
||||
"type": "Direct",
|
||||
"requested": "[0.3.183, )",
|
||||
"resolved": "0.3.183",
|
||||
"contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
|
||||
"Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental"
|
||||
}
|
||||
},
|
||||
"NHotkey.Wpf": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.0.0, )",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "BIUKlhTG5KtFf9OQzWvkmVmktt5/FFj6AOEgag8Uf0R2YdZt5ajUzs3sVskcJcT2TztWlEHKQr1jFj3KQ0D9Nw==",
|
||||
"dependencies": {
|
||||
"NHotkey": "3.0.0"
|
||||
}
|
||||
},
|
||||
"NLog": {
|
||||
"type": "Direct",
|
||||
"requested": "[6.0.1, )",
|
||||
"resolved": "6.0.1",
|
||||
"contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
|
||||
},
|
||||
"NLog.OutputDebugString": {
|
||||
"type": "Direct",
|
||||
"requested": "[6.0.1, )",
|
||||
"resolved": "6.0.1",
|
||||
"contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
|
||||
"dependencies": {
|
||||
"NLog": "6.0.1"
|
||||
}
|
||||
},
|
||||
"PropertyChanged.Fody": {
|
||||
"type": "Direct",
|
||||
"requested": "[4.1.0, )",
|
||||
"resolved": "4.1.0",
|
||||
"contentHash": "6v+f9cI8YjnZH2WBHuOqWEAo8DFFNGFIdU8xD3AsL6fhV6Y8oAmVWd7XKk49t8DpeUBwhR/X+97+6Epvek0Y3A==",
|
||||
"dependencies": {
|
||||
"Fody": "6.6.4"
|
||||
}
|
||||
},
|
||||
"SharpVectors.Wpf": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.8.4.2, )",
|
||||
"resolved": "1.8.4.2",
|
||||
"contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
|
||||
},
|
||||
"System.Drawing.Common": {
|
||||
"type": "Direct",
|
||||
"requested": "[7.0.0, )",
|
||||
"resolved": "7.0.0",
|
||||
"contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==",
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.SystemEvents": "7.0.0"
|
||||
}
|
||||
},
|
||||
"ToolGood.Words.Pinyin": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.1.0.3, )",
|
||||
"resolved": "3.1.0.3",
|
||||
"contentHash": "VKcf8sUq/+LyY99WgLhOu7Q32ROEyR30/2xCCj9ADRi45wVC7kpXrYCf9vH1qirkmrIfpL8inoxAbrqAlfXxsQ=="
|
||||
},
|
||||
"JetBrains.Annotations": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2024.3.0",
|
||||
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
||||
},
|
||||
"MemoryPack.Core": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "6RszGorZ0ejNmp37ZcboPBMvvPCuNW2jlrdQfcs/lMzE5b3pmPF6hsm/laDc34hRlbAST1ZxaX/DvYu2DF5sBQ=="
|
||||
},
|
||||
"MemoryPack.Generator": {
|
||||
"type": "Transitive",
|
||||
"resolved": "1.21.4",
|
||||
"contentHash": "g14EsSS85yn0lHTi0J9ivqlZMf09A2iI51fmI+0KkzIzyCbWOBWPi5mdaY7YWmXprk12aYh9u/qfWHQUYthlwg=="
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading.Analyzers": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "mXQPJsbuUD2ydq4/ffd8h8tSOFCXec+2xJOVNCvXjuMOq/+5EKHq3D2m2MC2+nUaXeFMSt66VS/J4HdKBixgcw=="
|
||||
},
|
||||
"Microsoft.VisualStudio.Threading.Only": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.14.15",
|
||||
"contentHash": "NqONyw1RXyj9P3k5e1uU2k9kc1ptwuU5NJQzG+MPq7vQVHUzBY8HLuJf/N2Rw5H/myD96CVxziDxmjawPuzntw==",
|
||||
"dependencies": {
|
||||
"Microsoft.VisualStudio.Validation": "17.8.8"
|
||||
}
|
||||
},
|
||||
"Microsoft.VisualStudio.Validation": {
|
||||
"type": "Transitive",
|
||||
"resolved": "17.8.8",
|
||||
"contentHash": "rWXThIpyQd4YIXghNkiv2+VLvzS+MCMKVRDR0GAMlflsdo+YcAN2g2r5U1Ah98OFjQMRexTFtXQQ2LkajxZi3g=="
|
||||
},
|
||||
"Microsoft.Win32.SystemEvents": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.0",
|
||||
"contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ=="
|
||||
},
|
||||
"Microsoft.Windows.SDK.Win32Docs": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.1.42-alpha",
|
||||
"contentHash": "Z/9po23gUA9aoukirh2ItMU2ZS9++Js9Gdds9fu5yuMojDrmArvY2y+tq9985tR3cxFxpZO1O35Wjfo0khj5HA=="
|
||||
},
|
||||
"Microsoft.Windows.SDK.Win32Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "61.0.15-preview",
|
||||
"contentHash": "cysex3dazKtCPALCluC2XX3f5Aedy9H2pw5jb+TW5uas2rkem1Z7FRnbUrg2vKx0pk0Qz+4EJNr37HdYTEcvEQ=="
|
||||
},
|
||||
"Microsoft.Windows.WDK.Win32Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.12.8-experimental",
|
||||
"contentHash": "3n8R44/Z96Ly+ty4eYVJfESqbzvpw96lRLs3zOzyDmr1x1Kw7FNn5CyE416q+bZQV3e1HRuMUvyegMeRE/WedA==",
|
||||
"dependencies": {
|
||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview"
|
||||
}
|
||||
},
|
||||
"NHotkey": {
|
||||
"type": "Transitive",
|
||||
"resolved": "3.0.0",
|
||||
"contentHash": "IEghs0QqWsQYH0uUmvIl0Ye6RaebWRh38eB6ToOkDnQucTYRGFOgtig0gSxlwCszTilYFz3n1ZuY762x+kDR3A=="
|
||||
},
|
||||
"System.Reflection.Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "5.0.0",
|
||||
"contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ=="
|
||||
},
|
||||
"flow.launcher.plugin": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"JetBrains.Annotations": "[2024.3.0, )"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
92
Flow.Launcher.Plugin/DialogJumpResult.cs
Normal file
92
Flow.Launcher.Plugin/DialogJumpResult.cs
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes a result of a <see cref="Query"/> executed by a plugin in Dialog Jump window
|
||||
/// </summary>
|
||||
public class DialogJumpResult : Result
|
||||
{
|
||||
/// <summary>
|
||||
/// This holds the path which can be provided by plugin to be navigated to the
|
||||
/// file dialog when records in Dialog Jump window is right clicked on a result.
|
||||
/// </summary>
|
||||
public required string DialogJumpPath { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Clones the current Dialog Jump result
|
||||
/// </summary>
|
||||
public new DialogJumpResult Clone()
|
||||
{
|
||||
return new DialogJumpResult
|
||||
{
|
||||
Title = Title,
|
||||
SubTitle = SubTitle,
|
||||
ActionKeywordAssigned = ActionKeywordAssigned,
|
||||
CopyText = CopyText,
|
||||
AutoCompleteText = AutoCompleteText,
|
||||
IcoPath = IcoPath,
|
||||
BadgeIcoPath = BadgeIcoPath,
|
||||
RoundedIcon = RoundedIcon,
|
||||
Icon = Icon,
|
||||
BadgeIcon = BadgeIcon,
|
||||
Glyph = Glyph,
|
||||
Action = Action,
|
||||
AsyncAction = AsyncAction,
|
||||
Score = Score,
|
||||
TitleHighlightData = TitleHighlightData,
|
||||
OriginQuery = OriginQuery,
|
||||
PluginDirectory = PluginDirectory,
|
||||
ContextData = ContextData,
|
||||
PluginID = PluginID,
|
||||
TitleToolTip = TitleToolTip,
|
||||
SubTitleToolTip = SubTitleToolTip,
|
||||
PreviewPanel = PreviewPanel,
|
||||
ProgressBar = ProgressBar,
|
||||
ProgressBarColor = ProgressBarColor,
|
||||
Preview = Preview,
|
||||
AddSelectedCount = AddSelectedCount,
|
||||
RecordKey = RecordKey,
|
||||
ShowBadge = ShowBadge,
|
||||
DialogJumpPath = DialogJumpPath
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert <see cref="Result"/> to <see cref="DialogJumpResult"/>.
|
||||
/// </summary>
|
||||
public static DialogJumpResult From(Result result, string dialogJumpPath)
|
||||
{
|
||||
return new DialogJumpResult
|
||||
{
|
||||
Title = result.Title,
|
||||
SubTitle = result.SubTitle,
|
||||
ActionKeywordAssigned = result.ActionKeywordAssigned,
|
||||
CopyText = result.CopyText,
|
||||
AutoCompleteText = result.AutoCompleteText,
|
||||
IcoPath = result.IcoPath,
|
||||
BadgeIcoPath = result.BadgeIcoPath,
|
||||
RoundedIcon = result.RoundedIcon,
|
||||
Icon = result.Icon,
|
||||
BadgeIcon = result.BadgeIcon,
|
||||
Glyph = result.Glyph,
|
||||
Action = result.Action,
|
||||
AsyncAction = result.AsyncAction,
|
||||
Score = result.Score,
|
||||
TitleHighlightData = result.TitleHighlightData,
|
||||
OriginQuery = result.OriginQuery,
|
||||
PluginDirectory = result.PluginDirectory,
|
||||
ContextData = result.ContextData,
|
||||
PluginID = result.PluginID,
|
||||
TitleToolTip = result.TitleToolTip,
|
||||
SubTitleToolTip = result.SubTitleToolTip,
|
||||
PreviewPanel = result.PreviewPanel,
|
||||
ProgressBar = result.ProgressBar,
|
||||
ProgressBarColor = result.ProgressBarColor,
|
||||
Preview = result.Preview,
|
||||
AddSelectedCount = result.AddSelectedCount,
|
||||
RecordKey = result.RecordKey,
|
||||
ShowBadge = result.ShowBadge,
|
||||
DialogJumpPath = dialogJumpPath
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -39,7 +39,14 @@ namespace Flow.Launcher.Plugin
|
|||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
public delegate void VisibilityChangedEventHandler(object sender, VisibilityChangedEventArgs args);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A delegate for when the actual application theme is changed
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="args"></param>
|
||||
public delegate void ActualApplicationThemeChangedEventHandler(object sender, ActualApplicationThemeChangedEventArgs args);
|
||||
|
||||
/// <summary>
|
||||
/// The event args for <see cref="VisibilityChangedEventHandler"/>
|
||||
/// </summary>
|
||||
|
|
@ -77,4 +84,15 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
public Query Query { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The event args for <see cref="ActualApplicationThemeChangedEventHandler"/>
|
||||
/// </summary>
|
||||
public class ActualApplicationThemeChangedEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// <see langword="true"/> if the application has changed actual theme
|
||||
/// </summary>
|
||||
public bool IsDark { get; init; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<TargetFramework>net9.0-windows</TargetFramework>
|
||||
<ProjectGuid>{8451ECDD-2EA4-4966-BB0A-7BBC40138E80}</ProjectGuid>
|
||||
<UseWPF>true</UseWPF>
|
||||
<OutputType>Library</OutputType>
|
||||
|
|
@ -11,13 +11,14 @@
|
|||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>4.7.0</Version>
|
||||
<PackageVersion>4.7.0</PackageVersion>
|
||||
<AssemblyVersion>4.7.0</AssemblyVersion>
|
||||
<FileVersion>4.7.0</FileVersion>
|
||||
<Version>5.0.0</Version>
|
||||
<PackageVersion>5.0.0</PackageVersion>
|
||||
<AssemblyVersion>5.0.0</AssemblyVersion>
|
||||
<FileVersion>5.0.0</FileVersion>
|
||||
<PackageId>Flow.Launcher.Plugin</PackageId>
|
||||
<Authors>Flow-Launcher</Authors>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
|
|
@ -67,17 +68,17 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Fody" Version="6.5.5">
|
||||
<PackageReference Include="Fody" Version="6.9.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
|
||||
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" />
|
||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.106">
|
||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.183">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="3.4.0">
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
|
|
|||
24
Flow.Launcher.Plugin/Interfaces/IAsyncDialogJump.cs
Normal file
24
Flow.Launcher.Plugin/Interfaces/IAsyncDialogJump.cs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
|
||||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Asynchronous Dialog Jump Model
|
||||
/// </summary>
|
||||
public interface IAsyncDialogJump : IFeatures
|
||||
{
|
||||
/// <summary>
|
||||
/// Asynchronous querying for Dialog Jump window
|
||||
/// </summary>
|
||||
/// <para>
|
||||
/// If the Querying method requires high IO transmission
|
||||
/// or performing CPU intense jobs (performing better with cancellation), please use this IAsyncDialogJump interface
|
||||
/// </para>
|
||||
/// <param name="query">Query to search</param>
|
||||
/// <param name="token">Cancel when querying job is obsolete</param>
|
||||
/// <returns></returns>
|
||||
Task<List<DialogJumpResult>> QueryDialogJumpAsync(Query query, CancellationToken token);
|
||||
}
|
||||
}
|
||||
29
Flow.Launcher.Plugin/Interfaces/IDialogJump.cs
Normal file
29
Flow.Launcher.Plugin/Interfaces/IDialogJump.cs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Synchronous Dialog Jump Model
|
||||
/// <para>
|
||||
/// If the Querying method requires high IO transmission
|
||||
/// or performing CPU intense jobs (performing better with cancellation), please try the IAsyncDialogJump interface
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public interface IDialogJump : IAsyncDialogJump
|
||||
{
|
||||
/// <summary>
|
||||
/// Querying for Dialog Jump window
|
||||
/// <para>
|
||||
/// This method will be called within a Task.Run,
|
||||
/// so please avoid synchrously wait for long.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="query">Query to search</param>
|
||||
/// <returns></returns>
|
||||
List<DialogJumpResult> QueryDialogJump(Query query);
|
||||
|
||||
Task<List<DialogJumpResult>> IAsyncDialogJump.QueryDialogJumpAsync(Query query, CancellationToken token) => Task.Run(() => QueryDialogJump(query), token);
|
||||
}
|
||||
}
|
||||
96
Flow.Launcher.Plugin/Interfaces/IDialogJumpDialog.cs
Normal file
96
Flow.Launcher.Plugin/Interfaces/IDialogJumpDialog.cs
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
using System;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Interface for handling file dialog instances in DialogJump.
|
||||
/// </summary>
|
||||
public interface IDialogJumpDialog : IFeatures, IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// Check if the foreground window is a file dialog instance.
|
||||
/// </summary>
|
||||
/// <param name="hwnd">
|
||||
/// The handle of the foreground window to check.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// The window if the foreground window is a file dialog instance. Null if it is not.
|
||||
/// </returns>
|
||||
IDialogJumpDialogWindow? CheckDialogWindow(IntPtr hwnd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for handling a specific file dialog window in DialogJump.
|
||||
/// </summary>
|
||||
public interface IDialogJumpDialogWindow : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// The handle of the dialog window.
|
||||
/// </summary>
|
||||
IntPtr Handle { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the current tab of the dialog window.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IDialogJumpDialogWindowTab GetCurrentTab();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for handling a specific tab in a file dialog window in DialogJump.
|
||||
/// </summary>
|
||||
public interface IDialogJumpDialogWindowTab : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// The handle of the dialog tab.
|
||||
/// </summary>
|
||||
IntPtr Handle { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the current folder path of the dialog tab.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string GetCurrentFolder();
|
||||
|
||||
/// <summary>
|
||||
/// Get the current file of the dialog tab.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string GetCurrentFile();
|
||||
|
||||
/// <summary>
|
||||
/// Jump to a folder in the dialog tab.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// The path to the folder to jump to.
|
||||
/// </param>
|
||||
/// <param name="auto">
|
||||
/// Whether folder jump is under automatical mode.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// True if the jump was successful, false otherwise.
|
||||
/// </returns>
|
||||
bool JumpFolder(string path, bool auto);
|
||||
|
||||
/// <summary>
|
||||
/// Jump to a file in the dialog tab.
|
||||
/// </summary>
|
||||
/// <param name="path">
|
||||
/// The path to the file to jump to.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// True if the jump was successful, false otherwise.
|
||||
/// </returns>
|
||||
bool JumpFile(string path);
|
||||
|
||||
/// <summary>
|
||||
/// Open the file in the dialog tab.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// True if the file was opened successfully, false otherwise.
|
||||
/// </returns>
|
||||
bool Open();
|
||||
}
|
||||
}
|
||||
40
Flow.Launcher.Plugin/Interfaces/IDialogJumpExplorer.cs
Normal file
40
Flow.Launcher.Plugin/Interfaces/IDialogJumpExplorer.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
using System;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Interface for handling file explorer instances in DialogJump.
|
||||
/// </summary>
|
||||
public interface IDialogJumpExplorer : IFeatures, IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// Check if the foreground window is a Windows Explorer instance.
|
||||
/// </summary>
|
||||
/// <param name="hwnd">
|
||||
/// The handle of the foreground window to check.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// The window if the foreground window is a file explorer instance. Null if it is not.
|
||||
/// </returns>
|
||||
IDialogJumpExplorerWindow? CheckExplorerWindow(IntPtr hwnd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interface for handling a specific file explorer window in DialogJump.
|
||||
/// </summary>
|
||||
public interface IDialogJumpExplorerWindow : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// The handle of the explorer window.
|
||||
/// </summary>
|
||||
IntPtr Handle { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the current folder path of the explorer window.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string? GetExplorerPath();
|
||||
}
|
||||
}
|
||||
|
|
@ -32,6 +32,6 @@ namespace Flow.Launcher.Plugin
|
|||
|
||||
Task IAsyncPlugin.InitAsync(PluginInitContext context) => Task.Run(() => Init(context));
|
||||
|
||||
Task<List<Result>> IAsyncPlugin.QueryAsync(Query query, CancellationToken token) => Task.Run(() => Query(query));
|
||||
Task<List<Result>> IAsyncPlugin.QueryAsync(Query query, CancellationToken token) => Task.Run(() => Query(query), token);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,15 @@ namespace Flow.Launcher.Plugin
|
|||
/// <param name="subTitle">Optional message subtitle</param>
|
||||
void ShowMsgError(string title, string subTitle = "");
|
||||
|
||||
/// <summary>
|
||||
/// Show the error message using Flow's standard error icon.
|
||||
/// </summary>
|
||||
/// <param name="title">Message title</param>
|
||||
/// <param name="buttonText">Message button content</param>
|
||||
/// <param name="buttonAction">Message button action</param>
|
||||
/// <param name="subTitle">Optional message subtitle</param>
|
||||
void ShowMsgErrorWithButton(string title, string buttonText, Action buttonAction, string subTitle = "");
|
||||
|
||||
/// <summary>
|
||||
/// Show the MainWindow when hiding
|
||||
/// </summary>
|
||||
|
|
@ -127,6 +136,27 @@ namespace Flow.Launcher.Plugin
|
|||
/// <param name="useMainWindowAsOwner">when true will use main windows as the owner</param>
|
||||
void ShowMsg(string title, string subTitle, string iconPath, bool useMainWindowAsOwner = true);
|
||||
|
||||
/// <summary>
|
||||
/// Show message box with button
|
||||
/// </summary>
|
||||
/// <param name="title">Message title</param>
|
||||
/// <param name="buttonText">Message button content</param>
|
||||
/// <param name="buttonAction">Message button action</param>
|
||||
/// <param name="subTitle">Message subtitle</param>
|
||||
/// <param name="iconPath">Message icon path (relative path to your plugin folder)</param>
|
||||
void ShowMsgWithButton(string title, string buttonText, Action buttonAction, string subTitle = "", string iconPath = "");
|
||||
|
||||
/// <summary>
|
||||
/// Show message box with button
|
||||
/// </summary>
|
||||
/// <param name="title">Message title</param>
|
||||
/// <param name="buttonText">Message button content</param>
|
||||
/// <param name="buttonAction">Message button action</param>
|
||||
/// <param name="subTitle">Message subtitle</param>
|
||||
/// <param name="iconPath">Message icon path (relative path to your plugin folder)</param>
|
||||
/// <param name="useMainWindowAsOwner">when true will use main windows as the owner</param>
|
||||
void ShowMsgWithButton(string title, string buttonText, Action buttonAction, string subTitle, string iconPath, bool useMainWindowAsOwner = true);
|
||||
|
||||
/// <summary>
|
||||
/// Open setting dialog
|
||||
/// </summary>
|
||||
|
|
@ -572,5 +602,28 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
/// <returns>The time taken to execute the method in milliseconds</returns>
|
||||
public Task<long> StopwatchLogInfoAsync(string className, string message, Func<Task> action, [CallerMemberName] string methodName = "");
|
||||
|
||||
/// <summary>
|
||||
/// Representing whether the application is using a dark theme
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
bool IsApplicationDarkTheme();
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when the actual theme of the application has changed. Currently, the plugin will continue to be subscribed even if it is turned off.
|
||||
/// </summary>
|
||||
event ActualApplicationThemeChangedEventHandler ActualApplicationThemeChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Get the user data directory of Flow Launcher.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string GetDataDirectory();
|
||||
|
||||
/// <summary>
|
||||
/// Get the log directory of Flow Launcher.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
string GetLogDirectory();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,4 +5,12 @@ GetWindowTextLength
|
|||
WM_KEYDOWN
|
||||
WM_KEYUP
|
||||
WM_SYSKEYDOWN
|
||||
WM_SYSKEYUP
|
||||
WM_SYSKEYUP
|
||||
|
||||
GetSystemMetrics
|
||||
EnumDisplayMonitors
|
||||
MonitorFromWindow
|
||||
GetMonitorInfo
|
||||
MONITORINFOEXW
|
||||
GetCursorPos
|
||||
MonitorFromPoint
|
||||
|
|
@ -57,7 +57,10 @@ namespace Flow.Launcher.Plugin
|
|||
/// for user on the plugin result. If autocomplete action for example is tab, pressing tab will have
|
||||
/// the default constructed autocomplete text (result's Title), or the text provided here if not empty.
|
||||
/// </summary>
|
||||
/// <remarks>When a value is not set, the <see cref="Title"/> will be used.</remarks>
|
||||
/// <remarks>
|
||||
/// When a value is not set, the <see cref="Title"/> will be used.
|
||||
/// Please include the action keyword prefix when necessary because Flow does not prepend it automatically.
|
||||
/// </remarks>
|
||||
public string AutoCompleteText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -257,6 +260,17 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
public bool ShowBadge { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// This holds the text which can be shown as a query suggestion.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// When a value is not set, the <see cref="Title"/> will be used.
|
||||
/// Do not include the action keyword prefix because Flow prepends it automatically.
|
||||
/// If the it does not start with the query text, it will not be shown as a suggestion.
|
||||
/// So make sure to set this value to start with the query text.
|
||||
/// </remarks>
|
||||
public string QuerySuggestionText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Run this result, asynchronously
|
||||
/// </summary>
|
||||
|
|
@ -308,6 +322,7 @@ namespace Flow.Launcher.Plugin
|
|||
AddSelectedCount = AddSelectedCount,
|
||||
RecordKey = RecordKey,
|
||||
ShowBadge = ShowBadge,
|
||||
QuerySuggestionText = QuerySuggestionText
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
using Windows.Win32;
|
||||
|
|
@ -7,13 +6,16 @@ using Windows.Win32.Foundation;
|
|||
using Windows.Win32.Graphics.Gdi;
|
||||
using Windows.Win32.UI.WindowsAndMessaging;
|
||||
|
||||
namespace Flow.Launcher.Infrastructure;
|
||||
namespace Flow.Launcher.Plugin.SharedModels;
|
||||
|
||||
/// <summary>
|
||||
/// Contains full information about a display monitor.
|
||||
/// Codes are edited from: <see href="https://github.com/Jack251970/DesktopWidgets3">.
|
||||
/// Inspired from: https://github.com/Jack251970/DesktopWidgets3.
|
||||
/// </summary>
|
||||
internal class MonitorInfo
|
||||
/// <remarks>
|
||||
/// Use this class to replace the System.Windows.Forms.Screen class which can cause possible System.PlatformNotSupportedException.
|
||||
/// </remarks>
|
||||
public class MonitorInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the display monitors (including invisible pseudo-monitors associated with the mirroring drivers).
|
||||
|
|
@ -23,14 +25,14 @@ internal class MonitorInfo
|
|||
{
|
||||
var monitorCount = PInvoke.GetSystemMetrics(SYSTEM_METRICS_INDEX.SM_CMONITORS);
|
||||
var list = new List<MonitorInfo>(monitorCount);
|
||||
var callback = new MONITORENUMPROC((HMONITOR monitor, HDC deviceContext, RECT* rect, LPARAM data) =>
|
||||
var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) =>
|
||||
{
|
||||
list.Add(new MonitorInfo(monitor, rect));
|
||||
return true;
|
||||
});
|
||||
var dwData = new LPARAM();
|
||||
var hdc = new HDC();
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, (RECT?)null, callback, dwData);
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData);
|
||||
if (!ok)
|
||||
{
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
|
||||
|
|
@ -43,11 +45,11 @@ internal class MonitorInfo
|
|||
/// </summary>
|
||||
/// <param name="hwnd">Window handle</param>
|
||||
/// <returns>The display monitor that is nearest to a given window, or null if no monitor is found.</returns>
|
||||
public static unsafe MonitorInfo GetNearestDisplayMonitor(HWND hwnd)
|
||||
public static unsafe MonitorInfo GetNearestDisplayMonitor(nint hwnd)
|
||||
{
|
||||
var nearestMonitor = PInvoke.MonitorFromWindow(hwnd, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST);
|
||||
var nearestMonitor = PInvoke.MonitorFromWindow(new(hwnd), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST);
|
||||
MonitorInfo nearestMonitorInfo = null;
|
||||
var callback = new MONITORENUMPROC((HMONITOR monitor, HDC deviceContext, RECT* rect, LPARAM data) =>
|
||||
var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) =>
|
||||
{
|
||||
if (monitor == nearestMonitor)
|
||||
{
|
||||
|
|
@ -58,7 +60,7 @@ internal class MonitorInfo
|
|||
});
|
||||
var dwData = new LPARAM();
|
||||
var hdc = new HDC();
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, (RECT?)null, callback, dwData);
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData);
|
||||
if (!ok)
|
||||
{
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
|
||||
|
|
@ -66,17 +68,75 @@ internal class MonitorInfo
|
|||
return nearestMonitorInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the primary display monitor (the one that contains the taskbar).
|
||||
/// </summary>
|
||||
/// <returns>The primary display monitor, or null if no monitor is found.</returns>
|
||||
public static unsafe MonitorInfo GetPrimaryDisplayMonitor()
|
||||
{
|
||||
var primaryMonitor = PInvoke.MonitorFromWindow(new HWND(nint.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY);
|
||||
MonitorInfo primaryMonitorInfo = null;
|
||||
var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) =>
|
||||
{
|
||||
if (monitor == primaryMonitor)
|
||||
{
|
||||
primaryMonitorInfo = new MonitorInfo(monitor, rect);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
var dwData = new LPARAM();
|
||||
var hdc = new HDC();
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData);
|
||||
if (!ok)
|
||||
{
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
|
||||
}
|
||||
return primaryMonitorInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the display monitor that contains the cursor.
|
||||
/// </summary>
|
||||
/// <returns>The display monitor that contains the cursor, or null if no monitor is found.</returns>
|
||||
public static unsafe MonitorInfo GetCursorDisplayMonitor()
|
||||
{
|
||||
if (!PInvoke.GetCursorPos(out var pt))
|
||||
{
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
|
||||
}
|
||||
var cursorMonitor = PInvoke.MonitorFromPoint(pt, MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST);
|
||||
MonitorInfo cursorMonitorInfo = null;
|
||||
var callback = new MONITORENUMPROC((monitor, deviceContext, rect, data) =>
|
||||
{
|
||||
if (monitor == cursorMonitor)
|
||||
{
|
||||
cursorMonitorInfo = new MonitorInfo(monitor, rect);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
var dwData = new LPARAM();
|
||||
var hdc = new HDC();
|
||||
bool ok = PInvoke.EnumDisplayMonitors(hdc, null, callback, dwData);
|
||||
if (!ok)
|
||||
{
|
||||
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
|
||||
}
|
||||
return cursorMonitorInfo;
|
||||
}
|
||||
|
||||
private readonly HMONITOR _monitor;
|
||||
|
||||
internal unsafe MonitorInfo(HMONITOR monitor, RECT* rect)
|
||||
{
|
||||
RectMonitor =
|
||||
Bounds =
|
||||
new Rect(new Point(rect->left, rect->top),
|
||||
new Point(rect->right, rect->bottom));
|
||||
_monitor = monitor;
|
||||
var info = new MONITORINFOEXW() { monitorInfo = new MONITORINFO() { cbSize = (uint)sizeof(MONITORINFOEXW) } };
|
||||
GetMonitorInfo(monitor, ref info);
|
||||
RectWork =
|
||||
WorkingArea =
|
||||
new Rect(new Point(info.monitorInfo.rcWork.left, info.monitorInfo.rcWork.top),
|
||||
new Point(info.monitorInfo.rcWork.right, info.monitorInfo.rcWork.bottom));
|
||||
Name = new string(info.szDevice.AsSpan()).Replace("\0", "").Trim();
|
||||
|
|
@ -93,7 +153,7 @@ internal class MonitorInfo
|
|||
/// <remarks>
|
||||
/// <note>If the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.</note>
|
||||
/// </remarks>
|
||||
public Rect RectMonitor { get; }
|
||||
public Rect Bounds { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the work area rectangle of the display monitor, expressed in virtual-screen coordinates.
|
||||
|
|
@ -101,15 +161,15 @@ internal class MonitorInfo
|
|||
/// <remarks>
|
||||
/// <note>If the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.</note>
|
||||
/// </remarks>
|
||||
public Rect RectWork { get; }
|
||||
public Rect WorkingArea { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets if the monitor is the the primary display monitor.
|
||||
/// Gets if the monitor is the primary display monitor.
|
||||
/// </summary>
|
||||
public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(IntPtr.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY);
|
||||
public bool IsPrimary => _monitor == PInvoke.MonitorFromWindow(new(nint.Zero), MONITOR_FROM_FLAGS.MONITOR_DEFAULTTOPRIMARY);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString() => $"{Name} {RectMonitor.Width}x{RectMonitor.Height}";
|
||||
public override string ToString() => $"{Name} {Bounds.Width}x{Bounds.Height}";
|
||||
|
||||
private static unsafe bool GetMonitorInfo(HMONITOR hMonitor, ref MONITORINFOEXW lpmi)
|
||||
{
|
||||
|
|
@ -76,5 +76,10 @@ namespace Flow.Launcher.Plugin
|
|||
/// Indicates whether the plugin is installed from a local path
|
||||
/// </summary>
|
||||
public bool IsFromLocalInstallPath => !string.IsNullOrEmpty(LocalInstallPath);
|
||||
|
||||
/// <summary>
|
||||
/// The minimum Flow Launcher version required for this plugin. Default is "".
|
||||
/// </summary>
|
||||
public string MinimumAppVersion { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
77
Flow.Launcher.Plugin/packages.lock.json
Normal file
77
Flow.Launcher.Plugin/packages.lock.json
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"version": 1,
|
||||
"dependencies": {
|
||||
"net9.0-windows7.0": {
|
||||
"Fody": {
|
||||
"type": "Direct",
|
||||
"requested": "[6.9.2, )",
|
||||
"resolved": "6.9.2",
|
||||
"contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
|
||||
},
|
||||
"JetBrains.Annotations": {
|
||||
"type": "Direct",
|
||||
"requested": "[2024.3.0, )",
|
||||
"resolved": "2024.3.0",
|
||||
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
||||
},
|
||||
"Microsoft.SourceLink.GitHub": {
|
||||
"type": "Direct",
|
||||
"requested": "[8.0.0, )",
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==",
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Tasks.Git": "8.0.0",
|
||||
"Microsoft.SourceLink.Common": "8.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Windows.CsWin32": {
|
||||
"type": "Direct",
|
||||
"requested": "[0.3.183, )",
|
||||
"resolved": "0.3.183",
|
||||
"contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
|
||||
"dependencies": {
|
||||
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
|
||||
"Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental"
|
||||
}
|
||||
},
|
||||
"PropertyChanged.Fody": {
|
||||
"type": "Direct",
|
||||
"requested": "[4.1.0, )",
|
||||
"resolved": "4.1.0",
|
||||
"contentHash": "6v+f9cI8YjnZH2WBHuOqWEAo8DFFNGFIdU8xD3AsL6fhV6Y8oAmVWd7XKk49t8DpeUBwhR/X+97+6Epvek0Y3A==",
|
||||
"dependencies": {
|
||||
"Fody": "6.6.4"
|
||||
}
|
||||
},
|
||||
"Microsoft.Build.Tasks.Git": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.SourceLink.Common": {
|
||||
"type": "Transitive",
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
|
||||
},
|
||||
"Microsoft.Windows.SDK.Win32Docs": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.1.42-alpha",
|
||||
"contentHash": "Z/9po23gUA9aoukirh2ItMU2ZS9++Js9Gdds9fu5yuMojDrmArvY2y+tq9985tR3cxFxpZO1O35Wjfo0khj5HA=="
|
||||
},
|
||||
"Microsoft.Windows.SDK.Win32Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "61.0.15-preview",
|
||||
"contentHash": "cysex3dazKtCPALCluC2XX3f5Aedy9H2pw5jb+TW5uas2rkem1Z7FRnbUrg2vKx0pk0Qz+4EJNr37HdYTEcvEQ=="
|
||||
},
|
||||
"Microsoft.Windows.WDK.Win32Metadata": {
|
||||
"type": "Transitive",
|
||||
"resolved": "0.12.8-experimental",
|
||||
"contentHash": "3n8R44/Z96Ly+ty4eYVJfESqbzvpw96lRLs3zOzyDmr1x1Kw7FNn5CyE416q+bZQV3e1HRuMUvyegMeRE/WedA==",
|
||||
"dependencies": {
|
||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
265
Flow.Launcher.Test/ChineseDetectionPerformanceTest.cs
Normal file
265
Flow.Launcher.Test/ChineseDetectionPerformanceTest.cs
Normal file
|
|
@ -0,0 +1,265 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Framework.Legacy;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using ToolGood.Words.Pinyin;
|
||||
|
||||
namespace Flow.Launcher.Test
|
||||
{
|
||||
/// <summary>
|
||||
/// Performance test comparing ContainsChinese() vs WordsHelper.HasChinese()
|
||||
///
|
||||
/// This test verifies:
|
||||
/// 1. Both methods produce identical results (correctness)
|
||||
/// 2. Performance characteristics of both implementations
|
||||
/// 3. Memory allocation patterns
|
||||
///
|
||||
/// The ContainsChinese() method uses optimized Unicode range checking with ReadOnlySpan
|
||||
/// while WordsHelper.HasChinese() uses the ToolGood.Words library implementation.
|
||||
/// </summary>
|
||||
[TestFixture]
|
||||
public class ChineseDetectionPerformanceTest
|
||||
{
|
||||
private readonly List<string> _testStrings = new()
|
||||
{
|
||||
// Pure English - should return false
|
||||
"Hello World",
|
||||
"Visual Studio Code",
|
||||
"Microsoft Office 2023",
|
||||
"Adobe Photoshop Creative Suite",
|
||||
"Google Chrome Browser Application",
|
||||
|
||||
// Pure Chinese - should return true
|
||||
"你好世界",
|
||||
"微软办公软件",
|
||||
"谷歌浏览器",
|
||||
"北京大学计算机科学与技术学院",
|
||||
"中华人民共和国国家发展和改革委员会",
|
||||
|
||||
// Mixed content - should return true
|
||||
"Hello 世界",
|
||||
"Visual Studio 代码编辑器",
|
||||
"QQ音乐 Music Player",
|
||||
"Windows 10 操作系统",
|
||||
"GitHub 代码仓库管理平台",
|
||||
|
||||
// Edge cases
|
||||
"",
|
||||
" ",
|
||||
"123456",
|
||||
"!@#$%^&*()",
|
||||
"café résumé naïve", // Accented characters (not Chinese)
|
||||
|
||||
// Long strings for performance testing
|
||||
"This is a very long English string that contains no Chinese characters but is designed to test performance with longer text content that might appear in file names or application descriptions",
|
||||
"这是一个非常长的中文字符串,包含了很多汉字,用来测试在处理较长中文文本时的性能表现,比如可能出现在文件名或应用程序描述中的文本内容",
|
||||
"This is a mixed 混合内容的字符串 that contains both English and Chinese characters 中英文混合 to test performance with 复杂的文本内容 in real-world scenarios 真实场景中的应用"
|
||||
};
|
||||
|
||||
[Test]
|
||||
public void ContainsChinese_CorrectnessTest()
|
||||
{
|
||||
// Verify ContainsChinese works correctly for known cases
|
||||
ClassicAssert.IsFalse(ContainsChinese("Hello World"), "Pure English should return false");
|
||||
ClassicAssert.IsTrue(ContainsChinese("你好世界"), "Pure Chinese should return true");
|
||||
ClassicAssert.IsTrue(ContainsChinese("Hello 世界"), "Mixed content should return true");
|
||||
ClassicAssert.IsFalse(ContainsChinese(""), "Empty string should return false");
|
||||
ClassicAssert.IsFalse(ContainsChinese("123456"), "Numbers should return false");
|
||||
ClassicAssert.IsFalse(ContainsChinese("café résumé"), "Accented characters should return false");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void WordsHelper_CorrectnessTest()
|
||||
{
|
||||
// Verify WordsHelper.HasChinese works correctly for known cases
|
||||
ClassicAssert.IsFalse(WordsHelper.HasChinese("Hello World"), "Pure English should return false");
|
||||
ClassicAssert.IsTrue(WordsHelper.HasChinese("你好世界"), "Pure Chinese should return true");
|
||||
ClassicAssert.IsTrue(WordsHelper.HasChinese("Hello 世界"), "Mixed content should return true");
|
||||
ClassicAssert.IsFalse(WordsHelper.HasChinese(""), "Empty string should return false");
|
||||
ClassicAssert.IsFalse(WordsHelper.HasChinese("123456"), "Numbers should return false");
|
||||
ClassicAssert.IsFalse(WordsHelper.HasChinese("café résumé"), "Accented characters should return false");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void BothMethods_ShouldProduceSameResults()
|
||||
{
|
||||
// Critical test: verify both methods produce identical results for all test cases
|
||||
foreach (var testString in _testStrings)
|
||||
{
|
||||
var wordsHelperResult = WordsHelper.HasChinese(testString);
|
||||
var containsChineseResult = ContainsChinese(testString);
|
||||
|
||||
ClassicAssert.AreEqual(wordsHelperResult, containsChineseResult,
|
||||
$"Results differ for string: '{testString}'. WordsHelper: {wordsHelperResult}, ContainsChinese: {containsChineseResult}");
|
||||
}
|
||||
|
||||
Console.WriteLine($"✓ Both methods produce identical results for all {_testStrings.Count} test cases");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PerformanceComparison_BasicBenchmark()
|
||||
{
|
||||
const int iterations = 1000000;
|
||||
|
||||
Console.WriteLine("=== CHINESE CHARACTER DETECTION PERFORMANCE TEST ===");
|
||||
Console.WriteLine($"Test iterations: {iterations:N0}");
|
||||
Console.WriteLine($"Test strings: {_testStrings.Count}");
|
||||
Console.WriteLine($"Total operations: {iterations * _testStrings.Count:N0}");
|
||||
Console.WriteLine();
|
||||
|
||||
// Warmup to ensure JIT compilation
|
||||
Console.WriteLine("Warming up...");
|
||||
for (int i = 0; i < 1000; i++)
|
||||
{
|
||||
foreach (var testString in _testStrings)
|
||||
{
|
||||
_ = ContainsChinese(testString);
|
||||
_ = WordsHelper.HasChinese(testString);
|
||||
}
|
||||
}
|
||||
|
||||
// Benchmark ContainsChinese method
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
GC.Collect();
|
||||
|
||||
var sw1 = System.Diagnostics.Stopwatch.StartNew();
|
||||
for (int i = 0; i < iterations; i++)
|
||||
{
|
||||
foreach (var testString in _testStrings)
|
||||
{
|
||||
_ = ContainsChinese(testString);
|
||||
}
|
||||
}
|
||||
sw1.Stop();
|
||||
|
||||
// Benchmark WordsHelper.HasChinese method
|
||||
GC.Collect();
|
||||
GC.WaitForPendingFinalizers();
|
||||
GC.Collect();
|
||||
|
||||
var sw2 = System.Diagnostics.Stopwatch.StartNew();
|
||||
for (int i = 0; i < iterations; i++)
|
||||
{
|
||||
foreach (var testString in _testStrings)
|
||||
{
|
||||
_ = WordsHelper.HasChinese(testString);
|
||||
}
|
||||
}
|
||||
sw2.Stop();
|
||||
|
||||
// Calculate and display results
|
||||
var containsChineseMs = sw1.Elapsed.TotalMilliseconds;
|
||||
var wordsHelperMs = sw2.Elapsed.TotalMilliseconds;
|
||||
var speedRatio = wordsHelperMs / containsChineseMs;
|
||||
var timeDifference = wordsHelperMs - containsChineseMs;
|
||||
|
||||
Console.WriteLine("RESULTS:");
|
||||
Console.WriteLine($"ContainsChinese(): {containsChineseMs:F3} ms");
|
||||
Console.WriteLine($"WordsHelper.HasChinese(): {wordsHelperMs:F3} ms");
|
||||
Console.WriteLine($"Time difference: {timeDifference:F3} ms");
|
||||
Console.WriteLine($"Speed improvement: {speedRatio:F2}x");
|
||||
Console.WriteLine($"Performance gain: {((speedRatio - 1) * 100):F1}%");
|
||||
Console.WriteLine();
|
||||
|
||||
if (speedRatio > 1.0)
|
||||
{
|
||||
Console.WriteLine($"✓ ContainsChinese() is {speedRatio:F2}x faster than WordsHelper.HasChinese()");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine($"⚠ WordsHelper.HasChinese() is {(1/speedRatio):F2}x faster than ContainsChinese()");
|
||||
}
|
||||
|
||||
// Test always passes - this is a measurement test
|
||||
ClassicAssert.IsTrue(true);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PerformanceComparison_ByStringType()
|
||||
{
|
||||
Console.WriteLine("=== PERFORMANCE BY STRING TYPE ===");
|
||||
|
||||
var categories = new Dictionary<string, List<string>>
|
||||
{
|
||||
["Pure English"] = _testStrings.Where(s => !ContainsChinese(s) && s.All(c => c <= 127)).ToList(),
|
||||
["Pure Chinese"] = _testStrings.Where(s => ContainsChinese(s) && s.All(c => IsChineseCharacter(c) || char.IsWhiteSpace(c))).ToList(),
|
||||
["Mixed Content"] = _testStrings.Where(s => ContainsChinese(s) && s.Any(c => c <= 127 && char.IsLetter(c))).ToList(),
|
||||
["Edge Cases"] = _testStrings.Where(s => string.IsNullOrWhiteSpace(s) || s.All(c => !char.IsLetter(c))).ToList()
|
||||
};
|
||||
|
||||
foreach (var category in categories)
|
||||
{
|
||||
if (category.Value.Count == 0) continue;
|
||||
|
||||
Console.WriteLine($"\n{category.Key} ({category.Value.Count} strings):");
|
||||
|
||||
var sample = category.Value.First();
|
||||
var displayText = sample.Length > 40 ? sample.Substring(0, 40) + "..." : sample;
|
||||
Console.WriteLine($" Sample: '{displayText}'");
|
||||
|
||||
const int categoryIterations = 5000;
|
||||
|
||||
// Test each method
|
||||
var sw1 = System.Diagnostics.Stopwatch.StartNew();
|
||||
for (int i = 0; i < categoryIterations; i++)
|
||||
{
|
||||
foreach (var str in category.Value)
|
||||
{
|
||||
_ = ContainsChinese(str);
|
||||
}
|
||||
}
|
||||
sw1.Stop();
|
||||
|
||||
var sw2 = System.Diagnostics.Stopwatch.StartNew();
|
||||
for (int i = 0; i < categoryIterations; i++)
|
||||
{
|
||||
foreach (var str in category.Value)
|
||||
{
|
||||
_ = WordsHelper.HasChinese(str);
|
||||
}
|
||||
}
|
||||
sw2.Stop();
|
||||
|
||||
var ratio = (double)sw2.ElapsedTicks / sw1.ElapsedTicks;
|
||||
Console.WriteLine($" Performance: ContainsChinese is {ratio:F2}x faster");
|
||||
}
|
||||
|
||||
ClassicAssert.IsTrue(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Optimized Chinese character detection using comprehensive CJK Unicode ranges
|
||||
/// This method uses ReadOnlySpan for better performance and covers all CJK character ranges
|
||||
/// </summary>
|
||||
private static bool ContainsChinese(ReadOnlySpan<char> text)
|
||||
{
|
||||
foreach (var c in text)
|
||||
{
|
||||
if (IsChineseCharacter(c))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if a character is a Chinese character using comprehensive Unicode ranges
|
||||
/// Covers CJK Unified Ideographs and all extension blocks
|
||||
/// </summary>
|
||||
private static bool IsChineseCharacter(char c)
|
||||
{
|
||||
return (c >= 0x4E00 && c <= 0x9FFF) || // CJK Unified Ideographs (most common Chinese characters)
|
||||
(c >= 0x3400 && c <= 0x4DBF) || // CJK Extension A
|
||||
(c >= 0x20000 && c <= 0x2A6DF) || // CJK Extension B
|
||||
(c >= 0x2A700 && c <= 0x2B73F) || // CJK Extension C
|
||||
(c >= 0x2B740 && c <= 0x2B81F) || // CJK Extension D
|
||||
(c >= 0x2B820 && c <= 0x2CEAF) || // CJK Extension E
|
||||
(c >= 0x2CEB0 && c <= 0x2EBEF) || // CJK Extension F
|
||||
(c >= 0xF900 && c <= 0xFAFF) || // CJK Compatibility Ideographs
|
||||
(c >= 0x2F800 && c <= 0x2FA1F); // CJK Compatibility Supplement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows10.0.19041.0</TargetFramework>
|
||||
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
|
||||
<ProjectGuid>{FF742965-9A80-41A5-B042-D6C7D3A21708}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
|
|
@ -48,13 +48,13 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Moq" Version="4.18.4" />
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="nunit" Version="4.3.2" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0">
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
57
Flow.Launcher.Test/TranslationMappingTest.cs
Normal file
57
Flow.Launcher.Test/TranslationMappingTest.cs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Framework.Legacy;
|
||||
|
||||
namespace Flow.Launcher.Test
|
||||
{
|
||||
[TestFixture]
|
||||
public class TranslationMappingTest
|
||||
{
|
||||
[Test]
|
||||
public void AddNewIndex_ShouldAddTranslatedIndexPlusLength()
|
||||
{
|
||||
var mapping = new TranslationMapping();
|
||||
mapping.AddNewIndex(5, 3);
|
||||
mapping.AddNewIndex(8, 2);
|
||||
|
||||
// 5+3=8, 8+2=10
|
||||
ClassicAssert.AreEqual(2, GetOriginalToTranslatedCount(mapping));
|
||||
ClassicAssert.AreEqual(8, GetOriginalToTranslatedAt(mapping, 0));
|
||||
ClassicAssert.AreEqual(10, GetOriginalToTranslatedAt(mapping, 1));
|
||||
}
|
||||
|
||||
[TestCase(0, 0)]
|
||||
[TestCase(2, 1)]
|
||||
[TestCase(3, 1)]
|
||||
[TestCase(5, 2)]
|
||||
[TestCase(6, 2)]
|
||||
public void MapToOriginalIndex_ShouldReturnExpectedIndex(int translatedIndex, int expectedOriginalIndex)
|
||||
{
|
||||
var mapping = new TranslationMapping();
|
||||
// a测试
|
||||
// a Ce Shi
|
||||
mapping.AddNewIndex(0, 1);
|
||||
mapping.AddNewIndex(2, 2);
|
||||
mapping.AddNewIndex(5, 3);
|
||||
|
||||
var result = mapping.MapToOriginalIndex(translatedIndex);
|
||||
ClassicAssert.AreEqual(expectedOriginalIndex, result);
|
||||
}
|
||||
|
||||
private static int GetOriginalToTranslatedCount(TranslationMapping mapping)
|
||||
{
|
||||
var field = typeof(TranslationMapping).GetField("_originalToTranslated", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
var list = (List<int>)field.GetValue(mapping);
|
||||
return list.Count;
|
||||
}
|
||||
|
||||
private static int GetOriginalToTranslatedAt(TranslationMapping mapping, int index)
|
||||
{
|
||||
var field = typeof(TranslationMapping).GetField("_originalToTranslated", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
var list = (List<int>)field.GetValue(mapping);
|
||||
return list[index];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -14,102 +14,102 @@
|
|||
<WindowChrome.WindowChrome>
|
||||
<WindowChrome CaptionHeight="32" ResizeBorderThickness="{x:Static SystemParameters.WindowResizeBorderThickness}" />
|
||||
</WindowChrome.WindowChrome>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition Height="80" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid>
|
||||
<StackPanel Grid.Row="0">
|
||||
<StackPanel>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button
|
||||
Grid.Column="4"
|
||||
Click="BtnCancel_OnClick"
|
||||
Style="{StaticResource TitleBarCloseButtonStyle}">
|
||||
<Path
|
||||
Width="46"
|
||||
Height="32"
|
||||
Data="M 18,11 27,20 M 18,20 27,11"
|
||||
Stroke="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}"
|
||||
StrokeThickness="1">
|
||||
<Path.Style>
|
||||
<Style TargetType="Path">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=IsActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" Value="False">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Path.Style>
|
||||
</Path>
|
||||
</Button>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="26 12 26 0">
|
||||
<StackPanel Grid.Row="0" Margin="0 0 0 12">
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Margin="0 0 0 0"
|
||||
FontSize="20"
|
||||
FontWeight="SemiBold"
|
||||
Text="{DynamicResource actionKeywordsTitle}"
|
||||
TextAlignment="Left" />
|
||||
</StackPanel>
|
||||
<StackPanel>
|
||||
<TextBlock
|
||||
FontSize="14"
|
||||
Text="{DynamicResource actionkeyword_tips}"
|
||||
TextAlignment="Left"
|
||||
TextWrapping="WrapWithOverflow" />
|
||||
</StackPanel>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Margin="0 18 0 0" Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource currentActionKeywords}" />
|
||||
<TextBlock
|
||||
x:Name="tbOldActionKeyword"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="14 10 10 10"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource Color05B}" />
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0 0 0 10" Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource newActionKeyword}" />
|
||||
<TextBox
|
||||
x:Name="tbAction"
|
||||
Width="105"
|
||||
Margin="10 10 15 10"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Border
|
||||
<Button
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Right"
|
||||
Click="BtnCancel_OnClick"
|
||||
Style="{StaticResource TitleBarCloseButtonStyle}">
|
||||
<Path
|
||||
Width="46"
|
||||
Height="32"
|
||||
Data="M 18,11 27,20 M 18,20 27,11"
|
||||
Stroke="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}"
|
||||
StrokeThickness="1">
|
||||
<Path.Style>
|
||||
<Style TargetType="Path">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=IsActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" Value="False">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Path.Style>
|
||||
</Path>
|
||||
</Button>
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="26 12 26 12"
|
||||
FontSize="20"
|
||||
FontWeight="SemiBold"
|
||||
Text="{DynamicResource actionKeywordsTitle}"
|
||||
TextAlignment="Left" />
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="26 0 26 10"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource actionkeyword_tips}"
|
||||
TextAlignment="Left"
|
||||
TextWrapping="WrapWithOverflow" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="26 0 10 0"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource currentActionKeywords}" />
|
||||
<TextBox
|
||||
x:Name="tbOldActionKeyword"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Margin="10 10 26 6"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource Color05B}"
|
||||
IsReadOnly="True"
|
||||
Text="List of old keyword(s)" />
|
||||
|
||||
<TextBlock
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Margin="26 6 10 12"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource newActionKeyword}" />
|
||||
<TextBox
|
||||
x:Name="tbAction"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"
|
||||
Margin="10 6 26 10"
|
||||
VerticalAlignment="Center" />
|
||||
|
||||
<Border
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="0 10 0 0"
|
||||
Background="{DynamicResource PopupButtonAreaBGColor}"
|
||||
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
|
||||
BorderThickness="0 1 0 0">
|
||||
|
|
@ -117,15 +117,15 @@
|
|||
<Button
|
||||
x:Name="btnCancel"
|
||||
Width="145"
|
||||
Height="30"
|
||||
Margin="10 0 5 0"
|
||||
Height="38"
|
||||
Margin="10 0 10 0"
|
||||
Click="BtnCancel_OnClick"
|
||||
Content="{DynamicResource cancel}" />
|
||||
<Button
|
||||
x:Name="btnDone"
|
||||
Width="145"
|
||||
Height="30"
|
||||
Margin="5 0 10 0"
|
||||
Height="38"
|
||||
Margin="10 0 10 0"
|
||||
Click="btnDone_OnClick"
|
||||
Style="{StaticResource AccentButtonStyle}">
|
||||
<TextBlock x:Name="lblAdd" Text="{DynamicResource done}" />
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@ namespace Flow.Launcher
|
|||
|
||||
private void ActionKeyword_OnLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
tbOldActionKeyword.Text = string.Join(Query.ActionKeywordSeparator, _plugin.Metadata.ActionKeywords.ToArray());
|
||||
tbOldActionKeyword.Text = string.Join(Query.ActionKeywordSeparator, _plugin.Metadata.ActionKeywords);
|
||||
tbAction.Text = tbOldActionKeyword.Text;
|
||||
tbAction.SelectAll();
|
||||
tbAction.Focus();
|
||||
}
|
||||
|
||||
|
|
@ -33,38 +35,39 @@ namespace Flow.Launcher
|
|||
{
|
||||
var oldActionKeywords = _plugin.Metadata.ActionKeywords;
|
||||
|
||||
var newActionKeywords = tbAction.Text.Split(Query.ActionKeywordSeparator).ToList();
|
||||
newActionKeywords.RemoveAll(string.IsNullOrEmpty);
|
||||
newActionKeywords = newActionKeywords.Distinct().ToList();
|
||||
var newActionKeywords = tbAction.Text.Split(Query.ActionKeywordSeparator)
|
||||
.Where(s => !string.IsNullOrEmpty(s))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
newActionKeywords = newActionKeywords.Count > 0 ? newActionKeywords : new() { Query.GlobalPluginWildcardSign };
|
||||
|
||||
var addedActionKeywords = newActionKeywords.Except(oldActionKeywords).ToList();
|
||||
var removedActionKeywords = oldActionKeywords.Except(newActionKeywords).ToList();
|
||||
if (!addedActionKeywords.Any(App.API.ActionKeywordAssigned))
|
||||
|
||||
if (addedActionKeywords.Any(App.API.ActionKeywordAssigned))
|
||||
{
|
||||
if (oldActionKeywords.Count != newActionKeywords.Count)
|
||||
{
|
||||
ReplaceActionKeyword(_plugin.Metadata.ID, removedActionKeywords, addedActionKeywords);
|
||||
return;
|
||||
}
|
||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsHasBeenAssigned"));
|
||||
return;
|
||||
}
|
||||
|
||||
var sortedOldActionKeywords = oldActionKeywords.OrderBy(s => s).ToList();
|
||||
var sortedNewActionKeywords = newActionKeywords.OrderBy(s => s).ToList();
|
||||
if (oldActionKeywords.Count != newActionKeywords.Count)
|
||||
{
|
||||
ReplaceActionKeyword(_plugin.Metadata.ID, removedActionKeywords, addedActionKeywords);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sortedOldActionKeywords.SequenceEqual(sortedNewActionKeywords))
|
||||
{
|
||||
// User just changes the sequence of action keywords
|
||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsSameAsOld"));
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplaceActionKeyword(_plugin.Metadata.ID, removedActionKeywords, addedActionKeywords);
|
||||
}
|
||||
var sortedOldActionKeywords = oldActionKeywords.OrderBy(s => s).ToList();
|
||||
var sortedNewActionKeywords = newActionKeywords.OrderBy(s => s).ToList();
|
||||
|
||||
if (sortedOldActionKeywords.SequenceEqual(sortedNewActionKeywords))
|
||||
{
|
||||
// User just changes the sequence of action keywords
|
||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsSameAsOld"));
|
||||
}
|
||||
else
|
||||
{
|
||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsHasBeenAssigned"));
|
||||
ReplaceActionKeyword(_plugin.Metadata.ID, removedActionKeywords, addedActionKeywords);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ using Flow.Launcher.Infrastructure;
|
|||
using Flow.Launcher.Infrastructure.Http;
|
||||
using Flow.Launcher.Infrastructure.Image;
|
||||
using Flow.Launcher.Infrastructure.Logger;
|
||||
using Flow.Launcher.Infrastructure.DialogJump;
|
||||
using Flow.Launcher.Infrastructure.Storage;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin;
|
||||
|
|
@ -186,6 +187,14 @@ namespace Flow.Launcher
|
|||
Current.Resources["SettingWindowFont"] = new FontFamily(_settings.SettingWindowFont);
|
||||
Current.Resources["ContentControlThemeFontFamily"] = new FontFamily(_settings.SettingWindowFont);
|
||||
|
||||
Notification.Install();
|
||||
|
||||
// Enable Win32 dark mode if the system is in dark mode before creating all windows
|
||||
Win32Helper.EnableWin32DarkMode(_settings.ColorScheme);
|
||||
|
||||
// Initialize language before portable clean up since it needs translations
|
||||
await Ioc.Default.GetRequiredService<Internationalization>().InitializeLanguageAsync();
|
||||
|
||||
Ioc.Default.GetRequiredService<Portable>().PreStartCleanUpAfterPortabilityUpdate();
|
||||
|
||||
API.LogInfo(ClassName, "Begin Flow Launcher startup ----------------------------------------------------");
|
||||
|
|
@ -211,8 +220,8 @@ namespace Flow.Launcher
|
|||
|
||||
await PluginManager.InitializePluginsAsync();
|
||||
|
||||
// Change language after all plugins are initialized because we need to update plugin title based on their api
|
||||
await Ioc.Default.GetRequiredService<Internationalization>().InitializeLanguageAsync();
|
||||
// Update plugin titles after plugins are initialized with their api instances
|
||||
Internationalization.UpdatePluginMetadataTranslations();
|
||||
|
||||
await imageLoadertask;
|
||||
|
||||
|
|
@ -228,12 +237,16 @@ namespace Flow.Launcher
|
|||
// Initialize theme for main window
|
||||
Ioc.Default.GetRequiredService<Theme>().ChangeTheme();
|
||||
|
||||
DialogJump.InitializeDialogJump(PluginManager.GetDialogJumpExplorers(), PluginManager.GetDialogJumpDialogs());
|
||||
DialogJump.SetupDialogJump(_settings.EnableDialogJump);
|
||||
|
||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||
|
||||
RegisterExitEvents();
|
||||
|
||||
AutoStartup();
|
||||
AutoUpdates();
|
||||
AutoPluginUpdates();
|
||||
|
||||
API.SaveAppAllSettings();
|
||||
API.LogInfo(ClassName, "End Flow Launcher startup ----------------------------------------------------");
|
||||
|
|
@ -246,7 +259,7 @@ namespace Flow.Launcher
|
|||
/// Check startup only for Release
|
||||
/// </summary>
|
||||
[Conditional("RELEASE")]
|
||||
private void AutoStartup()
|
||||
private static void AutoStartup()
|
||||
{
|
||||
// we try to enable auto-startup on first launch, or reenable if it was removed
|
||||
// but the user still has the setting set
|
||||
|
|
@ -261,13 +274,13 @@ namespace Flow.Launcher
|
|||
// but if it fails (permissions, etc) then don't keep retrying
|
||||
// this also gives the user a visual indication in the Settings widget
|
||||
_settings.StartFlowLauncherOnSystemStartup = false;
|
||||
API.ShowMsg(API.GetTranslation("setAutoStartFailed"), e.Message);
|
||||
API.ShowMsgError(API.GetTranslation("setAutoStartFailed"), e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Conditional("RELEASE")]
|
||||
private void AutoUpdates()
|
||||
private static void AutoUpdates()
|
||||
{
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
|
|
@ -284,6 +297,38 @@ namespace Flow.Launcher
|
|||
});
|
||||
}
|
||||
|
||||
[Conditional("RELEASE")]
|
||||
private static void AutoPluginUpdates()
|
||||
{
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
if (_settings.AutoUpdatePlugins)
|
||||
{
|
||||
// check plugin updates every 5 hour
|
||||
var timer = new PeriodicTimer(TimeSpan.FromHours(5));
|
||||
await PluginInstaller.CheckForPluginUpdatesAsync((plugins) =>
|
||||
{
|
||||
Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
var pluginUpdateWindow = new PluginUpdateWindow(plugins);
|
||||
pluginUpdateWindow.ShowDialog();
|
||||
});
|
||||
});
|
||||
|
||||
while (await timer.WaitForNextTickAsync())
|
||||
// check updates on startup
|
||||
await PluginInstaller.CheckForPluginUpdatesAsync((plugins) =>
|
||||
{
|
||||
Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
var pluginUpdateWindow = new PluginUpdateWindow(plugins);
|
||||
pluginUpdateWindow.ShowDialog();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Register Events
|
||||
|
|
@ -375,6 +420,7 @@ namespace Flow.Launcher
|
|||
// since some resources owned by the thread need to be disposed.
|
||||
_mainWindow?.Dispatcher.Invoke(_mainWindow.Dispose);
|
||||
_mainVM?.Dispose();
|
||||
DialogJump.Dispose();
|
||||
}
|
||||
|
||||
API.LogInfo(ClassName, "End Flow Launcher dispose ----------------------------------------------------");
|
||||
|
|
|
|||
|
|
@ -33,15 +33,39 @@ public class QuerySuggestionBoxConverter : IMultiValueConverter
|
|||
{
|
||||
var selectedResult = selectedItem.Result;
|
||||
var selectedResultActionKeyword = string.IsNullOrEmpty(selectedResult.ActionKeywordAssigned) ? "" : selectedResult.ActionKeywordAssigned + " ";
|
||||
var selectedResultPossibleSuggestion = selectedResultActionKeyword + selectedResult.Title;
|
||||
|
||||
if (!selectedResultPossibleSuggestion.StartsWith(queryText, StringComparison.CurrentCultureIgnoreCase))
|
||||
string selectedResultPossibleSuggestion = null;
|
||||
|
||||
// Firstly check if the result has QuerySuggestionText
|
||||
if (!string.IsNullOrEmpty(selectedResult.QuerySuggestionText))
|
||||
{
|
||||
selectedResultPossibleSuggestion = selectedResultActionKeyword + selectedResult.QuerySuggestionText;
|
||||
|
||||
// If this QuerySuggestionText does not start with the queryText, set it to null
|
||||
if (!selectedResultPossibleSuggestion.StartsWith(queryText, StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
selectedResultPossibleSuggestion = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Then check Title as suggestion
|
||||
if (string.IsNullOrEmpty(selectedResultPossibleSuggestion))
|
||||
{
|
||||
selectedResultPossibleSuggestion = selectedResultActionKeyword + selectedResult.Title;
|
||||
|
||||
// If this QuerySuggestionText does not start with the queryText, set it to null
|
||||
if (!selectedResultPossibleSuggestion.StartsWith(queryText, StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
selectedResultPossibleSuggestion = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(selectedResultPossibleSuggestion))
|
||||
return string.Empty;
|
||||
|
||||
|
||||
// For AutocompleteQueryCommand.
|
||||
// When user typed lower case and result title is uppercase, we still want to display suggestion
|
||||
selectedItem.QuerySuggestionText = queryText + selectedResultPossibleSuggestion.Substring(queryText.Length);
|
||||
selectedItem.QuerySuggestionText = string.Concat(queryText, selectedResultPossibleSuggestion.AsSpan(queryText.Length));
|
||||
|
||||
// Check if Text will be larger than our QueryTextBox
|
||||
Typeface typeface = new Typeface(queryTextBox.FontFamily, queryTextBox.FontStyle, queryTextBox.FontWeight, queryTextBox.FontStretch);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows10.0.19041.0</TargetFramework>
|
||||
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
|
||||
<UseWPF>true</UseWPF>
|
||||
<UseWindowsForms>false</UseWindowsForms>
|
||||
<StartupObject>Flow.Launcher.App</StartupObject>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
|
||||
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
|
@ -38,6 +39,52 @@
|
|||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="RemoveUnnecessaryRuntimesAfterBuild" AfterTargets="Build">
|
||||
<RemoveDir Directories="$(OutputPath)runtimes\browser-wasm;
|
||||
$(OutputPath)runtimes\linux-arm;
|
||||
$(OutputPath)runtimes\linux-arm64;
|
||||
$(OutputPath)runtimes\linux-armel;
|
||||
$(OutputPath)runtimes\linux-mips64;
|
||||
$(OutputPath)runtimes\linux-musl-arm;
|
||||
$(OutputPath)runtimes\linux-musl-arm64;
|
||||
$(OutputPath)runtimes\linux-musl-x64;
|
||||
$(OutputPath)runtimes\linux-musl-s390x;
|
||||
$(OutputPath)runtimes\linux-ppc64le;
|
||||
$(OutputPath)runtimes\linux-s390x;
|
||||
$(OutputPath)runtimes\linux-x64;
|
||||
$(OutputPath)runtimes\linux-x86;
|
||||
$(OutputPath)runtimes\maccatalyst-arm64;
|
||||
$(OutputPath)runtimes\maccatalyst-x64;
|
||||
$(OutputPath)runtimes\osx;
|
||||
$(OutputPath)runtimes\osx-arm64;
|
||||
$(OutputPath)runtimes\osx-x64;
|
||||
$(OutputPath)runtimes\win-arm;
|
||||
$(OutputPath)runtimes\win-arm64;"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="RemoveUnnecessaryRuntimesAfterPublish" AfterTargets="Publish">
|
||||
<RemoveDir Directories="$(PublishDir)runtimes\browser-wasm;
|
||||
$(PublishDir)runtimes\linux-arm;
|
||||
$(PublishDir)runtimes\linux-arm64;
|
||||
$(PublishDir)runtimes\linux-armel;
|
||||
$(PublishDir)runtimes\linux-mips64;
|
||||
$(PublishDir)runtimes\linux-musl-arm;
|
||||
$(PublishDir)runtimes\linux-musl-arm64;
|
||||
$(PublishDir)runtimes\linux-musl-x64;
|
||||
$(PublishDir)runtimes\linux-musl-s390x;
|
||||
$(PublishDir)runtimes\linux-ppc64le;
|
||||
$(PublishDir)runtimes\linux-s390x;
|
||||
$(PublishDir)runtimes\linux-x64;
|
||||
$(PublishDir)runtimes\linux-x86;
|
||||
$(PublishDir)runtimes\maccatalyst-arm64;
|
||||
$(PublishDir)runtimes\maccatalyst-x64;
|
||||
$(PublishDir)runtimes\osx;
|
||||
$(PublishDir)runtimes\osx-arm64;
|
||||
$(PublishDir)runtimes\osx-x64;
|
||||
$(PublishDir)runtimes\win-arm;
|
||||
$(PublishDir)runtimes\win-arm64;"/>
|
||||
</Target>
|
||||
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Remove="App.xaml" />
|
||||
</ItemGroup>
|
||||
|
|
@ -77,7 +124,7 @@
|
|||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Segoe Fluent Icons.ttf">
|
||||
<Content Include="Resources\SegoeFluentIcons.ttf">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
|
@ -85,25 +132,27 @@
|
|||
<ItemGroup>
|
||||
<PackageReference Include="ChefKeys" Version="0.1.2" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||
<PackageReference Include="Fody" Version="6.5.5">
|
||||
<PackageReference Include="Fody" Version="6.9.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
||||
<!-- Do not upgrade Microsoft.Extensions.DependencyInjection and Microsoft.Extensions.Hosting since we are .Net7.0 -->
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
|
||||
<PackageReference Include="MdXaml" Version="1.27.0" />
|
||||
<PackageReference Include="MdXaml.AnimatedGif" Version="1.27.0" />
|
||||
<PackageReference Include="MdXaml.Html" Version="1.27.0" />
|
||||
<PackageReference Include="MdXaml.Plugins" Version="1.27.0" />
|
||||
<PackageReference Include="MdXaml.Svg" Version="1.27.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.7" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.7" />
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
|
||||
<!-- ModernWpfUI v0.9.5 introduced WinRT changes that causes Notification platform unavailable error on some machines -->
|
||||
<!-- https://github.com/Flow-Launcher/Flow.Launcher/issues/1772#issuecomment-1502440801 -->
|
||||
<PackageReference Include="ModernWpfUI" Version="0.9.4" />
|
||||
<PackageReference Include="NHotkey.Wpf" Version="3.0.0" />
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="3.4.0">
|
||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
||||
<PackageReference Include="TaskScheduler" Version="2.12.1" />
|
||||
<PackageReference Include="VirtualizingWrapPanel" Version="2.1.1" />
|
||||
<PackageReference Include="TaskScheduler" Version="2.12.2" />
|
||||
<PackageReference Include="VirtualizingWrapPanel" Version="2.3.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -122,6 +171,9 @@
|
|||
<None Update="Resources\dev.ico">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Update="Resources\double_pinyin.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
|
||||
|
|
@ -130,7 +182,6 @@
|
|||
|
||||
<Target Name="RemoveDuplicateAnalyzers" BeforeTargets="CoreCompile">
|
||||
<!-- Work around https://github.com/dotnet/wpf/issues/6792 -->
|
||||
|
||||
<ItemGroup>
|
||||
<FilteredAnalyzer Include="@(Analyzer->Distinct())" />
|
||||
<Analyzer Remove="@(Analyzer)" />
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
using Flow.Launcher.Infrastructure.Hotkey;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using System;
|
||||
using NHotkey;
|
||||
using NHotkey.Wpf;
|
||||
using Flow.Launcher.ViewModel;
|
||||
using System;
|
||||
using ChefKeys;
|
||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Flow.Launcher.Infrastructure.Hotkey;
|
||||
using Flow.Launcher.Infrastructure.DialogJump;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.ViewModel;
|
||||
using NHotkey;
|
||||
using NHotkey.Wpf;
|
||||
|
||||
namespace Flow.Launcher.Helper;
|
||||
|
||||
|
|
@ -22,6 +23,10 @@ internal static class HotKeyMapper
|
|||
_settings = Ioc.Default.GetService<Settings>();
|
||||
|
||||
SetHotkey(_settings.Hotkey, OnToggleHotkey);
|
||||
if (_settings.EnableDialogJump)
|
||||
{
|
||||
SetHotkey(_settings.DialogJumpHotkey, DialogJump.OnToggleHotkey);
|
||||
}
|
||||
LoadCustomPluginHotkey();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System.Collections.ObjectModel;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
|
|
@ -110,7 +110,8 @@ namespace Flow.Launcher
|
|||
SelectPrevItemHotkey,
|
||||
SelectPrevItemHotkey2,
|
||||
SelectNextItemHotkey,
|
||||
SelectNextItemHotkey2
|
||||
SelectNextItemHotkey2,
|
||||
DialogJumpHotkey,
|
||||
}
|
||||
|
||||
// We can initialize settings in static field because it has been constructed in App constuctor
|
||||
|
|
@ -142,6 +143,7 @@ namespace Flow.Launcher
|
|||
HotkeyType.SelectPrevItemHotkey2 => _settings.SelectPrevItemHotkey2,
|
||||
HotkeyType.SelectNextItemHotkey => _settings.SelectNextItemHotkey,
|
||||
HotkeyType.SelectNextItemHotkey2 => _settings.SelectNextItemHotkey2,
|
||||
HotkeyType.DialogJumpHotkey => _settings.DialogJumpHotkey,
|
||||
_ => throw new System.NotImplementedException("Hotkey type not set")
|
||||
};
|
||||
}
|
||||
|
|
@ -201,6 +203,9 @@ namespace Flow.Launcher
|
|||
case HotkeyType.SelectNextItemHotkey2:
|
||||
_settings.SelectNextItemHotkey2 = value;
|
||||
break;
|
||||
case HotkeyType.DialogJumpHotkey:
|
||||
_settings.DialogJumpHotkey = value;
|
||||
break;
|
||||
default:
|
||||
throw new System.NotImplementedException("Hotkey type not set");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">فشل في تهيئة الإضافات</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">الإضافات: {0} - فشل في التحميل وسيتم تعطيلها، يرجى الاتصال بمطور الإضافة للحصول على المساعدة</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">فشل في تسجيل مفتاح التشغيل السريع "{0}". قد يكون المفتاح مستخدمًا من قبل برنامج آخر. قم بتغيير المفتاح، أو قم بإغلاق البرنامج الآخر.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">دائمًا ابدأ الكتابة بوضع الإنجليزية</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">تغيير مؤقت لطريقة الإدخال إلى وضع الإنجليزية عند تنشيط Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">التحديث التلقائي</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">اختر</system:String>
|
||||
<system:String x:Key="hideOnStartup">إخفاء Flow Launcher عند بدء التشغيل</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">يتم إخفاء نافذة بحث Flow Launcher في العلبة بعد بدء التشغيل.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">منخفضة</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">عادية</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">البحث باستخدام Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">السماح باستخدام Pinyin للبحث. Pinyin هو نظام التهجئة الروماني القياسي لترجمة الصينية.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">دائمًا معاينة</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">فتح لوحة المعاينة دائمًا عند تنشيط Flow. اضغط على {0} للتبديل بين المعاينة وعدمها.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">تأثير الظل غير مسموح به بينما يتم تمكين تأثير التمويه في السمة الحالية</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">فتح</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">البحث عن إضافة</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">لا توجد تحديثات متاح</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">جميع الإضافات محدث</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">السمة</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">مفتاح الاختصار</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">بروكسي HTTP</system:String>
|
||||
|
|
@ -549,6 +616,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">تحديث الملفات</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">وصف التحديث</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">تخطي</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">مرحبًا بك في Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Nepodařilo se zaregistrovat hotkey "{0}". Klávesová zkratka může být používána jiným programem. Změňte na jinou klávesu nebo ukončíte jiný program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Vždy spouštět psaní v anglickém rozvržení klávesnice</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Dočasně změní metodu vstupu do angličtiny při zobrazení Flow Launcher.</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatické aktualizace</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Vybrat</system:String>
|
||||
<system:String x:Key="hideOnStartup">Skrýt Flow Launcher při spuštění</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Vyhledávání pomocí pchin-jin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Umožňuje vyhledávání pomocí pchin-jin. Pchin-jin je systém zápisu čínského jazyka pomocí písmen latinky.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Vždy zobrazit náhled</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Při aktivaci služby Flow vždy otevřete panel náhledu. Stisknutím klávesy {0} přepnete náhled.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Stínový efekt není povolen, pokud je aktivní efekt rozostření</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Otevřít</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Vyhledat plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Nejsou dostupné žádné aktualizace</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Všechny pluginy jsou aktuální</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Motiv</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Klávesová zkratka</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ Pokud před zkratku při zadávání přidáte znak "@", bude odpovíd
|
|||
<system:String x:Key="update_flowlauncher_update_files">Aktualizovat soubory</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Aktualizovat popis</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Přeskočit</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Vítejte v Flow Launcheru</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Always Start Typing in English Mode</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporarily change your input method to English mode when activating Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Autoopdatering</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Vælg</system:String>
|
||||
<system:String x:Key="hideOnStartup">Skjul Flow Launcher ved opstart</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Skyggeeffekt er ikke tilladt, når det aktuelle tema har sløringseffekt aktiveret</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Åben</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Genvejstast</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">Opdatereringsfiler</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opdateringsbeskrivelse</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Welcome to Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Plug-ins können nicht initialisiert werden</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plug-ins: {0} - können nicht geladen werden und wird deaktiviert, bitte kontaktieren Sie den Ersteller des Plug-ins für Hilfe</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Bitte versuchen Sie es erneut</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Hotkey "{0}" konnte nicht registriert werden. Der Hotkey ist möglicherweise von einem anderen Programm in Verwendung. Wechseln Sie zu einem anderen Hotkey oder beenden Sie das andere Programm.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Registrierung des Hotkeys "{0}" konnte nicht aufgehoben werden. Bitte versuchen Sie es erneut oder lesen Sie das Log für Details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Tippen immer im englischen Modus starten</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Ändern Sie Ihre Eingabemethode temporär in den englischen Modus, wenn Sie Flow aktivieren.</system:String>
|
||||
<system:String x:Key="autoUpdates">Auto-Update</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Auswählen</system:String>
|
||||
<system:String x:Key="hideOnStartup">Flow Launcher beim Start ausblenden</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher-Suchfenster wird nach dem Start in der Taskleiste ausgeblendet.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Gering</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regelmäßig</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Suche mit Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Ermöglicht die Verwendung von Pinyin für die Suche. Pinyin ist das Standardsystem der romanisierten Schreibweise für die Übersetzung von chinesischen Texten.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Double Pinyin verwenden</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin-Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Immer Vorschau</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Vorschau-Panel immer öffnen, wenn Flow aktiviert ist. Drücken Sie {0}, um Vorschau umzuschalten.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Schatteneffekt ist nicht erlaubt, während das aktuelle Theme den Unschärfe-Effekt aktiviert hat</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Öffnen</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Vorherige koreanische IME verwenden</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Sie können die Einstellungen des vorherigen koreanischen IME direkt von hier aus ändern</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Koreanische IME-Einstellung konnte nicht geändert werden</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Homepage</system:String>
|
||||
<system:String x:Key="homePageToolTip">Ergebnisse der Homepage zeigen, wenn Abfragetext leer ist.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Historie-Ergebnisse auf Homepage zeigen</system:String>
|
||||
|
|
@ -140,8 +176,10 @@
|
|||
<system:String x:Key="showAtTopmostToolTip">Setzt die Einstellung 'Immer im Vordergrund' anderer Programme außer Kraft und zeigt Flow in der vordersten Position an.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Restart after modifying plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Unbekannte Quellwarnung zeigen</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Plug-ins automatisch aktualisieren</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Plug-in suchen</system:String>
|
||||
|
|
@ -180,7 +218,7 @@
|
|||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plug-ins: {0} - Plug-in-Einstellungsdateien können nicht entfernt werden, bitte entfernen Sie diese manuell</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheTitle">Plug-in-Cache kann nicht entfernt werden</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheMessage">Plug-ins: {0} - Plug-in-Cache-Dateien können nicht entfernt werden, bitte entfernen Sie diese manuell</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} modified already</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} bereits modifiziert</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyMessage">Please restart Flow before making any further changes</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">Fail to install {0}</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||
|
|
@ -203,26 +241,32 @@
|
|||
<system:String x:Key="LabelUpdateToolTip">Neues Update ist verfügbar</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">Fehler bei Installation des Plug-ins</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">Fehler bei Deinstallation des Plug-ins</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Error updating plugin</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Fehler bei Aktualisierung des Plug-ins</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">Plug-in-Einstellungen beibehalten</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">Möchten Sie die Einstellungen des Plug-ins für die nächste Nutzung beibehalten?</system:String>
|
||||
<system:String x:Key="InstallSuccessNoRestart">Plug-in {0} erfolgreich installiert. Bitte starten Sie Flow neu.</system:String>
|
||||
<system:String x:Key="UninstallSuccessNoRestart">Plug-in {0} erfolgreich deinstalliert. Bitte starten Sie Flow neu.</system:String>
|
||||
<system:String x:Key="UpdateSuccessNoRestart">Plug-in {0} erfolgreich aktualisiert. Bitte starten Sie Flow neu.</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Plugin install</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Plug-in-Installation</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} von {1} {2}{2}Möchten Sie dieses Plug-in installieren?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Plugin uninstall</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Plug-in-Deinstallation</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} von {1} {2}{2}Möchten Sie dieses Plug-in deinstallieren?</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Plug-in-Update</system:String>
|
||||
<system:String x:Key="UpdatePromptSubtitle">{0} von {1} {2}{2}Möchten Sie dieses Plugin aktualisieren?</system:String>
|
||||
<system:String x:Key="DownloadingPlugin">Plug-in wird heruntergeladen</system:String>
|
||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">Installation aus unbekannter Quelle</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is from an unknown source and it may contain potential risks!{0}{0}Please ensure you understand where this plugin is from and that it is safe.{0}{0}Would you like to continue still?{0}{0}(You can switch off this warning in general section of setting window)</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip-Dateien</system:String>
|
||||
<system:String x:Key="SelectZipFile">Bitte wählen Sie eine Zip-Datei aus</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Plug-in aus lokalem Pfad installieren</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Kein Update verfügbar</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Alle Plug-ins sind auf dem neuesten Stand</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plug-in-Updates verfügbar</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Plug-ins aktualisieren</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Plug-in-Updates überprüfen</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plug-ins sind erfolgreich aktualisiert. Bitte starten Sie Flow neu.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Theme</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Platzhaltertext ändern. Eingabe leer wird verwendet: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Festgelegte Fenstergröße</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Die Fenstergröße ist durch Ziehen nicht anpassbar.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Hotkey</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Ergebnis-Badges zeigen</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Für unterstützte Plug-ins werden Badges zur besseren Unterscheidung angezeigt.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Ergebnis-Badges nur für globale Abfrage zeigen</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Badges nur für globale Abfrageergebnisse zeigen</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Linksklick oder Enter-Taste</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Rechtsklick</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Vollständigen Pfad in Dateinamensbox ausfüllen</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Vollständigen Pfad in Dateinamensbox ausfüllen und öffnen</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Verzeichnis in Pfadbox ausfüllen</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP-Proxy</system:String>
|
||||
|
|
@ -466,14 +533,14 @@
|
|||
<system:String x:Key="customeQueryHotkeyTips">Drücken Sie einen benutzerdefinierten Hotkey, um Flow Launcher zu öffnen und die spezifizierte Abfrage automatisch einzugeben.</system:String>
|
||||
<system:String x:Key="preview">Vorschau</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Hotkey ist nicht verfügbar, bitte wählen Sie einen neuen Hotkey aus</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Hotkey is invalid</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Hotkey ist ungültig</system:String>
|
||||
<system:String x:Key="update">Aktualisieren</system:String>
|
||||
<system:String x:Key="hotkeyRegTitle">Bindung Hotkey</system:String>
|
||||
<system:String x:Key="hotkeyUnavailable">Aktueller Hotkey ist nicht verfügbar.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableUneditable">Dieser Hotkey ist für "{0}" reserviert und kann nicht verwendet werden. Bitte wählen Sie einen anderen Hotkey.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableEditable">Dieser Hotkey ist bereits in Verwendung von "{0}". Wenn Sie "Überschreiben" drücken, wird dieser aus "{0}" entfernt.</system:String>
|
||||
<system:String x:Key="hotkeyRegGuide">Drücken Sie die Tasten, die Sie für diese Funktion verwenden möchten.</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Hotkey und Aktions-Schlüsselwort sind leer</system:String>
|
||||
|
||||
<!-- Custom Query Shortcut Dialog -->
|
||||
<system:String x:Key="customeQueryShortcutTitle">Benutzerdefinierter Abfrage-Shortcut</system:String>
|
||||
|
|
@ -484,7 +551,7 @@ Wenn Sie bei der Eingabe eines Shortcuts ein '@'-Präfix hinzufügen, stimmt die
|
|||
</system:String>
|
||||
<system:String x:Key="duplicateShortcut">Shortcut ist bereits vorhanden, bitte geben Sie einen neuen Shortcut ein oder bearbeiten Sie den vorhandenen.</system:String>
|
||||
<system:String x:Key="emptyShortcut">Shortcut und/oder dessen Erweiterung ist leer.</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut ist ungültig</system:String>
|
||||
|
||||
<!-- Common Action -->
|
||||
<system:String x:Key="commonSave">Speichern</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ Wenn Sie bei der Eingabe eines Shortcuts ein '@'-Präfix hinzufügen, stimmt die
|
|||
<system:String x:Key="update_flowlauncher_update_files">Daten aktualisieren</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update-Beschreibung</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Flow Launcher nach Aktualisierung der Plug-ins neu starten</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update von v{1} auf v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Kein Plug-In ausgewählt</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Überspringen</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Willkommen bei Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -93,6 +113,7 @@
|
|||
<system:String x:Key="typingStartEn">Always Start Typing in English Mode</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporarily change your input method to English mode when activating Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Auto Update</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Select</system:String>
|
||||
<system:String x:Key="hideOnStartup">Hide Flow Launcher on startup</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -104,7 +125,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
|
||||
|
|
@ -126,15 +160,21 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Open</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Restart after modifying plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -216,6 +256,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Theme</system:String>
|
||||
|
|
@ -281,6 +327,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Hotkey</system:String>
|
||||
|
|
@ -343,6 +390,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
|
|
@ -397,6 +466,13 @@
|
|||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||
|
||||
<!-- Release Notes Window -->
|
||||
<system:String x:Key="seeMoreReleaseNotes">See more release notes on GitHub</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionTitle">Failed to fetch release notes</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionSubTitle">Please check your network connection or ensure GitHub is accessible</system:String>
|
||||
<system:String x:Key="appUpdateTitle">Flow Launcher has been updated to {0}</system:String>
|
||||
<system:String x:Key="appUpdateButtonContent">Click here to view the release notes</system:String>
|
||||
|
||||
<!-- FileManager Setting Dialog -->
|
||||
<system:String x:Key="fileManagerWindow">Select File Manager</system:String>
|
||||
<system:String x:Key="fileManager_learnMore">Learn more</system:String>
|
||||
|
|
@ -533,6 +609,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">Update files</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update description</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Welcome to Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Always Start Typing in English Mode</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporarily change your input method to English mode when activating Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Actualización automática</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Seleccionar</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher al arrancar el sistema</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">El efecto de sombra no está permitido mientras el tema actual tenga el efecto de desenfoque habilitado</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Abrir</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Tecla Rápida</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">Actualizar archivos</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Actualizar descripción</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Omitir</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Bienvenido a Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fallo al iniciar los complementos</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Complemento: {0} - no se pudo cargar y se desactivará, póngase en contacto con el creador del complemento para obtener ayuda</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher necesita reiniciarse para terminar de deshabilitar el modo portable, después de reiniciar se borrará el perfil de datos portables y se mantendrá el perfil de datos itinerantes</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher necesita reiniciarse para terminar de habilitar el modo portable, después de reiniciar se borrará el perfil de datos itinerantes y se mantendrá el perfil de datos portables</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher ha detectado que tiene activado el modo portable, ¿desea moverlo a otra ubicación?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher ha detectado que tiene desactivado el modo portable, los accesos directos relevantes y la entrada del desinstalador han sido creados</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher ha detectado que los datos de usario existen tanto en {0} como en {1}. {2}{2}Por favor, elimine {1} para continuar. No se han producido cambios.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">El siguiente complemento ha sufrido un error y no puede cargarse:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Los siguientes complementos han sufrido un error y no pueden cargarse:</system:String>
|
||||
<system:String x:Key="referToLogs">Por favor, consulte los registros para más información</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Por favor inténtelo de nuevo</system:String>
|
||||
<system:String x:Key="parseProxyFailed">No se puede analizar el proxy Http</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">No se ha podido instalar el entorno TypeScript. Por favor, inténtelo de nuevo más tarde.</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">No se ha podido instalar el entorno Python. Por favor, inténtelo de nuevo más tarde.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">No se ha podido registrar el atajo de teclado "{0}". El atajo de teclado puede estar siendo utilizado por otro programa. Seleccione un atajo de teclado diferente o salga del otro programa.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">No se ha podido anular el registro de la tecla de acceso rápido «{0}». Inténtelo de nuevo o consulte el registro para obtener más detalles</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Empezar a escribir siempre en modo inglés</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Cambia temporalmente el método de entrada al modo inglés cuando se activa Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Actualización automática</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Comprueba y actualiza automáticamente la aplicación cuando esté disponible</system:String>
|
||||
<system:String x:Key="select">Seleccionar</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher al inicio</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">La ventana de búsqueda de Flow Launcher se oculta en la bandeja del sistema tras el arranque.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Baja</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normal</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Buscar con Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Permite utilizar Pinyin para la búsqueda. Pinyin es el sistema estándar de ortografía romanizado para traducir chino.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin es el sistema estándar de ortografía romanizada para traducir chino. Tenga en cuenta que activar esta opción puede aumentar significativamente el uso de memoria durante la búsqueda.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Utilizar Doble Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Utiliza Doble Pinyin en lugar de Pinyin Completo para buscar.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Esquema Doble Pinyin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Mostrar siempre vista previa</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Muestra siempre el panel de vista previa al iniciar Flow. Pulsar {0} para mostrar/ocultar la vista previa.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">El efecto de sombra no está permitido si el tema actual tiene activado el efecto de desenfoque</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Abrir</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Utilizar IME Coreano anterior</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Se puede cambiar la configuración anterior del IME coreano directamente desde aquí</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">No se ha podido cambiar la configuración del IME coreano</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Por favor, compruebe el acceso al registro de su sistema o póngase en contacto con el soporte técnico.</system:String>
|
||||
<system:String x:Key="homePage">Página de inicio</system:String>
|
||||
<system:String x:Key="homePageToolTip">Muestra los resultados de la página de inicio cuando el texto de la consulta está vacío.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Mostrar historial de resultados en la página de inicio</system:String>
|
||||
|
|
@ -139,9 +175,11 @@
|
|||
<system:String x:Key="showAtTopmost">Mostrar ventana de búsqueda en primer plano</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Anula el ajuste «Siempre arriba» de otros programas y muestra Flow en primer plano.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Reiniciar después de modificar el complemento a través de la Tienda de complementos</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Reiniciar Flow Launcher automáticamente después de instalar/desinstalar/actualizar el complemento a través de la Tienda de complementos</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Reinicia Flow Launcher automáticamente después de instalar/desinstalar/actualizar el complemento a través de la Tienda de complementos</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Mostrar advertencia de fuente desconocida</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Mostrar advertencia al instalar complementos desde fuentes desconocidas</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Muestra advertencia al instalar complementos desde fuentes desconocidas</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Actualizar automáticamente los complementos</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Comprueba automáticamente las actualizaciones del complemento y notifica si hay actualizaciones disponibles</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Buscar complemento</system:String>
|
||||
|
|
@ -182,8 +220,8 @@
|
|||
<system:String x:Key="failedToRemovePluginCacheMessage">Complementos: {0} - Fallo al eliminar los archivos de caché del complemento, por favor elimínelos manualmente</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} ya está modificado</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyMessage">Reiniciar Flow antes de realizar más cambios</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">No se pudo instalar {0}</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">No se pudo desinstalar {0}</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">Fallo al instalar {0}</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">Fallo al desinstalar {0}</system:String>
|
||||
<system:String x:Key="fileNotFoundMessage">No se puede encontrar plugin.json en el archivo zip extraído, o esta ruta {0} no existe</system:String>
|
||||
<system:String x:Key="pluginExistAlreadyMessage">Ya existe un complemento con el mismo ID y versión, o la versión es superior a la de este complemento descargado</system:String>
|
||||
|
||||
|
|
@ -222,7 +260,13 @@
|
|||
<system:String x:Key="InstallFromUnknownSourceSubtitle">¡Este complemento es de una fuente desconocida y puede contener riesgos potenciales!{0}{0}Asegúrese de entender de dónde proviene este complemento y que es seguro.{0}{0}¿Desea continuar aún?{0}{0}(Puede desactivar esta advertencia en la sección general de la ventana de configuración)</system:String>
|
||||
<system:String x:Key="ZipFiles">Archivos Zip</system:String>
|
||||
<system:String x:Key="SelectZipFile">Por favor, seleccione archivo zip</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Instalar complemento desde la ruta local</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Instalar complemento desde ruta local</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No hay actualizaciones disponibles</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Todos los complementos están actualizados</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Actualizaciones de complementos disponibles</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Actualizar complementos</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Comprobar actualizaciones de los complementos</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Los complementos se han actualizado correctamente. Por favor, reinicie Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -251,7 +295,7 @@
|
|||
<system:String x:Key="windowMode">Modo Ventana</system:String>
|
||||
<system:String x:Key="opacity">Opacidad</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">El tema {0} no existe, activando el tema por defecto</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Fallo al cargar el tema {0}, activando el tema predeterminado</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Fallo al cargar el tema {0}, volver al tema predeterminado</system:String>
|
||||
<system:String x:Key="ThemeFolder">Carpeta de temas del usuario</system:String>
|
||||
<system:String x:Key="OpenThemeFolder">Abrir carpeta de temas</system:String>
|
||||
<system:String x:Key="ColorScheme">Esquema de colores</system:String>
|
||||
|
|
@ -283,19 +327,20 @@
|
|||
<system:String x:Key="TypeIsDarkToolTip">Este tema soporta dos modos (claro/oscuro).</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">Este tema soporta fondo transparente desenfocado.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">Mostrar marcador de posición</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Mostrar marcador de posición cuando la consulta esté vacía</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Muestra marcador de posición cuando la consulta esté vacía</system:String>
|
||||
<system:String x:Key="PlaceholderText">Texto del marcador de posición</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Cambiar el texto del marcador de posición. La entrada vacía utilizará: {0}</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Cambia el texto del marcador de posición. La entrada vacía utilizará: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Tamaño fijo de la ventana</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">El tamaño de la ventana no se puede ajustar mediante arrastre.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Atajo de teclado</system:String>
|
||||
<system:String x:Key="hotkeys">Atajos de teclado</system:String>
|
||||
<system:String x:Key="flowlauncherHotkey">Abrir/Cerrar Flow Launcher</system:String>
|
||||
<system:String x:Key="flowlauncherHotkeyToolTip">Introduzca el atajo de teclado para abrir/cerrar Flow Launcher.</system:String>
|
||||
<system:String x:Key="flowlauncherHotkeyToolTip">Introducir atajo de teclado para abrir/cerrar Flow Launcher.</system:String>
|
||||
<system:String x:Key="previewHotkey">Mostrar/Ocultar vista previa</system:String>
|
||||
<system:String x:Key="previewHotkeyToolTip">Introduzca el atajo de teclado para mostrar/ocultar la vista previa en la ventana de búsqueda.</system:String>
|
||||
<system:String x:Key="previewHotkeyToolTip">Introducir atajo de teclado para mostrar/ocultar la vista previa en la ventana de búsqueda.</system:String>
|
||||
<system:String x:Key="hotkeyPresets">Atajos de teclado preestablecidos</system:String>
|
||||
<system:String x:Key="hotkeyPresetsToolTip">Lista de atajos de teclado actualmente registrados</system:String>
|
||||
<system:String x:Key="openResultModifiers">Tecla modificadora para abrir resultado</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Mostrar distintivos en resultados</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Para los complementos compatibles, se muestran distintivos que ayudan a distinguirlos más fácilmente.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Mostrar distintivos en resultados solo para consulta global</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Mostrar distintivos solo para los resultados de consultas globales</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Salto de diálogo</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Introducir atajo de teclado para acceder rápidamente a la ventana de diálogo Abrir/Guardar como en la ruta del administrador de archivos actual.</system:String>
|
||||
<system:String x:Key="dialogJump">Salto de diálogo</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">Cuando se abre la ventana de diálogo Abrir/Guardar como, accede rápidamente a la ruta actual del administrador de archivos.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Salto de diálogo automáticamente</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">Cuando se muestra la ventana de diálogo Abrir/Guardar como, accede automáticamente a la ruta del administrador de archivos actual. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Mostrar ventana de salto de diálogo</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Muestra la ventana de búsqueda de salto de diálogo cuando se presenta la ventana de diálogo de abrir/guardar para acceder rápidamente a las ubicaciones de los archivos/carpetas.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Posición de la ventana de salto de diálogo</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Selecciona la posición de la ventana de búsqueda de salto de diálogo</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fijada bajo la ventana de diálogo Abrir/Guardar como. Se muestra al abrir y permanece hasta que se cierra la ventana</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Posición predeterminada de la ventana de búsqueda. Se muestra cuando se activa con el atajo de teclado de la ventana de búsqueda</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Comportamiento de navegación de los resultados de salto de diálogo</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Comportamiento de navegación de la ventana de diálogo Abrir/Guardar como según la ruta de resultados seleccionada</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Clic izquierdo o tecla Entrar</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Clic derecho</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Comportamiento de navegación de archivos de salto de diálogo</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Comportamiento de navegación de la ventana de diálogo Abrir/Guardar como cuando el resultado es una ruta de archivo</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Rellenar la ruta completa en el cuadro del nombre del archivo</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Rellenar la ruta completa en el cuadro del nombre del archivo y abrir</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Rellenar directorio en el cuadro de ruta</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -378,9 +445,9 @@
|
|||
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
|
||||
<system:String x:Key="BecomeASponsor">Hágase Patrocinador</system:String>
|
||||
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para actualizar?</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">La comprobación de las actualizaciones ha fallado, por favor, compruebe la configuración de su proxy y conexión a api.github.com.</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">Ha fallado la comprobación de las actualizaciones, por favor, compruebe la configuración de su proxy y conexión a api.github.com.</system:String>
|
||||
<system:String x:Key="downloadUpdatesFailed">
|
||||
La descarga de las actualizaciones ha fallado, por favor, compruebe la configuración de su proxy y conexión a github-cloud.s3.amazonaws.com,
|
||||
Ha fallado la descarga de las actualizaciones, por favor, compruebe la configuración de su proxy y conexión a github-cloud.s3.amazonaws.com,
|
||||
o diríjase a https://github.com/Flow-Launcher/Flow.Launcher/releases para descargar actualizaciones manualmente.
|
||||
</system:String>
|
||||
<system:String x:Key="releaseNotes">Notas de la versión</system:String>
|
||||
|
|
@ -393,7 +460,7 @@
|
|||
<system:String x:Key="cachefolder">Carpeta del caché</system:String>
|
||||
<system:String x:Key="clearcachefolder">Limpiar cachés</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">¿Está seguro de que desea eliminar todos los cachés?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">No se pudo eliminar parte de las carpetas y archivos. Por favor, consulte el archivo de registro para más información</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">No se ha podido eliminar parte de las carpetas y archivos. Por favor, consulte el archivo de registro para más información</system:String>
|
||||
<system:String x:Key="welcomewindow">Asistente</system:String>
|
||||
<system:String x:Key="userdatapath">Ubicación de datos del usuario</system:String>
|
||||
<system:String x:Key="userdatapathToolTip">La configuración del usuario y los complementos instalados se guardan en la carpeta de datos del usuario. Esta ubicación puede variar dependiendo de si está en modo portable o no.</system:String>
|
||||
|
|
@ -406,7 +473,7 @@
|
|||
|
||||
<!-- Release Notes Window -->
|
||||
<system:String x:Key="seeMoreReleaseNotes">Ver más notas de la versión en GitHub</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionTitle">No se pudo obtener las notas de la versión</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionTitle">No se ha podido obtener las notas de la versión</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionSubTitle">Por favor, compruebe su conexión de red o asegúrese de que GitHub es accesible</system:String>
|
||||
<system:String x:Key="appUpdateTitle">Flow Launcher ha sido actualizado a {0}</system:String>
|
||||
<system:String x:Key="appUpdateButtonContent">Haga clic aquí para ver las notas de la versión</system:String>
|
||||
|
|
@ -450,7 +517,7 @@
|
|||
<system:String x:Key="newActionKeywordsSameAsOld">Esta nueva palabra clave de acción es la misma que la anterior, por favor elija una diferente</system:String>
|
||||
<system:String x:Key="success">Correcto</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Finalizado correctamente</system:String>
|
||||
<system:String x:Key="failedToCopy">No se pudo copiar</system:String>
|
||||
<system:String x:Key="failedToCopy">No se ha podido copiar</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Introducir las palabras claves de acción que se desean utilizar para iniciar el complemento, utilizando espacios en blanco para separarlas. Utilizar * si no se desea especificar ninguna, para que el complemento se inicie sin ninguna palabra clave de acción.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
|
|
@ -549,6 +616,11 @@ Si añade un prefijo "@" al introducir un acceso directo, éste coinci
|
|||
<system:String x:Key="update_flowlauncher_update_files">Actualizar archivos</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Actualizar descripción</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Reiniciar Flow Launcher después de actualizar complementos</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Actualizar desde v{1} a v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No se ha seleccionado ningún complemento</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Omitir</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Bienvenido a Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Échec de l'initialisation des plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins : {0} - n'ont pas pu être chargés et doivent être désactivés, veuillez contacter le créateur du plugin pour obtenir de l'aide</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher doit redémarrer pour terminer la désactivation le mode portable, après le redémarrage, les données du profile portable seront supprimé et les données roaming conservé</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher doit redémarrer pour terminer l'activation du mode portable, après le redémarrage, les données du profile roaming seront supprimé et les données du profile portable conservé</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher à détecter que vous avez activé le mode portable, voulez-vous le déplacer à un autre emplacement ?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher a détecté que vous avez désactivé le mode portable, les raccourcis liés et l'entrée de désinstallation ont été créés</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher a détecté que vos données utilisateur existent à la fois dans {0} et {1}. {2}{2}Veuillez supprimer {1} pour continuer. Aucune modification n'a été apportée.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">Le plugin suivant a produit une erreur et ne peut être chargé :</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Les plugins suivants ont produit une erreur et ne peuvent pas être chargés :</system:String>
|
||||
<system:String x:Key="referToLogs">Veuillez vous référer aux logs pour plus d'informations</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Veuillez réessayer</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Impossible d'analyser le proxy Http</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Échec de l'installation de l'environnement TypeScript. Veuillez réessayer plus tard.</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Échec de l'installation de l'environnement Python. Veuillez réessayer plus tard.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Échec lors de l'enregistrement du raccourci : {0}</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Échec de la réinitialisation du raccourci "{0}". Veuillez réessayer ou consulter le journal pour plus de détails</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Toujours commencer à taper en mode anglais</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Changez temporairement votre mode de saisie en mode anglais lors de l'activation de Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Mettre à jour automatiquement</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Vérifier et mettre à jour automatiquement l'application lorsqu'une nouvelle version est disponible</system:String>
|
||||
<system:String x:Key="select">Sélectionner</system:String>
|
||||
<system:String x:Key="hideOnStartup">Cacher Flow Launcher au démarrage</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">La fenêtre de recherche de Flow Launcher est cachée dans la barre d’état après le démarrage.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Faible</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normal</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Devrait utiliser Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Permet d'utiliser Pinyin pour la recherche. Pinyin est le système standard d'orthographe romanisée pour la traduction du chinois</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin est le système standard d'orthographe romanisée pour traduire le chinois. Veuillez noter que cela peut augmenter considérablement l'utilisation de la mémoire pendant la recherche.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Utiliser Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Utilisez Double Pinyin au lieu de Full Pinyin pour rechercher.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Schéma double Pinyin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Toujours prévisualiser</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Toujours ouvrir le panneau d'aperçu lorsque Flow s'active. Appuyez sur {0} pour activer/désactiver l'aperçu.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">L'effet d'ombre n'est pas autorisé lorsque le thème actuel à un effet de flou activé</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Ouvrir</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Utilisez l'IME coréenne précédente</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Vous pouvez modifier les paramètres de l'IME coréen précédent directement à partir d'ici</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Impossible de changer le paramètre IME coréen</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Veuillez vérifier votre accès au registre du système ou contacter le support.</system:String>
|
||||
<system:String x:Key="homePage">Page d'accueil</system:String>
|
||||
<system:String x:Key="homePageToolTip">Afficher les résultats de la page d'accueil lorsque le texte de la requête est vide.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Afficher les résultats de l'historique sur la page d'accueil</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Redémarrez automatiquement Flow Launcher après l'installation / désinstallation / mise à jour du plugin via le magasin des plugins</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Afficher l'avertissement de source inconnue</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Afficher un avertissement lors de l'installation de plugins à partir de sources inconnues</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Mettre à jour automatiquement les plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Vérifier automatiquement les mises à jour des plugins et notifier s'il y a des mises à jour disponibles</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Rechercher des plugins</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Fichiers zip</system:String>
|
||||
<system:String x:Key="SelectZipFile">Veuillez sélectionner un fichier zip</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Installer le plugin depuis le chemin local</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Aucune mise à jour disponible</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Tous les plugins sont à jour</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Mises à jour de plugins disponibles</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Mettre à jour les plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Vérifier les mises à jour des plugins</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins mis à jour avec succès. Veuillez redémarrer Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Thèmes</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Modifier le texte de l'espace réservé. Les entrées vides utiliseront : {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Taille de la fenêtre fixe</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">La taille de la fenêtre n'est pas réglable par glissement.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Étant donné que Always Preview est toujours activé, les résultats maximaux indiqués peuvent ne pas prendre effet car le panneau d'aperçu nécessite une certaine hauteur minimale</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Raccourcis</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Afficher les badges de résultats</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Pour les plugins pris en charge, des badges sont affichés afin de les distinguer plus facilement.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Afficher les badges de résultats pour la requête globale uniquement</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Afficher les badges pour les résultats des requêtes globales uniquement</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Entrez le raccourci pour naviguer rapidement dans la fenêtre de dialogue Ouvrir/Enregistrer sous, vers le chemin du gestionnaire de fichiers actuel.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous s'ouvre, accédez rapidement au chemin d'accès actuel du gestionnaire de fichiers.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous est affichée, naviguez automatiquement vers le chemin du gestionnaire de fichiers actuel. (Expérimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Clique droit</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Remplir le chemin complet dans la zone de nom de fichier</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Remplir le chemin complet dans la zone de nom de fichier et ouvrir</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Remplir le répertoire dans la zone de chemin</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -377,7 +444,7 @@
|
|||
<system:String x:Key="about_activate_times">Vous avez utilisé Flow Launcher {0} fois</system:String>
|
||||
<system:String x:Key="checkUpdates">Vérifier les mises à jour</system:String>
|
||||
<system:String x:Key="BecomeASponsor">Devenir un Sponsor</system:String>
|
||||
<system:String x:Key="newVersionTips">Nouvelle version {0} disponible, veuillez redémarrer Flow Launcher</system:String>
|
||||
<system:String x:Key="newVersionTips">Nouvelle version {0} disponible, souhaitez-vous redémarrer Flow Launcher pour l'installer ?</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">Échec de la vérification de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à api.github.com.</system:String>
|
||||
<system:String x:Key="downloadUpdatesFailed">
|
||||
Échec du téléchargement de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à github-cloud.s3.amazonaws.com, ou téléchargez manuelement la mise à jour sur https://github.com/Flow-Launcher/Flow.Launcher/releases.
|
||||
|
|
@ -536,8 +603,8 @@ Si vous ajoutez un préfixe "@" lors de la saisie d'un raccourci, celu
|
|||
Flow Launcher n'a pas pu déplacer les données de votre profil utilisateur vers la nouvelle version de mise à jour.
|
||||
Veuillez déplacer manuellement le dossier de données de votre profil de {0} vers {1}
|
||||
</system:String>
|
||||
<system:String x:Key="update_flowlauncher_new_update">Nouvelle mise à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_new_version_available">Version v{0} de Flow Launcher disponible</system:String>
|
||||
<system:String x:Key="update_flowlauncher_new_update">Mise à jour disponible</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_new_version_available">La nouvelle version {0} de Flow Launcher est maintenant disponible</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_error">Une erreur s'est produite lors de l'installation de la mise à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update">Mettre à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Annuler</system:String>
|
||||
|
|
@ -548,6 +615,11 @@ Si vous ajoutez un préfixe "@" lors de la saisie d'un raccourci, celu
|
|||
<system:String x:Key="update_flowlauncher_update_files">Fichiers mis à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Description de la mise à jour</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Redémarrer Flow Launcher après la mise à jour des plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Mis à jour de v{1} vers v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Aucun plugin sélectionné</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Passer</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Bienvenue dans Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">נכשל בהפעלת תוספים</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">תוספים: {0} - נכשלו בטעינה ויושבתו, אנא צור קשר עם יוצרי התוספים לקבלת עזרה</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">רישום מקש הקיצור "{0}" נכשל. ייתכן שמקש הקיצור נמצא בשימוש על ידי תוכנה אחרת. שנה למקש קיצור אחר, או צא מהתוכנה האחרת.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">ביטול הרישום של מקש קיצור "{0}" נכשל. אנא נסה שוב או עיין ביומן הרישום לפרטים נוספים</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">תמיד התחל להקליד במצב אנגלית</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">שנה זמנית את שיטת הקלט שלך למצב אנגלית בעת הפעלת Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">עדכון אוטומטי</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">בחר</system:String>
|
||||
<system:String x:Key="hideOnStartup">הסתר את Flow Launcher בהפעלת המחשב</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">חלון החיפוש של Flow Launcher מוסתר במגש לאחר ההפעלה.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">נמוך</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">חפש באמצעות Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">מאפשר חיפוש באמצעות Pinyin, מערכת הכתיבה הסטנדרטית לתרגום סינית.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">הצג תמיד תצוגה מקדימה</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">פתח תמיד את לוח התצוגה המקדימה כאשר Flow מופעל. הקש על {0} כדי להחליף את התצוגה המקדימה.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">לא ניתן להחיל אפקט צל כאשר העיצוב הנוכחי מוגדר לאפקט טשטוש</system:String>
|
||||
|
|
@ -130,6 +164,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">פתח</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">השתמש ב־IME הקוריאני הקודם</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">באפשרותך לשנות את הגדרות ה־IME הקוריאני הקודם ישירות מכאן</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">דף הבית</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -141,6 +177,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">חפש תוסף</system:String>
|
||||
|
|
@ -222,6 +260,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">אין עדכון זמי</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">כל התוספים מעודכנים</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">ערכת נושא</system:String>
|
||||
|
|
@ -287,6 +331,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">שנה את טקסט מציין המיקום. אם הקלט ריק, ייעשה שימוש ב: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">גודל חלון קבוע</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">לא ניתן להתאים את גודל החלון באמצעות גרירה.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">מקש קיצור</system:String>
|
||||
|
|
@ -349,6 +394,28 @@
|
|||
<system:String x:Key="showBadges">הצג תגי תוצאות</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">עבור תוספים נתמכים, מוצגים תגים כדי לעזור להבחין ביניהם ביתר קלות.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
|
|
@ -548,6 +615,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">עדכן קבצים</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">עדכן תיאור</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">דלג</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">ברוך הבא אל Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Registrazione del tasto di scelta rapida "{0}" non riuscita. Il tasto di scelta rapida potrebbe essere in uso da un altro programma. Passa a un altro tasto di scelta rapida o esci da un altro programma.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Inizia sempre a digitare in modalità inglese</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Cambiare temporaneamente il metodo di input in modalità inglese quando si attiva Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Aggiornamento automatico</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Seleziona</system:String>
|
||||
<system:String x:Key="hideOnStartup">Nascondi Flow Launcher all'avvio</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">La finestra di ricerca di Flow Launcher è nascosta nelle applicazioni nascoste dopo l'avvio.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Bassa</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normale</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Dovrebbe usare il Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Consente di utilizzare il Pinyin per la ricerca. Il Pinyin è il sistema standard di ortografia romanizzata per la traduzione del cinese.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Mostra Sempre Anteprima</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Apri sempre il pannello di anteprima quando Flow si attiva. Premi {0} per attivare l'anteprima.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">L'effetto ombra non è consentito mentre il tema corrente ha un effetto di sfocatura abilitato</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Apri</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Plugin di ricerca</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Nessun aggiornamento disponibile</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Tutti i plugin sono aggiornati</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Tasti scelta rapida</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ Se si aggiunge un prefisso '@' mentre si inserisce una scorciatoia, corrisponde
|
|||
<system:String x:Key="update_flowlauncher_update_files">File aggiornati</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Descrizione aggiornamento</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Salta</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Benvenuto su Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcherはポータブルモードの無効化のために再起動する必要があります。再起動の後、ポータブルな形式の設定項目は削除され、あなたのパソコンのフォルダに保存されます</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcherはポータブルモードの有効化のために再起動する必要があります。再起動の後、パソコンに保存された設定項目は削除され、ポータブルな形式で保存されます</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcherはポータブルモードの有効化を検知しました。Flow Launcherを別の場所に移動しますか?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcherはポータブルモードの無効化を検知しました。関連するショートカットやアンインストーラーが配置されます</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">ホットキー "{0}" の登録に失敗しました。このホットキーは別のプログラムで使用されている可能性があります。別のホットキーに変更するか、このホットキーを使用しているプログラムを終了してください。</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -51,7 +71,7 @@
|
|||
<system:String x:Key="portableMode">ポータブルモード</system:String>
|
||||
<system:String x:Key="portableModeToolTIp">すべての設定とユーザーデータを1つのフォルダに保存します(リムーバブルドライブやクラウドサービスで使用する場合に便利です)。</system:String>
|
||||
<system:String x:Key="startFlowLauncherOnSystemStartup">スタートアップ時にFlow Launcherを起動する</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartup">高速起動のためにスタートアップではなくログオンタスクを使用</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartup">起動の高速化のためにスタートアップではなくログオンタスクを使用</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartupTooltip">アンインストール後は、「タスク スケジューラ」からこのタスク(Flow.Launcher Startup)を手動で削除する必要があります。</system:String>
|
||||
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">フォーカスを失った時にFlow Launcherを隠す</system:String>
|
||||
|
|
@ -74,8 +94,8 @@
|
|||
<system:String x:Key="LastQueryPreserved">前回のクエリを保存</system:String>
|
||||
<system:String x:Key="LastQuerySelected">前回のクエリを選択</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">前回のクエリを消去</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">Preserve Last Action Keyword</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">Select Last Action Keyword</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">前回のアクションキーワードを保持する</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">前回のアクションキーワードを選択</system:String>
|
||||
<system:String x:Key="maxShowResults">結果の最大表示件数</system:String>
|
||||
<system:String x:Key="maxShowResultsToolTip">CTRL+PlusとCTRL+Minusを使用すれば、簡単に調整することもできます。</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">ウィンドウがフルスクリーン時にホットキーを無効にする</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">常に英語モードで入力を開始する</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Flowを起動したとき、一時的に入力方法を英語モードに変更します。</system:String>
|
||||
<system:String x:Key="autoUpdates">自動更新</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">選択</system:String>
|
||||
<system:String x:Key="hideOnStartup">起動時にFlow Launcherを隠す</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">起動後、Flow Launcher の検索ウィンドウは非表示になり、トレイに格納されます。</system:String>
|
||||
|
|
@ -98,19 +119,32 @@
|
|||
<system:String x:Key="hideNotifyIconToolTip">トレイアイコンが非表示になっているときは、検索ウィンドウを右クリックすることで設定メニューを開くことができます。</system:String>
|
||||
<system:String x:Key="querySearchPrecision">クエリ検索精度</system:String>
|
||||
<system:String x:Key="querySearchPrecisionToolTip">表示する結果に必要な一致スコアの最小値を変更します。</system:String>
|
||||
<system:String x:Key="SearchPrecisionNone">None</system:String>
|
||||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="SearchPrecisionNone">最低</system:String>
|
||||
<system:String x:Key="SearchPrecisionLow">低</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">標準</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">ピンインによる検索</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">ピンインを使用して検索できるようにします。ピンインは、中国語をローマ字表記するための標準的な表記体系です。</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">常にプレビューする</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Flow が有効になったとき、常にプレビューパネルを開きます。 {0} を押してプレビューの表示/非表示を切り替えます。</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません</system:String>
|
||||
<system:String x:Key="searchDelay">検索遅延</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">入力中に短い遅延を追加することで、UIのちらつきや結果の読み込みを軽減します。平均的なタイピング速度のユーザーにおすすめです。</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
||||
<system:String x:Key="searchDelayTime">Default Search Delay Time</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Wait time before showing results after typing stops. Higher values wait longer. (ms)</system:String>
|
||||
<system:String x:Key="searchDelayTime">デフォルトの検索遅延時間</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">入力が停止した後に結果が表示されるまでの待ち時間。値が大きいほど長く待機します。(単位 ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
||||
<system:String x:Key="KoreanImeGuide">
|
||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||
|
|
@ -131,17 +165,21 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">開く</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">ホームページ</system:String>
|
||||
<system:String x:Key="homePageToolTip">検索文字列が空の場合、ホームページの結果を表示します。</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">クエリの履歴をホームページに表示</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">ホームページに表示される最大の履歴の数</system:String>
|
||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Restart after modifying plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">他のプログラムの 'Always on Top' (最前面に表示)設定を上書きし、常に最前面のウィンドウで Flow を表示します。</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">プラグインストアでプラグインを変更した後に再起動します</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">プラグインストア経由でプラグインをインストール、アンインストール、または更新した後、Flow Lancherを自動的に再起動します</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">不明なソースの警告を表示</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">不明なソースからプラグインをインストールするときに警告を表示する</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -161,10 +199,10 @@
|
|||
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
||||
<system:String x:Key="FilterComboboxLabel">詳細設定:</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">Enabled</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">有効</system:String>
|
||||
<system:String x:Key="DisplayModePriority">重要度</system:String>
|
||||
<system:String x:Key="DisplayModeSearchDelay">検索遅延</system:String>
|
||||
<system:String x:Key="DisplayModeHomeOnOff">Home Page</system:String>
|
||||
<system:String x:Key="DisplayModeHomeOnOff">ホームページ</system:String>
|
||||
<system:String x:Key="currentPriority">Current Priority</system:String>
|
||||
<system:String x:Key="newPriority">New Priority</system:String>
|
||||
<system:String x:Key="priority">重要度</system:String>
|
||||
|
|
@ -189,7 +227,7 @@
|
|||
|
||||
<!-- Setting Plugin Store -->
|
||||
<system:String x:Key="pluginStore">プラグインストア</system:String>
|
||||
<system:String x:Key="pluginStore_NewRelease">New Release</system:String>
|
||||
<system:String x:Key="pluginStore_NewRelease">新規リリース</system:String>
|
||||
<system:String x:Key="pluginStore_RecentlyUpdated">最近の更新</system:String>
|
||||
<system:String x:Key="pluginStore_None">プラグイン</system:String>
|
||||
<system:String x:Key="pluginStore_Installed">Installed</system:String>
|
||||
|
|
@ -201,28 +239,34 @@
|
|||
<system:String x:Key="LabelNew">New Version</system:String>
|
||||
<system:String x:Key="LabelNewToolTip">This plugin has been updated within the last 7 days</system:String>
|
||||
<system:String x:Key="LabelUpdateToolTip">新しいアップデートが利用可能です</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">Error installing plugin</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">Error uninstalling plugin</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">プラグインのインストール失敗</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">プラグインのアンインストール失敗</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Error updating plugin</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">Keep plugin settings</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">Do you want to keep the settings of the plugin for the next usage?</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">プラグインの設定を維持</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">再びインストールして使用するときのためにプラグインの設定を維持しますか?</system:String>
|
||||
<system:String x:Key="InstallSuccessNoRestart">Plugin {0} successfully installed. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UninstallSuccessNoRestart">Plugin {0} successfully uninstalled. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UpdateSuccessNoRestart">Plugin {0} successfully updated. Please restart Flow.</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Plugin install</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}Would you like to install this plugin?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Plugin uninstall</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}Would you like to uninstall this plugin?</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">プラグインのインストール</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをインストールしますか?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">プラグインのアンインストール</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをアンインストールしますか?</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
||||
<system:String x:Key="UpdatePromptSubtitle">{0} by {1} {2}{2}Would you like to update this plugin?</system:String>
|
||||
<system:String x:Key="DownloadingPlugin">Downloading plugin</system:String>
|
||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">Installing from an unknown source</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is from an unknown source and it may contain potential risks!{0}{0}Please ensure you understand where this plugin is from and that it is safe.{0}{0}Would you like to continue still?{0}{0}(You can switch off this warning in general section of setting window)</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">不明なソースからのインストール</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">このプラグインは不明なソースから提供されており、潜在的なリスクを含んでいる可能性があります!{0}{0}このプラグインの開発元をよく調べ、安全であることをご自身で確かめてください。{0}{0}それでもあなたはこのプラグインをインストールしますか?{0}{0}(この警告は設定の「一般」セクションで無効にすることができます)</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">ローカルパスからプラグインをインストール</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">テーマ</system:String>
|
||||
|
|
@ -243,7 +287,7 @@
|
|||
<system:String x:Key="queryBoxFont">検索ボックスのフォント</system:String>
|
||||
<system:String x:Key="resultItemFont">Result Title Font</system:String>
|
||||
<system:String x:Key="resultSubItemFont">Result Subtitle Font</system:String>
|
||||
<system:String x:Key="resetCustomize">Reset</system:String>
|
||||
<system:String x:Key="resetCustomize">リセット</system:String>
|
||||
<system:String x:Key="resetCustomizeToolTip">Reset to the recommended font and size settings.</system:String>
|
||||
<system:String x:Key="ImportThemeSize">Import Theme Size</system:String>
|
||||
<system:String x:Key="ImportThemeSizeToolTip">If a size value intended by the theme designer is available, it will be retrieved and applied.</system:String>
|
||||
|
|
@ -283,11 +327,12 @@
|
|||
<system:String x:Key="TypeIsDarkToolTip">This theme supports two (light/dark) modes.</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">This theme supports Blur Transparent Background.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">プレースホルダーを表示</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Display placeholder when query is empty</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">クエリが空の場合にプレースホルダを表示します</system:String>
|
||||
<system:String x:Key="PlaceholderText">検索欄の案内文</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">ウィンドウサイズの固定</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">ウィンドウのサイズを固定し、ドラッグでの変更を無効にします。</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">ホットキー</system:String>
|
||||
|
|
@ -296,33 +341,33 @@
|
|||
<system:String x:Key="flowlauncherHotkeyToolTip">Flow Launcher の表示/非表示を切り替えるショートカットを入力してください。</system:String>
|
||||
<system:String x:Key="previewHotkey">プレビューの切り替え</system:String>
|
||||
<system:String x:Key="previewHotkeyToolTip">検索ウィンドウでプレビューの表示/非表示を切り替えるショートカットを入力してください。</system:String>
|
||||
<system:String x:Key="hotkeyPresets">Hotkey Presets</system:String>
|
||||
<system:String x:Key="hotkeyPresetsToolTip">List of currently registered hotkeys</system:String>
|
||||
<system:String x:Key="openResultModifiers">結果修飾子を開く</system:String>
|
||||
<system:String x:Key="openResultModifiersToolTip">Select a modifier key to open selected result via keyboard.</system:String>
|
||||
<system:String x:Key="hotkeyPresets">設定済みのホットキー一覧</system:String>
|
||||
<system:String x:Key="hotkeyPresetsToolTip">現在登録されているホットキーのリスト</system:String>
|
||||
<system:String x:Key="openResultModifiers">結果を開くための修飾キー</system:String>
|
||||
<system:String x:Key="openResultModifiersToolTip">キーボードで結果を選択して開くための、修飾キーを選択します。</system:String>
|
||||
<system:String x:Key="showOpenResultHotkey">ホットキーを表示</system:String>
|
||||
<system:String x:Key="showOpenResultHotkeyToolTip">Show result selection hotkey with results.</system:String>
|
||||
<system:String x:Key="showOpenResultHotkeyToolTip">結果を選択するホットキーを結果とともに表示します。</system:String>
|
||||
<system:String x:Key="autoCompleteHotkey">自動補完</system:String>
|
||||
<system:String x:Key="autoCompleteHotkeyToolTip">選択された項目に対して自動補完を実行します。</system:String>
|
||||
<system:String x:Key="SelectNextItemHotkey">次の項目を選択</system:String>
|
||||
<system:String x:Key="SelectPrevItemHotkey">前の項目を選択</system:String>
|
||||
<system:String x:Key="SelectNextPageHotkey">Next Page</system:String>
|
||||
<system:String x:Key="SelectPrevPageHotkey">Previous Page</system:String>
|
||||
<system:String x:Key="CycleHistoryUpHotkey">Cycle Previous Query</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">Cycle Next Query</system:String>
|
||||
<system:String x:Key="OpenContextMenuHotkey">Open Context Menu</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Open Native Context Menu</system:String>
|
||||
<system:String x:Key="SettingWindowHotkey">Open Setting Window</system:String>
|
||||
<system:String x:Key="CopyFilePathHotkey">Copy File Path</system:String>
|
||||
<system:String x:Key="ToggleGameModeHotkey">Toggle Game Mode</system:String>
|
||||
<system:String x:Key="ToggleHistoryHotkey">Toggle History</system:String>
|
||||
<system:String x:Key="OpenContainFolderHotkey">Open Containing Folder</system:String>
|
||||
<system:String x:Key="SelectNextPageHotkey">次のページ</system:String>
|
||||
<system:String x:Key="SelectPrevPageHotkey">前のページ</system:String>
|
||||
<system:String x:Key="CycleHistoryUpHotkey">前のクエリを入力</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">次のクエリを入力</system:String>
|
||||
<system:String x:Key="OpenContextMenuHotkey">コンテキストメニューを開く</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Windowsのコンテキストメニューを開く</system:String>
|
||||
<system:String x:Key="SettingWindowHotkey">Flow Launcherの設定ウインドウを開く</system:String>
|
||||
<system:String x:Key="CopyFilePathHotkey">ファイルのパスをコピー</system:String>
|
||||
<system:String x:Key="ToggleGameModeHotkey">ゲームモードの切り替え</system:String>
|
||||
<system:String x:Key="ToggleHistoryHotkey">履歴の表示切り替え</system:String>
|
||||
<system:String x:Key="OpenContainFolderHotkey">ファイルのあるフォルダを開く</system:String>
|
||||
<system:String x:Key="RunAsAdminHotkey">管理者として実行</system:String>
|
||||
<system:String x:Key="RequeryHotkey">Refresh Search Results</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkey">Reload Plugins Data</system:String>
|
||||
<system:String x:Key="QuickWidthHotkey">Quick Adjust Window Width</system:String>
|
||||
<system:String x:Key="QuickHeightHotkey">Quick Adjust Window Height</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkeyToolTip">Use when require plugins to reload and update their existing data.</system:String>
|
||||
<system:String x:Key="RequeryHotkey">検索結果の更新</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkey">プラグインデータのリロード</system:String>
|
||||
<system:String x:Key="QuickWidthHotkey">素早くウィンドウの幅を調整</system:String>
|
||||
<system:String x:Key="QuickHeightHotkey">素早くウィンドウの高さを調整</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkeyToolTip">プラグインがデータを再読み込み、または更新することが必要な場合に使用してください。</system:String>
|
||||
<system:String x:Key="AdditionalHotkeyToolTip">この機能のホットキーはもう一つ追加できます。</system:String>
|
||||
<system:String x:Key="customQueryHotkey">カスタムクエリ ホットキー</system:String>
|
||||
<system:String x:Key="customQueryShortcut">Custom Query Shortcut</system:String>
|
||||
|
|
@ -335,21 +380,43 @@
|
|||
<system:String x:Key="edit">編集</system:String>
|
||||
<system:String x:Key="add">追加</system:String>
|
||||
<system:String x:Key="none">None</system:String>
|
||||
<system:String x:Key="pleaseSelectAnItem">項目選択してください</system:String>
|
||||
<system:String x:Key="pleaseSelectAnItem">項目を選択してください</system:String>
|
||||
<system:String x:Key="deleteCustomHotkeyWarning">{0} プラグインのホットキーを本当に削除しますか?</system:String>
|
||||
<system:String x:Key="deleteCustomShortcutWarning">本当にこのショートカットを削除しますか?: {0} を {1} に展開</system:String>
|
||||
<system:String x:Key="shortcut_clipboard_description">Get text from clipboard.</system:String>
|
||||
<system:String x:Key="shortcut_active_explorer_path">アクティブなエクスプローラーからパスを取得します。</system:String>
|
||||
<system:String x:Key="queryWindowShadowEffect">Query window shadow effect</system:String>
|
||||
<system:String x:Key="queryWindowShadowEffect">検索ウィンドウの落陰効果</system:String>
|
||||
<system:String x:Key="shadowEffectCPUUsage">Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited.</system:String>
|
||||
<system:String x:Key="windowWidthSize">Window Width Size</system:String>
|
||||
<system:String x:Key="windowWidthSizeToolTip">You can also quickly adjust this by using Ctrl+[ and Ctrl+].</system:String>
|
||||
<system:String x:Key="useGlyphUI">Use Segoe Fluent Icons</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">Use Segoe Fluent Icons for query results where supported</system:String>
|
||||
<system:String x:Key="useGlyphUI">Segoe Fluent アイコンを使用する</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">サポートされているクエリ結果にSegoe Fluentアイコンを使用する</system:String>
|
||||
<system:String x:Key="flowlauncherPressHotkey">Press Key</system:String>
|
||||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">サポートされているプラグインでは、バッジが表示され、より簡単に区別できます。</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP プロキシ</system:String>
|
||||
|
|
@ -364,7 +431,7 @@
|
|||
<system:String x:Key="portCantBeEmpty">ポートは空白にできません</system:String>
|
||||
<system:String x:Key="invalidPortFormat">ポートの形式が正しくありません</system:String>
|
||||
<system:String x:Key="saveProxySuccessfully">プロキシの保存に成功しました</system:String>
|
||||
<system:String x:Key="proxyIsCorrect">プロキシは正しいです</system:String>
|
||||
<system:String x:Key="proxyIsCorrect">プロキシは正しく構成されています</system:String>
|
||||
<system:String x:Key="proxyConnectFailed">プロキシ接続に失敗しました</system:String>
|
||||
|
||||
<!-- Setting About -->
|
||||
|
|
@ -373,7 +440,7 @@
|
|||
<system:String x:Key="github">GitHub</system:String>
|
||||
<system:String x:Key="docs">ドキュメント</system:String>
|
||||
<system:String x:Key="version">バージョン</system:String>
|
||||
<system:String x:Key="icons">Icons</system:String>
|
||||
<system:String x:Key="icons">アイコン</system:String>
|
||||
<system:String x:Key="about_activate_times">あなたはFlow Launcherを {0} 回利用しました</system:String>
|
||||
<system:String x:Key="checkUpdates">アップデートを確認する</system:String>
|
||||
<system:String x:Key="BecomeASponsor">スポンサーになる</system:String>
|
||||
|
|
@ -384,25 +451,25 @@
|
|||
https://github.com/Flow-Launcher/Flow.Launcher/releases から手動でアップデートをダウンロードしてください。
|
||||
</system:String>
|
||||
<system:String x:Key="releaseNotes">リリースノート</system:String>
|
||||
<system:String x:Key="documentation">Usage Tips</system:String>
|
||||
<system:String x:Key="devtool">DevTools</system:String>
|
||||
<system:String x:Key="settingfolder">Setting Folder</system:String>
|
||||
<system:String x:Key="logfolder">Log Folder</system:String>
|
||||
<system:String x:Key="clearlogfolder">Clear Logs</system:String>
|
||||
<system:String x:Key="clearlogfolderMessage">Are you sure you want to delete all logs?</system:String>
|
||||
<system:String x:Key="cachefolder">Cache Folder</system:String>
|
||||
<system:String x:Key="clearcachefolder">Clear Caches</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
|
||||
<system:String x:Key="welcomewindow">Wizard</system:String>
|
||||
<system:String x:Key="documentation">使い方のヒント</system:String>
|
||||
<system:String x:Key="devtool">開発者用ツール</system:String>
|
||||
<system:String x:Key="settingfolder">設定フォルダー</system:String>
|
||||
<system:String x:Key="logfolder">ログフォルダー</system:String>
|
||||
<system:String x:Key="clearlogfolder">ログを削除</system:String>
|
||||
<system:String x:Key="clearlogfolderMessage">すべてのログを削除してもよろしいですか?</system:String>
|
||||
<system:String x:Key="cachefolder">キャッシュフォルダー</system:String>
|
||||
<system:String x:Key="clearcachefolder">キャッシュを削除</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">全てのキャッシュを削除してもよろしいですか?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">フォルダやファイルの一部をクリアできませんでした。詳細についてはログファイルを参照してください</system:String>
|
||||
<system:String x:Key="welcomewindow">ウィザード</system:String>
|
||||
<system:String x:Key="userdatapath">ユーザーデータの場所</system:String>
|
||||
<system:String x:Key="userdatapathToolTip">ユーザー設定とインストールされているプラグインは、ユーザーデータフォルダに保存されます。この場所は、ポータブルモードかどうかによって異なる場合があります。</system:String>
|
||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||
<system:String x:Key="advanced">Advanced</system:String>
|
||||
<system:String x:Key="logLevel">Log Level</system:String>
|
||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||
<system:String x:Key="userdatapathButton">フォルダーを開く</system:String>
|
||||
<system:String x:Key="advanced">上級者向け機能</system:String>
|
||||
<system:String x:Key="logLevel">ログレベル</system:String>
|
||||
<system:String x:Key="LogLevelDEBUG">デバッグ</system:String>
|
||||
<system:String x:Key="LogLevelINFO">情報</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">設定ウィンドウで使用するフォント</system:String>
|
||||
|
||||
<!-- Release Notes Window -->
|
||||
<system:String x:Key="seeMoreReleaseNotes">See more release notes on GitHub</system:String>
|
||||
|
|
@ -440,13 +507,13 @@
|
|||
<system:String x:Key="invalidPriority">Please provide an valid integer for Priority!</system:String>
|
||||
|
||||
<!-- Action Keyword Setting Dialog -->
|
||||
<system:String x:Key="oldActionKeywords">古いアクションキーボード</system:String>
|
||||
<system:String x:Key="newActionKeywords">新しいアクションキーボード</system:String>
|
||||
<system:String x:Key="oldActionKeywords">古いアクションキーワード</system:String>
|
||||
<system:String x:Key="newActionKeywords">新しいアクションキーワード</system:String>
|
||||
<system:String x:Key="cancel">キャンセル</system:String>
|
||||
<system:String x:Key="done">完了</system:String>
|
||||
<system:String x:Key="cannotFindSpecifiedPlugin">プラグインが見つかりません</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">新しいアクションキーボードを空にすることはできません</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">新しいアクションキーボードは他のプラグインに割り当てられています。他のアクションキーボードを指定してください</system:String>
|
||||
<system:String x:Key="cannotFindSpecifiedPlugin">指定されたプラグインが見つかりません</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">新しいアクションキーワードを空にすることはできません</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">新しいアクションキーワードは他のプラグインに割り当てられています。他のアクションキーワードを入力してください</system:String>
|
||||
<system:String x:Key="newActionKeywordsSameAsOld">This new Action Keyword is the same as old, please choose a different one</system:String>
|
||||
<system:String x:Key="success">成功しました</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Completed successfully</system:String>
|
||||
|
|
@ -458,11 +525,11 @@
|
|||
<system:String x:Key="searchDelayTimeTips">Input the search delay time in ms you like to use for the plugin. Input empty if you don't want to specify any, and the plugin will use default search delay time.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
<system:String x:Key="homeTitle">Home Page</system:String>
|
||||
<system:String x:Key="homeTitle">ホームページ</system:String>
|
||||
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
||||
|
||||
<!-- Custom Query Hotkey Dialog -->
|
||||
<system:String x:Key="customeQueryHotkeyTitle"></system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTitle">カスタムクエリのホットキー</system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTips">Press a custom hotkey to open Flow Launcher and input the specified query automatically.</system:String>
|
||||
<system:String x:Key="preview">プレビュー</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">ホットキーは使用できません。新しいホットキーを選択してください</system:String>
|
||||
|
|
@ -476,13 +543,13 @@
|
|||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
||||
|
||||
<!-- Custom Query Shortcut Dialog -->
|
||||
<system:String x:Key="customeQueryShortcutTitle">カスタムクエリショートカット</system:String>
|
||||
<system:String x:Key="customeQueryShortcutTips">指定したクエリに自動的に展開するショートカットを入力してください。</system:String>
|
||||
<system:String x:Key="customeQueryShortcutTitle">カスタムクエリのショートカット</system:String>
|
||||
<system:String x:Key="customeQueryShortcutTips">指定したクエリを自動的に展開するためのショートカットを入力してください。</system:String>
|
||||
<system:String x:Key="customeQueryShortcutGuide" xml:space="preserve">クエリに正確に一致すると、ショートカットが展開されます。
|
||||
|
||||
ショートカットの入力で「@」プレフィクスをつけた場合、クエリのどこにあってもマッチするようになります。組み込みのショートカットはクエリのどこにあってもマッチします。
|
||||
</system:String>
|
||||
<system:String x:Key="duplicateShortcut">ショートカットが既に存在します。新しいショートカットを入力するか、既存のショートカットを編集してください。</system:String>
|
||||
<system:String x:Key="duplicateShortcut">そのショートカットは既に存在します。新しいショートカットを入力するか、既存のショートカットを編集してください。</system:String>
|
||||
<system:String x:Key="emptyShortcut">ショートカット、展開の少なくとも一方が空です。</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
||||
|
||||
|
|
@ -490,17 +557,17 @@
|
|||
<system:String x:Key="commonSave">保存</system:String>
|
||||
<system:String x:Key="commonOverwrite">Overwrite</system:String>
|
||||
<system:String x:Key="commonCancel">キャンセル</system:String>
|
||||
<system:String x:Key="commonReset">Reset</system:String>
|
||||
<system:String x:Key="commonReset">リセット</system:String>
|
||||
<system:String x:Key="commonDelete">削除</system:String>
|
||||
<system:String x:Key="commonOK">Update</system:String>
|
||||
<system:String x:Key="commonYes">Yes</system:String>
|
||||
<system:String x:Key="commonNo">No</system:String>
|
||||
<system:String x:Key="commonYes">はい</system:String>
|
||||
<system:String x:Key="commonNo">いいえ</system:String>
|
||||
<system:String x:Key="commonBackground">バックグラウンド</system:String>
|
||||
|
||||
<!-- Crash Reporter -->
|
||||
<system:String x:Key="reportWindow_version">バージョン</system:String>
|
||||
<system:String x:Key="reportWindow_time">時間</system:String>
|
||||
<system:String x:Key="reportWindow_reproduce">アプリケーションが突然終了した手順を私たちに教えてくださると、バグ修正ができます</system:String>
|
||||
<system:String x:Key="reportWindow_reproduce">バクの修正のため、アプリケーションが突然終了した手順を私たちに教えてください</system:String>
|
||||
<system:String x:Key="reportWindow_send_report">クラッシュレポートを送信</system:String>
|
||||
<system:String x:Key="reportWindow_cancel">キャンセル</system:String>
|
||||
<system:String x:Key="reportWindow_general">一般</system:String>
|
||||
|
|
@ -530,7 +597,7 @@
|
|||
|
||||
<!-- Update -->
|
||||
<system:String x:Key="update_flowlauncher_update_check">Checking for new update</system:String>
|
||||
<system:String x:Key="update_flowlauncher_already_on_latest">You already have the latest Flow Launcher version</system:String>
|
||||
<system:String x:Key="update_flowlauncher_already_on_latest">Flow Launcherは既に最新です</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_found">Update found</system:String>
|
||||
<system:String x:Key="update_flowlauncher_updating">Updating...</system:String>
|
||||
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
|
||||
|
|
@ -549,6 +616,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">更新ファイル一覧</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">アップデートの詳細</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">スキップ</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Flow Launcherへようこそ</system:String>
|
||||
|
|
@ -558,42 +630,42 @@
|
|||
<system:String x:Key="Welcome_Page2_Text01">アプリケーション、ファイル、ブックマーク、YouTube、X などあらゆるものを検索して実行できます。マウスに触れることなく、キーボードだけで快適に操作できます。</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher は以下のホットキーで起動します。さっそく試してみてください。変更するには、入力欄をクリックし、キーボードで希望のホットキーを押してください。</system:String>
|
||||
<system:String x:Key="Welcome_Page3_Title">ホットキー</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">Action Keyword and Commands</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">Search the web, launch applications or run various functions through Flow Launcher plugins. Certain functions start with an action keyword, and if necessary, they can be used without action keywords. Try the queries below in Flow Launcher.</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Title">Let's Start Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Text01">Finished. Enjoy Flow Launcher. Don't forget the hotkey to start :)</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">アクションキーワードとコマンド</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">ウェブ検索、アプリケーションの起動、Flow Launcherプラグインからさまざまな機能を実行できます。 いくつかの機能はアクションキーワードで始まり、またアクションキーワードなしで使用できるものもあります。Flow Launcherで以下のクエリを試してみてください。</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Title">Flow Launcherを始めましょう</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Text01">チュートリアルは完了しました。Flow Launcherをお楽しみください。開始するためのホットキーを忘れずにね :)</system:String>
|
||||
|
||||
<!-- General Guide & Hotkey -->
|
||||
|
||||
<system:String x:Key="HotkeyUpDownDesc">Back / Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyLeftRightDesc">Item Navigation</system:String>
|
||||
<system:String x:Key="HotkeyShiftEnterDesc">Open Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyCtrlEnterDesc">Open Containing Folder</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Run as Admin / Open Folder in Default File Manager</system:String>
|
||||
<system:String x:Key="HotkeyUpDownDesc">戻る、または、コンテキストメニュー</system:String>
|
||||
<system:String x:Key="HotkeyLeftRightDesc">項目間の移動</system:String>
|
||||
<system:String x:Key="HotkeyShiftEnterDesc">コンテキストメニューを開く</system:String>
|
||||
<system:String x:Key="HotkeyCtrlEnterDesc">ファイルのあるフォルダを開く</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">管理者として実行、または、 デフォルトのファイルマネージャでフォルダを開く</system:String>
|
||||
<system:String x:Key="HotkeyCtrlHDesc">Query History</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">Back to Result in Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">コンテキストメニューから検索結果に戻る</system:String>
|
||||
<system:String x:Key="HotkeyTabDesc">Autocomplete</system:String>
|
||||
<system:String x:Key="HotkeyRunDesc">Open / Run Selected Item</system:String>
|
||||
<system:String x:Key="HotkeyCtrlIDesc">Open Setting Window</system:String>
|
||||
<system:String x:Key="HotkeyRunDesc">選択したアイテムを開く、または、実行する</system:String>
|
||||
<system:String x:Key="HotkeyCtrlIDesc">Flow Launcherの設定ウインドウを開く</system:String>
|
||||
<system:String x:Key="HotkeyF5Desc">プラグインデータのリロード</system:String>
|
||||
|
||||
<system:String x:Key="HotkeySelectFirstResult">Select first result</system:String>
|
||||
<system:String x:Key="HotkeySelectLastResult">Select last result</system:String>
|
||||
<system:String x:Key="HotkeyRequery">Run current query again</system:String>
|
||||
<system:String x:Key="HotkeyOpenResult">Open result</system:String>
|
||||
<system:String x:Key="HotkeyOpenResult">結果を開く</system:String>
|
||||
<system:String x:Key="HotkeyOpenResultN">Open result #{0}</system:String>
|
||||
|
||||
<system:String x:Key="RecommendWeather">Weather</system:String>
|
||||
<system:String x:Key="RecommendWeatherDesc">Weather in Google Result</system:String>
|
||||
<system:String x:Key="RecommendWeather">天気</system:String>
|
||||
<system:String x:Key="RecommendWeatherDesc">天気についてのGoogle検索</system:String>
|
||||
<system:String x:Key="RecommendShell">> ping 8.8.8.8</system:String>
|
||||
<system:String x:Key="RecommendShellDesc">Shell Command</system:String>
|
||||
<system:String x:Key="RecommendShellDesc">シェルコマンド</system:String>
|
||||
<system:String x:Key="RecommendBluetooth">s Bluetooth</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Bluetooth in Windows Settings</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Windowsの設定内のBluetooth</system:String>
|
||||
<system:String x:Key="RecommendAcronyms">sn</system:String>
|
||||
<system:String x:Key="RecommendAcronymsDesc">Sticky Notes</system:String>
|
||||
<system:String x:Key="RecommendAcronymsDesc">付箋</system:String>
|
||||
|
||||
<!-- Preview Area -->
|
||||
<system:String x:Key="FileSize">File Size</system:String>
|
||||
<system:String x:Key="Created">Created</system:String>
|
||||
<system:String x:Key="LastModified">Last Modified</system:String>
|
||||
<system:String x:Key="FileSize">ファイルサイズ</system:String>
|
||||
<system:String x:Key="Created">作成日時</system:String>
|
||||
<system:String x:Key="LastModified">最終更新日時</system:String>
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">단축키 "{0}" 등록 해제에 실패했습니다. 다시 시도하시거나 로그를 확인하세요</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">항상 영어입력 모드에서 시작</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Flow 시작시 영어 상태에서 입력을 시작합니다.</system:String>
|
||||
<system:String x:Key="autoUpdates">자동 업데이트</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">선택</system:String>
|
||||
<system:String x:Key="hideOnStartup">시작 시 Flow Launcher 숨김</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flowr Launcher가 트레이에 숨겨진 상태로 시작합니다.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">낮음</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">보통</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">항상 Pinyin 사용</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin을 사용하여 검색할 수 있습니다. Pinyin (병음) 은 로마자 중국어 입력 방식입니다.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">항상 미리보기</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Flow 사용시 항상 미리보기 패널을 열어둡니다. {0} 키를 눌러 프리뷰창을 켜고 끌 수 있습니다.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">반투명 흐림 효과를 사용하는 경우, 그림자 효과를 쓸 수 없습니다.</system:String>
|
||||
|
|
@ -122,6 +156,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">열기</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">이전 버전의 Microsoft IME 사용</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">이전 버전의 IME를 사용하도록 시스템 설정을 변경합니다</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">홈페이지</system:String>
|
||||
<system:String x:Key="homePageToolTip">쿼리 입력창이 비어있을때, 홈페이지의 결과를 표시합니다.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">히스토리를 홈페이지에 표시</system:String>
|
||||
|
|
@ -133,6 +169,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">플러그인 검색</system:String>
|
||||
|
|
@ -214,6 +252,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">사용 가능한 업데이트가 없습니다</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">테마</system:String>
|
||||
|
|
@ -279,6 +323,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">안내 텍스트를 변경하세요. 아무것도 입력하지 않으면 다음을 사용합니다: "{0}"</system:String>
|
||||
<system:String x:Key="KeepMaxResults">창 크기 고정</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">창 크기를 드래그하여 조절할 수 없습니다.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">단축키</system:String>
|
||||
|
|
@ -341,6 +386,28 @@
|
|||
<system:String x:Key="showBadges">결과 뱃지 표시</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">전역 검색 결과에서만 뱃지 표시</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP 프록시</system:String>
|
||||
|
|
@ -540,6 +607,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">업데이트 파일</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">업데이트 설명</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">건너뛰기</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Flow Launcher에 오신 것을 환영합니다</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Mislykkes i å initialisere programtillegg</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Programtillegg: {0} - mislykkes å lastes inn og vil bli deaktivert, vennligst kontakt utvikleren av programtillegget for hjelp</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Kan ikke registrere hurtigtasten "{0}". Hurtigtasten kan være i bruk av et annet program. Endre til en annen hurtigtast, eller avslutt et annet program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Begynn alltid å skrive i engelsk modus</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Bytt inndatametode midlertidig til engelsk modus når du aktiverer Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatisk oppdatering</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Velg</system:String>
|
||||
<system:String x:Key="hideOnStartup">Skjul Flow Launcher ved oppstart</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Søkevinduet for Flow Launcher er skjult i systemstatusfeltet etter oppstart.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Lav</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Vanlig</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Søk med Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Tillater bruk av Pinyin for å søke. Pinyin er standardsystemet for romanisert stavemåte for å oversette kinesisk.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Alltid forhåndsvisning</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Åpne alltid forhåndsvisningspanel når Flow aktiveres. Trykk på {0} for å velge forhåndsvisning.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Skyggeeffekt er ikke tillatt mens gjeldende tema har uskarphet-effekt aktivert</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Åpne</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Søk etter programtillegg</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Ingen oppdatering tilgjengelig</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Alle programtillegg er oppdatert</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Drakt</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Hurtigtast</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP proxy</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ Hvis du legger til et @-prefiks mens du legger inn en snarvei, samsvarer det med
|
|||
<system:String x:Key="update_flowlauncher_update_files">Oppdater filer</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Beskrivelse av oppdatering</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Hopp over</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Velkommen til Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Probeer het opnieuw</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Sneltoets "{0}" registreren. De sneltoets kan in gebruik zijn door een ander programma. Verander naar een andere sneltoets of sluit een ander programma.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -43,7 +63,7 @@
|
|||
<system:String x:Key="GameModeToolTip">Stop het gebruik van Sneltoetsen.</system:String>
|
||||
<system:String x:Key="PositionReset">Positie resetten</system:String>
|
||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||
<system:String x:Key="queryTextBoxPlaceholder">Type om te zoeken</system:String>
|
||||
|
||||
<!-- Setting General -->
|
||||
<system:String x:Key="flowlauncher_settings">Instellingen</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Begin altijd met typen in Engelse modus</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Verander tijdelijk je invoermethode in de Engelse modus bij het activeren van Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatische Update</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Selecteer</system:String>
|
||||
<system:String x:Key="hideOnStartup">Verberg Flow Launcher als systeem opstart</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher zoekvenster is verborgen in het systeemvak na het opstarten.</system:String>
|
||||
|
|
@ -102,16 +123,29 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Laag</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normaal</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Zou Pinyin moeten gebruiken</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Zorgt ervoor dat Pinyin gebruikt kan worden om te zoeken. Pinyin is het standaard systeem van geromaniseerde spelling voor het vertalen van Chinees.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is het standaard systeem van geromaniseerde spelling voor Chinees vertalen. Let op, het inschakelen van dit systeem kan het geheugengebruik tijdens het zoeken aanzienlijk verhogen.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Dubbele Pinyin gebruiken</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Gebruik Double Pinyin in plaats van Full Pinyin om te zoeken.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao Hij</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Altijd voorbeeld</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Open altijd het voorbeeld paneel wanneer Flow activeert. Druk op {0} om voorbeeld te schakelen.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Schaduw effect is niet toegestaan omdat het huidige thema een vervagingseffect heeft</system:String>
|
||||
<system:String x:Key="searchDelay">Search Delay</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
||||
<system:String x:Key="searchDelayTime">Default Search Delay Time</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Wait time before showing results after typing stops. Higher values wait longer. (ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
||||
<system:String x:Key="searchDelay">Vertraging voor zoeken</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">Voegt een korte vertraging toe tijdens het typen om flikkeren van de UI en systeembelasting te verminderen. Aanbevolen als uw typsnelheid gemiddeld is.</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Voer de wachttijd in (in ms) totdat de invoer is voltooid. Dit kan alleen worden bewerkt als de Vertraging voor zoeken optie is ingeschakeld.</system:String>
|
||||
<system:String x:Key="searchDelayTime">Standaard wachttijd Vertraging voor zoeken</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Wacht op het tonen van resultaten na het typen stopt. Hogere waarden wachten langer. (ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Informatie voor Koreaanse IME-gebruiker</system:String>
|
||||
<system:String x:Key="KoreanImeGuide">
|
||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Openen</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Plug-ins zoeken</system:String>
|
||||
|
|
@ -163,7 +201,7 @@
|
|||
<system:String x:Key="FilterComboboxLabel">Advanced Settings:</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">Enabled</system:String>
|
||||
<system:String x:Key="DisplayModePriority">Priority</system:String>
|
||||
<system:String x:Key="DisplayModeSearchDelay">Search Delay</system:String>
|
||||
<system:String x:Key="DisplayModeSearchDelay">Vertraging voor zoeken</system:String>
|
||||
<system:String x:Key="DisplayModeHomeOnOff">Home Page</system:String>
|
||||
<system:String x:Key="currentPriority">Huidige Prioriteit</system:String>
|
||||
<system:String x:Key="newPriority">Nieuwe Prioriteit</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Thema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Sneltoets</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ Als u een '@' voorvoegsel toevoegt tijdens het invoeren van een snelkoppeling, m
|
|||
<system:String x:Key="update_flowlauncher_update_files">Update bestanden</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update beschrijving</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Welcome to Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Nie udało się zainicjować wtyczek</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Wtyczki: {0} – nie udało się ich wczytać i zostaną wyłączone. Skontaktuj się z twórcą wtyczki, aby uzyskać pomoc</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Nie udało się zarejestrować skrótu klawiszowego „{0}”. Skrót może być używany przez inny program. Zmień skrót na inny lub zamknij program, który go używa.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Nie udało się wyrejestrować skrótu „{0}”. Spróbuj ponownie lub sprawdź szczegóły w dzienniku</system:String>
|
||||
|
|
@ -91,6 +111,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="typingStartEn">Zawsze rozpoczynaj wpisywanie w trybie angielskim</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Tymczasowo zmień metodę wprowadzania na tryb angielski podczas aktywacji Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatyczne aktualizacje</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Wybierz</system:String>
|
||||
<system:String x:Key="hideOnStartup">Uruchamiaj Flow Launcher zminimalizowany</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Okno wyszukiwania Flow Launcher jest ukryte w zasobniku systemowym po uruchomieniu.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="SearchPrecisionLow">Niska</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Standardowa</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Szukaj z Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Umożliwia wyszukiwanie przy użyciu Pinyin. Pinyin to standardowy system pisowni zromanizowanej służący do tłumaczenia języka chińskiego.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Zawsze podgląd</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Zawsze otwieraj panel podglądu, gdy aktywowany jest Flow. Naciśnij {0}, aby przełączyć podgląd.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Efekt cienia jest niedozwolony, gdy bieżący motyw ma włączony efekt rozmycia</system:String>
|
||||
|
|
@ -130,6 +164,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Otwórz</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Użyj poprzedniego koreańskiego IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Możesz bezpośrednio zmienić ustawienia poprzedniego koreańskiego IME tutaj</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Strona główna</system:String>
|
||||
<system:String x:Key="homePageToolTip">Wyświetl wyniki strony głównej, gdy pole wyszukiwania jest puste.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Pokaż wyniki historii na stronie głównej</system:String>
|
||||
|
|
@ -141,6 +177,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Szukaj wtyczek</system:String>
|
||||
|
|
@ -222,6 +260,12 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Brak dostępnych aktualizacji</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Wszystkie wtyczki są aktualne</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Motyw</system:String>
|
||||
|
|
@ -287,6 +331,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="PlaceholderTextTip">Zmień tekst placeholdera. Jeśli pole będzie puste, zostanie użyty: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Stały rozmiar okna</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Nie można zmienić rozmiaru okna, przeciągając.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Skrót klawiszowy</system:String>
|
||||
|
|
@ -349,6 +394,28 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
|||
<system:String x:Key="showBadges">Pokaż odznaki wyników</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">W przypadku wspieranych wtyczek wyświetlane są odznaki, aby łatwiej je rozróżnić.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Pokaż odznaki wyników tylko dla zapytań globalnych</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Serwer proxy HTTP</system:String>
|
||||
|
|
@ -548,6 +615,11 @@ Jeśli dodasz prefiks '@' podczas wprowadzania skrótu, będzie on pasował do d
|
|||
<system:String x:Key="update_flowlauncher_update_files">Aktualizuj pliki</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opis aktualizacji</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Pomiń</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Witamy w Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Falha em registrar a tecla de atalho "{0}". A combinação pode estar em uso por outro programa. Mude para uma tecla de atalho diferente, ou encerre o outro programa.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Sempre Começar Digitando em Modo Inglês</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporariamente altere seu método de entrada para o Modo Inglês ao ativar o Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Atualizar Automaticamente</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Selecionar</system:String>
|
||||
<system:String x:Key="hideOnStartup">Esconder Flow Launcher na inicialização</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Buscar com Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Permite o uso de Pinyin para busca. Pinyin é o sistema padrão de escrita romanizada para traduzir chinês.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Sempre Pré-visualizar</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Sempre abrir o painel de pré-visualização quando o Flow é ativado. Pressione {0} para ativar ou desativar a pré-visualização.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">O efeito de sombra não é permitido enquanto o tema atual tem o efeito de desfoque ativado</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Abrir</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Buscar Plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Atalho</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">Atualizar arquivos</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Atualizar descrição</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Pular</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Bem-vindo ao Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -8,23 +8,43 @@
|
|||
</system:String>
|
||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Por favor, selecione o executável {0}</system:String>
|
||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||
Your selected {0} executable is invalid.
|
||||
O executável {0} é inválido.
|
||||
{2}{2}
|
||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
||||
Clique Sim se quiser escolher o novo executável {0}. Clique Não se quiser descarregar {1}.
|
||||
</system:String>
|
||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Não foi possível definir o caminho do executável {0}. Experimente definir o caminho nas definições (desloque até ao fundo).</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsTitle">Falha ao iniciar os plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugin: {0} - não foi possível iniciar e será desativado. Contacte o criador do plugin para obter ajuda.</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Tem que reiniciar Flow Launcher para terminar a desativação do modo portátil. Após reiniciar, o seu perfil de dados portáteis será eliminado mas o perfil na pasta "Roaming" será mantido.</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Tem que reiniciar Flow Launcher para terminar a ativação do modo portátil. Após reiniciar, o seu perfil de dados na pasta "Roaming" será eliminado mas o perfil de dados portáteis será mantido.</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher detetou que você ativou o modo portátil . Gostaria de mover a pasta da aplicação para outro local?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher detetou que desativou o modo portátil. De seguida, serão criados os atalhos e o desintalador.</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detetou que os seus dados de utilizador existem e {0} e {1}. {2}{2}Deve eliminar {1} para continuar. Nenhuma alteração foi efetuada.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">Ocorreu um erro com o plugin indicado e os dados não foram carregados:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Ocorreu um erro com os plugins indicados e os dados não foram carregados:</system:String>
|
||||
<system:String x:Key="referToLogs">Consulte o registo para mais informações</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Por favor tente novamente</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Não foi possível processar o proxy HTTP</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Falha ao instalar o ambiente TypeScript. Por favor, tente mais tarde.</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Falha ao instalar o ambiente Python. Por favor, tente mais tarde.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Falha ao registar a tecla de atalho "{0}". A tecla de atalho pode estar a ser usada por outra aplicação. Utilize uma tecla de atalho diferente ou feche o outro programa.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Falha ao cancelar a atribuição da tecla de atalho "{0}". Tente novamente ou consulte o registo para mais detalhes.</system:String>
|
||||
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
||||
<system:String x:Key="couldnotStartCmd">Não foi possível iniciar {0}</system:String>
|
||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Formato do ficheiro inválido como plugin</system:String>
|
||||
<system:String x:Key="setAsTopMostInThisQuery">Definir como principal para esta consulta</system:String>
|
||||
<system:String x:Key="cancelTopMostInThisQuery">Cancelar como principal para esta consulta</system:String>
|
||||
<system:String x:Key="executeQuery">Executar consulta: {0}</system:String>
|
||||
<system:String x:Key="setAsTopMostInThisQuery">Definir como principal para esta pesquisa</system:String>
|
||||
<system:String x:Key="cancelTopMostInThisQuery">Cancelar como principal para esta pesquisa</system:String>
|
||||
<system:String x:Key="executeQuery">Executar pesquisa: {0}</system:String>
|
||||
<system:String x:Key="lastExecuteTime">Última execução: {0}</system:String>
|
||||
<system:String x:Key="iconTrayOpen">Abrir</system:String>
|
||||
<system:String x:Key="iconTraySettings">Definições</system:String>
|
||||
|
|
@ -69,11 +89,11 @@
|
|||
<system:String x:Key="SearchWindowAlignRightTop">Direita, cima</system:String>
|
||||
<system:String x:Key="SearchWindowAlignCustom">Posição personalizada</system:String>
|
||||
<system:String x:Key="language">Idioma</system:String>
|
||||
<system:String x:Key="lastQueryMode">Estilo da última consulta</system:String>
|
||||
<system:String x:Key="lastQueryMode">Estilo da última pesquisa</system:String>
|
||||
<system:String x:Key="lastQueryModeToolTip">Mostrar/ocultar resultados anteriores ao reiniciar Flow Launcher</system:String>
|
||||
<system:String x:Key="LastQueryPreserved">Manter última consulta</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Selecionar última consulta</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Limpar última consulta</system:String>
|
||||
<system:String x:Key="LastQueryPreserved">Manter última pesquisa</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Selecionar última pesquisa</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Limpar última pesquisa</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">Manter palavra-chave da última ação</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">Selecionar palavra-chave da última ação</system:String>
|
||||
<system:String x:Key="maxShowResults">Número máximo de resultados</system:String>
|
||||
|
|
@ -91,18 +111,32 @@
|
|||
<system:String x:Key="typingStartEn">Escrever sempre em inglês</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Alterar, temporariamente, o método de introdução para inglês ao iniciar Flow launcher.</system:String>
|
||||
<system:String x:Key="autoUpdates">Atualização automática</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Procurar atualizações da aplicação e aplicar automaticamente ao iniciar</system:String>
|
||||
<system:String x:Key="select">Selecionar</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher ao arrancar</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Ocultar caixa de pesquisa na bandeja após iniciar Flow Launcher.</system:String>
|
||||
<system:String x:Key="hideNotifyIcon">Ocultar ícone na bandeja</system:String>
|
||||
<system:String x:Key="hideNotifyIconToolTip">Se o ícone da bandeja estiver oculto, pode abrir as Definições com um clique com o botão direito do rato na caixa de pesquisa.</system:String>
|
||||
<system:String x:Key="querySearchPrecision">Precisão da consulta</system:String>
|
||||
<system:String x:Key="querySearchPrecisionToolTip">Altera a precisão mínima necessário para obter resultados</system:String>
|
||||
<system:String x:Key="querySearchPrecision">Precisão da pesquisa</system:String>
|
||||
<system:String x:Key="querySearchPrecisionToolTip">Altera a precisão mínima para a obtenção dos resultados</system:String>
|
||||
<system:String x:Key="SearchPrecisionNone">Nenhuma</system:String>
|
||||
<system:String x:Key="SearchPrecisionLow">Baixa</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normal</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Pesquisar com Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Permite a utilização de Pinyin para pesquisar. Pinyin é um sistema normalizado de ortografia romanizada para tradução de mandarim.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin é o sistema padrão de ortografia romanizada para traduzir Mandarim. Tenha em atenção de que, se ativar esta opção, pode aumentar a utilização de memória durantes as pesquisas.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Utilizar Pinyin duplo</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Utilizar Pinyin duplo em vez de Pinyin completo para as pesquisas</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Esquema Pinyin duplo</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Pré-visualizar sempre</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Abrir painel de pré-visualização ao ativar Flow Launcher. Prima {0} para comutar a pré-visualização.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">O efeito sombra não é permitido com este tema porque o efeito desfocar está ativo</system:String>
|
||||
|
|
@ -130,6 +164,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Abrir</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Utilizar versão anterior de IME Coreano</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Pode alterar as definições do método de introdução coreano aqui</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">falha ao alterar a definição IME Coreano</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Verifique se tem acesso ao registo do sistema ou contacte o suporte.</system:String>
|
||||
<system:String x:Key="homePage">Página inicial</system:String>
|
||||
<system:String x:Key="homePageToolTip">Mostrar resultados da página inicial se o termo de pesquisa estiver vazio.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Mostrar histórico na página inicial</system:String>
|
||||
|
|
@ -141,6 +177,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Reiniciar Flow Launcher após instalar/desinstalar/atualizar um plugin via Loja de plugins</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Mostrar aviso de origem desconhecida</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Mostrar aviso ao instalar plugins de origens desconhecidas</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Atualizar plugins automaticamente</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Procurar atualizações para plugins automaticamente e notificar se existirem</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Pesquisar plugins</system:String>
|
||||
|
|
@ -171,7 +209,7 @@
|
|||
<system:String x:Key="pluginDirectory">Pasta de plugins</system:String>
|
||||
<system:String x:Key="author">de</system:String>
|
||||
<system:String x:Key="plugin_init_time">Tempo de arranque:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Tempo de consulta:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Tempo de pesquisa:</system:String>
|
||||
<system:String x:Key="plugin_query_version">Versão</system:String>
|
||||
<system:String x:Key="plugin_query_web">Site</system:String>
|
||||
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
||||
|
|
@ -222,6 +260,12 @@
|
|||
<system:String x:Key="ZipFiles">Ficheiros Zip</system:String>
|
||||
<system:String x:Key="SelectZipFile">Selecione o ficheiro Zip</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Instalar plugin de um caminho local</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Não existem atualizações</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Todos os plugins estão atualizados</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Existem atualizações para plugins</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Atualizar plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Procurar atualizações para plugins</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins atualizados com sucesso. Reinicie Flow Launcher.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -239,7 +283,7 @@
|
|||
<system:String x:Key="SampleSubTitleProcessKiller">Terminar processos indesejados</system:String>
|
||||
<system:String x:Key="SearchBarHeight">Altura da barra de pesquisa</system:String>
|
||||
<system:String x:Key="ItemHeight">Altura do item</system:String>
|
||||
<system:String x:Key="queryBoxFont">Tipo de letra da consulta</system:String>
|
||||
<system:String x:Key="queryBoxFont">Tipo de letra da caixa de pesquisa</system:String>
|
||||
<system:String x:Key="resultItemFont">Tipo de letra dos títulos</system:String>
|
||||
<system:String x:Key="resultSubItemFont">Tipo de letra dos subtítulos</system:String>
|
||||
<system:String x:Key="resetCustomize">Repor</system:String>
|
||||
|
|
@ -282,11 +326,12 @@
|
|||
<system:String x:Key="TypeIsDarkToolTip">Este tema tem suporte a dois modos (claro/escuro).</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">Este tema tem suporte a fundo transparente desfocado.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">Mostrar marcador de posição</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Mostrar marcador de posição se a consulta estiver vazia</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Mostrar marcador de posição se a pesquisa estiver vazia</system:String>
|
||||
<system:String x:Key="PlaceholderText">Texto do marcador</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">O texto do marcador de posição. Se vazio, será utilizado: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Janela com tamanho fixo</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Não pode ajustar o tamanho da janela por arrasto.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Tecla de atalho</system:String>
|
||||
|
|
@ -307,8 +352,8 @@
|
|||
<system:String x:Key="SelectPrevItemHotkey">Selecionar anterior</system:String>
|
||||
<system:String x:Key="SelectNextPageHotkey">Página seguinte</system:String>
|
||||
<system:String x:Key="SelectPrevPageHotkey">Página anterior</system:String>
|
||||
<system:String x:Key="CycleHistoryUpHotkey">Ir para consulta anterior</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">Ir para consulta seguinte</system:String>
|
||||
<system:String x:Key="CycleHistoryUpHotkey">Ir para pesquisa anterior</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">Ir para pesquisa seguinte</system:String>
|
||||
<system:String x:Key="OpenContextMenuHotkey">Abrir menu de contexto</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Abrir menu de contexto nativo</system:String>
|
||||
<system:String x:Key="SettingWindowHotkey">Abrir janela de definições</system:String>
|
||||
|
|
@ -324,9 +369,9 @@
|
|||
<system:String x:Key="ReloadPluginHotkeyToolTip">Para utilizar quando pretende recarregar o plugin e os dados existentes.</system:String>
|
||||
<system:String x:Key="AdditionalHotkeyToolTip">Ainda pode adicionar mais uma tecla de atalho para esta função.</system:String>
|
||||
<system:String x:Key="customQueryHotkey">Teclas de atalho personalizadas</system:String>
|
||||
<system:String x:Key="customQueryShortcut">Atalhos de consultas personalizadas</system:String>
|
||||
<system:String x:Key="customQueryShortcut">Atalhos personalizados para pesquisas</system:String>
|
||||
<system:String x:Key="builtinShortcuts">Atalhos nativos</system:String>
|
||||
<system:String x:Key="customQuery">Consulta</system:String>
|
||||
<system:String x:Key="customQuery">Pesquisa</system:String>
|
||||
<system:String x:Key="customShortcut">Atalho</system:String>
|
||||
<system:String x:Key="customShortcutExpansion">Expansão</system:String>
|
||||
<system:String x:Key="builtinShortcutDescription">Descrição</system:String>
|
||||
|
|
@ -346,9 +391,31 @@
|
|||
<system:String x:Key="useGlyphUI">Utilizar ícones Segoe Fluent</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">Se possível, utilizar ícones Segoe Fluent para os resultados</system:String>
|
||||
<system:String x:Key="flowlauncherPressHotkey">Prima a tecla</system:String>
|
||||
<system:String x:Key="showBadges">Mostrar emblemas dos resultados</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Para plugins suportados, são mostrados emblemas para nos ajudar a distingui-los mais facilmente.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Mostrar emblemas apenas para a consulta global</system:String>
|
||||
<system:String x:Key="showBadges">Mostrar indicador dos resultados</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Para plugins suportados, são mostrados indicadores para nos ajudar a distingui-los mais facilmente.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Mostrar indicadores apenas para a pesquisa global</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Mostrar indicadores apenas para a pesquisa global</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -413,7 +480,7 @@
|
|||
<system:String x:Key="fileManagerWindow">Selecione o gestor de ficheiros</system:String>
|
||||
<system:String x:Key="fileManager_learnMore">Saber mais</system:String>
|
||||
<system:String x:Key="fileManager_tips">Por favor, especifique a localização do executável do seu gestor de ficheiros e adicione os argumentos necessários. "%d" representa o caminho do diretório a abrir, usado pelo argumento do campo Pasta e para comandos que abrem diretórios específicos. "%f" representa o caminho do ficheiro a abrir, usado pelo argumento do campo Ficheiro e para comandos que abrem ficheiros específicos.</system:String>
|
||||
<system:String x:Key="fileManager_tips2">For example, if the file manager uses a command such as "totalcmd.exe /A c:\windows" to open the c:\windows directory, the File Manager Path will be totalcmd.exe, and the Arg For Folder will be /A "%d". Certain file managers like QTTabBar may just require a path to be supplied, in this instance use "%d" as the File Manager Path and leave the rest of the fields blank.</system:String>
|
||||
<system:String x:Key="fileManager_tips2">Por exemplo, se o gestor de ficheiros utilizar o comando "totalcmd.exe /A c:\windows" para abrir o diretório c:\windows , o caminho para o gestor de ficheiros será totalcmd. exe e os argumentos para a Pasta serão /A "%d". Alguns gestores de ficheiros, como QTTabBar podem apenas exigir que especifique o caminho. Para estes, deve utilizar "%d" como caminho para o gestor de ficheiros e deixar o resto dos campos em branco.</system:String>
|
||||
<system:String x:Key="fileManager_name">Gestor de ficheiros</system:String>
|
||||
<system:String x:Key="fileManager_profile_name">Nome do perfil</system:String>
|
||||
<system:String x:Key="fileManager_path">Caminho do gestor de ficheiros</system:String>
|
||||
|
|
@ -464,14 +531,14 @@
|
|||
<system:String x:Key="customeQueryHotkeyTips">Prima uma tecla de atalho personalizada para abrir Flow Launcher e escrever automaticamente a pesquisa.</system:String>
|
||||
<system:String x:Key="preview">Antevisão</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Tecla de atalho indisponível, por favor escolha outra</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Hotkey is invalid</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Tecla de atalho inválida</system:String>
|
||||
<system:String x:Key="update">Atualizar</system:String>
|
||||
<system:String x:Key="hotkeyRegTitle">Associar tecla de atalho</system:String>
|
||||
<system:String x:Key="hotkeyUnavailable">A tecla de atalho atual não está disponível.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableUneditable">Esta tecla de atalho está reservada para "{0}" e não pode ser usada. Por favor, escolha outra.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableEditable">Esta tecla de atalho está a ser utilizada por "{0}". Se escolher "Substituir", será removida de "{0}".</system:String>
|
||||
<system:String x:Key="hotkeyRegGuide">Prima as teclas que pretende utilizar para esta função.</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Tecla de atalho e palavra-chave vazias</system:String>
|
||||
|
||||
<!-- Custom Query Shortcut Dialog -->
|
||||
<system:String x:Key="customeQueryShortcutTitle">Atalho de consulta personalizada</system:String>
|
||||
|
|
@ -482,7 +549,7 @@ Se adicionar o prefixo '@' durante a introdução do atalho, será utilizada qua
|
|||
</system:String>
|
||||
<system:String x:Key="duplicateShortcut">Este atallho já existe. Por favor escolha outro ou edite o existente.</system:String>
|
||||
<system:String x:Key="emptyShortcut">O atalho e/ou a expansão não estão preenchidos.</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
||||
<system:String x:Key="invalidShortcut">Atalho inválido</system:String>
|
||||
|
||||
<!-- Common Action -->
|
||||
<system:String x:Key="commonSave">Guardar</system:String>
|
||||
|
|
@ -547,6 +614,11 @@ Queira por favor mover a pasta do seu perfil de {0} para {1}
|
|||
<system:String x:Key="update_flowlauncher_update_files">Atualizar ficheiros</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Atualizar descrição</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Reiniciar Flow Launcher após atualizar os plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Atualizar de v{1} para v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Nada selecionado</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Ignorar</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Obrigado por utilizar Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Не удалось зарегистрировать сочетание клавиш "{0}". Возможно, оно используется другой программой. Измените сочетание клавиш или закройте другую программу.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Всегда начинать печатать в английском режиме</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Временно изменить способ ввода на английский при запуске Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Автообновление</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Выбор</system:String>
|
||||
<system:String x:Key="hideOnStartup">Скрыть Flow Launcher при запуске</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Поиск с использованием пиньинь</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Позволяет использовать пиньинь для поиска. Пиньинь - это стандартная система латинизированной орфографии для перевода китайского языка.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Всегда предпросмотр</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Всегда открывать панель предварительного просмотра при запуске Flow. Нажмите {0}, чтобы переключить предварительный просмотр.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Эффект тени не допускается, если в текущей теме включён эффект размытия</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Открыть</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Поиск плагина</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Тема</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Горячая клавиша</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">НТТР-прокси</system:String>
|
||||
|
|
@ -549,6 +616,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">Обновить файлы</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Обновить описание</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Пропустить</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Добро пожаловать в Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,9 +16,30 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Nepodarilo sa inicializovať pluginy</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Pluginy: {0} – nepodarilo sa načítať a mal by byť zakázaný, na pomoc kontaktujte autora pluginu</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher sa musí reštartovať, aby sa vypol prenosný režim, po reštarte sa váš prenosný dátový profil odstráni a roamingový dátový profil sa zachová</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher sa musí reštartovať, aby sa zapol prenosný režim, po reštarte sa váš roamingový dátový profil odstráni a prenosný dátový profil sa zachová</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher zistil, že máte zapnutý prenosný režim, chcete ho presunúť na iné miesto?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher zistil, že máte vypnutý prenosný režim, boli vytvorení príslušní zástupcovia a položka odinštalátora</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher zistil, že vaše používateľské údaje existujú v {0} aj {1}. {2}{2}Prosím, odstráňte {1}, aby ste mohli pokračovať.
|
||||
Nevykonali sa žiadne zmeny.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">Nasledujúci plugin je chybný a nie je možné ho načítať:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Nasledujúc pluginy sú chybné nie je možné ich načítať:</system:String>
|
||||
<system:String x:Key="referToLogs">Ďalšie informácie nájdete v logoch</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Prosím, skúste to znova</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Nie je možné analyzovať Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Nepodarilo sa nainštalovať prostredie TypeScript. Skúste to neskôr.</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Nepodarilo sa nainštalovať prostredie Python. Skúste to neskôr.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Nepodarilo sa zaregistrovať klávesovú skratku "{0}". Klávesová skratka môže byť používaná iným programom. Zmeňte klávesovú skratku na inú alebo ukončite iný program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Nepodarilo sa registrovať klávesovú skratku "{0}". Skúste to znova alebo si pozrite podrobnosti v denníku</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Nepodarilo sa registrovať klávesovú skratku "{0}". Skúste to znova alebo si pozrite podrobnosti v logu</system:String>
|
||||
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
||||
<system:String x:Key="couldnotStartCmd">Nepodarilo sa spustiť {0}</system:String>
|
||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Neplatný formát súboru pre plugin Flow Launchera</system:String>
|
||||
|
|
@ -91,6 +112,7 @@
|
|||
<system:String x:Key="typingStartEn">Vždy písať s anglickou klávesnicou</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Pri aktivácii Flowu sa dočasne zmení klávesnica na anglickú.</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatická aktualizácia</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automaticky skontrolovať a aktualizovať aplikáciu, ak je to možné</system:String>
|
||||
<system:String x:Key="select">Vybrať</system:String>
|
||||
<system:String x:Key="hideOnStartup">Schovať Flow Launcher po spustení</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Vyhľadávacie okno Flow launchera sa po spustení skryje v oblasti oznámení.</system:String>
|
||||
|
|
@ -102,7 +124,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Nízka</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normálna</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Vyhľadávanie pomocou pchin-jin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Umožňuje vyhľadávanie pomocou pchin-jin. Pchin-jin je systém zápisu čínskeho jazyka pomocou písmen latinky.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pchin-jin je systém zápisu čínskeho jazyka pomocou písmen latinky. Upozorňujeme, že zapnutie tejto funkcie môže výrazne zvýšiť využitie pamäte počas vyhľadávania.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Použiť Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Na vyhľadávanie použiť namiesto úplného Pinyinu Double Pinyin.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Schéma Double Pinyin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Vždy zobraziť náhľad</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Pri aktivácii Flowu vždy otvoriť panel s náhľadom. Stlačením klávesu {0} prepnete náhľad.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Efekt tieňa nie je povolený, kým má aktuálny motív povolený efekt rozostrenia</system:String>
|
||||
|
|
@ -131,6 +166,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Otvoriť</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Použiť predchádzajúcu verziu editora Microsoft IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Zmeniť na predchádzajúcu verziu editora Microsoft IME môžete priamo tu</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Nepodarilo sa zmeniť nastavenie kórejského IME</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Skontrolujte prístup do systémového registra alebo kontaktujte podporu.</system:String>
|
||||
<system:String x:Key="homePage">Domovská stránka</system:String>
|
||||
<system:String x:Key="homePageToolTip">Zobraziť výsledky Domovskej stránky, keď je text dopytu prázdny.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Zobraziť výsledky histórie na Domovskej stránke</system:String>
|
||||
|
|
@ -142,6 +179,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizáciu pluginu cez Repozitár pluginov</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Zobraziť upozornenie na neznámy zdroj</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Zobraziť upozornenie pri inštalácii z neznámych zdrojov</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Automaticky aktualizovať pluginy</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automaticky kontrolovať aktualizácie pluginov a upozorniť na ne, ak sú k dispozícii</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Vyhľadať plugin</system:String>
|
||||
|
|
@ -223,6 +262,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip súbory</system:String>
|
||||
<system:String x:Key="SelectZipFile">Vyberte zip súbor</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Inštalovať plugin z miestneho úložiska</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Nie je k dispozícii žiadna aktualizácia</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Všetky pluginy sú aktuálne</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Dostupná aktualizácia pluginu</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Aktualizovať pluginy</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Skontrolovať dostupnosť aktualizácií</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Pluginy {0} boli úspešne aktualizované. Prosím, reštartuje Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Motív</system:String>
|
||||
|
|
@ -288,6 +333,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Zobrazí zástupný text. V prázdnom poli sa zobrazí: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Pevná veľkosť okna</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Veľkosť okna sa nedá nastaviť ťahaním.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Ak máte zapnuté Vždy zobraziť náhľad, maximálny počet zobrazených výsledkov môže byť iný, lebo panel náhľadu zaberá určitú minimálnu výšku</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Klávesové skratky</system:String>
|
||||
|
|
@ -350,6 +396,28 @@
|
|||
<system:String x:Key="showBadges">Zobraziť výsledok v odznaku</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Ak to plugin podporuje, zobrazí sa jeho ikona v odznaku na jednoduchšie odlíšenie.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Zobraziť výsledok v odznaku len pre globálne vyhľadávanie</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP proxy</system:String>
|
||||
|
|
@ -549,6 +617,11 @@ Ak pri zadávaní skratky pred ňu pridáte "@", bude sa zhodovať s
|
|||
<system:String x:Key="update_flowlauncher_update_files">Aktualizovať súbory</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Aktualizovať popis</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Po aktualizácii pluginov reštartovať Flow Launcher</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Aktualizované z v{1} na v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Nie je vybraný žiaden plugin</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Preskočiť</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Vitajte vo Flow Launcheri</system:String>
|
||||
|
|
|
|||
671
Flow.Launcher/Languages/sr-Cyrl-RS.xaml
Normal file
671
Flow.Launcher/Languages/sr-Cyrl-RS.xaml
Normal file
|
|
@ -0,0 +1,671 @@
|
|||
<?xml version="1.0"?>
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||
<!-- Startup -->
|
||||
<system:String x:Key="runtimePluginInstalledChooseRuntimePrompt">
|
||||
Flow detected you have installed {0} plugins, which will require {1} to run. Would you like to download {1}?
|
||||
{2}{2}
|
||||
Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable
|
||||
</system:String>
|
||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Please select the {0} executable</system:String>
|
||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||
Your selected {0} executable is invalid.
|
||||
{2}{2}
|
||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
||||
</system:String>
|
||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom).</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
||||
<system:String x:Key="couldnotStartCmd">Could not start {0}</system:String>
|
||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Invalid Flow Launcher plugin file format</system:String>
|
||||
<system:String x:Key="setAsTopMostInThisQuery">Set as topmost in this query</system:String>
|
||||
<system:String x:Key="cancelTopMostInThisQuery">Cancel topmost in this query</system:String>
|
||||
<system:String x:Key="executeQuery">Execute query: {0}</system:String>
|
||||
<system:String x:Key="lastExecuteTime">Last execution time: {0}</system:String>
|
||||
<system:String x:Key="iconTrayOpen">Open</system:String>
|
||||
<system:String x:Key="iconTraySettings">Settings</system:String>
|
||||
<system:String x:Key="iconTrayAbout">About</system:String>
|
||||
<system:String x:Key="iconTrayExit">Exit</system:String>
|
||||
<system:String x:Key="closeWindow">Close</system:String>
|
||||
<system:String x:Key="copy">Copy</system:String>
|
||||
<system:String x:Key="cut">Cut</system:String>
|
||||
<system:String x:Key="paste">Paste</system:String>
|
||||
<system:String x:Key="undo">Undo</system:String>
|
||||
<system:String x:Key="selectAll">Select All</system:String>
|
||||
<system:String x:Key="fileTitle">File</system:String>
|
||||
<system:String x:Key="folderTitle">Folder</system:String>
|
||||
<system:String x:Key="textTitle">Text</system:String>
|
||||
<system:String x:Key="GameMode">Game Mode</system:String>
|
||||
<system:String x:Key="GameModeToolTip">Suspend the use of Hotkeys.</system:String>
|
||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||
|
||||
<!-- Setting General -->
|
||||
<system:String x:Key="flowlauncher_settings">Settings</system:String>
|
||||
<system:String x:Key="general">General</system:String>
|
||||
<system:String x:Key="portableMode">Portable Mode</system:String>
|
||||
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
|
||||
<system:String x:Key="startFlowLauncherOnSystemStartup">Start Flow Launcher on system startup</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartup">Use logon task instead of startup entry for faster startup experience</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
|
||||
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
|
||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||
<system:String x:Key="SearchWindowScreenCursor">Monitor with Mouse Cursor</system:String>
|
||||
<system:String x:Key="SearchWindowScreenFocus">Monitor with Focused Window</system:String>
|
||||
<system:String x:Key="SearchWindowScreenPrimary">Primary Monitor</system:String>
|
||||
<system:String x:Key="SearchWindowScreenCustom">Custom Monitor</system:String>
|
||||
<system:String x:Key="SearchWindowAlign">Search Window Position on Monitor</system:String>
|
||||
<system:String x:Key="SearchWindowAlignCenter">Center</system:String>
|
||||
<system:String x:Key="SearchWindowAlignCenterTop">Center Top</system:String>
|
||||
<system:String x:Key="SearchWindowAlignLeftTop">Left Top</system:String>
|
||||
<system:String x:Key="SearchWindowAlignRightTop">Right Top</system:String>
|
||||
<system:String x:Key="SearchWindowAlignCustom">Custom Position</system:String>
|
||||
<system:String x:Key="language">Language</system:String>
|
||||
<system:String x:Key="lastQueryMode">Last Query Style</system:String>
|
||||
<system:String x:Key="lastQueryModeToolTip">Show/Hide previous results when Flow Launcher is reactivated.</system:String>
|
||||
<system:String x:Key="LastQueryPreserved">Preserve Last Query</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Select last Query</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Empty last Query</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">Preserve Last Action Keyword</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">Select Last Action Keyword</system:String>
|
||||
<system:String x:Key="maxShowResults">Maximum results shown</system:String>
|
||||
<system:String x:Key="maxShowResultsToolTip">You can also quickly adjust this by using CTRL+Plus and CTRL+Minus.</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignore hotkeys in fullscreen mode</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Disable Flow Launcher activation when a full screen application is active (Recommended for games).</system:String>
|
||||
<system:String x:Key="defaultFileManager">Default File Manager</system:String>
|
||||
<system:String x:Key="defaultFileManagerToolTip">Select the file manager to use when opening the folder.</system:String>
|
||||
<system:String x:Key="defaultBrowser">Default Web Browser</system:String>
|
||||
<system:String x:Key="defaultBrowserToolTip">Setting for New Tab, New Window, Private Mode.</system:String>
|
||||
<system:String x:Key="pythonFilePath">Python Path</system:String>
|
||||
<system:String x:Key="nodeFilePath">Node.js Path</system:String>
|
||||
<system:String x:Key="selectNodeExecutable">Please select the Node.js executable</system:String>
|
||||
<system:String x:Key="selectPythonExecutable">Please select pythonw.exe</system:String>
|
||||
<system:String x:Key="typingStartEn">Always Start Typing in English Mode</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporarily change your input method to English mode when activating Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Auto Update</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Select</system:String>
|
||||
<system:String x:Key="hideOnStartup">Hide Flow Launcher on startup</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
|
||||
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
|
||||
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
|
||||
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
|
||||
<system:String x:Key="SearchPrecisionNone">None</system:String>
|
||||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
|
||||
<system:String x:Key="searchDelay">Search Delay</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
||||
<system:String x:Key="searchDelayTime">Default Search Delay Time</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Wait time before showing results after typing stops. Higher values wait longer. (ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
||||
<system:String x:Key="KoreanImeGuide">
|
||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||
|
||||
If you experience any problems, you may need to enable "Use previous version of Korean IME".
|
||||
|
||||
|
||||
Open Setting in Windows 11 and go to:
|
||||
|
||||
Time & Language > Language & Region > Korean > Language Options > Keyboard - Microsoft IME > Compatibility,
|
||||
|
||||
and enable "Use previous version of Microsoft IME".
|
||||
|
||||
|
||||
</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLink">Open Language and Region System Settings</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLinkToolTip">Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLinkButton">Open</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Restart after modifying plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
<system:String x:Key="searchpluginToolTip">Ctrl+F to search plugins</system:String>
|
||||
<system:String x:Key="searchplugin_Noresult_Title">No results found</system:String>
|
||||
<system:String x:Key="searchplugin_Noresult_Subtitle">Please try a different search.</system:String>
|
||||
<system:String x:Key="plugin">Plugin</system:String>
|
||||
<system:String x:Key="plugins">Plugins</system:String>
|
||||
<system:String x:Key="browserMorePlugins">Find more plugins</system:String>
|
||||
<system:String x:Key="enable">On</system:String>
|
||||
<system:String x:Key="disable">Off</system:String>
|
||||
<system:String x:Key="actionKeywordsTitle">Action keyword Setting</system:String>
|
||||
<system:String x:Key="actionKeywords">Action keyword</system:String>
|
||||
<system:String x:Key="currentActionKeywords">Current action keyword</system:String>
|
||||
<system:String x:Key="newActionKeyword">New action keyword</system:String>
|
||||
<system:String x:Key="actionKeywordsTooltip">Change Action Keywords</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
||||
<system:String x:Key="FilterComboboxLabel">Advanced Settings:</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">Enabled</system:String>
|
||||
<system:String x:Key="DisplayModePriority">Priority</system:String>
|
||||
<system:String x:Key="DisplayModeSearchDelay">Search Delay</system:String>
|
||||
<system:String x:Key="DisplayModeHomeOnOff">Home Page</system:String>
|
||||
<system:String x:Key="currentPriority">Current Priority</system:String>
|
||||
<system:String x:Key="newPriority">New Priority</system:String>
|
||||
<system:String x:Key="priority">Priority</system:String>
|
||||
<system:String x:Key="priorityToolTip">Change Plugin Results Priority</system:String>
|
||||
<system:String x:Key="pluginDirectory">Plugin Directory</system:String>
|
||||
<system:String x:Key="author">by</system:String>
|
||||
<system:String x:Key="plugin_init_time">Init time:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Query time:</system:String>
|
||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheMessage">Plugins: {0} - Fail to remove plugin cache files, please remove them manually</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} modified already</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyMessage">Please restart Flow before making any further changes</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">Fail to install {0}</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||
|
||||
<!-- Setting Plugin Store -->
|
||||
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
||||
<system:String x:Key="pluginStore_NewRelease">New Release</system:String>
|
||||
<system:String x:Key="pluginStore_RecentlyUpdated">Recently Updated</system:String>
|
||||
<system:String x:Key="pluginStore_None">Plugins</system:String>
|
||||
<system:String x:Key="pluginStore_Installed">Installed</system:String>
|
||||
<system:String x:Key="refresh">Refresh</system:String>
|
||||
<system:String x:Key="installbtn">Install</system:String>
|
||||
<system:String x:Key="uninstallbtn">Uninstall</system:String>
|
||||
<system:String x:Key="updatebtn">Update</system:String>
|
||||
<system:String x:Key="LabelInstalledToolTip">Plugin already installed</system:String>
|
||||
<system:String x:Key="LabelNew">New Version</system:String>
|
||||
<system:String x:Key="LabelNewToolTip">This plugin has been updated within the last 7 days</system:String>
|
||||
<system:String x:Key="LabelUpdateToolTip">New Update is Available</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">Error installing plugin</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">Error uninstalling plugin</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Error updating plugin</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">Keep plugin settings</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">Do you want to keep the settings of the plugin for the next usage?</system:String>
|
||||
<system:String x:Key="InstallSuccessNoRestart">Plugin {0} successfully installed. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UninstallSuccessNoRestart">Plugin {0} successfully uninstalled. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UpdateSuccessNoRestart">Plugin {0} successfully updated. Please restart Flow.</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Plugin install</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}Would you like to install this plugin?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Plugin uninstall</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}Would you like to uninstall this plugin?</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
||||
<system:String x:Key="UpdatePromptSubtitle">{0} by {1} {2}{2}Would you like to update this plugin?</system:String>
|
||||
<system:String x:Key="DownloadingPlugin">Downloading plugin</system:String>
|
||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">Installing from an unknown source</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is from an unknown source and it may contain potential risks!{0}{0}Please ensure you understand where this plugin is from and that it is safe.{0}{0}Would you like to continue still?{0}{0}(You can switch off this warning in general section of setting window)</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Theme</system:String>
|
||||
<system:String x:Key="appearance">Appearance</system:String>
|
||||
<system:String x:Key="browserMoreThemes">Theme Gallery</system:String>
|
||||
<system:String x:Key="howToCreateTheme">How to create a theme</system:String>
|
||||
<system:String x:Key="hiThere">Hi There</system:String>
|
||||
<system:String x:Key="SampleTitleExplorer">Explorer</system:String>
|
||||
<system:String x:Key="SampleSubTitleExplorer">Search for files, folders and file contents</system:String>
|
||||
<system:String x:Key="SampleTitleWebSearch">WebSearch</system:String>
|
||||
<system:String x:Key="SampleSubTitleWebSearch">Search the web with different search engine support</system:String>
|
||||
<system:String x:Key="SampleTitleProgram">Program</system:String>
|
||||
<system:String x:Key="SampleSubTitleProgram">Launch programs as admin or a different user</system:String>
|
||||
<system:String x:Key="SampleTitleProcessKiller">ProcessKiller</system:String>
|
||||
<system:String x:Key="SampleSubTitleProcessKiller">Terminate unwanted processes</system:String>
|
||||
<system:String x:Key="SearchBarHeight">Search Bar Height</system:String>
|
||||
<system:String x:Key="ItemHeight">Item Height</system:String>
|
||||
<system:String x:Key="queryBoxFont">Query Box Font</system:String>
|
||||
<system:String x:Key="resultItemFont">Result Title Font</system:String>
|
||||
<system:String x:Key="resultSubItemFont">Result Subtitle Font</system:String>
|
||||
<system:String x:Key="resetCustomize">Reset</system:String>
|
||||
<system:String x:Key="resetCustomizeToolTip">Reset to the recommended font and size settings.</system:String>
|
||||
<system:String x:Key="ImportThemeSize">Import Theme Size</system:String>
|
||||
<system:String x:Key="ImportThemeSizeToolTip">If a size value intended by the theme designer is available, it will be retrieved and applied.</system:String>
|
||||
<system:String x:Key="CustomizeToolTip">Customize</system:String>
|
||||
<system:String x:Key="windowMode">Window Mode</system:String>
|
||||
<system:String x:Key="opacity">Opacity</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">Theme {0} not exists, fallback to default theme</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Fail to load theme {0}, fallback to default theme</system:String>
|
||||
<system:String x:Key="ThemeFolder">Theme Folder</system:String>
|
||||
<system:String x:Key="OpenThemeFolder">Open Theme Folder</system:String>
|
||||
<system:String x:Key="ColorScheme">Color Scheme</system:String>
|
||||
<system:String x:Key="ColorSchemeSystem">System Default</system:String>
|
||||
<system:String x:Key="ColorSchemeLight">Light</system:String>
|
||||
<system:String x:Key="ColorSchemeDark">Dark</system:String>
|
||||
<system:String x:Key="SoundEffect">Sound Effect</system:String>
|
||||
<system:String x:Key="SoundEffectTip">Play a small sound when the search window opens</system:String>
|
||||
<system:String x:Key="SoundEffectVolume">Sound Effect Volume</system:String>
|
||||
<system:String x:Key="SoundEffectVolumeTip">Adjust the volume of the sound effect</system:String>
|
||||
<system:String x:Key="SoundEffectWarning">Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume.</system:String>
|
||||
<system:String x:Key="Animation">Animation</system:String>
|
||||
<system:String x:Key="AnimationTip">Use Animation in UI</system:String>
|
||||
<system:String x:Key="AnimationSpeed">Animation Speed</system:String>
|
||||
<system:String x:Key="AnimationSpeedTip">The speed of the UI animation</system:String>
|
||||
<system:String x:Key="AnimationSpeedSlow">Slow</system:String>
|
||||
<system:String x:Key="AnimationSpeedMedium">Medium</system:String>
|
||||
<system:String x:Key="AnimationSpeedFast">Fast</system:String>
|
||||
<system:String x:Key="AnimationSpeedCustom">Custom</system:String>
|
||||
<system:String x:Key="Clock">Clock</system:String>
|
||||
<system:String x:Key="Date">Date</system:String>
|
||||
<system:String x:Key="BackdropType">Backdrop Type</system:String>
|
||||
<system:String x:Key="BackdropInfo">The backdrop effect is not applied in the preview.</system:String>
|
||||
<system:String x:Key="BackdropTypeDisabledToolTip">Backdrop supported starting from Windows 11 build 22000 and above</system:String>
|
||||
<system:String x:Key="BackdropTypesNone">None</system:String>
|
||||
<system:String x:Key="BackdropTypesAcrylic">Acrylic</system:String>
|
||||
<system:String x:Key="BackdropTypesMica">Mica</system:String>
|
||||
<system:String x:Key="BackdropTypesMicaAlt">Mica Alt</system:String>
|
||||
<system:String x:Key="TypeIsDarkToolTip">This theme supports two (light/dark) modes.</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">This theme supports Blur Transparent Background.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">Show placeholder</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Display placeholder when query is empty</system:String>
|
||||
<system:String x:Key="PlaceholderText">Placeholder text</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Hotkey</system:String>
|
||||
<system:String x:Key="hotkeys">Hotkeys</system:String>
|
||||
<system:String x:Key="flowlauncherHotkey">Open Flow Launcher</system:String>
|
||||
<system:String x:Key="flowlauncherHotkeyToolTip">Enter shortcut to show/hide Flow Launcher.</system:String>
|
||||
<system:String x:Key="previewHotkey">Toggle Preview</system:String>
|
||||
<system:String x:Key="previewHotkeyToolTip">Enter shortcut to show/hide preview in search window.</system:String>
|
||||
<system:String x:Key="hotkeyPresets">Hotkey Presets</system:String>
|
||||
<system:String x:Key="hotkeyPresetsToolTip">List of currently registered hotkeys</system:String>
|
||||
<system:String x:Key="openResultModifiers">Open Result Modifier Key</system:String>
|
||||
<system:String x:Key="openResultModifiersToolTip">Select a modifier key to open selected result via keyboard.</system:String>
|
||||
<system:String x:Key="showOpenResultHotkey">Show Hotkey</system:String>
|
||||
<system:String x:Key="showOpenResultHotkeyToolTip">Show result selection hotkey with results.</system:String>
|
||||
<system:String x:Key="autoCompleteHotkey">Auto Complete</system:String>
|
||||
<system:String x:Key="autoCompleteHotkeyToolTip">Runs autocomplete for the selected items.</system:String>
|
||||
<system:String x:Key="SelectNextItemHotkey">Select Next Item</system:String>
|
||||
<system:String x:Key="SelectPrevItemHotkey">Select Previous Item</system:String>
|
||||
<system:String x:Key="SelectNextPageHotkey">Next Page</system:String>
|
||||
<system:String x:Key="SelectPrevPageHotkey">Previous Page</system:String>
|
||||
<system:String x:Key="CycleHistoryUpHotkey">Cycle Previous Query</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">Cycle Next Query</system:String>
|
||||
<system:String x:Key="OpenContextMenuHotkey">Open Context Menu</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Open Native Context Menu</system:String>
|
||||
<system:String x:Key="SettingWindowHotkey">Open Setting Window</system:String>
|
||||
<system:String x:Key="CopyFilePathHotkey">Copy File Path</system:String>
|
||||
<system:String x:Key="ToggleGameModeHotkey">Toggle Game Mode</system:String>
|
||||
<system:String x:Key="ToggleHistoryHotkey">Toggle History</system:String>
|
||||
<system:String x:Key="OpenContainFolderHotkey">Open Containing Folder</system:String>
|
||||
<system:String x:Key="RunAsAdminHotkey">Run As Admin</system:String>
|
||||
<system:String x:Key="RequeryHotkey">Refresh Search Results</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkey">Reload Plugins Data</system:String>
|
||||
<system:String x:Key="QuickWidthHotkey">Quick Adjust Window Width</system:String>
|
||||
<system:String x:Key="QuickHeightHotkey">Quick Adjust Window Height</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkeyToolTip">Use when require plugins to reload and update their existing data.</system:String>
|
||||
<system:String x:Key="AdditionalHotkeyToolTip">You can add one more hotkey for this function.</system:String>
|
||||
<system:String x:Key="customQueryHotkey">Custom Query Hotkeys</system:String>
|
||||
<system:String x:Key="customQueryShortcut">Custom Query Shortcuts</system:String>
|
||||
<system:String x:Key="builtinShortcuts">Built-in Shortcuts</system:String>
|
||||
<system:String x:Key="customQuery">Query</system:String>
|
||||
<system:String x:Key="customShortcut">Shortcut</system:String>
|
||||
<system:String x:Key="customShortcutExpansion">Expansion</system:String>
|
||||
<system:String x:Key="builtinShortcutDescription">Description</system:String>
|
||||
<system:String x:Key="delete">Delete</system:String>
|
||||
<system:String x:Key="edit">Edit</system:String>
|
||||
<system:String x:Key="add">Add</system:String>
|
||||
<system:String x:Key="none">None</system:String>
|
||||
<system:String x:Key="pleaseSelectAnItem">Please select an item</system:String>
|
||||
<system:String x:Key="deleteCustomHotkeyWarning">Are you sure you want to delete {0} plugin hotkey?</system:String>
|
||||
<system:String x:Key="deleteCustomShortcutWarning">Are you sure you want to delete shortcut: {0} with expansion {1}?</system:String>
|
||||
<system:String x:Key="shortcut_clipboard_description">Get text from clipboard.</system:String>
|
||||
<system:String x:Key="shortcut_active_explorer_path">Get path from active explorer.</system:String>
|
||||
<system:String x:Key="queryWindowShadowEffect">Query window shadow effect</system:String>
|
||||
<system:String x:Key="shadowEffectCPUUsage">Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited.</system:String>
|
||||
<system:String x:Key="windowWidthSize">Window Width Size</system:String>
|
||||
<system:String x:Key="windowWidthSizeToolTip">You can also quickly adjust this by using Ctrl+[ and Ctrl+].</system:String>
|
||||
<system:String x:Key="useGlyphUI">Use Segoe Fluent Icons</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">Use Segoe Fluent Icons for query results where supported</system:String>
|
||||
<system:String x:Key="flowlauncherPressHotkey">Press Key</system:String>
|
||||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP Proxy</system:String>
|
||||
<system:String x:Key="enableProxy">Enable HTTP Proxy</system:String>
|
||||
<system:String x:Key="server">HTTP Server</system:String>
|
||||
<system:String x:Key="port">Port</system:String>
|
||||
<system:String x:Key="userName">User Name</system:String>
|
||||
<system:String x:Key="password">Password</system:String>
|
||||
<system:String x:Key="testProxy">Test Proxy</system:String>
|
||||
<system:String x:Key="save">Save</system:String>
|
||||
<system:String x:Key="serverCantBeEmpty">Server field can't be empty</system:String>
|
||||
<system:String x:Key="portCantBeEmpty">Port field can't be empty</system:String>
|
||||
<system:String x:Key="invalidPortFormat">Invalid port format</system:String>
|
||||
<system:String x:Key="saveProxySuccessfully">Proxy configuration saved successfully</system:String>
|
||||
<system:String x:Key="proxyIsCorrect">Proxy configured correctly</system:String>
|
||||
<system:String x:Key="proxyConnectFailed">Proxy connection failed</system:String>
|
||||
|
||||
<!-- Setting About -->
|
||||
<system:String x:Key="about">About</system:String>
|
||||
<system:String x:Key="website">Website</system:String>
|
||||
<system:String x:Key="github">GitHub</system:String>
|
||||
<system:String x:Key="docs">Docs</system:String>
|
||||
<system:String x:Key="version">Version</system:String>
|
||||
<system:String x:Key="icons">Icons</system:String>
|
||||
<system:String x:Key="about_activate_times">You have activated Flow Launcher {0} times</system:String>
|
||||
<system:String x:Key="checkUpdates">Check for Updates</system:String>
|
||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
||||
<system:String x:Key="newVersionTips">New version {0} is available, would you like to restart Flow Launcher to use the update?</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
||||
<system:String x:Key="downloadUpdatesFailed">
|
||||
Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com,
|
||||
or go to https://github.com/Flow-Launcher/Flow.Launcher/releases to download updates manually.
|
||||
</system:String>
|
||||
<system:String x:Key="releaseNotes">Release Notes</system:String>
|
||||
<system:String x:Key="documentation">Usage Tips</system:String>
|
||||
<system:String x:Key="devtool">DevTools</system:String>
|
||||
<system:String x:Key="settingfolder">Setting Folder</system:String>
|
||||
<system:String x:Key="logfolder">Log Folder</system:String>
|
||||
<system:String x:Key="clearlogfolder">Clear Logs</system:String>
|
||||
<system:String x:Key="clearlogfolderMessage">Are you sure you want to delete all logs?</system:String>
|
||||
<system:String x:Key="cachefolder">Cache Folder</system:String>
|
||||
<system:String x:Key="clearcachefolder">Clear Caches</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
|
||||
<system:String x:Key="welcomewindow">Wizard</system:String>
|
||||
<system:String x:Key="userdatapath">User Data Location</system:String>
|
||||
<system:String x:Key="userdatapathToolTip">User settings and installed plugins are saved in the user data folder. This location may vary depending on whether it's in portable mode or not.</system:String>
|
||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||
<system:String x:Key="advanced">Advanced</system:String>
|
||||
<system:String x:Key="logLevel">Log Level</system:String>
|
||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||
|
||||
<!-- Release Notes Window -->
|
||||
<system:String x:Key="seeMoreReleaseNotes">See more release notes on GitHub</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionTitle">Failed to fetch release notes</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionSubTitle">Please check your network connection or ensure GitHub is accessible</system:String>
|
||||
<system:String x:Key="appUpdateTitle">Flow Launcher has been updated to {0}</system:String>
|
||||
<system:String x:Key="appUpdateButtonContent">Click here to view the release notes</system:String>
|
||||
|
||||
<!-- FileManager Setting Dialog -->
|
||||
<system:String x:Key="fileManagerWindow">Select File Manager</system:String>
|
||||
<system:String x:Key="fileManager_learnMore">Learn more</system:String>
|
||||
<system:String x:Key="fileManager_tips">Please specify the file location of the file manager you using and add arguments as required. The "%d" represents the directory path to open for, used by the Arg for Folder field and for commands opening specific directories. The "%f" represents the file path to open for, used by the Arg for File field and for commands opening specific files.</system:String>
|
||||
<system:String x:Key="fileManager_tips2">For example, if the file manager uses a command such as "totalcmd.exe /A c:\windows" to open the c:\windows directory, the File Manager Path will be totalcmd.exe, and the Arg For Folder will be /A "%d". Certain file managers like QTTabBar may just require a path to be supplied, in this instance use "%d" as the File Manager Path and leave the rest of the fields blank.</system:String>
|
||||
<system:String x:Key="fileManager_name">File Manager</system:String>
|
||||
<system:String x:Key="fileManager_profile_name">Profile Name</system:String>
|
||||
<system:String x:Key="fileManager_path">File Manager Path</system:String>
|
||||
<system:String x:Key="fileManager_directory_arg">Arg For Folder</system:String>
|
||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||
|
||||
<!-- DefaultBrowser Setting Dialog -->
|
||||
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
||||
<system:String x:Key="defaultBrowser_tips">The default setting follows the OS default browser setting. If specified separately, flow uses that browser.</system:String>
|
||||
<system:String x:Key="defaultBrowser_name">Browser</system:String>
|
||||
<system:String x:Key="defaultBrowser_profile_name">Browser Name</system:String>
|
||||
<system:String x:Key="defaultBrowser_path">Browser Path</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
||||
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
||||
|
||||
<!-- Priority Setting Dialog -->
|
||||
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
||||
<system:String x:Key="priority_tips">Greater the number, the higher the result will be ranked. Try setting it as 5. If you want the results to be lower than any other plugin's, provide a negative number</system:String>
|
||||
<system:String x:Key="invalidPriority">Please provide an valid integer for Priority!</system:String>
|
||||
|
||||
<!-- Action Keyword Setting Dialog -->
|
||||
<system:String x:Key="oldActionKeywords">Old Action Keyword</system:String>
|
||||
<system:String x:Key="newActionKeywords">New Action Keyword</system:String>
|
||||
<system:String x:Key="cancel">Cancel</system:String>
|
||||
<system:String x:Key="done">Done</system:String>
|
||||
<system:String x:Key="cannotFindSpecifiedPlugin">Can't find specified plugin</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">New Action Keyword can't be empty</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">This new Action Keyword is already assigned to another plugin, please choose a different one</system:String>
|
||||
<system:String x:Key="newActionKeywordsSameAsOld">This new Action Keyword is the same as old, please choose a different one</system:String>
|
||||
<system:String x:Key="success">Success</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Completed successfully</system:String>
|
||||
<system:String x:Key="failedToCopy">Failed to copy</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
<system:String x:Key="searchDelayTimeTitle">Search Delay Time Setting</system:String>
|
||||
<system:String x:Key="searchDelayTimeTips">Input the search delay time in ms you like to use for the plugin. Input empty if you don't want to specify any, and the plugin will use default search delay time.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
<system:String x:Key="homeTitle">Home Page</system:String>
|
||||
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
||||
|
||||
<!-- Custom Query Hotkey Dialog -->
|
||||
<system:String x:Key="customeQueryHotkeyTitle">Custom Query Hotkey</system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTips">Press a custom hotkey to open Flow Launcher and input the specified query automatically.</system:String>
|
||||
<system:String x:Key="preview">Preview</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Hotkey is unavailable, please select a new hotkey</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Hotkey is invalid</system:String>
|
||||
<system:String x:Key="update">Update</system:String>
|
||||
<system:String x:Key="hotkeyRegTitle">Binding Hotkey</system:String>
|
||||
<system:String x:Key="hotkeyUnavailable">Current hotkey is unavailable.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableUneditable">This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableEditable">This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}".</system:String>
|
||||
<system:String x:Key="hotkeyRegGuide">Press the keys you want to use for this function.</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
||||
|
||||
<!-- Custom Query Shortcut Dialog -->
|
||||
<system:String x:Key="customeQueryShortcutTitle">Custom Query Shortcut</system:String>
|
||||
<system:String x:Key="customeQueryShortcutTips">Enter a shortcut that automatically expands to the specified query.</system:String>
|
||||
<system:String x:Key="customeQueryShortcutGuide" xml:space="preserve">A shortcut is expanded when it exactly matches the query.
|
||||
|
||||
If you add an '@' prefix while inputting a shortcut, it matches any position in the query. Builtin shortcuts match any position in a query.
|
||||
</system:String>
|
||||
<system:String x:Key="duplicateShortcut">Shortcut already exists, please enter a new Shortcut or edit the existing one.</system:String>
|
||||
<system:String x:Key="emptyShortcut">Shortcut and/or its expansion is empty.</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
||||
|
||||
<!-- Common Action -->
|
||||
<system:String x:Key="commonSave">Save</system:String>
|
||||
<system:String x:Key="commonOverwrite">Overwrite</system:String>
|
||||
<system:String x:Key="commonCancel">Cancel</system:String>
|
||||
<system:String x:Key="commonReset">Reset</system:String>
|
||||
<system:String x:Key="commonDelete">Delete</system:String>
|
||||
<system:String x:Key="commonOK">OK</system:String>
|
||||
<system:String x:Key="commonYes">Yes</system:String>
|
||||
<system:String x:Key="commonNo">No</system:String>
|
||||
<system:String x:Key="commonBackground">Background</system:String>
|
||||
|
||||
<!-- Crash Reporter -->
|
||||
<system:String x:Key="reportWindow_version">Version</system:String>
|
||||
<system:String x:Key="reportWindow_time">Time</system:String>
|
||||
<system:String x:Key="reportWindow_reproduce">Please tell us how application crashed so we can fix it</system:String>
|
||||
<system:String x:Key="reportWindow_send_report">Send Report</system:String>
|
||||
<system:String x:Key="reportWindow_cancel">Cancel</system:String>
|
||||
<system:String x:Key="reportWindow_general">General</system:String>
|
||||
<system:String x:Key="reportWindow_exceptions">Exceptions</system:String>
|
||||
<system:String x:Key="reportWindow_exception_type">Exception Type</system:String>
|
||||
<system:String x:Key="reportWindow_source">Source</system:String>
|
||||
<system:String x:Key="reportWindow_stack_trace">Stack Trace</system:String>
|
||||
<system:String x:Key="reportWindow_sending">Sending</system:String>
|
||||
<system:String x:Key="reportWindow_report_succeed">Report sent successfully</system:String>
|
||||
<system:String x:Key="reportWindow_report_failed">Failed to send report</system:String>
|
||||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcher got an error</system:String>
|
||||
<system:String x:Key="reportWindow_please_open_issue">Please open new issue in</system:String>
|
||||
<system:String x:Key="reportWindow_upload_log">1. Upload log file: {0}</system:String>
|
||||
<system:String x:Key="reportWindow_copy_below">2. Copy below exception message</system:String>
|
||||
|
||||
<!-- File Open Error -->
|
||||
<system:String x:Key="fileManagerNotFoundTitle">File Manager Error</system:String>
|
||||
<system:String x:Key="fileManagerNotFound">
|
||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||
</system:String>
|
||||
<system:String x:Key="errorTitle">Error</system:String>
|
||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
||||
<system:String x:Key="browserOpenError">An error occurred while opening the URL in the browser. Please check your Default Web Browser configuration in the General section of the settings window</system:String>
|
||||
|
||||
<!-- General Notice -->
|
||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||
|
||||
<!-- Update -->
|
||||
<system:String x:Key="update_flowlauncher_update_check">Checking for new update</system:String>
|
||||
<system:String x:Key="update_flowlauncher_already_on_latest">You already have the latest Flow Launcher version</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_found">Update found</system:String>
|
||||
<system:String x:Key="update_flowlauncher_updating">Updating...</system:String>
|
||||
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
|
||||
Flow Launcher was not able to move your user profile data to the new update version.
|
||||
Please manually move your profile data folder from {0} to {1}
|
||||
</system:String>
|
||||
<system:String x:Key="update_flowlauncher_new_update">New Update</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_new_version_available">New Flow Launcher release {0} is now available</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_error">An error occurred while trying to install software updates</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update">Update</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Cancel</system:String>
|
||||
<system:String x:Key="update_flowlauncher_fail">Update Failed</system:String>
|
||||
<system:String x:Key="update_flowlauncher_check_connection">Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">This upgrade will restart Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Following files will be updated</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Update files</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update description</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Welcome to Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Text01">Hello, this is the first time you are running Flow Launcher!</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Text02">Before starting, this wizard will assist in setting up Flow Launcher. You can skip this if you wish. Please choose a language</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Title">Search and run all files and applications on your PC</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text01">Search everything from applications, files, bookmarks, YouTube, Twitter and more. All from the comfort of your keyboard without ever touching the mouse.</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher starts with the hotkey below, go ahead and try it out now. To change it, click on the input and press the desired hotkey on the keyboard.</system:String>
|
||||
<system:String x:Key="Welcome_Page3_Title">Hotkeys</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">Action Keyword and Commands</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">Search the web, launch applications or run various functions through Flow Launcher plugins. Certain functions start with an action keyword, and if necessary, they can be used without action keywords. Try the queries below in Flow Launcher.</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Title">Let's Start Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Text01">Finished. Enjoy Flow Launcher. Don't forget the hotkey to start :)</system:String>
|
||||
|
||||
<!-- General Guide & Hotkey -->
|
||||
|
||||
<system:String x:Key="HotkeyUpDownDesc">Back / Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyLeftRightDesc">Item Navigation</system:String>
|
||||
<system:String x:Key="HotkeyShiftEnterDesc">Open Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyCtrlEnterDesc">Open Containing Folder</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Run as Admin / Open Folder in Default File Manager</system:String>
|
||||
<system:String x:Key="HotkeyCtrlHDesc">Query History</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">Back to Result in Context Menu</system:String>
|
||||
<system:String x:Key="HotkeyTabDesc">Autocomplete</system:String>
|
||||
<system:String x:Key="HotkeyRunDesc">Open / Run Selected Item</system:String>
|
||||
<system:String x:Key="HotkeyCtrlIDesc">Open Setting Window</system:String>
|
||||
<system:String x:Key="HotkeyF5Desc">Reload Plugin Data</system:String>
|
||||
|
||||
<system:String x:Key="HotkeySelectFirstResult">Select first result</system:String>
|
||||
<system:String x:Key="HotkeySelectLastResult">Select last result</system:String>
|
||||
<system:String x:Key="HotkeyRequery">Run current query again</system:String>
|
||||
<system:String x:Key="HotkeyOpenResult">Open result</system:String>
|
||||
<system:String x:Key="HotkeyOpenResultN">Open result #{0}</system:String>
|
||||
|
||||
<system:String x:Key="RecommendWeather">Weather</system:String>
|
||||
<system:String x:Key="RecommendWeatherDesc">Weather in Google Result</system:String>
|
||||
<system:String x:Key="RecommendShell">> ping 8.8.8.8</system:String>
|
||||
<system:String x:Key="RecommendShellDesc">Shell Command</system:String>
|
||||
<system:String x:Key="RecommendBluetooth">s Bluetooth</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Bluetooth in Windows Settings</system:String>
|
||||
<system:String x:Key="RecommendAcronyms">sn</system:String>
|
||||
<system:String x:Key="RecommendAcronymsDesc">Sticky Notes</system:String>
|
||||
|
||||
<!-- Preview Area -->
|
||||
<system:String x:Key="FileSize">File Size</system:String>
|
||||
<system:String x:Key="Created">Created</system:String>
|
||||
<system:String x:Key="LastModified">Last Modified</system:String>
|
||||
</ResourceDictionary>
|
||||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Always Start Typing in English Mode</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Temporarily change your input method to English mode when activating Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Auto ažuriranje</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Izaberi</system:String>
|
||||
<system:String x:Key="hideOnStartup">Sakrij Flow Launcher pri podizanju sistema</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Otvori</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Tema</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Prečica</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP proksi</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">Ažuriraj datoteke</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opis ažuriranja</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Welcome to Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -2,23 +2,43 @@
|
|||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||
<!-- Startup -->
|
||||
<system:String x:Key="runtimePluginInstalledChooseRuntimePrompt">
|
||||
Flow detected you have installed {0} plugins, which will require {1} to run. Would you like to download {1}?
|
||||
Flow, {0} eklenti yüklediğinizi tespit etti, bu eklentilerin çalışması için {1} gerekir. {1} indirilsin mi?
|
||||
{2}{2}
|
||||
Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable
|
||||
Zaten yüklüyse hayır'a tıklayın ve {1} yürütülebilir dosyasının bulunduğu klasörü seçin
|
||||
</system:String>
|
||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Please select the {0} executable</system:String>
|
||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Lütfen {0} dosyasını seçin</system:String>
|
||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||
Your selected {0} executable is invalid.
|
||||
Seçtiğiniz {0} yürütülebilir dosyası geçersiz.
|
||||
{2}{2}
|
||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
||||
{0} yürütülebilir dosyasını tekrar seçmek istiyorsanız evet'e tıklayın. {1} dosyasını indirmek istiyorsanız hayır'a tıklayın
|
||||
</system:String>
|
||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom).</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">{0} dosya yolu ayarlanamadı, lütfen Flow’un ayarlarından deneyin (en alta inerek).</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsTitle">Eklentiler başlatılamıyor</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Eklentiler: {0} - yüklenemedi ve devre dışı bırakılacak, lütfen eklenti geliştiricisi ile iletişime geçin</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher'ın taşınabilir modu devre dışı bırakmayı bitirmek için yeniden başlatılması gerekir, yeniden başlatmanın ardından taşınabilir veri profiliniz silinecek ve dolaşımdaki veri profiliniz saklanacaktır</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher'ın taşınabilir modu etkinleştirmeyi tamamlamak için yeniden başlatılması gerekir, yeniden başlatmadan sonra dolaşım veri profiliniz silinecek ve taşınabilir veri profili saklanacaktır</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher taşınabilir modu etkinleştirdiğinizi tespit etti, farklı bir konuma taşımak ister misiniz?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher taşınabilir modu devre dışı bıraktığınızı algıladı, ilgili kısayollar ve kaldırıcı girişi oluşturuldu</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher, kullanıcı verilerinizin hem {0} hem de {1}'de bulunduğunu algıladı. {2}{2} Devam etmek için lütfen {1}'i silin. Hiçbir değişiklik olmadı.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">Aşağıdaki eklentide hata oluştu ve yüklenemiyor:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Aşağıdaki eklentilerde hata oluştu ve yüklenemiyor:</system:String>
|
||||
<system:String x:Key="referToLogs">Daha fazla bilgi için günlüklere bakın</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Lütfen tekrar deneyin</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Http Proxy verisi ayrıştırılamadı</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">TypeScript ortamı yüklenemedi. Lütfen daha sonra tekrar deneyin</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Python ortamı yüklenemedi. Lütfen daha sonra tekrar deneyin.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">"{0}" kısayolunu atama başarısız oldu. Kısayolu başka bir program kullanıyorsa kapatmayı deneyin veya kısayolu değiştirin.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">"{0}" kısayolu kaldırılamadı. Lütfen tekrar deneyin ya da ayrıntılar için log dosyasını kontrol edin</system:String>
|
||||
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
||||
<system:String x:Key="couldnotStartCmd">{0} başlatılamıyor</system:String>
|
||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Geçersiz Flow Launcher eklenti dosyası formatı</system:String>
|
||||
|
|
@ -42,8 +62,8 @@
|
|||
<system:String x:Key="GameMode">Oyun Modu</system:String>
|
||||
<system:String x:Key="GameModeToolTip">Kısayol tuşlarının kullanımını durdurun.</system:String>
|
||||
<system:String x:Key="PositionReset">Pencere Konumunu Sıfırla</system:String>
|
||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||
<system:String x:Key="PositionResetToolTip">Arama penceresinin konumunu sıfırla</system:String>
|
||||
<system:String x:Key="queryTextBoxPlaceholder">Aramak için buraya yazın</system:String>
|
||||
|
||||
<!-- Setting General -->
|
||||
<system:String x:Key="flowlauncher_settings">Ayarlar</system:String>
|
||||
|
|
@ -51,12 +71,12 @@
|
|||
<system:String x:Key="portableMode">Taşınabilir Mod</system:String>
|
||||
<system:String x:Key="portableModeToolTIp">Tüm ayarları ve kullanıcı verilerini tek bir klasörde saklayın (Çıkarılabilir sürücüler veya bulut hizmetleri ile kullanıldığında kullanışlıdır).</system:String>
|
||||
<system:String x:Key="startFlowLauncherOnSystemStartup">Sistem ile Başlat</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartup">Use logon task instead of startup entry for faster startup experience</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartup">Daha hızlı bir başlatma deneyimi için başlangıç girişini yerine oturum açma görevini kullanın</system:String>
|
||||
<system:String x:Key="useLogonTaskForStartupTooltip">Kaldırma işleminden sonra, bu görevi (Flow.Launcher Startup) Görev Zamanlayıcı üzerinden elle kaldırmanız gerekmektedir</system:String>
|
||||
<system:String x:Key="setAutoStartFailed">Sistemle başlatma ayarı başarısız oldu</system:String>
|
||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Odak Pencereden Ayrıldığında Gizle</system:String>
|
||||
<system:String x:Key="dontPromptUpdateMsg">Güncelleme bildirimlerini gösterme</system:String>
|
||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||
<system:String x:Key="SearchWindowPosition">Pencere Konumu</system:String>
|
||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Son Konumu Hatırla</system:String>
|
||||
<system:String x:Key="SearchWindowScreenCursor">Fare İmlecinin Bulunduğu Monitör</system:String>
|
||||
<system:String x:Key="SearchWindowScreenFocus">Aktif Pencerenin Bulunduğu Monitör</system:String>
|
||||
|
|
@ -74,8 +94,8 @@
|
|||
<system:String x:Key="LastQueryPreserved">Son Sorguyu Sakla</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Son Sorguyu Sakla ve Tümünü Seç</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Sorgu Kutusunu Temizle</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">Preserve Last Action Keyword</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">Select Last Action Keyword</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordPreserved">Son İşlem Anahtar Kelimesini Koru</system:String>
|
||||
<system:String x:Key="LastQueryActionKeywordSelected">Son İşlem Anahtar Kelimesini Seç</system:String>
|
||||
<system:String x:Key="maxShowResults">Maksimum Sonuç Sayısı</system:String>
|
||||
<system:String x:Key="maxShowResultsToolTip">Bunu CTRL + ve CTRL - kısayollarıyla da ayarlayabilirsiniz.</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">Tam Ekran Modunda Kısayol Tuşunu Gözardı Et</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">İngilizce Klayve Düzeni Kullan</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Arama yaparken klayve düzenini geçici olarak İngilizce yap.</system:String>
|
||||
<system:String x:Key="autoUpdates">Otomatik Güncelle</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Uygulamanın güncellemelerini otomatik kontrol eder ve günceller</system:String>
|
||||
<system:String x:Key="select">Seç</system:String>
|
||||
<system:String x:Key="hideOnStartup">Başlangıçta Pencereyi Gizle</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Arama kutusu başlangıçtan sonra sistem tepsisinde gizlenir.</system:String>
|
||||
|
|
@ -102,46 +123,63 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Düşük</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Normal</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Arama yapmak için Pinyin'in kullanılmasına izin ver. Pinyin, Çince'yi çevirmek için standart romanlaştırılmış yazım sistemidir.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin, Çince'yi çevirmek için kullanılan standart romanize yazım sistemidir. Bunu etkinleştirmenin arama sırasında bellek kullanımını önemli ölçüde artırabileceğini lütfen unutmayın.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Çift Pinyin kullanın</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Arama yapmak için Tam Pinyin yerine Çift Pinyin kullanın.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Çift Pinyin Şeması</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Önizleme</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Önizleme panelini her zaman aç. Önizlemeyi bu ayardan bağımsız {0} kısayolu ile açıp kapatabilirsiniz.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Mevcut temada bulanıklık efekti etkinken gölgelendirme efektine izin verilmez</system:String>
|
||||
<system:String x:Key="searchDelay">Arama Gecikmesi</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
||||
<system:String x:Key="searchDelayToolTip">UI titreşimini ve sonuç yükünü azaltmak için yazma sırasında kısa bir gecikme eklenir. Yazma hızınız ortalama ise önerilir.</system:String>
|
||||
<system:String x:Key="searchDelayNumberBoxToolTip">Girdi tamamlanmış sayılmadan önce beklenecek süreyi milisaniye (ms) olarak girin. Sadece Arama Gecikmesi açık olduğunda değiştirilebilir.</system:String>
|
||||
<system:String x:Key="searchDelayTime">Varsayılan Arama Gecikme Süresi</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Wait time before showing results after typing stops. Higher values wait longer. (ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
||||
<system:String x:Key="searchDelayTimeToolTip">Yazmayı bıraktıktan sonra sonuçların görünmesi için geçecek süre. Daha yüksek değerler daha fazla bekleme anlamına gelir. (ms)</system:String>
|
||||
<system:String x:Key="KoreanImeTitle">Korece IME kullanıcısı için bilgiler</system:String>
|
||||
<system:String x:Key="KoreanImeGuide">
|
||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||
Windows 11'de kullanılan Korece giriş yöntemi Flow Launcher'da bazı sorunlara neden olabilir.
|
||||
|
||||
If you experience any problems, you may need to enable "Use previous version of Korean IME".
|
||||
Herhangi bir sorunla karşılaşırsanız, "Korece IME'nin önceki sürümünü kullan" seçeneğini etkinleştirmeniz gerekebilir.
|
||||
|
||||
|
||||
Open Setting in Windows 11 and go to:
|
||||
Windows 11'de Ayarlar'ı açın ve şuraya gidin:
|
||||
|
||||
Time & Language > Language & Region > Korean > Language Options > Keyboard - Microsoft IME > Compatibility,
|
||||
Saat ve Dil > Dil ve Bölge > Korece > Dil Seçenekleri > Klavye - Microsoft IME > Uyumluluk,
|
||||
|
||||
and enable "Use previous version of Microsoft IME".
|
||||
ve "Microsoft IME'nin önceki sürümünü kullan" seçeneğini etkinleştirin.
|
||||
|
||||
|
||||
</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLink">Open Language and Region System Settings</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLinkToolTip">Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLink">Dil ve Bölge Sistem Ayarlarını Aç</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLinkToolTip">Korece IME ayar konumunu açar. Korece > Dil Seçenekleri > Klavye - Microsoft IME > Uyumluluk seçeneğine gidin</system:String>
|
||||
<system:String x:Key="KoreanImeOpenLinkButton">Aç</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Önceki Korece IME'sini Kullan</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Önceki Korece IME ayarlarını doğrudan buradan değiştirebilirsiniz</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Korece IME ayarı değiştirilemedi</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Lütfen sistem kayıt defteri erişiminizi kontrol edin veya destekle iletişime geçin.</system:String>
|
||||
<system:String x:Key="homePage">Ana Sayfa</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Restart after modifying plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="homePageToolTip">Sorgu metni boş olduğunda ana sayfa sonuçlarını gösterin.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Geçmiş Sonuçlarını Ana Sayfada Göster</system:String>
|
||||
<system:String x:Key="historyResultsCountForHomePage">Ana Sayfada Gösterilen Maksimum Geçmiş Sonuçları</system:String>
|
||||
<system:String x:Key="homeToggleBoxToolTip">Bu sadece eklenti Ana Sayfa özelliğini destekliyorsa ve Ana Sayfa etkinleştirilmiş ise düzenlenebilir.</system:String>
|
||||
<system:String x:Key="showAtTopmost">Arama Penceresini En Üstte Göster</system:String>
|
||||
<system:String x:Key="showAtTopmostToolTip">Diğer programların 'Her Zaman Üstte' ayarını geçersiz kılar ve Flow’u en önde gösterir.</system:String>
|
||||
<system:String x:Key="autoRestartAfterChanging">Eklenti Mağazası üzerinden eklenti değiştirdikten sonra uygulamayı yeniden başlatın</system:String>
|
||||
<system:String x:Key="autoRestartAfterChangingToolTip">Eklenti Mağazası aracılığıyla eklenti yükledikten/kaldırdıktan/güncelleştirdikten sonra Flow Launcher'ı otomatik olarak yeniden başlatın</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Bilinmeyen kaynak uyarısını göster</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Bilinmeyen kaynaklardan eklenti yüklerken uyarı göster</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Eklentileri otomatik güncelle</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Eklenti güncellemelerini otomatik kontrol et ve eğer herhangi bir güncelleme varsa bildir</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Eklenti Ara</system:String>
|
||||
|
|
@ -158,10 +196,10 @@
|
|||
<system:String x:Key="currentActionKeywords">Geçerli anahtar kelime</system:String>
|
||||
<system:String x:Key="newActionKeyword">Yeni anahtar kelime</system:String>
|
||||
<system:String x:Key="actionKeywordsTooltip">Anahtar kelimeyi değiştir</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTime">Eklenti arama gecikme süresi</system:String>
|
||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Eklenti Arama Gecikme Süresini Değiştir</system:String>
|
||||
<system:String x:Key="FilterComboboxLabel">Gelişmiş Ayarlar:</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">Enabled</system:String>
|
||||
<system:String x:Key="DisplayModeOnOff">Aktif</system:String>
|
||||
<system:String x:Key="DisplayModePriority">Öncelik</system:String>
|
||||
<system:String x:Key="DisplayModeSearchDelay">Arama Gecikmesi</system:String>
|
||||
<system:String x:Key="DisplayModeHomeOnOff">Ana Sayfa</system:String>
|
||||
|
|
@ -176,16 +214,16 @@
|
|||
<system:String x:Key="plugin_query_version">Sürüm</system:String>
|
||||
<system:String x:Key="plugin_query_web">İnternet Sitesi</system:String>
|
||||
<system:String x:Key="plugin_uninstall">Kaldır</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheMessage">Plugins: {0} - Fail to remove plugin cache files, please remove them manually</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} modified already</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyMessage">Please restart Flow before making any further changes</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">Fail to install {0}</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Eklenti ayarları kaldırılamıyor</system:String>
|
||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Eklentiler: {0} - Ayar dosyaları kaldırılamadı, lütfen elle silin</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheTitle">Eklenti ön belleği kaldırılamıyor</system:String>
|
||||
<system:String x:Key="failedToRemovePluginCacheMessage">Eklentiler: {0} - Önbellek dosyaları kaldırılamadı, lütfen elle silin</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} zaten değiştirilmiş</system:String>
|
||||
<system:String x:Key="pluginModifiedAlreadyMessage">Lütfen başka değişiklikler yapmadan önce Flow'u yeniden başlatın</system:String>
|
||||
<system:String x:Key="failedToInstallPluginTitle">{0} yüklenemiyor</system:String>
|
||||
<system:String x:Key="failedToUninstallPluginTitle">{0} kaldırılamıyor</system:String>
|
||||
<system:String x:Key="fileNotFoundMessage">plugin.json dosyası çıkarılan zip dosyasında bulunamadı veya {0} yolu mevcut değil</system:String>
|
||||
<system:String x:Key="pluginExistAlreadyMessage">Bu eklentiyle aynı ID ve sürüme sahip bir eklenti zaten var, ya da mevcut sürüm daha yüksek</system:String>
|
||||
|
||||
<!-- Setting Plugin Store -->
|
||||
<system:String x:Key="pluginStore">Eklenti Mağazası</system:String>
|
||||
|
|
@ -201,28 +239,34 @@
|
|||
<system:String x:Key="LabelNew">Yeni Sürüm</system:String>
|
||||
<system:String x:Key="LabelNewToolTip">Bu eklenti son 7 gün içerisinde güncellenmiş.</system:String>
|
||||
<system:String x:Key="LabelUpdateToolTip">Yeni Bir Güncelleme Mevcut</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">Error installing plugin</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">Error uninstalling plugin</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Error updating plugin</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">Keep plugin settings</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">Do you want to keep the settings of the plugin for the next usage?</system:String>
|
||||
<system:String x:Key="InstallSuccessNoRestart">Plugin {0} successfully installed. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UninstallSuccessNoRestart">Plugin {0} successfully uninstalled. Please restart Flow.</system:String>
|
||||
<system:String x:Key="UpdateSuccessNoRestart">Plugin {0} successfully updated. Please restart Flow.</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Plugin install</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}Would you like to install this plugin?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Plugin uninstall</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}Would you like to uninstall this plugin?</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
||||
<system:String x:Key="UpdatePromptSubtitle">{0} by {1} {2}{2}Would you like to update this plugin?</system:String>
|
||||
<system:String x:Key="DownloadingPlugin">Downloading plugin</system:String>
|
||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">Installing from an unknown source</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is from an unknown source and it may contain potential risks!{0}{0}Please ensure you understand where this plugin is from and that it is safe.{0}{0}Would you like to continue still?{0}{0}(You can switch off this warning in general section of setting window)</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="ErrorInstallingPlugin">Eklenti yüklenirken bir hata oluştu</system:String>
|
||||
<system:String x:Key="ErrorUninstallingPlugin">Eklenti kaldırılırken bir hata oluştu</system:String>
|
||||
<system:String x:Key="ErrorUpdatingPlugin">Eklenti güncellenirken bir hata oluştu</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsTitle">Eklenti ayarlarını sakla</system:String>
|
||||
<system:String x:Key="KeepPluginSettingsSubtitle">Eklentinin ayarlarını bir sonraki kullanım için saklamak istiyor musunuz?</system:String>
|
||||
<system:String x:Key="InstallSuccessNoRestart">{0} eklentisi başarıyla yüklendi. Lütfen Flow'u yeniden başlatın.</system:String>
|
||||
<system:String x:Key="UninstallSuccessNoRestart">{0} eklentisi başarıyla kaldırıldı. Lütfen Flow'u yeniden başlatın.</system:String>
|
||||
<system:String x:Key="UpdateSuccessNoRestart">{0} eklentisi başarıyla güncellendi. Lütfen Flow'u yeniden başlatın.</system:String>
|
||||
<system:String x:Key="InstallPromptTitle">Eklenti yükleme</system:String>
|
||||
<system:String x:Key="InstallPromptSubtitle">{0} - {1} tarafından geliştirildi {2}{2}Bu eklentiyi yüklemek ister misiniz?</system:String>
|
||||
<system:String x:Key="UninstallPromptTitle">Eklenti kaldırma</system:String>
|
||||
<system:String x:Key="UninstallPromptSubtitle">{0} - {1} tarafından geliştirildi {2}{2}Bu eklentiyi kaldırmak ister misiniz?</system:String>
|
||||
<system:String x:Key="UpdatePromptTitle">Eklenti güncellemesi</system:String>
|
||||
<system:String x:Key="UpdatePromptSubtitle">{0} - {1} tarafından geliştirildi {2}{2}Bu eklentiyi güncellemek ister misiniz?</system:String>
|
||||
<system:String x:Key="DownloadingPlugin">Eklenti indiriliyor</system:String>
|
||||
<system:String x:Key="AutoRestartAfterChange">Eklenti mağazasındaki eklentileri yükledikten/kaldırdıktan/güncelleştirdikten sonra otomatik olarak yeniden başlat</system:String>
|
||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip dosyası geçerli bir plugin.json yapılandırmasına sahip değil</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceTitle">Bilinmeyen bir kaynaktan yükleniyor</system:String>
|
||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">Bu eklenti bilinmeyen bir kaynaktan geliyor ve potansiyel riskler içerebilir!{0}{0}Lütfen eklentinin nereden geldiğini bildiğinizden ve güvenli olduğundan emin olun.{0}{0}Yine de devam etmek istiyor musunuz?{0}{0}(Bu uyarıyı ayarlar penceresinin Genel bölümünden kapatabilirsiniz)</system:String>
|
||||
<system:String x:Key="ZipFiles">Zip dosyaları</system:String>
|
||||
<system:String x:Key="SelectZipFile">Lütfen zip dosyasını seçin</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Eklentiyi yerel yoldan yükle</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Güncelleme mevcut değil</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Bütün eklentiler güncel</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Eklenti güncellemeleri mevcut</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Eklentileri güncelle</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Eklenti güncellemelerini kontrol et</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Eklentiler başarıyla güncellendi. Lütfen Flow'u yeniden başlatın.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Temalar</system:String>
|
||||
|
|
@ -244,9 +288,9 @@
|
|||
<system:String x:Key="resultItemFont">Arama Sonuçları Yazı Tipi</system:String>
|
||||
<system:String x:Key="resultSubItemFont">Arama Sonuçları Yazı Tipi</system:String>
|
||||
<system:String x:Key="resetCustomize">Sıfırla</system:String>
|
||||
<system:String x:Key="resetCustomizeToolTip">Reset to the recommended font and size settings.</system:String>
|
||||
<system:String x:Key="ImportThemeSize">Import Theme Size</system:String>
|
||||
<system:String x:Key="ImportThemeSizeToolTip">If a size value intended by the theme designer is available, it will be retrieved and applied.</system:String>
|
||||
<system:String x:Key="resetCustomizeToolTip">Önerilen yazı tipi ve boyut ayarlarına sıfırlayın.</system:String>
|
||||
<system:String x:Key="ImportThemeSize">Tema Boyutunu İçe Aktar</system:String>
|
||||
<system:String x:Key="ImportThemeSizeToolTip">Tasarımcının belirlediği boyut değeri varsa, bu değer alınır ve uygulanır.</system:String>
|
||||
<system:String x:Key="CustomizeToolTip">Kişiselleştir</system:String>
|
||||
<system:String x:Key="windowMode">Pencere Modu</system:String>
|
||||
<system:String x:Key="opacity">Saydamlık</system:String>
|
||||
|
|
@ -274,20 +318,21 @@
|
|||
<system:String x:Key="Clock">Saat</system:String>
|
||||
<system:String x:Key="Date">Tarih</system:String>
|
||||
<system:String x:Key="BackdropType">Arka Plan Türü</system:String>
|
||||
<system:String x:Key="BackdropInfo">The backdrop effect is not applied in the preview.</system:String>
|
||||
<system:String x:Key="BackdropTypeDisabledToolTip">Backdrop supported starting from Windows 11 build 22000 and above</system:String>
|
||||
<system:String x:Key="BackdropInfo">Arka plan efekti önizlemede etkin değildir.</system:String>
|
||||
<system:String x:Key="BackdropTypeDisabledToolTip">Arka plan efekti, Windows 11 build 22000 ve üzeri sürümlerde desteklenir</system:String>
|
||||
<system:String x:Key="BackdropTypesNone">Hiçbiri</system:String>
|
||||
<system:String x:Key="BackdropTypesAcrylic">Akrilik</system:String>
|
||||
<system:String x:Key="BackdropTypesMica">Mika</system:String>
|
||||
<system:String x:Key="BackdropTypesMicaAlt">Mica Alt</system:String>
|
||||
<system:String x:Key="TypeIsDarkToolTip">This theme supports two (light/dark) modes.</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">This theme supports Blur Transparent Background.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">Show placeholder</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Display placeholder when query is empty</system:String>
|
||||
<system:String x:Key="PlaceholderText">Placeholder text</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="TypeIsDarkToolTip">Bu tema iki (açık/koyu) modu destekler.</system:String>
|
||||
<system:String x:Key="TypeHasBlurToolTip">Bu tema Bulanık Şeffaf Arka Planı destekler.</system:String>
|
||||
<system:String x:Key="ShowPlaceholder">Yer tutucuyu göster</system:String>
|
||||
<system:String x:Key="ShowPlaceholderTip">Sorgu boş olduğunda yer tutucuyu görüntüle</system:String>
|
||||
<system:String x:Key="PlaceholderText">Yer tutucu metin</system:String>
|
||||
<system:String x:Key="PlaceholderTextTip">Yer tutucu metnini değiştirin. Boş bırakılırsa şu kullanılacak: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Sabit Pencere Boyutu</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Pencere boyutu sürüklenerek ayarlanamaz.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Kısayol Tuşu</system:String>
|
||||
|
|
@ -311,7 +356,7 @@
|
|||
<system:String x:Key="CycleHistoryUpHotkey">Bir Önceki Sorguya Geç</system:String>
|
||||
<system:String x:Key="CycleHistoryDownHotkey">Sonraki Sorguya Geç</system:String>
|
||||
<system:String x:Key="OpenContextMenuHotkey">Bağlam Menüsünü Aç</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Open Native Context Menu</system:String>
|
||||
<system:String x:Key="OpenNativeContextMenuHotkey">Yerel Bağlam Menüsünü Aç</system:String>
|
||||
<system:String x:Key="SettingWindowHotkey">Ayarlar Penceresini Aç</system:String>
|
||||
<system:String x:Key="CopyFilePathHotkey">Dosya Yolunu Kopyala</system:String>
|
||||
<system:String x:Key="ToggleGameModeHotkey">Oyun Modunu Aç/Kapat</system:String>
|
||||
|
|
@ -347,9 +392,31 @@
|
|||
<system:String x:Key="useGlyphUI">Segoe Fluent Simgeleri</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">Arama sonuçlarında mümkünse Segoe Fluent simgelerini kullan.</system:String>
|
||||
<system:String x:Key="flowlauncherPressHotkey">Tuşa basın</system:String>
|
||||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadges">Sonuç Rozetlerini Göster</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Desteklenen eklentilere, kolayca ayırt edilebilmeleri için rozet eklenir.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Yalnızca Global Sorgular için Sonuç Rozetlerini Göster</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Yalnızca global sorgu sonuçları için rozetleri göster</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Diyalog Atlama</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Farklı Aç/Kaydet iletişim penceresinde geçerli dosya yöneticisinin yoluna hızlıca gitmek için kısayol girin.</system:String>
|
||||
<system:String x:Key="dialogJump">Diyalog Atlama</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">Farklı Aç/Kaydet iletişim penceresi açıldığında, hızlı bir şekilde dosya yöneticisinin geçerli yoluna gidin.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Otomatik Olarak Diyalog Atlama</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">Farklı Aç/Kaydet iletişim penceresi görüntülendiğinde, otomatik olarak geçerli dosya yöneticisinin yoluna gidin. (Deneysel)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Diyalog Atlama Penceresini Göster</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Dosya/klasör konumlarına hızlı erişim için aç/kaydet penceresi gösterildiğinde Diyalog Atlama arama penceresini görüntüle.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Diyalog Atlama Penceresi Konumu</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Farklı Aç/Kaydet iletişim penceresinin altında düzeltildi. Açıldığında görüntülenir ve pencere kapatılana kadar kalır</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Varsayılan arama penceresi konumu. Arama penceresi kısayol tuşu tarafından tetiklendiğinde görüntülenir</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Farklı Aç/Kaydet iletişim penceresini seçilen sonuç yoluna yönlendirmek için davranış</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Sol tık veya Enter tuşu</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Sağ tık</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Sonuç bir dosya yolu olduğunda Farklı Aç/Kaydet iletişim penceresinde gezinme davranışı</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Dosya adı kutusuna tam yolu girin</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Dosya adı kutusuna tam yolu girin ve açın</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Dizini yol kutusuna girin</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Vekil Sunucu</system:String>
|
||||
|
|
@ -392,8 +459,8 @@
|
|||
<system:String x:Key="clearlogfolderMessage">Tüm günlük kayıtlarını silmek istediğinize emin misiniz?</system:String>
|
||||
<system:String x:Key="cachefolder">Önbellek Klasörü</system:String>
|
||||
<system:String x:Key="clearcachefolder">Önbelleği Temizle</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
|
||||
<system:String x:Key="clearcachefolderMessage">Tüm önbellekleri silmek istediğinizden emin misiniz?</system:String>
|
||||
<system:String x:Key="clearfolderfailMessage">Bazı klasör ve dosyalar silinemedi. Daha fazla bilgi için log dosyasına bakın</system:String>
|
||||
<system:String x:Key="welcomewindow">Kurulum Sihirbazı</system:String>
|
||||
<system:String x:Key="userdatapath">Kullanıcı Verisi Dizini</system:String>
|
||||
<system:String x:Key="userdatapathToolTip">Kullanıcı ayarları ve yüklü eklentiler bu klasörde saklanır. Klasörün konumu taşınabilir moda bağlı olarak değişebilir.</system:String>
|
||||
|
|
@ -402,27 +469,27 @@
|
|||
<system:String x:Key="logLevel">Günlük Düzeyi</system:String>
|
||||
<system:String x:Key="LogLevelDEBUG">Hata ayıklama</system:String>
|
||||
<system:String x:Key="LogLevelINFO">Bilgi</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||
<system:String x:Key="settingWindowFontTitle">Pencere Yazı Tipini Ayarla</system:String>
|
||||
|
||||
<!-- Release Notes Window -->
|
||||
<system:String x:Key="seeMoreReleaseNotes">See more release notes on GitHub</system:String>
|
||||
<system:String x:Key="seeMoreReleaseNotes">GitHub'da daha fazla sürüm notlarını gör</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionTitle">Sürüm notları alınamadı</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionSubTitle">Please check your network connection or ensure GitHub is accessible</system:String>
|
||||
<system:String x:Key="appUpdateTitle">Flow Launcher has been updated to {0}</system:String>
|
||||
<system:String x:Key="checkNetworkConnectionSubTitle">Lütfen internet bağlantınızı kontrol edin veya GitHub'a erişiminizin olduğundan emin olun</system:String>
|
||||
<system:String x:Key="appUpdateTitle">Flow Launcher {0} sürümüne güncellendi</system:String>
|
||||
<system:String x:Key="appUpdateButtonContent">Sürüm notlarını görüntülemek için buraya tıklayın</system:String>
|
||||
|
||||
<!-- FileManager Setting Dialog -->
|
||||
<system:String x:Key="fileManagerWindow">Dosya Yöneticisi Seçenekleri</system:String>
|
||||
<system:String x:Key="fileManager_learnMore">Daha fazla bilgi</system:String>
|
||||
<system:String x:Key="fileManager_tips">Please specify the file location of the file manager you using and add arguments as required. The "%d" represents the directory path to open for, used by the Arg for Folder field and for commands opening specific directories. The "%f" represents the file path to open for, used by the Arg for File field and for commands opening specific files.</system:String>
|
||||
<system:String x:Key="fileManager_tips2">For example, if the file manager uses a command such as "totalcmd.exe /A c:\windows" to open the c:\windows directory, the File Manager Path will be totalcmd.exe, and the Arg For Folder will be /A "%d". Certain file managers like QTTabBar may just require a path to be supplied, in this instance use "%d" as the File Manager Path and leave the rest of the fields blank.</system:String>
|
||||
<system:String x:Key="fileManager_tips">Lütfen kullandığınız dosya yöneticisinin dosya konumunu belirtin ve gerektiği şekilde argümanlar ekleyin. "%d", Arg for Folder alanı tarafından ve belirli dizinleri açan komutlar için kullanılan açılacak dizin yolunu temsil eder. "%f", Dosya için Arg alanı tarafından ve belirli dosyaları açan komutlar için kullanılan açılacak dosya yolunu temsil eder.</system:String>
|
||||
<system:String x:Key="fileManager_tips2">Örneğin, dosya yöneticisi c:\windows dizinini açmak için "totalcmd.exe /A c:\windows" gibi bir komut kullanıyorsa, Dosya Yöneticisi Yolu totalcmd.exe ve Arg Klasör için /A "%d" olacaktır. QTTabBar gibi bazı dosya yöneticileri sadece bir yol sağlanmasını gerektirebilir, bu durumda Dosya Yöneticisi Yolu olarak "%d" kullanın ve geri kalan alanları boş bırakın.</system:String>
|
||||
<system:String x:Key="fileManager_name">Dosya Yöneticisi</system:String>
|
||||
<system:String x:Key="fileManager_profile_name">Profil Adı</system:String>
|
||||
<system:String x:Key="fileManager_path">Dosya Yöneticisi Yolu</system:String>
|
||||
<system:String x:Key="fileManager_directory_arg">Klasör Açarken</system:String>
|
||||
<system:String x:Key="fileManager_file_arg">Dosya Açarken</system:String>
|
||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||
<system:String x:Key="fileManagerPathNotFound">'{0}' dosya yöneticisi '{1}' konumunda bulunamadı. Devam etmek ister misiniz?</system:String>
|
||||
<system:String x:Key="fileManagerPathError">Dosya Yöneticisi Yol Hatası</system:String>
|
||||
|
||||
<!-- DefaultBrowser Setting Dialog -->
|
||||
<system:String x:Key="defaultBrowserTitle">İnternet Tarayıcı Seçenekleri</system:String>
|
||||
|
|
@ -447,33 +514,33 @@
|
|||
<system:String x:Key="cannotFindSpecifiedPlugin">Belirtilen eklenti bulunamadı</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">Yeni anahtar kelime boş olamaz</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">Yeni anahtar kelime başka bir eklentiye atanmış durumda. Lütfen başka bir anahtar kelime seçin.</system:String>
|
||||
<system:String x:Key="newActionKeywordsSameAsOld">This new Action Keyword is the same as old, please choose a different one</system:String>
|
||||
<system:String x:Key="newActionKeywordsSameAsOld">Bu yeni Anahtar Kelimesi eskisiyle aynı, lütfen farklı bir tane seçin</system:String>
|
||||
<system:String x:Key="success">Başarılı</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Başarıyla tamamlandı</system:String>
|
||||
<system:String x:Key="failedToCopy">Kopyalanamadı</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords.</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Eklentiyi başlatmak için kullanmak istediğiniz anahtar kelimelerini girin ve bunları bölmek için boşluk kullanın. Herhangi bir anahtar kelime belirtmek istemiyorsanız * kullanın, eklenti herhangi bir anahtar kelimesi olmadan tetiklenecektir.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
<system:String x:Key="searchDelayTimeTitle">Search Delay Time Setting</system:String>
|
||||
<system:String x:Key="searchDelayTimeTips">Input the search delay time in ms you like to use for the plugin. Input empty if you don't want to specify any, and the plugin will use default search delay time.</system:String>
|
||||
<system:String x:Key="searchDelayTimeTitle">Arama Gecikme Süresi Ayarı</system:String>
|
||||
<system:String x:Key="searchDelayTimeTips">Eklenti için kullanmak istediğiniz arama gecikme süresini ms cinsinden girin. Herhangi bir şey belirtmek istemiyorsanız boş girin, eklenti varsayılan arama gecikme süresini kullanacaktır.</system:String>
|
||||
|
||||
<!-- Search Delay Settings Dialog -->
|
||||
<system:String x:Key="homeTitle">Ana Sayfa</system:String>
|
||||
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
||||
<system:String x:Key="homeTips">Sorgu boşken eklenti sonuçlarını göstermek istiyorsanız eklentinin ana sayfa durumunu etkinleştirin.</system:String>
|
||||
|
||||
<!-- Custom Query Hotkey Dialog -->
|
||||
<system:String x:Key="customeQueryHotkeyTitle">Özel Sorgu Kısayolları</system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTips">Flow Launcher'ı açıp otomatik olarak girdiğiniz sorguyu aratması için bir kısayol atayın.</system:String>
|
||||
<system:String x:Key="preview">Önizleme</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Kısayol tuşu kullanılamıyor, lütfen başka bir kombinasyon girin.</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Hotkey is invalid</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Kısayol tuşu geçersiz</system:String>
|
||||
<system:String x:Key="update">Güncelle</system:String>
|
||||
<system:String x:Key="hotkeyRegTitle">Kısayol Atanıyor</system:String>
|
||||
<system:String x:Key="hotkeyUnavailable">Kullanılamıyor</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableUneditable">Bu kısayol "{0}" için ayrılmıştır, lütfen başka bir kısayol deneyin.</system:String>
|
||||
<system:String x:Key="hotkeyUnavailableEditable">Bu kısayol zaten "{0}" için kullanılıyor. Eğer "Üstüne Yaz"'ı seçerseniz, "{0}" sorgusu bu kısayol ile kullanılamayacak.</system:String>
|
||||
<system:String x:Key="hotkeyRegGuide">Bu işleve atamak istediğiniz kısayol tuşlarına basın.</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
||||
<system:String x:Key="emptyPluginHotkey">Kısayol tuşu ve eylem anahtar kelimesi boş</system:String>
|
||||
|
||||
<!-- Custom Query Shortcut Dialog -->
|
||||
<system:String x:Key="customeQueryShortcutTitle">Özel Kısaltmalar</system:String>
|
||||
|
|
@ -482,7 +549,7 @@
|
|||
</system:String>
|
||||
<system:String x:Key="duplicateShortcut">Anahtar kelime zaten mevcut. Yeni bir kısaltma girin veya mevcut kısaltmayı düzenleyin.</system:String>
|
||||
<system:String x:Key="emptyShortcut">Kısaltma ve/veya sorgu eksik.</system:String>
|
||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
||||
<system:String x:Key="invalidShortcut">Kısayol geçersiz</system:String>
|
||||
|
||||
<!-- Common Action -->
|
||||
<system:String x:Key="commonSave">Kaydet</system:String>
|
||||
|
|
@ -510,18 +577,18 @@
|
|||
<system:String x:Key="reportWindow_report_succeed">Hata raporu başarıyla gönderildi</system:String>
|
||||
<system:String x:Key="reportWindow_report_failed">Hata raporu gönderimi başarısız oldu</system:String>
|
||||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcher'da bir hata oluştu</system:String>
|
||||
<system:String x:Key="reportWindow_please_open_issue">Please open new issue in</system:String>
|
||||
<system:String x:Key="reportWindow_upload_log">1. Upload log file: {0}</system:String>
|
||||
<system:String x:Key="reportWindow_copy_below">2. Copy below exception message</system:String>
|
||||
<system:String x:Key="reportWindow_please_open_issue">Lütfen yeni bir konu açın</system:String>
|
||||
<system:String x:Key="reportWindow_upload_log">1. Log dosyasını buraya yükleyin: {0}</system:String>
|
||||
<system:String x:Key="reportWindow_copy_below">2. Aşağıdaki istisna mesajını kopyalayın</system:String>
|
||||
|
||||
<!-- File Open Error -->
|
||||
<system:String x:Key="fileManagerNotFoundTitle">Dosya Yöneticisi Hatası</system:String>
|
||||
<system:String x:Key="fileManagerNotFound">
|
||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||
Belirtilen dosya yöneticisi bulunamadı. Lütfen Ayarlar > Genel bölümündeki Özel Dosya Yöneticisi ayarını kontrol edin.
|
||||
</system:String>
|
||||
<system:String x:Key="errorTitle">Hata</system:String>
|
||||
<system:String x:Key="folderOpenError">Klasör açılırken bir hata oluştu. {0}</system:String>
|
||||
<system:String x:Key="browserOpenError">An error occurred while opening the URL in the browser. Please check your Default Web Browser configuration in the General section of the settings window</system:String>
|
||||
<system:String x:Key="browserOpenError">URL tarayıcıda açılırken bir hata oluştu. Lütfen ayarlar penceresindeki Genel bölümden Varsayılan Web Tarayıcısı ayarını kontrol edin</system:String>
|
||||
|
||||
<!-- General Notice -->
|
||||
<system:String x:Key="pleaseWait">Lütfen bekleyin...</system:String>
|
||||
|
|
@ -547,6 +614,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">Güncellenecek dosyalar</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Güncelleme açıklaması</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Eklentileri güncelledikten sonra Flow Launcher'ı yeniden başlat</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: v{1}'den v{2}'ye güncelleme</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Seçilen eklenti yok</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Atla</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Flow Launcher Sihirbazına Hoşgeldiniz</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Невдача ініціалізації плагінів</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Плагіни: {0} - не вдалося підвантажити і буде вимкнено, зверніться за допомогою до автора плагіна</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher потрібно перезапустити, щоб завершити вимкнення портативного режиму. Після перезапуску ваш портативний профіль даних буде видалено, а профіль даних роумінгу збережено</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher потрібно перезапустити, щоб завершити ввімкнення портативного режиму. Після перезапуску ваш профіль даних роумінгу буде видалено, а профіль портативних даних збережено</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher виявив, що ви ввімкнули портативний режим. Чи хочете перемістити його в інше місце?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher виявив, що ви вимкнули портативний режим, відповідні ярлики та запис для видалення були створені</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher виявив, що ваші дані користувача існують як в {0}, так і в {1}. {2}{2}Видаліть {1}, щоби продовжити. Зміни не відбулися.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">Наступний плагін містить помилку і не може бути завантажений:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">Наступні плагіни мають помилки і не можуть бути завантажені:</system:String>
|
||||
<system:String x:Key="referToLogs">Для отримання додаткової інформації зверніться до журналів</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Спробуйте ще раз</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Неможливо проаналізувати Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Не вдалося встановити середовище TypeScript. Спробуйте ще раз пізніше</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Не вдалося встановити середовище Python. Спробуйте ще раз пізніше.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Не вдалося зареєструвати гарячу клавішу "{0}". Можливо, гаряча клавіша використовується іншою програмою. Змініть її на іншу гарячу клавішу або вийдіть з програми, де вона використовується.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Не вдалося скасувати реєстрацію гарячої клавіші «{0}». Спробуйте ще раз або перегляньте журнал для отримання подробиць</system:String>
|
||||
|
|
@ -79,10 +99,10 @@
|
|||
<system:String x:Key="maxShowResults">Максимальна кількість результатів</system:String>
|
||||
<system:String x:Key="maxShowResultsToolTip">Ви також можете швидко налаштувати цей параметр за допомогою клавіш CTRL+Плюс чи CTRL+Мінус.</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">Ігнорувати гарячі клавіші в повноекранному режимі</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Вимкнути активацію Flow Launcher коли активовано повноекранний додаток (Рекомендується для ігор).</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Вимкнути активацію Flow Launcher коли активовано повноекранний застосунок (Рекомендується для ігор).</system:String>
|
||||
<system:String x:Key="defaultFileManager">Стандартний Файловий Менеджер</system:String>
|
||||
<system:String x:Key="defaultFileManagerToolTip">Виберіть файловий менеджер для використання під час відкриття теки.</system:String>
|
||||
<system:String x:Key="defaultBrowser">Браузер за замовчуванням</system:String>
|
||||
<system:String x:Key="defaultBrowser">Типовий браузер</system:String>
|
||||
<system:String x:Key="defaultBrowserToolTip">Налаштування нової вкладки, нового вікна, приватного режиму.</system:String>
|
||||
<system:String x:Key="pythonFilePath">Шлях до Python</system:String>
|
||||
<system:String x:Key="nodeFilePath">Шлях до Node.js</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Завжди починати введення тексту в англійському режимі</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Тимчасово змінити спосіб введення на англійський при активації Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Автоматичне оновлення</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Автоматично перевіряти та оновлювати застосунок, коли це можливо</system:String>
|
||||
<system:String x:Key="select">Вибрати</system:String>
|
||||
<system:String x:Key="hideOnStartup">Сховати Flow Launcher при запуску системи</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Вікно пошуку Flow Launcher після запуску ховається в треї.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Мало</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Звичайно</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Використовувати піньїнь</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Дозволяє використовувати пінїнь для пошуку. Піньїнь - це стандартна система написання для перекладу китайської.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Піньїнь — це стандартна система латинізації для перекладу китайської мови. Зверніть увагу, що ввімкнення цієї функції може значно збільшити використання пам’яті під час пошуку.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Використовувати подвійний піньїнь</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Для пошуку використовуйте подвійний піньїнь замість повного.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Подвійна схема піньїнь</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Сяо Хе</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Цзі Жань Ма</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Вей Жуань</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Чжі Нен АБС</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Цзі Ґуан Пін Їнь</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Пін Їнь Цзя Цзя</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Сін Кон Цзянь Дао</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Да Ню</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Сяо Лан</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Завжди переглядати</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Завжди відкривати панель попереднього перегляду при активації Flow. Натисніть {0}, щоб переключити попередній перегляд.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Ефект тіні не дозволено, коли поточна тема має ефект розмиття</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Відкрити</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Використовувати попередній корейський IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">Ви можете змінити попередні налаштування корейського IME безпосередньо звідси.</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Не вдалося змінити налаштування корейського IME</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Перевірте доступ до системного реєстру або зверніться до служби підтримки.</system:String>
|
||||
<system:String x:Key="homePage">Головна сторінка</system:String>
|
||||
<system:String x:Key="homePageToolTip">Показувати результати на головній сторінці, коли текст запиту порожній.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Показати результати історії на головній</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Автоматично перезапускати Flow Launcher після встановлення / видалення / оновлення плагіну через Магазин плагінів</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Показувати попередження про невідоме джерело</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Показувати попередження під час встановлення плагінів із невідомих джерел</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Автооновлення плагінів</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Автоматично перевіряти оновлення плагінів і повідомляти про наявність оновлень</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Плагін для пошуку</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip-файли</system:String>
|
||||
<system:String x:Key="SelectZipFile">Виберіть zip-файл</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Встановити плагін із локального шляху</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Оновлень не знайдено</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Всі плагіни оновлено</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Доступні оновлення плагінів</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Оновити плагіни</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Перевірити оновлення плагінів</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Плагіни успішно оновлено. Перезапустіть Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Тема</system:String>
|
||||
|
|
@ -232,7 +276,7 @@
|
|||
<system:String x:Key="hiThere">Привіт усім</system:String>
|
||||
<system:String x:Key="SampleTitleExplorer">Провідник</system:String>
|
||||
<system:String x:Key="SampleSubTitleExplorer">Пошук файлів, папок і вмісту файлів</system:String>
|
||||
<system:String x:Key="SampleTitleWebSearch">Веб-пошук</system:String>
|
||||
<system:String x:Key="SampleTitleWebSearch">Вебпошук</system:String>
|
||||
<system:String x:Key="SampleSubTitleWebSearch">Пошук в Інтернеті за допомогою різних пошукових систем</system:String>
|
||||
<system:String x:Key="SampleTitleProgram">Програма</system:String>
|
||||
<system:String x:Key="SampleSubTitleProgram">Запуск програм від імені адміністратора або іншого користувача</system:String>
|
||||
|
|
@ -250,12 +294,12 @@
|
|||
<system:String x:Key="CustomizeToolTip">Підлаштувати</system:String>
|
||||
<system:String x:Key="windowMode">Віконний режим</system:String>
|
||||
<system:String x:Key="opacity">Прозорість</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">Тема {0} не існує, повернення до теми за замовчуванням</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Не вдалось завантажити тему {0}, повернення до теми за замовчуванням</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">Тема {0} не існує, повернення до типової теми</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Не вдалось завантажити тему {0}, повернення до типової теми</system:String>
|
||||
<system:String x:Key="ThemeFolder">Тека з темою</system:String>
|
||||
<system:String x:Key="OpenThemeFolder">Відкрити теку з темою</system:String>
|
||||
<system:String x:Key="ColorScheme">Схема кольорів</system:String>
|
||||
<system:String x:Key="ColorSchemeSystem">За замовчуванням</system:String>
|
||||
<system:String x:Key="ColorSchemeSystem">Як у системі</system:String>
|
||||
<system:String x:Key="ColorSchemeLight">Світла</system:String>
|
||||
<system:String x:Key="ColorSchemeDark">Темна</system:String>
|
||||
<system:String x:Key="SoundEffect">Звуковий ефект</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Змінення тексту заповнювача. Ввід буде використовувати: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Фіксований розмір вікна</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">Розмір вікна не можна регулювати шляхом перетягування.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Оскільки функція «Завжди переглядати» ввімкнена, максимальні результати можуть не показуватися, оскільки панель передперегляду вимагає певної мінімальної висоти</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Гаряча клавіша</system:String>
|
||||
|
|
@ -323,7 +368,7 @@
|
|||
<system:String x:Key="QuickWidthHotkey">Швидке регулювання ширини вікна</system:String>
|
||||
<system:String x:Key="QuickHeightHotkey">Швидке регулювання висоти вікна</system:String>
|
||||
<system:String x:Key="ReloadPluginHotkeyToolTip">Використовуйте, коли плагінам потрібно перезавантажити та оновити наявні дані.</system:String>
|
||||
<system:String x:Key="AdditionalHotkeyToolTip">Ви можете додати ще одну галавішу для цієї функції.</system:String>
|
||||
<system:String x:Key="AdditionalHotkeyToolTip">Ви можете додати ще одну гарячу клавішу для цієї функції.</system:String>
|
||||
<system:String x:Key="customQueryHotkey">Задані гарячі клавіші для запитів</system:String>
|
||||
<system:String x:Key="customQueryShortcut">Користувацькі скорочення запитів</system:String>
|
||||
<system:String x:Key="builtinShortcuts">Вбудовані скорочення</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Показувати значки результатів</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">Для підтримуваних плагінів показуються значки для легшого розрізнення.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Показувати значки результатів тільки для глобального запиту</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Показати значки тільки для результатів глобального запиту</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Перейти до діалогу</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Введіть ярлик для швидкого переходу у вікні діалогу «Відкрити/Зберегти як» до шляху поточного файлового менеджера.</system:String>
|
||||
<system:String x:Key="dialogJump">Перейти до діалогу</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">Коли відкриється діалогове вікно «Відкрити/Зберегти як», швидко перейти до поточного шляху файлового менеджера.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Автоматично перейти до діалогу</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">Коли показується діалогове вікно «Відкрити/Зберегти як», автоматично перейти до шляху поточного файлового менеджера. (Експериментально)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Показати діалогове вікно переходу</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Показати діалогове вікно «Перейти до вікна пошуку», коли показано діалогове вікно «Відкрити/Зберегти», щоби швидко перейти до розташування файлів/тек.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Позиція вікна переходу до діалогу</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Виберіть положення для вікна пошуку «Перейти до діалогу»</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Фіксоване під діалоговим вікном «Відкрити/Зберегти як». Показується при відкритті та залишається до закриття вікна</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Типова позиція вікна пошуку. Показується при активації гарячою клавішею вікна пошуку</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Навігація за результатами діалогового переходу</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Дії для переходу до діалогового вікна «Відкрити/Зберегти як» у вибраному шляху до результату</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Ліва кнопка миші або клавіша Enter</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Права кнопка миші</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Поведінка переходу між діалогами</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Поведінка при навігації у вікні діалогу «Відкрити/Зберегти як», коли результатом є шлях до файлу</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Введіть повний шлях у полі назви файлу</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Введіть повний шлях у поле назви файлу та відкрийте його</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Заповніть каталог у полі шляху</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP-проксі</system:String>
|
||||
|
|
@ -369,7 +436,7 @@
|
|||
|
||||
<!-- Setting About -->
|
||||
<system:String x:Key="about">Про Flow Launcher</system:String>
|
||||
<system:String x:Key="website">Веб-сайт</system:String>
|
||||
<system:String x:Key="website">Вебсайт</system:String>
|
||||
<system:String x:Key="github">GitHub</system:String>
|
||||
<system:String x:Key="docs">Документація</system:String>
|
||||
<system:String x:Key="version">Версія</system:String>
|
||||
|
|
@ -425,8 +492,8 @@
|
|||
<system:String x:Key="fileManagerPathError">Помилка шляху до файлового менеджера</system:String>
|
||||
|
||||
<!-- DefaultBrowser Setting Dialog -->
|
||||
<system:String x:Key="defaultBrowserTitle">Веб-браузер за замовчуванням</system:String>
|
||||
<system:String x:Key="defaultBrowser_tips">Налаштування за замовчуванням відповідають налаштуванню браузера за замовчуванням в операційній системі. Якщо вказано окремо, Flow використовує цей браузер.</system:String>
|
||||
<system:String x:Key="defaultBrowserTitle">Типовий веббраузер</system:String>
|
||||
<system:String x:Key="defaultBrowser_tips">Типові налаштування відповідають налаштуванню типового браузера в операційній системі. Якщо вказано окремо, Flow використовує цей браузер.</system:String>
|
||||
<system:String x:Key="defaultBrowser_name">Браузер</system:String>
|
||||
<system:String x:Key="defaultBrowser_profile_name">Назва браузера</system:String>
|
||||
<system:String x:Key="defaultBrowser_path">Шлях до браузера</system:String>
|
||||
|
|
@ -500,7 +567,7 @@
|
|||
<!-- Crash Reporter -->
|
||||
<system:String x:Key="reportWindow_version">Версія</system:String>
|
||||
<system:String x:Key="reportWindow_time">Час</system:String>
|
||||
<system:String x:Key="reportWindow_reproduce">Будь ласка, розкажіть нам, як додаток вийшов із ладу, щоб ми могли це виправити</system:String>
|
||||
<system:String x:Key="reportWindow_reproduce">Розкажіть нам, як застосунок вийшов із ладу, щоб ми могли це виправити</system:String>
|
||||
<system:String x:Key="reportWindow_send_report">Надіслати звіт</system:String>
|
||||
<system:String x:Key="reportWindow_cancel">Скасувати</system:String>
|
||||
<system:String x:Key="reportWindow_general">Основні</system:String>
|
||||
|
|
@ -511,7 +578,7 @@
|
|||
<system:String x:Key="reportWindow_sending">Відправляється</system:String>
|
||||
<system:String x:Key="reportWindow_report_succeed">Звіт успішно відправлено</system:String>
|
||||
<system:String x:Key="reportWindow_report_failed">Не вдалося відправити звіт</system:String>
|
||||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Стався збій в додатку Flow Launcher</system:String>
|
||||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Стався збій в застосунку Flow Launcher</system:String>
|
||||
<system:String x:Key="reportWindow_please_open_issue">Створіть нову проблему в</system:String>
|
||||
<system:String x:Key="reportWindow_upload_log">1. Завантажте файл журналу: {0}</system:String>
|
||||
<system:String x:Key="reportWindow_copy_below">2. Скопіюйте нижче повідомлення про виняток</system:String>
|
||||
|
|
@ -549,6 +616,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">Оновити файли</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Опис оновлення</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Перезапустити Flow Launcher після оновлення плагінів</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: оновлено з v{1} до v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">Плагін не вибрано</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Пропустити</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Ласкаво просимо до Flow Launcher</system:String>
|
||||
|
|
@ -569,7 +641,7 @@
|
|||
<system:String x:Key="HotkeyLeftRightDesc">Навігація елементами</system:String>
|
||||
<system:String x:Key="HotkeyShiftEnterDesc">Відкрити контекстне меню</system:String>
|
||||
<system:String x:Key="HotkeyCtrlEnterDesc">Відкрийте папку, що містить файл</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Запустити від імені адміністратора / Відкрити папку у файловому менеджері за замовчуванням</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Запустити від імені адміністратора / Відкрити теку у типовому файловому менеджері</system:String>
|
||||
<system:String x:Key="HotkeyCtrlHDesc">Історія запитів</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">Повернутися до результату в контекстному меню</system:String>
|
||||
<system:String x:Key="HotkeyTabDesc">Автодоповнення</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Không thể đăng ký phím nóng "{0}". Phím nóng có thể được sử dụng bởi một chương trình khác. Chuyển sang phím nóng khác hoặc thoát khỏi chương trình khác.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">Luôn bắt đầu nhập ở chế độ tiếng Anh</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">Tạm thời chuyển phương thức nhập sang tiếng Anh khi kích hoạt Flow.</system:String>
|
||||
<system:String x:Key="autoUpdates">Cập nhật tự động</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">Chọn</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ẩn Flow Launcher khi khởi động</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher sẽ ẩn trong khay hệ thống sau khi khởi động.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Thấp</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Bình thường</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Hoạt động bính âm</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Cho phép bạn sử dụng Bính âm để tìm kiếm. Bính âm là hệ thống ký hiệu La Mã tiêu chuẩn để dịch văn bản tiếng Trung.</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">Luôn xem trước</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Luôn mở bảng xem trước khi Flow kích hoạt. Nhấn {0} để chuyển đổi chế độ xem trước.</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Hiệu ứng đổ bóng không được phép nếu chủ đề hiện tại bật hiệu ứng làm mờ</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">Mở</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Plugin tìm kiếm</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">Không có cập nhật</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">Tất cả các plugin đều được cập nhật</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">Giao Diện</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Phím tắt</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||
|
|
@ -555,6 +622,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">Cập nhật tệp</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Thông tin mô tả</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Bỏ Qua</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Chào mừng bạn đến với Trình khởi chạy luồng</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">无法初始化插件</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">插件:{0} - 无法加载并将被禁用,请联系插件创建者寻求帮助</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher 需要重启以完成禁用便携模式。重新启动后,您的便携数据配置文件将被删除而漫游数据配置文件将被保留</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher 需要重启以完成启用便携模式。重新启动后,您的漫游数据配置文件将被删除而便携数据配置文件将被保留</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher 检测到您启用了便携模式。您想要将其移动到别的位置吗?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher 检测到您已禁用便携模式。相关的快捷方式和卸载器条目已创建</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher 检测到您的用户数据存在于 {0} 和 {1} 中。 {2}{2}请删除 {1} 以便继续。目前将不会做任何更改。</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">下列插件出现错误无法加载:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">下列插件发现错误无法加载:</system:String>
|
||||
<system:String x:Key="referToLogs">请参阅日志以获取更多信息</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">请重试</system:String>
|
||||
<system:String x:Key="parseProxyFailed">无法解析 Http 代理</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">无法安装 TypeScript 环境。请稍后再试</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">无法安装 Python 环境。请稍后再试。</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">无法注册热键“{0}”。该热键可能正在被其他程序使用。更改为不同的热键,或退出其他程序。</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">未能取消注册快捷键"{0}"。请重试或查看日志以获取详细信息</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">以英文模式开始输入</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">激活 Flow 时暂时将输入法更改为英文模式。</system:String>
|
||||
<system:String x:Key="autoUpdates">自动更新</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">自动检查并更新应用程序</system:String>
|
||||
<system:String x:Key="select">选择</system:String>
|
||||
<system:String x:Key="hideOnStartup">系统启动时不显示主窗口</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher 启动后搜索窗口隐藏在托盘中。</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">低</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">常规</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">使用拼音搜索</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">允许使用拼音进行搜索。</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">拼音是翻译中文的罗马化拼写的标准系统。请注意,启用此功能可以大大增加搜索时的内存使用量。</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">使用双拼</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">使用双拼而不是全拼进行搜索。</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">双拼方案</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">小鹤双拼</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">自然码</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">微软双拼</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">智能ABC双拼</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">紫光双拼</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">拼音加加</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">星空键道</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">大牛双拼</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">小浪双拼</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">始终打开预览</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">Flow 启动时总是打开预览面板。按 {0} 以切换预览。</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">当前主题已启用模糊效果,不允许启用阴影效果</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">打开</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">使用以前的韩语输入法</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">您可以直接从这里更改前韩语输入法设置</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">更改韩语输入法设置失败</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">请检查您的系统注册表访问权限或联系支持。</system:String>
|
||||
<system:String x:Key="homePage">首页</system:String>
|
||||
<system:String x:Key="homePageToolTip">当查询文本为空时显示主页结果。</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">在主页中显示历史记录</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">通过插件商店安装/卸载/更新插件后自动重启 Flow Launcher</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">显示未知来源警告</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">安装来自未知来源的插件时显示警告</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">自动更新插件</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">自动检查插件更新并通知是否有任何可用更新</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">搜索插件</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip 文件</system:String>
|
||||
<system:String x:Key="SelectZipFile">请选择 zip 文件</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">从本地路径安装插件</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">无可用更新</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">所有插件都是最新</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">插件更新可用</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">更新插件</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">检查插件更新</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">插件更新成功。请重新启动 Flow Launcher。</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">主题</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">更改占位符文本。输入空将使用:{0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">固定窗口大小</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">窗口高度不能通过拖动来调整。</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">由于始终打开预览已开启,最大结果显示个数可能无法生效,因为预览面板需要一定的最低高度</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">热键</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">显示结果徽章</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">对于支持的插件,将显示徽章以帮助更容易区分它们。</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">仅在全局查询下显示结果徽章</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">仅对全局查询结果显示徽章</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">对话框跳转</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">输入快捷键以快速导航打开或保存作为对话框窗口到当前文件管理器路径。</system:String>
|
||||
<system:String x:Key="dialogJump">对话框跳转</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">当打开了打开或保存对话框窗口时,快速导航到文件管理器当前路径。</system:String>
|
||||
<system:String x:Key="autoDialogJump">自动跳转对话框</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">当显示打开或保存对话框窗口时,自动导航到当前文件管理器的路径。(实验性)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">显示对话框跳转窗口</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">当显示打开或保存对话框窗口以快速导航到文件或文件夹位置时,显示对话框跳转搜索窗口。</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">对话框跳转窗口位置</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">选择对话框跳转搜索窗口的位置</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">固定在打开或保存为对话框窗口下。在打开时显示并保持直到窗口关闭</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">默认搜索窗口位置。当被搜索窗口快捷键触发时显示</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">对话框跳转文件导航行为</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">当结果为文件路径时对打开或保存对话框窗口的导航行为</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">左键单击或回车按键</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">右键单击</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">对话框跳转文件导航行为</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">当结果为文件路径时对打开或保存对话框窗口的导航行为</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">在文件名框中填写完整路径</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">在文件名框中填写完整路径并打开</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">在路径框中填写目录</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP 代理</system:String>
|
||||
|
|
@ -549,6 +616,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update_files">更新文件</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">更新日志</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">更新插件后重启 Flow Launcher</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: 更新从 v{1} 到 v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">没有选择插件</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">跳过</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">欢迎使用 Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,26 @@
|
|||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
||||
|
||||
<!-- Portable -->
|
||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
|
||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
|
||||
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
|
||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>
|
||||
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>
|
||||
|
||||
<!-- Plugin Loader -->
|
||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
||||
|
||||
<!-- Http -->
|
||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
||||
|
||||
<!-- AbstractPluginEnvironment -->
|
||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
||||
|
||||
<!-- MainWindow -->
|
||||
<system:String x:Key="registerHotkeyFailed">Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program.</system:String>
|
||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
||||
|
|
@ -91,6 +111,7 @@
|
|||
<system:String x:Key="typingStartEn">一律以英文模式開始輸入</system:String>
|
||||
<system:String x:Key="typingStartEnTooltip">啟動 Flow 時暫時將輸入法切換為英文模式。</system:String>
|
||||
<system:String x:Key="autoUpdates">自動更新</system:String>
|
||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
||||
<system:String x:Key="select">選擇</system:String>
|
||||
<system:String x:Key="hideOnStartup">啟動時不顯示主視窗</system:String>
|
||||
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
|
||||
|
|
@ -102,7 +123,20 @@
|
|||
<system:String x:Key="SearchPrecisionLow">Low</system:String>
|
||||
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">拼音搜尋</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">允許使用拼音來搜尋。拼音是將中文轉換為羅馬字母拼寫的標準系統。</system:String>
|
||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZhiNengABC">Zhi Neng ABC</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasZiGuangPinYin">Zi Guang Pin Yin</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasPinYinJiaJia">Pin Yin Jia Jia</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXingKongJianDao">Xing Kong Jian Dao</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasDaNiu">Da Niu</system:String>
|
||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||
|
||||
<system:String x:Key="AlwaysPreview">一律預覽</system:String>
|
||||
<system:String x:Key="AlwaysPreviewToolTip">當 Flow 啟動時,一律開啟預覽面板。按下 {0} 可切換預覽。</system:String>
|
||||
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
|
||||
|
|
@ -131,6 +165,8 @@
|
|||
<system:String x:Key="KoreanImeOpenLinkButton">開啟</system:String>
|
||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||
<system:String x:Key="homePage">Home Page</system:String>
|
||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||
|
|
@ -142,6 +178,8 @@
|
|||
<system:String x:Key="autoRestartAfterChangingToolTip">Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugin Store</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarning">Show unknown source warning</system:String>
|
||||
<system:String x:Key="showUnknownSourceWarningToolTip">Show warning when installing plugins from unknown sources</system:String>
|
||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
||||
|
|
@ -223,6 +261,12 @@
|
|||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||
<system:String x:Key="updateNoResultTitle">無可用更新</system:String>
|
||||
<system:String x:Key="updateNoResultSubtitle">所有插件均為最新版本</system:String>
|
||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
||||
|
||||
<!-- Setting Theme -->
|
||||
<system:String x:Key="theme">主題</system:String>
|
||||
|
|
@ -288,6 +332,7 @@
|
|||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
||||
<system:String x:Key="KeepMaxResults">Fixed Window Size</system:String>
|
||||
<system:String x:Key="KeepMaxResultsToolTip">The window size is not adjustable by dragging.</system:String>
|
||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
||||
|
||||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">快捷鍵</system:String>
|
||||
|
|
@ -350,6 +395,28 @@
|
|||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
||||
<system:String x:Key="showBadgesToolTip">For supported plugins, badges are displayed to help distinguish them more easily.</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
||||
|
||||
<!-- Setting Proxy -->
|
||||
<system:String x:Key="proxy">HTTP 代理</system:String>
|
||||
|
|
@ -549,6 +616,11 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
|||
<system:String x:Key="update_flowlauncher_update_files">更新檔案</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">更新日誌</system:String>
|
||||
|
||||
<!-- Plugin Update Window -->
|
||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">跳過</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">歡迎使用 Flow Launcher</system:String>
|
||||
|
|
|
|||
|
|
@ -534,10 +534,8 @@
|
|||
MinHeight="380"
|
||||
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
|
||||
Padding="0 0 10 10"
|
||||
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
||||
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
||||
Visibility="{Binding ShowCustomizedPreview}">
|
||||
<ContentControl Content="{Binding Result.PreviewPanel.Value}" />
|
||||
<ContentControl Content="{Binding CustomizedPreviewControl}" />
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Media;
|
||||
|
|
@ -18,17 +18,17 @@ using Flow.Launcher.Core.Plugin;
|
|||
using Flow.Launcher.Core.Resource;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using Flow.Launcher.Infrastructure.Hotkey;
|
||||
using Flow.Launcher.Infrastructure.Image;
|
||||
using Flow.Launcher.Infrastructure.DialogJump;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Flow.Launcher.Plugin.SharedCommands;
|
||||
using Flow.Launcher.Plugin.SharedModels;
|
||||
using Flow.Launcher.ViewModel;
|
||||
using Microsoft.Win32;
|
||||
using ModernWpf.Controls;
|
||||
using DataObject = System.Windows.DataObject;
|
||||
using Key = System.Windows.Input.Key;
|
||||
using MouseButtons = System.Windows.Forms.MouseButtons;
|
||||
using NotifyIcon = System.Windows.Forms.NotifyIcon;
|
||||
using Screen = System.Windows.Forms.Screen;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
|
|
@ -87,13 +87,14 @@ namespace Flow.Launcher
|
|||
_viewModel = Ioc.Default.GetRequiredService<MainViewModel>();
|
||||
DataContext = _viewModel;
|
||||
|
||||
Topmost = _settings.ShowAtTopmost;
|
||||
|
||||
InitializeComponent();
|
||||
UpdatePosition();
|
||||
|
||||
InitSoundEffects();
|
||||
DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste);
|
||||
ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged;
|
||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||
_viewModel.ActualApplicationThemeChanged += ViewModel_ActualApplicationThemeChanged;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -102,7 +103,7 @@ namespace Flow.Launcher
|
|||
|
||||
#pragma warning disable VSTHRD100 // Avoid async void methods
|
||||
|
||||
private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args)
|
||||
private void ViewModel_ActualApplicationThemeChanged(object sender, ActualApplicationThemeChangedEventArgs args)
|
||||
{
|
||||
_ = _theme.RefreshFrameAsync();
|
||||
}
|
||||
|
|
@ -116,7 +117,7 @@ namespace Flow.Launcher
|
|||
Win32Helper.DisableControlBox(this);
|
||||
}
|
||||
|
||||
private void OnLoaded(object sender, RoutedEventArgs _)
|
||||
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// Check first launch
|
||||
if (_settings.FirstLaunch)
|
||||
|
|
@ -124,6 +125,9 @@ namespace Flow.Launcher
|
|||
// Set First Launch to false
|
||||
_settings.FirstLaunch = false;
|
||||
|
||||
// Update release notes version
|
||||
_settings.ReleaseNotesVersion = Constant.Version;
|
||||
|
||||
// Set Backdrop Type to Acrylic for Windows 11 when First Launch. Default is None
|
||||
if (Win32Helper.IsBackdropSupported()) _settings.BackdropType = BackdropTypes.Acrylic;
|
||||
|
||||
|
|
@ -135,6 +139,24 @@ namespace Flow.Launcher
|
|||
welcomeWindow.Show();
|
||||
}
|
||||
|
||||
if (Constant.Version != "1.0.0" && _settings.ReleaseNotesVersion != Constant.Version) // Skip release notes notification for developer builds (version 1.0.0)
|
||||
{
|
||||
// Update release notes version
|
||||
_settings.ReleaseNotesVersion = Constant.Version;
|
||||
// Show release note popup with button
|
||||
App.API.ShowMsgWithButton(
|
||||
string.Format(App.API.GetTranslation("appUpdateTitle"), Constant.Version),
|
||||
App.API.GetTranslation("appUpdateButtonContent"),
|
||||
() =>
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
var releaseNotesWindow = new ReleaseNotesWindow();
|
||||
releaseNotesWindow.Show();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Initialize place holder
|
||||
SetupPlaceholderText();
|
||||
_viewModel.PlaceholderText = _settings.PlaceholderText;
|
||||
|
|
@ -144,10 +166,12 @@ namespace Flow.Launcher
|
|||
if (_settings.HideOnStartup)
|
||||
{
|
||||
_viewModel.Hide();
|
||||
_viewModel.InitializeVisibilityStatus(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
_viewModel.Show();
|
||||
_viewModel.InitializeVisibilityStatus(true);
|
||||
// When HideOnStartup is off and UseAnimation is on,
|
||||
// there was a bug where the clock would not appear at all on the initial launch
|
||||
// So we need to forcibly trigger animation here to ensure the clock is visible
|
||||
|
|
@ -190,6 +214,9 @@ namespace Flow.Launcher
|
|||
// Without this part, when shown for the first time, switching the context menu does not move the cursor to the end.
|
||||
_viewModel.QueryTextCursorMovedToEnd = false;
|
||||
|
||||
// Register Dialog Jump events
|
||||
InitializeDialogJump();
|
||||
|
||||
// View model property changed event
|
||||
_viewModel.PropertyChanged += (o, e) =>
|
||||
{
|
||||
|
|
@ -202,7 +229,7 @@ namespace Flow.Launcher
|
|||
if (_viewModel.MainWindowVisibilityStatus)
|
||||
{
|
||||
// Play sound effect before activing the window
|
||||
if (_settings.UseSound)
|
||||
if (_settings.UseSound && !_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
SoundPlay();
|
||||
}
|
||||
|
|
@ -225,7 +252,7 @@ namespace Flow.Launcher
|
|||
QueryTextBox.Focus();
|
||||
|
||||
// Play window animation
|
||||
if (_settings.UseAnimation)
|
||||
if (_settings.UseAnimation && !_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
WindowAnimation();
|
||||
}
|
||||
|
|
@ -296,6 +323,9 @@ namespace Flow.Launcher
|
|||
_viewModel.QueryResults();
|
||||
}
|
||||
break;
|
||||
case nameof(Settings.ShowAtTopmost):
|
||||
Topmost = _settings.ShowAtTopmost;
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -327,7 +357,6 @@ namespace Flow.Launcher
|
|||
_notifyIcon.Visible = false;
|
||||
App.API.SaveAppAllSettings();
|
||||
e.Cancel = true;
|
||||
await ImageLoader.WaitSaveAsync();
|
||||
await PluginManager.DisposePluginsAsync();
|
||||
Notification.Uninstall();
|
||||
// After plugins are all disposed, we shutdown application to close app
|
||||
|
|
@ -352,6 +381,11 @@ namespace Flow.Launcher
|
|||
|
||||
private void OnLocationChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsLoaded)
|
||||
{
|
||||
_settings.WindowLeft = Left;
|
||||
|
|
@ -361,6 +395,11 @@ namespace Flow.Launcher
|
|||
|
||||
private async void OnDeactivated(object sender, EventArgs e)
|
||||
{
|
||||
if (_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_settings.WindowLeft = Left;
|
||||
_settings.WindowTop = Top;
|
||||
|
||||
|
|
@ -489,7 +528,7 @@ namespace Flow.Launcher
|
|||
double yRatio = mousePos.Y / maxHeight;
|
||||
|
||||
// Current monitor information
|
||||
var screen = Screen.FromHandle(new WindowInteropHelper(this).Handle);
|
||||
var screen = MonitorInfo.GetNearestDisplayMonitor(new WindowInteropHelper(this).Handle);
|
||||
var workingArea = screen.WorkingArea;
|
||||
var screenLeftTop = Win32Helper.TransformPixelsToDIP(this, workingArea.X, workingArea.Y);
|
||||
|
||||
|
|
@ -550,11 +589,23 @@ namespace Flow.Launcher
|
|||
switch (msg)
|
||||
{
|
||||
case Win32Helper.WM_ENTERSIZEMOVE:
|
||||
// Do do handle size move event for dialog jump window
|
||||
if (_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
return IntPtr.Zero;
|
||||
}
|
||||
|
||||
_initialWidth = (int)Width;
|
||||
_initialHeight = (int)Height;
|
||||
handled = true;
|
||||
break;
|
||||
case Win32Helper.WM_EXITSIZEMOVE:
|
||||
// Do do handle size move event for Dialog Jump window
|
||||
if (_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
return IntPtr.Zero;
|
||||
}
|
||||
|
||||
//Prevent updating the number of results when the window height is below the height of a single result item.
|
||||
//This situation occurs not only when the user manually resizes the window, but also when the window is released from a side snap, as the OS automatically adjusts the window height.
|
||||
//(Without this check, releasing from a snap can cause the window height to hit the minimum, resulting in only 2 results being shown.)
|
||||
|
|
@ -615,6 +666,16 @@ namespace Flow.Launcher
|
|||
handled = true;
|
||||
}
|
||||
break;
|
||||
case Win32Helper.WM_POWERBROADCAST: // Handle power broadcast messages
|
||||
// https://learn.microsoft.com/en-us/windows/win32/power/wm-powerbroadcast
|
||||
if (wParam.ToInt32() == Win32Helper.PBT_APMRESUMEAUTOMATIC)
|
||||
{
|
||||
// Fix for sound not playing after sleep / hibernate
|
||||
// https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps
|
||||
InitSoundEffects();
|
||||
}
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return IntPtr.Zero;
|
||||
|
|
@ -624,16 +685,6 @@ namespace Flow.Launcher
|
|||
|
||||
#region Window Sound Effects
|
||||
|
||||
private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||
{
|
||||
// Fix for sound not playing after sleep / hibernate
|
||||
// https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps
|
||||
if (e.Mode == PowerModes.Resume)
|
||||
{
|
||||
InitSoundEffects();
|
||||
}
|
||||
}
|
||||
|
||||
private void InitSoundEffects()
|
||||
{
|
||||
if (_settings.WMPInstalled)
|
||||
|
|
@ -765,11 +816,19 @@ namespace Flow.Launcher
|
|||
|
||||
#region Window Position
|
||||
|
||||
private void UpdatePosition()
|
||||
public void UpdatePosition()
|
||||
{
|
||||
// Initialize call twice to work around multi-display alignment issue- https://github.com/Flow-Launcher/Flow.Launcher/issues/2910
|
||||
InitializePosition();
|
||||
InitializePosition();
|
||||
if (_viewModel.IsDialogJumpWindowUnderDialog())
|
||||
{
|
||||
InitializeDialogJumpPosition();
|
||||
InitializeDialogJumpPosition();
|
||||
}
|
||||
else
|
||||
{
|
||||
InitializePosition();
|
||||
InitializePosition();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task PositionResetAsync()
|
||||
|
|
@ -891,36 +950,36 @@ namespace Flow.Launcher
|
|||
}
|
||||
}
|
||||
|
||||
private Screen SelectedScreen()
|
||||
private MonitorInfo SelectedScreen()
|
||||
{
|
||||
Screen screen;
|
||||
MonitorInfo screen;
|
||||
switch (_settings.SearchWindowScreen)
|
||||
{
|
||||
case SearchWindowScreens.Cursor:
|
||||
screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
|
||||
break;
|
||||
case SearchWindowScreens.Primary:
|
||||
screen = Screen.PrimaryScreen;
|
||||
screen = MonitorInfo.GetCursorDisplayMonitor();
|
||||
break;
|
||||
case SearchWindowScreens.Focus:
|
||||
var foregroundWindowHandle = Win32Helper.GetForegroundWindow();
|
||||
screen = Screen.FromHandle(foregroundWindowHandle);
|
||||
screen = MonitorInfo.GetNearestDisplayMonitor(Win32Helper.GetForegroundWindow());
|
||||
break;
|
||||
case SearchWindowScreens.Primary:
|
||||
screen = MonitorInfo.GetPrimaryDisplayMonitor();
|
||||
break;
|
||||
case SearchWindowScreens.Custom:
|
||||
if (_settings.CustomScreenNumber <= Screen.AllScreens.Length)
|
||||
screen = Screen.AllScreens[_settings.CustomScreenNumber - 1];
|
||||
var allScreens = MonitorInfo.GetDisplayMonitors();
|
||||
if (_settings.CustomScreenNumber <= allScreens.Count)
|
||||
screen = allScreens[_settings.CustomScreenNumber - 1];
|
||||
else
|
||||
screen = Screen.AllScreens[0];
|
||||
screen = allScreens[0];
|
||||
break;
|
||||
default:
|
||||
screen = Screen.AllScreens[0];
|
||||
screen = MonitorInfo.GetDisplayMonitors()[0];
|
||||
break;
|
||||
}
|
||||
|
||||
return screen ?? Screen.AllScreens[0];
|
||||
return screen ?? MonitorInfo.GetDisplayMonitors()[0];
|
||||
}
|
||||
|
||||
private double HorizonCenter(Screen screen)
|
||||
private double HorizonCenter(MonitorInfo screen)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
||||
var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0);
|
||||
|
|
@ -928,7 +987,7 @@ namespace Flow.Launcher
|
|||
return left;
|
||||
}
|
||||
|
||||
private double VerticalCenter(Screen screen)
|
||||
private double VerticalCenter(MonitorInfo screen)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y);
|
||||
var dip2 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Height);
|
||||
|
|
@ -936,7 +995,7 @@ namespace Flow.Launcher
|
|||
return top;
|
||||
}
|
||||
|
||||
private double HorizonRight(Screen screen)
|
||||
private double HorizonRight(MonitorInfo screen)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
||||
var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0);
|
||||
|
|
@ -944,14 +1003,14 @@ namespace Flow.Launcher
|
|||
return left;
|
||||
}
|
||||
|
||||
private double HorizonLeft(Screen screen)
|
||||
private double HorizonLeft(MonitorInfo screen)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
||||
var left = dip1.X + 10;
|
||||
return left;
|
||||
}
|
||||
|
||||
public double VerticalTop(Screen screen)
|
||||
private double VerticalTop(MonitorInfo screen)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y);
|
||||
var top = dip1.Y + 10;
|
||||
|
|
@ -1327,6 +1386,46 @@ namespace Flow.Launcher
|
|||
|
||||
#endregion
|
||||
|
||||
#region Dialog Jump
|
||||
|
||||
private void InitializeDialogJump()
|
||||
{
|
||||
DialogJump.ShowDialogJumpWindowAsync = _viewModel.SetupDialogJumpAsync;
|
||||
DialogJump.UpdateDialogJumpWindow = InitializeDialogJumpPosition;
|
||||
DialogJump.ResetDialogJumpWindow = _viewModel.ResetDialogJump;
|
||||
DialogJump.HideDialogJumpWindow = _viewModel.HideDialogJump;
|
||||
}
|
||||
|
||||
private void InitializeDialogJumpPosition()
|
||||
{
|
||||
if (_viewModel.DialogWindowHandle == nint.Zero || !_viewModel.MainWindowVisibilityStatus) return;
|
||||
if (!_viewModel.IsDialogJumpWindowUnderDialog()) return;
|
||||
|
||||
// Get dialog window rect
|
||||
var result = Win32Helper.GetWindowRect(_viewModel.DialogWindowHandle, out var window);
|
||||
if (!result) return;
|
||||
|
||||
// Move window below the bottom of the dialog and keep it center
|
||||
Top = VerticalBottom(window);
|
||||
Left = HorizonCenter(window);
|
||||
}
|
||||
|
||||
private double HorizonCenter(Rect window)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, window.X, 0);
|
||||
var dip2 = Win32Helper.TransformPixelsToDIP(this, window.Width, 0);
|
||||
var left = (dip2.X - ActualWidth) / 2 + dip1.X;
|
||||
return left;
|
||||
}
|
||||
|
||||
private double VerticalBottom(Rect window)
|
||||
{
|
||||
var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, window.Bottom);
|
||||
return dip1.Y;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IDisposable
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
|
|
@ -1339,8 +1438,7 @@ namespace Flow.Launcher
|
|||
_notifyIcon?.Dispose();
|
||||
animationSoundWMP?.Close();
|
||||
animationSoundWPF?.Dispose();
|
||||
ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged;
|
||||
SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
|
||||
_viewModel.ActualApplicationThemeChanged -= ViewModel_ActualApplicationThemeChanged;
|
||||
}
|
||||
|
||||
_disposed = true;
|
||||
|
|
|
|||
|
|
@ -37,8 +37,9 @@ namespace Flow.Launcher
|
|||
try
|
||||
{
|
||||
msgBox = new MessageBoxEx(button);
|
||||
if (caption == string.Empty && button == MessageBoxButton.OK && icon == MessageBoxImage.None)
|
||||
if (caption == string.Empty && icon == MessageBoxImage.None)
|
||||
{
|
||||
// If there is no caption and no icon, use DescOnlyTextBlock for vertically centered text
|
||||
msgBox.Title = messageBoxText;
|
||||
msgBox.DescOnlyTextBlock.Visibility = Visibility.Visible;
|
||||
msgBox.DescOnlyTextBlock.Text = messageBoxText;
|
||||
|
|
|
|||
|
|
@ -1,41 +1,76 @@
|
|||
<Window x:Class="Flow.Launcher.Msg"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Background="#ebebeb"
|
||||
Topmost="True"
|
||||
SizeToContent="Height"
|
||||
ResizeMode="NoResize"
|
||||
WindowStyle="None"
|
||||
ShowInTaskbar="False"
|
||||
Title="Msg" Height="60" Width="420">
|
||||
<Window
|
||||
x:Class="Flow.Launcher.Msg"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Msg"
|
||||
Width="420"
|
||||
Height="60"
|
||||
Background="#ebebeb"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
SizeToContent="Height"
|
||||
Topmost="True"
|
||||
WindowStyle="None">
|
||||
<Window.Triggers>
|
||||
<EventTrigger RoutedEvent="Window.Loaded">
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation x:Name="showAnimation" Duration="0:0:0.3" Storyboard.TargetProperty="Top"
|
||||
AccelerationRatio="0.2" />
|
||||
<DoubleAnimation
|
||||
x:Name="showAnimation"
|
||||
AccelerationRatio="0.2"
|
||||
Storyboard.TargetProperty="Top"
|
||||
Duration="0:0:0.3" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
|
||||
</Window.Triggers>
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5">
|
||||
|
||||
<Grid
|
||||
Margin="5"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="32" />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition Width="2.852" />
|
||||
<ColumnDefinition Width="13.148"/>
|
||||
<ColumnDefinition Width="13.148" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image x:Name="imgIco" Width="32" Height="32" HorizontalAlignment="Left" Margin="0,9" />
|
||||
<Grid HorizontalAlignment="Stretch" Margin="5 0 0 0" Grid.Column="1" VerticalAlignment="Stretch">
|
||||
<Image
|
||||
x:Name="imgIco"
|
||||
Width="32"
|
||||
Height="32"
|
||||
Margin="0 9"
|
||||
HorizontalAlignment="Left" />
|
||||
<Grid
|
||||
Grid.Column="1"
|
||||
Margin="5 0 0 0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Name="tbTitle" FontSize="16" Foreground="#37392c" FontWeight="Medium">Title</TextBlock>
|
||||
<TextBlock Grid.Row="1" Foreground="#8e94a4" x:Name="tbSubTitle">sdfdsf</TextBlock>
|
||||
<TextBlock
|
||||
x:Name="tbTitle"
|
||||
FontSize="16"
|
||||
FontWeight="Medium"
|
||||
Foreground="#37392c">
|
||||
Title
|
||||
</TextBlock>
|
||||
<TextBlock
|
||||
x:Name="tbSubTitle"
|
||||
Grid.Row="1"
|
||||
Foreground="#8e94a4">
|
||||
sdfdsf
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
<Image x:Name="imgClose" Grid.Column="2" Cursor="Hand" Width="16" VerticalAlignment="Top"
|
||||
HorizontalAlignment="Right" Grid.ColumnSpan="2" />
|
||||
<Image
|
||||
x:Name="imgClose"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Width="16"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Cursor="Hand" />
|
||||
</Grid>
|
||||
</Window>
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media.Animation;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using Flow.Launcher.Plugin.SharedModels;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
|
|
@ -16,7 +16,7 @@ namespace Flow.Launcher
|
|||
public Msg()
|
||||
{
|
||||
InitializeComponent();
|
||||
var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position);
|
||||
var screen = MonitorInfo.GetCursorDisplayMonitor();
|
||||
var dipWorkingArea = Win32Helper.TransformPixelsToDIP(this,
|
||||
screen.WorkingArea.Width,
|
||||
screen.WorkingArea.Height);
|
||||
|
|
|
|||
84
Flow.Launcher/MsgWithButton.xaml
Normal file
84
Flow.Launcher/MsgWithButton.xaml
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
<Window
|
||||
x:Class="Flow.Launcher.MsgWithButton"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Msg"
|
||||
Width="420"
|
||||
Height="60"
|
||||
Background="#ebebeb"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
SizeToContent="Height"
|
||||
Topmost="True"
|
||||
WindowStyle="None">
|
||||
<Window.Triggers>
|
||||
<EventTrigger RoutedEvent="Window.Loaded">
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
x:Name="showAnimation"
|
||||
AccelerationRatio="0.2"
|
||||
Storyboard.TargetProperty="Top"
|
||||
Duration="0:0:0.3" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
</Window.Triggers>
|
||||
|
||||
<StackPanel Orientation="Vertical">
|
||||
<Grid
|
||||
Margin="5"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="32" />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition Width="2.852" />
|
||||
<ColumnDefinition Width="13.148" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image
|
||||
x:Name="imgIco"
|
||||
Width="32"
|
||||
Height="32"
|
||||
Margin="0 9"
|
||||
HorizontalAlignment="Left" />
|
||||
<Grid
|
||||
Grid.Column="1"
|
||||
Margin="5 0 0 0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
x:Name="tbTitle"
|
||||
FontSize="16"
|
||||
FontWeight="Medium"
|
||||
Foreground="#37392c">
|
||||
Title
|
||||
</TextBlock>
|
||||
<TextBlock
|
||||
x:Name="tbSubTitle"
|
||||
Grid.Row="1"
|
||||
Foreground="#8e94a4">
|
||||
sdfdsf
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
<Image
|
||||
x:Name="imgClose"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
Width="16"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Cursor="Hand" />
|
||||
</Grid>
|
||||
<Button
|
||||
x:Name="btn"
|
||||
Margin="5 0 5 5"
|
||||
HorizontalAlignment="Stretch"
|
||||
Content="fwafaw"
|
||||
Foreground="#dcdcdc" />
|
||||
</StackPanel>
|
||||
</Window>
|
||||
95
Flow.Launcher/MsgWithButton.xaml.cs
Normal file
95
Flow.Launcher/MsgWithButton.xaml.cs
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media.Animation;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using Flow.Launcher.Plugin.SharedModels;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
public partial class MsgWithButton : Window
|
||||
{
|
||||
private readonly Storyboard fadeOutStoryboard = new();
|
||||
private bool closing;
|
||||
|
||||
public MsgWithButton()
|
||||
{
|
||||
InitializeComponent();
|
||||
var screen = MonitorInfo.GetCursorDisplayMonitor();
|
||||
var dipWorkingArea = Win32Helper.TransformPixelsToDIP(this,
|
||||
screen.WorkingArea.Width,
|
||||
screen.WorkingArea.Height);
|
||||
Left = dipWorkingArea.X - Width;
|
||||
Top = dipWorkingArea.Y;
|
||||
showAnimation.From = dipWorkingArea.Y;
|
||||
showAnimation.To = dipWorkingArea.Y - Height;
|
||||
|
||||
// Create the fade out storyboard
|
||||
fadeOutStoryboard.Completed += fadeOutStoryboard_Completed;
|
||||
DoubleAnimation fadeOutAnimation = new DoubleAnimation(dipWorkingArea.Y - Height, dipWorkingArea.Y, new Duration(TimeSpan.FromSeconds(5)))
|
||||
{
|
||||
AccelerationRatio = 0.2
|
||||
};
|
||||
Storyboard.SetTarget(fadeOutAnimation, this);
|
||||
Storyboard.SetTargetProperty(fadeOutAnimation, new PropertyPath(TopProperty));
|
||||
fadeOutStoryboard.Children.Add(fadeOutAnimation);
|
||||
|
||||
_ = LoadImageAsync();
|
||||
|
||||
imgClose.MouseUp += imgClose_MouseUp;
|
||||
}
|
||||
|
||||
private async System.Threading.Tasks.Task LoadImageAsync()
|
||||
{
|
||||
imgClose.Source = await App.API.LoadImageAsync(Path.Combine(Constant.ProgramDirectory, "Images\\close.png"));
|
||||
}
|
||||
|
||||
void imgClose_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (!closing)
|
||||
{
|
||||
closing = true;
|
||||
fadeOutStoryboard.Begin();
|
||||
}
|
||||
}
|
||||
|
||||
private void fadeOutStoryboard_Completed(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "VSTHRD100:Avoid async void methods", Justification = "<Pending>")]
|
||||
public async void Show(string title, string buttonText, Action buttonAction, string subTitle, string iconPath)
|
||||
{
|
||||
tbTitle.Text = title;
|
||||
tbSubTitle.Text = subTitle;
|
||||
btn.Content = buttonText;
|
||||
btn.Click += (s, e) => buttonAction();
|
||||
if (string.IsNullOrEmpty(subTitle))
|
||||
{
|
||||
tbSubTitle.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
if (!File.Exists(iconPath))
|
||||
{
|
||||
imgIco.Source = await App.API.LoadImageAsync(Path.Combine(Constant.ProgramDirectory, "Images\\app.png"));
|
||||
}
|
||||
else
|
||||
{
|
||||
imgIco.Source = await App.API.LoadImageAsync(iconPath);
|
||||
}
|
||||
|
||||
Show();
|
||||
|
||||
await Dispatcher.InvokeAsync(async () =>
|
||||
{
|
||||
if (!closing)
|
||||
{
|
||||
closing = true;
|
||||
await Dispatcher.InvokeAsync(fadeOutStoryboard.Begin);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
using Flow.Launcher.Infrastructure;
|
||||
using Microsoft.Toolkit.Uwp.Notifications;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using Microsoft.Toolkit.Uwp.Notifications;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
|
|
@ -12,10 +13,30 @@ namespace Flow.Launcher
|
|||
|
||||
internal static bool legacy = !Win32Helper.IsNotificationSupported();
|
||||
|
||||
private static readonly ConcurrentDictionary<string, Action> _notificationActions = new();
|
||||
|
||||
internal static void Install()
|
||||
{
|
||||
if (!legacy)
|
||||
{
|
||||
ToastNotificationManagerCompat.OnActivated += toastArgs =>
|
||||
{
|
||||
var actionId = toastArgs.Argument; // Or use toastArgs.UserInput if using input
|
||||
if (_notificationActions.TryGetValue(actionId, out var action))
|
||||
{
|
||||
action?.Invoke();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Uninstall()
|
||||
{
|
||||
if (!legacy)
|
||||
{
|
||||
_notificationActions.Clear();
|
||||
ToastNotificationManagerCompat.Uninstall();
|
||||
}
|
||||
}
|
||||
|
||||
public static void Show(string title, string subTitle, string iconPath = null)
|
||||
|
|
@ -67,5 +88,58 @@ namespace Flow.Launcher
|
|||
var msg = new Msg();
|
||||
msg.Show(title, subTitle, iconPath);
|
||||
}
|
||||
|
||||
public static void ShowWithButton(string title, string buttonText, Action buttonAction, string subTitle, string iconPath = null)
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
ShowInternalWithButton(title, buttonText, buttonAction, subTitle, iconPath);
|
||||
});
|
||||
}
|
||||
|
||||
private static void ShowInternalWithButton(string title, string buttonText, Action buttonAction, string subTitle, string iconPath = null)
|
||||
{
|
||||
// Handle notification for win7/8/early win10
|
||||
if (legacy)
|
||||
{
|
||||
LegacyShowWithButton(title, buttonText, buttonAction, subTitle, iconPath);
|
||||
return;
|
||||
}
|
||||
|
||||
// Using Windows Notification System
|
||||
var Icon = !File.Exists(iconPath)
|
||||
? Path.Combine(Constant.ProgramDirectory, "Images\\app.png")
|
||||
: iconPath;
|
||||
|
||||
try
|
||||
{
|
||||
var guid = Guid.NewGuid().ToString();
|
||||
new ToastContentBuilder()
|
||||
.AddText(title, hintMaxLines: 1)
|
||||
.AddText(subTitle)
|
||||
.AddButton(buttonText, ToastActivationType.Background, guid)
|
||||
.AddAppLogoOverride(new Uri(Icon))
|
||||
.Show();
|
||||
_notificationActions.AddOrUpdate(guid, buttonAction, (key, oldValue) => buttonAction);
|
||||
}
|
||||
catch (InvalidOperationException e)
|
||||
{
|
||||
// Temporary fix for the Windows 11 notification issue
|
||||
// Possibly from 22621.1413 or 22621.1485, judging by post time of #2024
|
||||
App.API.LogException(ClassName, "Notification InvalidOperationException Error", e);
|
||||
LegacyShowWithButton(title, buttonText, buttonAction, subTitle, iconPath);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
App.API.LogException(ClassName, "Notification Error", e);
|
||||
LegacyShowWithButton(title, buttonText, buttonAction, subTitle, iconPath);
|
||||
}
|
||||
}
|
||||
|
||||
private static void LegacyShowWithButton(string title, string buttonText, Action buttonAction, string subTitle, string iconPath)
|
||||
{
|
||||
var msg = new MsgWithButton();
|
||||
msg.Show(title, buttonText, buttonAction, subTitle, iconPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
111
Flow.Launcher/PluginUpdateWindow.xaml
Normal file
111
Flow.Launcher/PluginUpdateWindow.xaml
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
<Window
|
||||
x:Class="Flow.Launcher.PluginUpdateWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:flowlauncher="clr-namespace:Flow.Launcher"
|
||||
Title="{DynamicResource updateAllPluginsButtonContent}"
|
||||
Width="530"
|
||||
Background="{DynamicResource PopuBGColor}"
|
||||
DataContext="{Binding RelativeSource={RelativeSource Self}}"
|
||||
Foreground="{DynamicResource PopupTextColor}"
|
||||
Icon="Images\app.png"
|
||||
ResizeMode="NoResize"
|
||||
SizeToContent="Height"
|
||||
Topmost="True"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
<WindowChrome.WindowChrome>
|
||||
<WindowChrome CaptionHeight="32" ResizeBorderThickness="{x:Static SystemParameters.WindowResizeBorderThickness}" />
|
||||
</WindowChrome.WindowChrome>
|
||||
<Window.InputBindings>
|
||||
<KeyBinding Key="Escape" Command="Close" />
|
||||
</Window.InputBindings>
|
||||
<Window.CommandBindings>
|
||||
<CommandBinding Command="Close" Executed="cmdEsc_OnPress" />
|
||||
</Window.CommandBindings>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition Height="80" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0">
|
||||
<StackPanel>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button
|
||||
Grid.Column="1"
|
||||
Click="BtnCancel_OnClick"
|
||||
Style="{StaticResource TitleBarCloseButtonStyle}">
|
||||
<Path
|
||||
Width="46"
|
||||
Height="32"
|
||||
Data="M 18,11 27,20 M 18,20 27,11"
|
||||
Stroke="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}"
|
||||
StrokeThickness="1">
|
||||
<Path.Style>
|
||||
<Style TargetType="Path">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=IsActive, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" Value="False">
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Path.Style>
|
||||
</Path>
|
||||
</Button>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="26 0 26 0">
|
||||
<TextBlock
|
||||
Margin="0 0 0 12"
|
||||
FontSize="20"
|
||||
FontWeight="SemiBold"
|
||||
Text="{DynamicResource updateAllPluginsButtonContent}"
|
||||
TextAlignment="Left" />
|
||||
|
||||
<ScrollViewer
|
||||
MaxHeight="300"
|
||||
Margin="0 5 0 5"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel x:Name="UpdatePluginStackPanel" />
|
||||
</ScrollViewer>
|
||||
|
||||
<Rectangle
|
||||
Height="1"
|
||||
Margin="0 5 0 5"
|
||||
Fill="{DynamicResource SeparatorForeground}" />
|
||||
|
||||
<CheckBox
|
||||
Margin="0 10 0 10"
|
||||
Content="{DynamicResource restartAfterUpdating}"
|
||||
IsChecked="{Binding Restart, Mode=TwoWay}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Margin="0 14 0 0"
|
||||
Background="{DynamicResource PopupButtonAreaBGColor}"
|
||||
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
|
||||
BorderThickness="0 1 0 0">
|
||||
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
|
||||
<Button
|
||||
x:Name="btnCancel"
|
||||
MinWidth="140"
|
||||
Margin="10 0 5 0"
|
||||
Click="BtnCancel_OnClick"
|
||||
Content="{DynamicResource cancel}" />
|
||||
<Button
|
||||
x:Name="btnUpdate"
|
||||
MinWidth="140"
|
||||
Margin="5 0 10 0"
|
||||
Click="btnUpdate_OnClick"
|
||||
Content="{DynamicResource update}"
|
||||
Style="{StaticResource AccentButtonStyle}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue