diff --git a/.cm/gitstream.cm b/.cm/gitstream.cm new file mode 100644 index 000000000..fcf01c0fe --- /dev/null +++ b/.cm/gitstream.cm @@ -0,0 +1,75 @@ +# -*- mode: yaml -*- +# This example configuration for provides basic automations to get started with gitStream. +# View the gitStream quickstart for more examples: https://docs.gitstream.cm/examples/ +manifest: + version: 1.0 + + +automations: + # Add a label that indicates how many minutes it will take to review the PR. + estimated_time_to_review: + if: + - true + run: + - action: add-label@v1 + args: + label: "{{ calc.etr }} min review" + color: {{ colors.red if (calc.etr >= 20) else ( colors.yellow if (calc.etr >= 5) else colors.green ) }} + # Post a comment that lists the best experts for the files that were modified. + explain_code_experts: + if: + - true + run: + - action: explain-code-experts@v1 + args: + gt: 10 + # Post a comment that indicates what percentage of the PR is new code. + percent_new_code: + if: + - true + run: + - action: add-comment@v1 + args: + comment: | + This PR is {{ changes.ratio }}% new code. + # Post a comment that request changes for a PR that contains a TODO statement. + review_todo_comments: + if: + - {{ source.diff.files | matchDiffLines(regex=r/^[+].*(TODO)|(todo)/) | some }} + run: + - action: request-changes@v1 + args: + comment: | + This PR contains a TODO statement. Please check to see if they should be removed. + # Post a comment that request a before and after screenshot + request_screenshot: + # Triggered for PRs that lack an image file or link to an image in the PR description + if: + - {{ not (has.screenshot_link or has.image_uploaded) }} + run: + - action: add-comment@v1 + args: + comment: | + Be a legend :trophy: by adding a before and after screenshot of the changes you made, especially if they are around UI/UX. + + +# +----------------------------------------------------------------------------+ +# | Custom Expressions | +# | https://docs.gitstream.cm/how-it-works/#custom-expressions | +# +----------------------------------------------------------------------------+ + +calc: + etr: {{ branch | estimatedReviewTime }} + +colors: + red: 'b60205' + yellow: 'fbca04' + green: '0e8a16' + +changes: + # Sum all the lines added/edited in the PR + additions: {{ branch.diff.files_metadata | map(attr='additions') | sum }} + # Sum all the line removed in the PR + deletions: {{ branch.diff.files_metadata | map(attr='deletions') | sum }} + # Calculate the ratio of new code + ratio: {{ (changes.additions / (changes.additions + changes.deletions)) * 100 | round(2) }} \ No newline at end of file diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index f40a9dd36..c44b43fab 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -98,6 +98,7 @@ Português Português (Brasil) Italiano Slovenský +quicklook Tiếng Việt Droplex Preinstalled diff --git a/.github/workflows/gitstream.yml b/.github/workflows/gitstream.yml new file mode 100644 index 000000000..0916572df --- /dev/null +++ b/.github/workflows/gitstream.yml @@ -0,0 +1,49 @@ +# Code generated by gitStream GitHub app - DO NOT EDIT + +name: gitStream workflow automation +run-name: | + /:\ gitStream: PR #${{ fromJSON(fromJSON(github.event.inputs.client_payload)).pullRequestNumber }} from ${{ github.event.inputs.full_repository }} + +on: + workflow_dispatch: + inputs: + client_payload: + description: The Client payload + required: true + full_repository: + description: the repository name include the owner in `owner/repo_name` format + required: true + head_ref: + description: the head sha + required: true + base_ref: + description: the base ref + required: true + installation_id: + description: the installation id + required: false + resolver_url: + description: the resolver url to pass results to + required: true + resolver_token: + description: Optional resolver token for resolver service + required: false + default: '' + +jobs: + gitStream: + timeout-minutes: 5 + runs-on: ubuntu-latest + name: gitStream workflow automation + steps: + - name: Evaluate Rules + uses: linear-b/gitstream-github-action@v2 + id: rules-engine + with: + full_repository: ${{ github.event.inputs.full_repository }} + head_ref: ${{ github.event.inputs.head_ref }} + base_ref: ${{ github.event.inputs.base_ref }} + client_payload: ${{ github.event.inputs.client_payload }} + installation_id: ${{ github.event.inputs.installation_id }} + resolver_url: ${{ github.event.inputs.resolver_url }} + resolver_token: ${{ github.event.inputs.resolver_token }} diff --git a/.github/workflows/pr_assignee.yml b/.github/workflows/pr_assignee.yml new file mode 100644 index 000000000..af6daff02 --- /dev/null +++ b/.github/workflows/pr_assignee.yml @@ -0,0 +1,19 @@ +name: Assign PR to creator + +# Due to GitHub token limitation, only able to assign org members not authors from forks. +# https://github.com/thomaseizinger/assign-pr-creator-action/issues/3 + +on: + pull_request: + types: [opened] + branches-ignore: + - l10n_dev + +jobs: + automation: + runs-on: ubuntu-latest + steps: + - name: Assign PR to creator + uses: thomaseizinger/assign-pr-creator-action@v1.0.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/Flow.Launcher.Core/Plugin/JsonRPCPluginV2.cs b/Flow.Launcher.Core/Plugin/JsonRPCPluginV2.cs index 46c72624a..5a6633525 100644 --- a/Flow.Launcher.Core/Plugin/JsonRPCPluginV2.cs +++ b/Flow.Launcher.Core/Plugin/JsonRPCPluginV2.cs @@ -139,11 +139,20 @@ namespace Flow.Launcher.Core.Plugin return Task.CompletedTask; } - public virtual ValueTask DisposeAsync() + public virtual async ValueTask DisposeAsync() { - RPC?.Dispose(); - ErrorStream?.Dispose(); - return ValueTask.CompletedTask; + try + { + await RPC.InvokeAsync("close"); + } + catch (RemoteMethodNotFoundException e) + { + } + finally + { + RPC?.Dispose(); + ErrorStream?.Dispose(); + } } } } diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index e7dfb31c0..a827e9e7a 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -1,4 +1,4 @@ -using Flow.Launcher.Core.ExternalPlugins; +using Flow.Launcher.Core.ExternalPlugins; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -90,6 +90,48 @@ namespace Flow.Launcher.Core.Plugin }).ToArray()); } + public static async Task OpenExternalPreviewAsync(string path, bool sendFailToast = true) + { + await Task.WhenAll(AllPlugins.Select(plugin => plugin.Plugin switch + { + IAsyncExternalPreview p => p.OpenPreviewAsync(path, sendFailToast), + _ => Task.CompletedTask, + }).ToArray()); + } + + public static async Task CloseExternalPreviewAsync() + { + await Task.WhenAll(AllPlugins.Select(plugin => plugin.Plugin switch + { + IAsyncExternalPreview p => p.ClosePreviewAsync(), + _ => Task.CompletedTask, + }).ToArray()); + } + + public static async Task SwitchExternalPreviewAsync(string path, bool sendFailToast = true) + { + await Task.WhenAll(AllPlugins.Select(plugin => plugin.Plugin switch + { + IAsyncExternalPreview p => p.SwitchPreviewAsync(path, sendFailToast), + _ => Task.CompletedTask, + }).ToArray()); + } + + public static bool UseExternalPreview() + { + return GetPluginsForInterface().Any(x => !x.Metadata.Disabled); + } + + public static bool AllowAlwaysPreview() + { + var plugin = GetPluginsForInterface().FirstOrDefault(x => !x.Metadata.Disabled); + + if (plugin is null) + return false; + + return ((IAsyncExternalPreview)plugin.Plugin).AllowAlwaysPreview(); + } + static PluginManager() { // validate user directory diff --git a/Flow.Launcher.Core/Plugin/ProcessStreamPluginV2.cs b/Flow.Launcher.Core/Plugin/ProcessStreamPluginV2.cs index a14baf271..bae263157 100644 --- a/Flow.Launcher.Core/Plugin/ProcessStreamPluginV2.cs +++ b/Flow.Launcher.Core/Plugin/ProcessStreamPluginV2.cs @@ -82,10 +82,10 @@ namespace Flow.Launcher.Core.Plugin public override async ValueTask DisposeAsync() { + await base.DisposeAsync(); ClientProcess.Kill(true); await ClientProcess.WaitForExitAsync(); ClientProcess.Dispose(); - await base.DisposeAsync(); } } } diff --git a/Flow.Launcher.Core/Resource/Internationalization.cs b/Flow.Launcher.Core/Resource/Internationalization.cs index acc693ed5..06eb868b8 100644 --- a/Flow.Launcher.Core/Resource/Internationalization.cs +++ b/Flow.Launcher.Core/Resource/Internationalization.cs @@ -96,13 +96,10 @@ namespace Flow.Launcher.Core.Resource { LoadLanguage(language); } - // Culture of this thread - // Use CreateSpecificCulture to preserve possible user-override settings in Windows + // Culture of main thread + // Use CreateSpecificCulture to preserve possible user-override settings in Windows, if Flow's language culture is the same as Windows's CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture(language.LanguageCode); CultureInfo.CurrentUICulture = CultureInfo.CurrentCulture; - // App domain - CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture(language.LanguageCode); - CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.DefaultThreadCurrentCulture; // Raise event after culture is set Settings.Language = language.LanguageCode; @@ -193,7 +190,7 @@ namespace Flow.Launcher.Core.Resource { p.Metadata.Name = pluginI18N.GetTranslatedPluginTitle(); p.Metadata.Description = pluginI18N.GetTranslatedPluginDescription(); - pluginI18N.OnCultureInfoChanged(CultureInfo.DefaultThreadCurrentCulture); + pluginI18N.OnCultureInfoChanged(CultureInfo.CurrentCulture); } catch (Exception e) { diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index 96338cf6a..c3a3e9891 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Xml; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Controls; @@ -17,6 +18,10 @@ namespace Flow.Launcher.Core.Resource { public class Theme { + private const string ThemeMetadataNamePrefix = "Name:"; + private const string ThemeMetadataIsDarkPrefix = "IsDark:"; + private const string ThemeMetadataHasBlurPrefix = "HasBlur:"; + private const int ShadowExtraMargin = 32; private readonly List _themeDirectories = new List(); @@ -79,14 +84,14 @@ namespace Flow.Launcher.Core.Resource { if (string.IsNullOrEmpty(path)) throw new DirectoryNotFoundException("Theme path can't be found <{path}>"); - + // reload all resources even if the theme itself hasn't changed in order to pickup changes // to things like fonts UpdateResourceDictionary(GetResourceDictionary(theme)); - + Settings.Theme = theme; - + //always allow re-loading default theme, in case of failure of switching to a new theme from default theme if (_oldTheme != theme || theme == defaultTheme) { @@ -148,7 +153,7 @@ namespace Flow.Launcher.Core.Resource public ResourceDictionary GetResourceDictionary(string theme) { var dict = GetThemeResourceDictionary(theme); - + if (dict["QueryBoxStyle"] is Style queryBoxStyle && dict["QuerySuggestionBoxStyle"] is Style querySuggestionBoxStyle) { @@ -176,8 +181,6 @@ namespace Flow.Launcher.Core.Resource } if (dict["ItemTitleStyle"] is Style resultItemStyle && - dict["ItemSubTitleStyle"] is Style resultSubItemStyle && - dict["ItemSubTitleSelectedStyle"] is Style resultSubItemSelectedStyle && dict["ItemTitleSelectedStyle"] is Style resultItemSelectedStyle && dict["ItemHotkeyStyle"] is Style resultHotkeyItemStyle && dict["ItemHotkeySelectedStyle"] is Style resultHotkeyItemSelectedStyle) @@ -189,9 +192,25 @@ namespace Flow.Launcher.Core.Resource Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch }; Array.ForEach( - new[] { resultItemStyle, resultSubItemStyle, resultItemSelectedStyle, resultSubItemSelectedStyle, resultHotkeyItemStyle, resultHotkeyItemSelectedStyle }, o + new[] { resultItemStyle, resultItemSelectedStyle, resultHotkeyItemStyle, resultHotkeyItemSelectedStyle }, o => Array.ForEach(setters, p => o.Setters.Add(p))); } + + if ( + dict["ItemSubTitleStyle"] is Style resultSubItemStyle && + dict["ItemSubTitleSelectedStyle"] is Style resultSubItemSelectedStyle) + { + Setter fontFamily = new Setter(TextBlock.FontFamilyProperty, new FontFamily(Settings.ResultSubFont)); + Setter fontStyle = new Setter(TextBlock.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(Settings.ResultSubFontStyle)); + Setter fontWeight = new Setter(TextBlock.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(Settings.ResultSubFontWeight)); + Setter fontStretch = new Setter(TextBlock.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(Settings.ResultSubFontStretch)); + + Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch }; + Array.ForEach( + new[] { resultSubItemStyle,resultSubItemSelectedStyle}, o + => Array.ForEach(setters, p => o.Setters.Add(p))); + } + /* Ignore Theme Window Width and use setting */ var windowStyle = dict["WindowStyle"] as Style; var width = Settings.WindowSize; @@ -205,17 +224,53 @@ namespace Flow.Launcher.Core.Resource return GetResourceDictionary(Settings.Theme); } - public List LoadAvailableThemes() + public List LoadAvailableThemes() { - List themes = new List(); + List themes = new List(); foreach (var themeDirectory in _themeDirectories) { - themes.AddRange( - Directory.GetFiles(themeDirectory) - .Where(filePath => filePath.EndsWith(Extension) && !filePath.EndsWith("Base.xaml")) - .ToList()); + var filePaths = Directory + .GetFiles(themeDirectory) + .Where(filePath => filePath.EndsWith(Extension) && !filePath.EndsWith("Base.xaml")) + .Select(GetThemeDataFromPath); + themes.AddRange(filePaths); } - return themes.OrderBy(o => o).ToList(); + + return themes.OrderBy(o => o.Name).ToList(); + } + + private ThemeData GetThemeDataFromPath(string path) + { + using var reader = XmlReader.Create(path); + reader.Read(); + + var extensionlessName = Path.GetFileNameWithoutExtension(path); + + if (reader.NodeType is not XmlNodeType.Comment) + return new ThemeData(extensionlessName, extensionlessName); + + var commentLines = reader.Value.Trim().Split('\n').Select(v => v.Trim()); + + var name = extensionlessName; + bool? isDark = null; + bool? hasBlur = null; + foreach (var line in commentLines) + { + if (line.StartsWith(ThemeMetadataNamePrefix, StringComparison.OrdinalIgnoreCase)) + { + name = line.Remove(0, ThemeMetadataNamePrefix.Length).Trim(); + } + else if (line.StartsWith(ThemeMetadataIsDarkPrefix, StringComparison.OrdinalIgnoreCase)) + { + isDark = bool.Parse(line.Remove(0, ThemeMetadataIsDarkPrefix.Length).Trim()); + } + else if (line.StartsWith(ThemeMetadataHasBlurPrefix, StringComparison.OrdinalIgnoreCase)) + { + hasBlur = bool.Parse(line.Remove(0, ThemeMetadataHasBlurPrefix.Length).Trim()); + } + } + + return new ThemeData(extensionlessName, name, isDark, hasBlur); } private string GetThemePath(string themeName) @@ -393,5 +448,7 @@ namespace Flow.Launcher.Core.Resource Marshal.FreeHGlobal(accentPtr); } #endregion + + public record ThemeData(string FileNameWithoutExtension, string Name, bool? IsDark = null, bool? HasBlur = null); } } diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index 831091732..7d6448c43 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -49,7 +49,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -57,8 +57,6 @@ - - diff --git a/Flow.Launcher.Infrastructure/Image/ImageCache.cs b/Flow.Launcher.Infrastructure/Image/ImageCache.cs index 55545b9a7..ddbab4ef0 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageCache.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageCache.cs @@ -3,33 +3,23 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading; +using System.Threading.Tasks; using System.Windows.Media; -using FastCache; -using FastCache.Services; +using BitFaster.Caching.Lfu; namespace Flow.Launcher.Infrastructure.Image { - public class ImageUsage - { - public int usage; - public ImageSource imageSource; - - public ImageUsage(int usage, ImageSource image) - { - this.usage = usage; - imageSource = image; - } - } - public class ImageCache { private const int MaxCached = 150; - public void Initialize(Dictionary<(string, bool), int> usage) + private ConcurrentLfu<(string, bool), ImageSource> CacheManager { get; set; } = new(MaxCached); + + public void Initialize(IEnumerable<(string, bool)> usage) { - foreach (var key in usage.Keys) + foreach (var key in usage) { - Cached.Save(key, new ImageUsage(usage[key], null), TimeSpan.MaxValue, MaxCached); + CacheManager.AddOrUpdate(key, null); } } @@ -37,48 +27,42 @@ namespace Flow.Launcher.Infrastructure.Image { get { - if (!Cached.TryGet((path, isFullImage), out var value)) - { - return null; - } - - value.Value.usage++; - return value.Value.imageSource; + return CacheManager.TryGet((path, isFullImage), out var value) ? value : null; } set { - if (Cached.TryGet((path, isFullImage), out var cached)) - { - cached.Value.imageSource = value; - cached.Value.usage++; - } - - Cached.Save((path, isFullImage), new ImageUsage(0, value), TimeSpan.MaxValue, - MaxCached); + CacheManager.AddOrUpdate((path, isFullImage), value); } } + public async ValueTask GetOrAddAsync(string key, + Func<(string, bool), Task> valueFactory, + bool isFullImage = false) + { + return await CacheManager.GetOrAddAsync((key, isFullImage), valueFactory); + } + public bool ContainsKey(string key, bool isFullImage) { - return Cached.TryGet((key, isFullImage), out _); + return CacheManager.TryGet((key, isFullImage), out _); } public bool TryGetValue(string key, bool isFullImage, out ImageSource image) { - if (Cached.TryGet((key, isFullImage), out var value)) + if (CacheManager.TryGet((key, isFullImage), out var value)) { - image = value.Value.imageSource; - value.Value.usage++; + image = value; return image != null; } + image = null; return false; } public int CacheSize() { - return CacheManager.TotalCount<(string, bool), ImageUsage>(); + return CacheManager.Count; } /// @@ -86,14 +70,14 @@ namespace Flow.Launcher.Infrastructure.Image /// public int UniqueImagesInCache() { - return CacheManager.EnumerateEntries<(string, bool), ImageUsage>().Select(x => x.Value.imageSource) + return CacheManager.Select(x => x.Value) .Distinct() .Count(); } - public IEnumerable> EnumerateEntries() + public IEnumerable> EnumerateEntries() { - return CacheManager.EnumerateEntries<(string, bool), ImageUsage>(); + return CacheManager; } } } diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index 75c2a4ec9..612f495be 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using System.Windows.Documents; using System.Windows.Media; using System.Windows.Media.Imaging; using Flow.Launcher.Infrastructure.Logger; @@ -17,7 +18,7 @@ namespace Flow.Launcher.Infrastructure.Image { private static readonly ImageCache ImageCache = new(); private static SemaphoreSlim storageLock { get; } = new SemaphoreSlim(1, 1); - private static BinaryStorage> _storage; + private static BinaryStorage> _storage; private static readonly ConcurrentDictionary GuidToKey = new(); private static IImageHashGenerator _hashGenerator; private static readonly bool EnableImageHash = true; @@ -31,12 +32,12 @@ namespace Flow.Launcher.Infrastructure.Image public static async Task InitializeAsync() { - _storage = new BinaryStorage>("Image"); + _storage = new BinaryStorage>("Image"); _hashGenerator = new ImageHashGenerator(); var usage = await LoadStorageToConcurrentDictionaryAsync(); - ImageCache.Initialize(usage.ToDictionary(x => x.Key, x => x.Value)); + ImageCache.Initialize(usage); foreach (var icon in new[] { Constant.DefaultIcon, Constant.MissingImgIcon }) { @@ -49,7 +50,7 @@ namespace Flow.Launcher.Infrastructure.Image { await Stopwatch.NormalAsync("|ImageLoader.Initialize|Preload images cost", async () => { - foreach (var ((path, isFullImage), _) in usage) + foreach (var (path, isFullImage) in usage) { await LoadAsync(path, isFullImage); } @@ -66,9 +67,8 @@ namespace Flow.Launcher.Infrastructure.Image try { await _storage.SaveAsync(ImageCache.EnumerateEntries() - .ToDictionary( - x => x.Key, - x => x.Value.usage)); + .Select(x => x.Key) + .ToList()); } finally { @@ -76,14 +76,12 @@ namespace Flow.Launcher.Infrastructure.Image } } - private static async Task> LoadStorageToConcurrentDictionaryAsync() + private static async Task> LoadStorageToConcurrentDictionaryAsync() { await storageLock.WaitAsync(); try { - var loaded = await _storage.TryLoadAsync(new Dictionary<(string, bool), int>()); - - return new ConcurrentDictionary<(string, bool), int>(loaded); + return await _storage.TryLoadAsync(new List<(string, bool)>()); } finally { diff --git a/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs b/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs index a679643fd..2a439b8cc 100644 --- a/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs +++ b/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs @@ -67,7 +67,7 @@ namespace Flow.Launcher.Infrastructure.Storage } catch (System.Exception e) { - Log.Exception($"|BinaryStorage.Deserialize|Deserialize error for file <{FilePath}>", e); + // Log.Exception($"|BinaryStorage.Deserialize|Deserialize error for file <{FilePath}>", e); return defaultData; } } diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 61a9da400..0c7de10fd 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -55,7 +55,14 @@ namespace Flow.Launcher.Infrastructure.UserSettings OnPropertyChanged(nameof(MaxResultsToShow)); } } - public bool UseDropShadowEffect { get; set; } = false; + public bool UseDropShadowEffect { get; set; } = true; + + /* Appearance Settings. It should be separated from the setting later.*/ + public double WindowHeightSize { get; set; } = 42; + public double ItemHeightSize { get; set; } = 58; + public double QueryBoxFontSize { get; set; } = 20; + public double ResultItemFontSize { get; set; } = 16; + public double ResultSubItemFontSize { get; set; } = 13; public string QueryBoxFont { get; set; } = FontFamily.GenericSansSerif.Name; public string QueryBoxFontStyle { get; set; } public string QueryBoxFontWeight { get; set; } @@ -64,6 +71,10 @@ namespace Flow.Launcher.Infrastructure.UserSettings public string ResultFontStyle { get; set; } public string ResultFontWeight { get; set; } public string ResultFontStretch { get; set; } + public string ResultSubFont { get; set; } = FontFamily.GenericSansSerif.Name; + public string ResultSubFontStyle { get; set; } + public string ResultSubFontWeight { get; set; } + public string ResultSubFontStretch { get; set; } public bool UseGlyphIcons { get; set; } = true; public bool UseAnimation { get; set; } = true; public bool UseSound { get; set; } = true; @@ -77,8 +88,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings public double SettingWindowWidth { get; set; } = 1000; public double SettingWindowHeight { get; set; } = 700; - public double SettingWindowTop { get; set; } - public double SettingWindowLeft { get; set; } + public double? SettingWindowTop { get; set; } = null; + public double? SettingWindowLeft { get; set; } = null; public System.Windows.WindowState SettingWindowState { get; set; } = WindowState.Normal; public int CustomExplorerIndex { get; set; } = 0; @@ -174,35 +185,21 @@ namespace Flow.Launcher.Infrastructure.UserSettings /// when false Alphabet static service will always return empty results /// public bool ShouldUsePinyin { get; set; } = false; + public bool AlwaysPreview { get; set; } = false; + public bool AlwaysStartEn { get; set; } = false; + private SearchPrecisionScore _querySearchPrecision = SearchPrecisionScore.Regular; [JsonInclude, JsonConverter(typeof(JsonStringEnumConverter))] - public SearchPrecisionScore QuerySearchPrecision { get; private set; } = SearchPrecisionScore.Regular; - - [JsonIgnore] - public string QuerySearchPrecisionString + public SearchPrecisionScore QuerySearchPrecision { - get { return QuerySearchPrecision.ToString(); } + get => _querySearchPrecision; set { - try - { - var precisionScore = (SearchPrecisionScore)Enum - .Parse(typeof(SearchPrecisionScore), value); - - QuerySearchPrecision = precisionScore; - StringMatcher.Instance.UserSettingSearchPrecision = precisionScore; - } - catch (ArgumentException e) - { - Logger.Log.Exception(nameof(Settings), "Failed to load QuerySearchPrecisionString value from Settings file", e); - - QuerySearchPrecision = SearchPrecisionScore.Regular; - StringMatcher.Instance.UserSettingSearchPrecision = SearchPrecisionScore.Regular; - - throw; - } + _querySearchPrecision = value; + if (StringMatcher.Instance != null) + StringMatcher.Instance.UserSettingSearchPrecision = value; } } @@ -221,6 +218,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings /// public double CustomWindowTop { get; set; } = 0; + public bool KeepMaxResults { get; set; } = false; public int MaxResultsToShow { get; set; } = 5; public int ActivateTimes { get; set; } @@ -273,6 +271,9 @@ namespace Flow.Launcher.Infrastructure.UserSettings public AnimationSpeeds AnimationSpeed { get; set; } = AnimationSpeeds.Medium; public int CustomAnimationLength { get; set; } = 360; + [JsonIgnore] + public bool WMPInstalled { get; set; } = true; + // This needs to be loaded last by staying at the bottom public PluginsSettings PluginSettings { get; set; } = new PluginsSettings(); diff --git a/Flow.Launcher.Plugin/Interfaces/IAsyncExternalPreview.cs b/Flow.Launcher.Plugin/Interfaces/IAsyncExternalPreview.cs new file mode 100644 index 000000000..cc4f94c56 --- /dev/null +++ b/Flow.Launcher.Plugin/Interfaces/IAsyncExternalPreview.cs @@ -0,0 +1,40 @@ +using System.Threading.Tasks; + +namespace Flow.Launcher.Plugin +{ + /// + /// This interface is for plugins that wish to provide file preview (external preview) + /// via a third party app instead of the default preview. + /// + public interface IAsyncExternalPreview : IFeatures + { + /// + /// Method for opening/showing the preview. + /// + /// The file path to open the preview for + /// Whether to send a toast message notification on failure for the user + public Task OpenPreviewAsync(string path, bool sendFailToast = true); + + /// + /// Method for closing/hiding the preview. + /// + public Task ClosePreviewAsync(); + + /// + /// Method for switching the preview to the next file result. + /// This requires the external preview be already open/showing + /// + /// The file path to switch the preview for + /// Whether to send a toast message notification on failure for the user + public Task SwitchPreviewAsync(string path, bool sendFailToast = true); + + /// + /// Allows the preview plugin to override the AlwaysPreview setting. Typically useful if plugin's preview does not + /// fully work well with being shown together when the query window appears with results. + /// When AlwaysPreview setting is on and this is set to false, the preview will not be shown when query + /// window appears with results, instead the internal preview will be shown. + /// + /// + public bool AllowAlwaysPreview(); + } +} diff --git a/Flow.Launcher.Plugin/Result.cs b/Flow.Launcher.Plugin/Result.cs index fc6c5d185..9b42b1021 100644 --- a/Flow.Launcher.Plugin/Result.cs +++ b/Flow.Launcher.Plugin/Result.cs @@ -204,7 +204,7 @@ namespace Flow.Launcher.Plugin Score = Score, TitleHighlightData = TitleHighlightData, OriginQuery = OriginQuery, - PluginDirectory = PluginDirectory + PluginDirectory = PluginDirectory, }; } @@ -258,7 +258,7 @@ namespace Flow.Launcher.Plugin public string ProgressBarColor { get; set; } = "#26a0da"; /// - /// Contains data used to populate the the preview section of this result. + /// Contains data used to populate the preview section of this result. /// public PreviewInfo Preview { get; set; } = PreviewInfo.Default; @@ -270,12 +270,12 @@ namespace Flow.Launcher.Plugin /// /// Full image used for preview panel /// - public string PreviewImagePath { get; set; } + public string PreviewImagePath { get; set; } = null; /// /// Determines if the preview image should occupy the full width of the preview panel. /// - public bool IsMedia { get; set; } + public bool IsMedia { get; set; } = false; /// /// Result description text that is shown at the bottom of the preview panel. @@ -283,12 +283,17 @@ namespace Flow.Launcher.Plugin /// /// When a value is not set, the will be used. /// - public string Description { get; set; } + public string Description { get; set; } = null; /// /// Delegate to get the preview panel's image /// - public IconDelegate PreviewDelegate { get; set; } + public IconDelegate PreviewDelegate { get; set; } = null; + + /// + /// File path of the result. For third-party programs providing external preview. + /// + public string FilePath { get; set; } = null; /// /// Default instance of @@ -299,6 +304,7 @@ namespace Flow.Launcher.Plugin Description = null, IsMedia = false, PreviewDelegate = null, + FilePath = null, }; } } diff --git a/Flow.Launcher.sln b/Flow.Launcher.sln index 13e98833a..e44b23232 100644 --- a/Flow.Launcher.sln +++ b/Flow.Launcher.sln @@ -54,6 +54,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Scripts\post_build.ps1 = Scripts\post_build.ps1 README.md = README.md SolutionAssemblyInfo.cs = SolutionAssemblyInfo.cs + Settings.XamlStyler = Settings.XamlStyler EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Shell", "Plugins\Flow.Launcher.Plugin.Shell\Flow.Launcher.Plugin.Shell.csproj", "{C21BFF9C-2C99-4B5F-B7C9-A5E6DDDB37B0}" diff --git a/Flow.Launcher/App.xaml b/Flow.Launcher/App.xaml index 76a613c3f..13e943c95 100644 --- a/Flow.Launcher/App.xaml +++ b/Flow.Launcher/App.xaml @@ -25,7 +25,7 @@ - + diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index d08a4bf2e..020a38fb5 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -69,6 +69,7 @@ namespace Flow.Launcher _settingsVM = new SettingWindowViewModel(_updater, _portable); _settings = _settingsVM.Settings; + _settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled(); AbstractPluginEnvironment.PreStartPluginExecutablePathUpdate(_settings); @@ -87,7 +88,6 @@ namespace Flow.Launcher await PluginManager.InitializePluginsAsync(API); await imageLoaderTask; - var window = new MainWindow(_settings, _mainVM); Log.Info($"|App.OnStartup|Dependencies Info:{ErrorReporting.DependenciesInfo()}"); @@ -95,12 +95,13 @@ namespace Flow.Launcher Current.MainWindow = window; Current.MainWindow.Title = Constant.FlowLauncher; - HotKeyMapper.Initialize(_mainVM); - // todo temp fix for instance code logic // load plugin before change language, because plugin language also needs be changed InternationalizationManager.Instance.Settings = _settings; InternationalizationManager.Instance.ChangeLanguage(_settings.Language); + + HotKeyMapper.Initialize(_mainVM); + // main windows needs initialized before theme change because of blur settings ThemeManager.Instance.Settings = _settings; ThemeManager.Instance.ChangeTheme(_settings.Theme); diff --git a/Flow.Launcher/Converters/QuerySuggestionBoxConverter.cs b/Flow.Launcher/Converters/QuerySuggestionBoxConverter.cs index fabd01a24..ed94771f0 100644 --- a/Flow.Launcher/Converters/QuerySuggestionBoxConverter.cs +++ b/Flow.Launcher/Converters/QuerySuggestionBoxConverter.cs @@ -44,7 +44,7 @@ public class QuerySuggestionBoxConverter : IMultiValueConverter // Check if Text will be larger than our QueryTextBox Typeface typeface = new Typeface(queryTextBox.FontFamily, queryTextBox.FontStyle, queryTextBox.FontWeight, queryTextBox.FontStretch); // TODO: Obsolete warning? - var ft = new FormattedText(queryTextBox.Text, CultureInfo.DefaultThreadCurrentCulture, System.Windows.FlowDirection.LeftToRight, typeface, queryTextBox.FontSize, Brushes.Black); + var ft = new FormattedText(queryTextBox.Text, CultureInfo.CurrentCulture, System.Windows.FlowDirection.LeftToRight, typeface, queryTextBox.FontSize, Brushes.Black); var offset = queryTextBox.Padding.Right; diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 4049d5bbc..59c0f9749 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -5,7 +5,6 @@ net7.0-windows10.0.19041.0 true 1.0.0 - true Flow.Launcher.App Resources\app.ico app.manifest @@ -113,6 +112,22 @@ + + + PreserveNewest + + 1.0.0 + true + false + + + + + + PreserveNewest + + + diff --git a/Flow.Launcher/Helper/WindowsMediaPlayerHelper.cs b/Flow.Launcher/Helper/WindowsMediaPlayerHelper.cs new file mode 100644 index 000000000..2eec6c89b --- /dev/null +++ b/Flow.Launcher/Helper/WindowsMediaPlayerHelper.cs @@ -0,0 +1,11 @@ +using Microsoft.Win32; + +namespace Flow.Launcher.Helper; +internal static class WindowsMediaPlayerHelper +{ + internal static bool IsWindowsMediaPlayerInstalled() + { + using var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\MediaPlayer"); + return key.GetValue("Installation Directory") != null; + } +} diff --git a/Flow.Launcher/Images/Error.png b/Flow.Launcher/Images/Error.png new file mode 100644 index 000000000..4bdcd80f9 Binary files /dev/null and b/Flow.Launcher/Images/Error.png differ diff --git a/Flow.Launcher/Images/Exclamation.png b/Flow.Launcher/Images/Exclamation.png new file mode 100644 index 000000000..a9d99362c Binary files /dev/null and b/Flow.Launcher/Images/Exclamation.png differ diff --git a/Flow.Launcher/Images/Information.png b/Flow.Launcher/Images/Information.png new file mode 100644 index 000000000..779e22dc1 Binary files /dev/null and b/Flow.Launcher/Images/Information.png differ diff --git a/Flow.Launcher/Images/Question.png b/Flow.Launcher/Images/Question.png new file mode 100644 index 000000000..6ca093f6d Binary files /dev/null and b/Flow.Launcher/Images/Question.png differ diff --git a/Flow.Launcher/Images/app_error.png b/Flow.Launcher/Images/app_error.png index 70599f504..a5664e263 100644 Binary files a/Flow.Launcher/Images/app_error.png and b/Flow.Launcher/Images/app_error.png differ diff --git a/Flow.Launcher/Images/dev.ico b/Flow.Launcher/Images/dev.ico new file mode 100644 index 000000000..aba4eb2f9 Binary files /dev/null and b/Flow.Launcher/Images/dev.ico differ diff --git a/Flow.Launcher/Languages/ar.xaml b/Flow.Launcher/Languages/ar.xaml index 7f5c067f5..5a361d478 100644 --- a/Flow.Launcher/Languages/ar.xaml +++ b/Flow.Launcher/Languages/ar.xaml @@ -156,6 +156,7 @@ Play a small sound when the search window opens Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Use Animation in UI Animation Speed @@ -170,14 +171,37 @@ Hotkey Hotkeys - Flow Launcher Hotkey + Open Flow Launcher Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Open Result Modifier Key Select a modifier key to open selected result via keyboard. Show Hotkey Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Custom Query Hotkeys Custom Query Shortcuts Built-in Shortcuts @@ -188,6 +212,7 @@ Delete Edit Add + None Please select an item Are you sure you want to delete {0} plugin hotkey? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Hotkey is unavailable, please select a new hotkey Invalid plugin hotkey Update + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Hotkey Unavailable + + Save + Overwrite + Cancel + Reset + Delete Version @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/cs.xaml b/Flow.Launcher/Languages/cs.xaml index c5ac941bc..1e387b2bc 100644 --- a/Flow.Launcher/Languages/cs.xaml +++ b/Flow.Launcher/Languages/cs.xaml @@ -156,6 +156,7 @@ Přehrát krátký zvuk při otevření okna vyhledávání Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animace Použít animaci v UI Rychlost animace @@ -170,14 +171,37 @@ Klávesová zkratka Klávesové zkratky - Klávesová zkratka pro Flow Launcher + Open Flow Launcher Zadejte zkratku pro zobrazení/skrytí nástroje Flow Launcher. - Klávesová zkratka pro náhled + Toggle Preview Zadejte klávesovou zkratku pro zobrazení/skrytí náhledu v okně vyhledávání. + Hotkey Presets + List of currently registered hotkeys Modifikační klávesa pro otevření výsledků Výběrem modifikační klávesy otevřete vybraný výsledek pomocí klávesnice. Zobrazit klávesovou zkratku Zobrazí klávesovou zkratku spolu s výsledky. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Otevřít kontextovou nabídku + Otevřít okno s nastavením + Copy File Path + Toggle Game Mode + Toggle History + Otevřít umístění složky + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Vlastní klávesové zkratky pro vyhledávání Vlastní zkratky dotazů Vestavěné zkratky @@ -188,6 +212,7 @@ Smazat Editovat Přidat + None Vyberte prosím položku Jste si jisti, že chcete odstranit klávesovou zkratku {0} pro plugin? Opravdu chcete odstranit zástupce: {0} pro dotaz {1}? @@ -286,6 +311,11 @@ Klávesová zkratka je nedostupná, zadejte prosím novou zkratku Neplatná klávesová zkratka pluginu Aktualizovat + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Vlastní klávesová zkratka pro zadávání dotazů @@ -297,8 +327,12 @@ Pokud před zkratku při zadávání přidáte znak "@", bude odpovíd Zkratka již existuje, zadejte novou zkratku nebo upravte stávající. Zkratka a/nebo její plné znění je prázdné. - - Klávesová zkratka je nedostupná + + Uložit + Overwrite + Zrušit + Reset + Smazat Verze @@ -368,6 +402,12 @@ Pokud před zkratku při zadávání přidáte znak "@", bude odpovíd Otevřít okno s nastavením Znovu načíst data pluginů + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Počasí Výsledky počasí Google > ping 8.8.8 diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml index 830f49798..9f4ff0491 100644 --- a/Flow.Launcher/Languages/da.xaml +++ b/Flow.Launcher/Languages/da.xaml @@ -156,6 +156,7 @@ Play a small sound when the search window opens Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Use Animation in UI Animation Speed @@ -170,14 +171,37 @@ Genvejstast Genvejstast - Flow Launcher genvejstast + Open Flow Launcher Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Åbn resultatmodifikatorer Select a modifier key to open selected result via keyboard. Vis hotkey Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Tilpasset søgegenvejstast Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Slet Rediger Tilføj + None Vælg venligst Er du sikker på du vil slette {0} plugin genvejstast? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Genvejstast er utilgængelig, vælg venligst en ny genvejstast Ugyldig plugin genvejstast Opdater + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Genvejstast utilgængelig + + Gem + Overwrite + Annuller + Reset + Slet Version @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml index 189ac678e..84cce5a47 100644 --- a/Flow.Launcher/Languages/de.xaml +++ b/Flow.Launcher/Languages/de.xaml @@ -156,6 +156,7 @@ Ton abspielen, wenn das Suchfenster geöffnet wird Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Animationen in der Oberfläche verwenden Animation Speed @@ -170,14 +171,37 @@ Tastenkombination Tastenkombination - Flow Launcher Tastenkombination + Open Flow Launcher Verknüpfung eingeben, um Flow Launcher anzuzeigen/auszublenden. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Öffnen Sie die Ergebnismodifikatoren Wählen Sie eine Modifikatortaste, um das ausgewählte Ergebnis über die Tastatur zu öffnen. Hotkey anzeigen Hotkey für die Ergebnisauswahl mit Ergebnissen anzeigen. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Kontextmenü öffnen + Einstellungsfenster öffnen + Copy File Path + Gott Modus + Toggle History + Öffne beinhaltenden Ordner + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Benutzerdefinierte Abfrage Tastenkombination Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Löschen Bearbeiten Hinzufügen + None Bitte einen Eintrag auswählen Wollen Sie die {0} Plugin Tastenkombination wirklich löschen? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Tastenkombination ist nicht verfügbar, bitte wähle eine andere Tastenkombination Ungültige Plugin Tastenkombination Aktualisieren + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Tastenkombination nicht verfügbar + + Speichern + Overwrite + Abbrechen + Reset + Löschen Version @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Einstellungsfenster öffnen Plugin-Daten neu laden + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Wetter Wetter in Google-Ergebnis > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 9ab05555c..966f55ba1 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -56,6 +56,8 @@ Preserve Last Query Select last Query Empty last Query + Fixed Window Height + The window height is not adjustable by dragging. Maximum results shown You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. Ignore hotkeys in fullscreen mode @@ -73,10 +75,14 @@ Auto Update Select Hide Flow Launcher on startup + Flow Launcher search window is hidden in the tray after starting up. Hide tray icon When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Query Search Precision Changes minimum match score required for results. + None + Low + Regular Search with Pinyin Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. Always Preview @@ -142,8 +148,13 @@ Launch programs as admin or a different user ProcessKiller Terminate unwanted processes + Search Bar Height + Item Height Query Box Font - Result Item Font + Result Title Font + Result Subtitle Font + Reset + Customize Window Mode Opacity Theme {0} not exists, fallback to default theme @@ -158,6 +169,7 @@ Play a small sound when the search window opens Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Use Animation in UI Animation Speed @@ -168,6 +180,9 @@ Custom Clock Date + This theme supports two(light/dark) modes. + This theme supports Blur Transparent Background. + Hotkey @@ -191,6 +206,7 @@ Cycle Previous Query Cycle Next Query Open Context Menu + Open Native Context Menu Open Setting Window Copy File Path Toggle Game Mode @@ -267,6 +283,9 @@ Clear Logs Are you sure you want to delete all logs? Wizard + User Data Location + 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. + Open Folder Select File Manager @@ -332,6 +351,9 @@ Cancel Reset Delete + OK + Yes + No Version @@ -416,4 +438,8 @@ sn Sticky Notes + + File Size + Created + Last Modified diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml index 9fc54c373..aa3536f80 100644 --- a/Flow.Launcher/Languages/es-419.xaml +++ b/Flow.Launcher/Languages/es-419.xaml @@ -156,6 +156,7 @@ Reproducir un sonido al abrir la ventana de búsqueda Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animación Usar Animación en la Interfaz Animation Speed @@ -170,14 +171,37 @@ Tecla Rápida Tecla Rápida - Tecla de acceso a Flow Launcher + Open Flow Launcher Introduzca el acceso directo para mostrar/ocultar Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Abrir Tecla de Modificación de Resultado Seleccione una tecla de modificación para abrir el resultado seleccionado vía teclado. Mostrar tecla de acceso directo Mostrar tecla rápida de selección con resultados. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Abrir Carpeta Contenedora + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Tecla Rápida de Consulta Personalizada Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Eliminar Editar Añadir + None Por favor, seleccione un elemento ¿Está seguro que desea eliminar la tecla de acceso directo del plugin {0}? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Tecla no disponible, por favor seleccione una nueva tecla de acceso directo Tecla de acceso directo al plugin inválida Actualizar + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Tecla No Disponible + + Guardar + Overwrite + Cancelar + Reset + Eliminar Versión @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Abrir Ventana de Ajustes Recargar Datos del Plugin + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Clima Clima en los Resultados de Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml index 5153b79f7..a0d8e00c3 100644 --- a/Flow.Launcher/Languages/es.xaml +++ b/Flow.Launcher/Languages/es.xaml @@ -156,6 +156,7 @@ Reproduce un pequeño sonido cuando se abre el cuadro de búsqueda Volumen del efecto de sonido Ajusta el volumen del efecto de sonido + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animación Usa animación en la Interfaz de Usuario Velocidad de animación @@ -170,14 +171,37 @@ Atajo de teclado Atajos de teclado - Atajo de teclado de Flow Launcher + Abrir Flow Launcher Introduzca el atajo de teclado para mostrar/ocultar Flow Launcher. - Acceso directo para vista previa + Cambiar vista previa Introduzca el acceso directo para mostrar/ocultar la vista previa en la ventana de búsqueda. + Ajustes preestablecidos de atajos de teclado + Lista de atajos de teclado actualmente registrados Tecla modificadora para abrir resultado Seleccione una tecla modificadora para abrir el resultado seleccionado con el teclado. Mostrar atajo de teclado Muestra atajo de teclado de selección junto a los resultados. + Completar automáticamente + Ejecuta completar automáticamente para los elementos seleccionados. + Seleccionar siguiente elemento + Seleccionar elemento anterior + Siguiente página + Página anterior + Cycle Previous Query + Cycle Next Query + Abrir menú contextual + Abrir ventana de configuración + Copiar ruta del archivo + Cambiar a Modo Juego + Cambiar historial + Abrir carpeta contenedora + Ejecutar como administrador + Actualizar resultados de búsqueda + Recargar datos de complementos + Ajuste rápido de la anchuira de la ventana + Ajuste rápido de la altura de la ventana + Se utiliza cuando se requiere que los complementos recarguen y actualicen sus datos existentes. + Se puede añadir otro atajo de teclado más para esta función. Atajos de teclado de consulta personalizada Accesos directos de consulta personalizada Accesos directos integrados @@ -188,6 +212,7 @@ Eliminar Editar Añadir + Ninguno Por favor, seleccione un elemento ¿Está seguro que desea eliminar el atajo de teclado de consulta personalizada {0}? ¿Está seguro de que desea eliminar el acceso directo: {0} con la expansión {1}? @@ -286,6 +311,11 @@ El atajo de teclado no está disponible, por favor seleccione uno nuevo Atajo de teclado de complemento no válido Actualizar + Atajo de teclado vinculado + El atajo de teclado actual no está disponible. + Este atajo de teclado está reservado para "{0}" y no se puede utilizar. Por favor, elija otro atajo de teclado. + Este atajo de teclado ya está siendo utilizado por "{0}". Si pulsa «Sobrescribir», se eliminará de "{0}". + Pulsar las teclas que se deseen utilizar para esta función. Acceso directo de consulta personalizada @@ -297,8 +327,12 @@ Si añade un prefijo "@" al introducir un acceso directo, éste coinci El acceso directo ya existe, por favor introduzca uno nuevo o edite el existente. El acceso directo y/o su expansión están vacíos. - - No disponible + + Guardar + Sobrescribir + Cancelar + Restablecer + Eliminar Versión @@ -368,6 +402,12 @@ Si añade un prefijo "@" al introducir un acceso directo, éste coinci Abrir ventana de configuración Recargar datos del complemento + Seleccionar primer resultado + Seleccionar último resultado + Ejecutar consulta actual de nuevo + Abrir resultado + Abrir resultado #{0} + El tiempo El tiempo en los resultados de Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml index 82b93b1e7..de3d849e9 100644 --- a/Flow.Launcher/Languages/fr.xaml +++ b/Flow.Launcher/Languages/fr.xaml @@ -136,7 +136,7 @@ Rechercher des fichiers, dossiers et contenus de fichiers Recherche Web Recherchez sur le Web avec la prise en charge de moteurs de recherche différents - Programme + Programmes Lancez des programmes en tant qu'administrateur ou un utilisateur différent Tueur de processus Terminer les processus non désirés @@ -156,6 +156,7 @@ Jouer un petit son lorsque la fenêtre de recherche s'ouvre Volume de l'effet sonore Ajuster le volume de l'effet sonore + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Utiliser l'animation dans l'interface Vitesse d'animation @@ -172,12 +173,35 @@ Raccourcis Ouvrir Flow Launcher Entrez le raccourci pour afficher/masquer Flow Launcher. - Prévisualiser le raccourci + Afficher/masquer l'aperçu Entrez le raccourci pour afficher/masquer l'aperçu dans la fenêtre de recherche. + Préréglages des raccourcis clavier + Liste des raccourcis clavier actuellement enregistrés Modificateurs de résultats ouverts Sélectionnez une touche de modification pour ouvrir le résultat sélectionné via le clavier. Afficher le raccourci clavier Afficher le raccourci de sélection des résultats avec les résultats. + Saisie automatique + Exécute la saisie automatique pour les éléments sélectionnés. + Sélectionner l'objet suivant + Sélectionner l'élément précédent + Page suivante + Page précédente + Cycle de requête précédente + Cycle de requête suivante + Ouvrir le Menu Contextuel + Ouvrir la Fenêtre des Réglages + Copier le chemin du fichier + Basculer le mode de jeu + Basculer l'historique + Ouvrir le répertoire + Exécuter en tant qu'Administrateur + Rafraîchir les résultats de recherche + Recharger les données des plugins + Ajuster rapidement la largeur de la fenêtre + Ajuster rapidement la hauteur de la fenêtre + Utiliser lorsque vous avez besoin de recharger et mettre à jour les données existantes de vos plugins. + Vous pouvez ajouter un raccourci clavier supplémentaire pour cette fonction. Requêtes personnalisées Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Supprimer Modifier Ajouter + Aucun Veuillez sélectionner un élément Voulez-vous vraiment supprimer {0} raccourci(s) ? Êtes-vous sûr de vouloir supprimer le raccourci : {0} avec l'expansion {1} ? @@ -285,6 +310,11 @@ Raccourci indisponible. Veuillez en choisir un autre. Raccourci invalide Actualiser + Raccourci de liaison + Le raccourci clavier actuel n'est pas disponible. + Ce raccourci est réservé à "{0}" et ne peut pas être utilisé. Veuillez choisir un autre raccourci clavier. + Ce raccourci est déjà utilisé par "{0}". Si vous appuyez sur "Écraser", il sera supprimé de "{0}". + Appuyez sur les touches que vous voulez utiliser pour cette fonction. Raccourci de requête personnalisée @@ -296,8 +326,12 @@ Si vous ajoutez un préfixe "@" lors de la saisie d'un raccourci, celu Le raccourci existe déjà, veuillez entrer un nouveau raccourci ou modifier le raccourci existant. Raccourci et/ou son expansion est vide. - - Raccourci indisponible + + Sauvegarder + Écraser + Annuler + Réinitialiser + Supprimer Version @@ -367,6 +401,12 @@ Si vous ajoutez un préfixe "@" lors de la saisie d'un raccourci, celu Ouvrir la Fenêtre des Réglages Recharger les Données des Plugins + Sélectionner le premier résultat + Sélectionner le dernier résultat + Exécuter à nouveau la requête actuelle + Ouvrir le résultat + Ouvrir le résultat #{0} + Météo Météo dans les résultats Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index a9a6e4fee..6d7a42f45 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -154,8 +154,9 @@ Scuro Effetto sonoro Riproduce un piccolo suono all'apertura della finestra di ricerca - Sound Effect Volume - Adjust the volume of the sound effect + Volume Effetti Sonori + Regola il volume degli effetti sonori + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animazione Usa l'animazione nell'interfaccia utente Velocità di animazione @@ -170,14 +171,37 @@ Tasti scelta rapida Tasti scelta rapida - Tasto scelta rapida Flow Launcher + Apri Flow Launcher Immettere la scorciatoia per mostrare/nascondere Flow Launcher. - Anteprima Scorciatoia + Attiva/Disattiva Anteprima Inserisci la scorciatoia per mostrare/nascondere l'anteprima nella finestra di ricerca. + Preimpostazioni Scorciatoie + Elenco di scorciatoie attualmente registrate Apri modificatori di risultato Seleziona un tasto modificatore per aprire il risultato selezionato via tastiera. Mostra tasto di scelta rapida Mostra tasto di scelta rapida dei risultati con i risultati. + Auto Completamento + Esegue il completamento automatico per gli elementi selezionati. + Seleziona Elemento Successivo + Seleziona Elemento Precedente + Pagina Successiva + Pagina Precedente + Cycle Previous Query + Cycle Next Query + Apri il menu di scelta rapida + Aprire la finestra delle impostazioni + Copia Percorso File + Attiva/Disattiva Modalità Di Gioco + Attiva/Disattiva Cronologia + Apri cartella superiore + Esegui come Amministratore + Aggiorna Risultati di Ricerca + Ricarica i Dati dei Plugin + Regolazione Rapida della Larghezza della Finestra + Regolazione Rapida dell'Altezza della Finestra + Utilizzare quando richiedono plugin per ricaricare e aggiornare i propri dati esistenti. + Puoi aggiungere un'altra scorciatoia per questa funzione. Tasti scelta rapida per ricerche personalizzate Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Cancella Modifica Aggiungi + Vuoto Selezionare un oggetto Volete cancellare il tasto di scelta rapida per il plugin {0}? Sei sicuro di voler eliminare la scorciatoia: {0} con espansione {1}? @@ -286,6 +311,11 @@ Tasto di scelta rapida non disponibile, per favore scegli un nuovo tasto di scelta rapida Tasto di scelta rapida plugin non valido Aggiorna + Registrare Scorciatoie + Scorciatoia corrente non disponibile. + Questa scorciatoia è riservata per "{0}" e non può essere utilizzata. Si prega di scegliere un'altra scorciatoia. + Questa scorciatoia è già in uso da "{0}". Premendo "Sovrascrivi", verrà rimossa da "{0}". + Premi i tasti che vuoi usare per questa funzione. Scorciatoia per ricerca personalizzata @@ -297,8 +327,12 @@ Se si aggiunge un prefisso '@' mentre si inserisce una scorciatoia, corrisponde La scorciatoia esiste già, inserisci una nuova scorciatoia o modifica quella esistente. La scorciatoia e/o la sua espansione sono vuote. - - Tasto di scelta rapida non disponibile + + Salva + Sovrascrivi + Annulla + Resetta + Cancella Versione @@ -368,6 +402,12 @@ Se si aggiunge un prefisso '@' mentre si inserisce una scorciatoia, corrisponde Aprire la finestra delle impostazioni Ricarica i dati del plugin + Seleziona il primo risultato + Seleziona l'ultimo risultato + Esegui nuovamente la ricerca corrente + Apri risultato + Apri risultato #{0} + Meteo Meteo nel risultato di Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml index f4859c806..018be0d59 100644 --- a/Flow.Launcher/Languages/ja.xaml +++ b/Flow.Launcher/Languages/ja.xaml @@ -1,7 +1,7 @@  - Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program. + ホットキー "{0}" の登録に失敗しました。このホットキーは別のプログラムで使用されている可能性があります。別のホットキーに変更するか、このホットキーを使用しているプログラムを終了してください。 Flow Launcher {0}の起動に失敗しました Flow Launcherプラグインの形式が正しくありません @@ -13,80 +13,80 @@ 設定 Flow Launcherについて 終了 - Close - Copy + 閉じる + コピー 切り取り 貼り付け - Undo - Select All - File - Folder + 元に戻す + 全て選択 + ファイル + フォルダー Text ゲームモード - Suspend the use of Hotkeys. - Position Reset - Reset search window position + ホットキーの使用を一時停止します。 + 位置のリセット + 検索ウィンドウの位置をリセットします。 設定 一般 - Portable Mode - Store all settings and user data in one folder (Useful when used with removable drives or cloud services). + ポータブルモード + すべての設定とユーザーデータを1つのフォルダに保存します(リムーバブルドライブやクラウドサービスで使用する場合に便利です)。 スタートアップ時にFlow Launcherを起動する Error setting launch on startup フォーカスを失った時にFlow Launcherを隠す 最新版が入手可能であっても、アップグレードメッセージを表示しない - Search Window Position - Remember Last Position - Monitor with Mouse Cursor - Monitor with Focused Window - Primary Monitor - Custom Monitor - Search Window Position on Monitor - Center - Center Top - Left Top - Right Top - Custom Position + 検索ウィンドウの位置 + 最後の表示位置を記憶する + マウスカーソルがあるモニター + フォーカス中のウィンドウがあるモニター + プライマリモニター + モニター(カスタム) + モニター上の検索ウィンドウの位置 + 中央 + 中央上部 + 左上 + 右上 + カスタムの位置 言語 前回のクエリの扱い - Show/Hide previous results when Flow Launcher is reactivated. + Flow Launcherを再表示したとき、以前の結果を表示するかどうか選択します。 前回のクエリを保存 前回のクエリを選択 前回のクエリを消去 結果の最大表示件数 - You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. + CTRL+PlusとCTRL+Minusを使用すれば、簡単に調整することもできます。 ウィンドウがフルスクリーン時にホットキーを無効にする - Disable Flow Launcher activation when a full screen application is active (Recommended for games). - Default File Manager - Select the file manager to use when opening the folder. - Default Web Browser - Setting for New Tab, New Window, Private Mode. - Python Path - Node.js Path - Please select the Node.js executable - Please select pythonw.exe - Always Start Typing in English Mode - Temporarily change your input method to English mode when activating Flow. + フルスクリーンのアプリケーションが起動しているとき、Flow Launcherの起動を無効にします(ゲームをするときにおすすめです)。 + デフォルトのファイルマネージャー + フォルダを開くときに使用するファイルマネージャを選択します。 + デフォルトのウェブブラウザー + 新規タブ、新規ウィンドウ、プライベートモードに関して設定します。 + Python のパス + Node.js のパス + Node.js の実行ファイルを選択してください + pythonw.exe を選択してください + 常に英語モードで入力を開始する + Flowを起動したとき、一時的に入力方法を英語モードに変更します。 自動更新 選択 起動時にFlow Launcherを隠す トレイアイコンを隠す - When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. - Query Search Precision - Changes minimum match score required for results. - Search with Pinyin - Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. - Always Preview - Always open preview panel when Flow activates. Press {0} to toggle preview. - Shadow effect is not allowed while current theme has blur effect enabled + トレイアイコンが非表示になっているときは、検索ウィンドウを右クリックすることで設定メニューを開くことができます。 + クエリ検索精度 + 表示する結果に必要な一致スコアの最小値を変更します。 + ピンインによる検索 + ピンインを使用して検索できるようにします。ピンインは、中国語をローマ字表記するための標準的な表記体系です。 + 常にプレビューする + Flow が有効になったとき、常にプレビューパネルを開きます。 {0} を押してプレビューの表示/非表示を切り替えます。 + 現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません Search Plugin - Ctrl+F to search plugins - No results found - Please try a different search. - Plugin + Ctrl+F でプラグインを検索します + 検索結果が見つかりませんでした + 別の検索を試してみてください。 + プラグイン プラグイン プラグインを探す 有効 @@ -99,7 +99,7 @@ Current Priority New Priority 重要度 - Change Plugin Results Priority + プラグインの結果の優先度を変更します。 プラグイン・ディレクトリ by 初期化時間: @@ -115,69 +115,93 @@ Recently Updated プラグイン Installed - Refresh - Install + 更新 + インストール アンインストール 更新 Plugin already installed New Version This plugin has been updated within the last 7 days - New Update is Available + 新しいアップデートが利用可能です テーマ - Appearance + 外観 テーマを探す - How to create a theme - Hi There - Explorer - Search for files, folders and file contents - WebSearch - Search the web with different search engine support - Program - Launch programs as admin or a different user - ProcessKiller - Terminate unwanted processes + テーマの作成方法 + やあ! + エクスプローラー + ファイルやフォルダー、ファイルの内容を検索します + Web検索 + 異なる検索エンジンをサポートするWeb検索 + プログラム + 管理者または別のユーザーとしてプログラムを起動します + プロセスキラー + 不要なプロセスを終了します 検索ボックスのフォント 検索結果一覧のフォント ウィンドウモード 透過度 テーマ {0} が存在しません、デフォルトのテーマに戻します。 テーマ {0} を読み込めません、デフォルトのテーマに戻します。 - Theme Folder - Open Theme Folder - Color Scheme - System Default - Light - Dark - Sound Effect - Play a small sound when the search window opens - Sound Effect Volume - Adjust the volume of the sound effect - Animation - Use Animation in UI - Animation Speed - The speed of the UI animation - Slow - Medium - Fast - Custom - Clock - Date + テーマフォルダー + テーマフォルダーを開く + 配色 + システムのデフォルト + ライト + ダーク + 効果音 + 検索ウィンドウが開いたとき、小さな音を鳴らします + 効果音の音量 + 効果音の音量を調整します + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. + アニメーション + UIでアニメーションを使用します + アニメーション速度 + UI アニメーションの速度 + ゆっくり + ふつう + はやい + カスタム + 時刻 + 日付 ホットキー ホットキー - Flow Launcher ホットキー - Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Flow Launcherを開く + Flow Launcher の表示/非表示を切り替えるショートカットを入力してください。 + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys 結果修飾子を開く Select a modifier key to open selected result via keyboard. ホットキーを表示 Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. カスタムクエリ ホットキー Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ 削除 編集 追加 + None 項目選択してください {0} プラグインのホットキーを本当に削除しますか? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ ホットキーは使用できません。新しいホットキーを選択してください プラグインホットキーは無効です 更新 + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - ホットキーは使用できません + + 保存 + Overwrite + + Reset + 削除 バージョン @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window プラグインデータのリロード + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml index bf76718e8..c3bb574b9 100644 --- a/Flow.Launcher/Languages/ko.xaml +++ b/Flow.Launcher/Languages/ko.xaml @@ -156,6 +156,7 @@ 검색창을 열 때 작은 소리를 재생합니다. Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. 애니메이션 일부 UI에 애니메이션을 사용합니다. Animation Speed @@ -170,14 +171,37 @@ 단축키 단축키 - Flow Launcher 단축키 + Open Flow Launcher Flow Launcher를 열 때 사용할 단축키를 입력하세요. - 미리보기 단축키 + Toggle Preview 미리보기 패널을 켜고 끌 때 사용할 단축키를 입력하세요. + Hotkey Presets + List of currently registered hotkeys 결과 선택 단축키 결과 항목을 선택하는 단축키입니다. 단축키 표시 결과창에서 결과 선택 단축키를 표시합니다. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + 콘텍스트 메뉴 열기 + 설정창 열기 + Copy File Path + Toggle Game Mode + Toggle History + 포함된 폴더 열기 + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. 사용자지정 쿼리 단축키 사용자 지정 쿼리 단축어 내장 단축어 @@ -188,6 +212,7 @@ 삭제 편집 추가 + None 항목을 선택하세요. {0} 플러그인 단축키를 삭제하시겠습니까? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ 단축키를 사용할 수 없습니다. 다른 단축키를 입력하세요. 플러그인 단축키가 유효하지 않습니다. 업데이트 + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. 사용자 지정 쿼리 단축어 @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - 단축키를 사용할 수 없습니다. + + 저장 + Overwrite + 취소 + Reset + 삭제 버전 @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in 설정창 열기 플러그인 데이터 새로고침 + Select first result + Select last result + Run current query again + Open result + Open result #{0} + 날씨 구글 날씨 검색 > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml index 7f5c067f5..5a361d478 100644 --- a/Flow.Launcher/Languages/nb.xaml +++ b/Flow.Launcher/Languages/nb.xaml @@ -156,6 +156,7 @@ Play a small sound when the search window opens Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Use Animation in UI Animation Speed @@ -170,14 +171,37 @@ Hotkey Hotkeys - Flow Launcher Hotkey + Open Flow Launcher Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Open Result Modifier Key Select a modifier key to open selected result via keyboard. Show Hotkey Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Custom Query Hotkeys Custom Query Shortcuts Built-in Shortcuts @@ -188,6 +212,7 @@ Delete Edit Add + None Please select an item Are you sure you want to delete {0} plugin hotkey? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Hotkey is unavailable, please select a new hotkey Invalid plugin hotkey Update + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Hotkey Unavailable + + Save + Overwrite + Cancel + Reset + Delete Version @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml index 66383a90c..dedc8ff1b 100644 --- a/Flow.Launcher/Languages/nl.xaml +++ b/Flow.Launcher/Languages/nl.xaml @@ -116,7 +116,7 @@ Plugins Installed Vernieuwen - Install + Installeren Uninstall Update Plugin already installed @@ -156,6 +156,7 @@ Een klein geluid afspelen wanneer het zoekvenster wordt geopend Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is niet beschikbaar en is vereist voor volume aanpassing door Flow. Controleer uw installatie als u volume wilt aanpassen. Animatie Animatie gebruiken in UI Animation Speed @@ -170,35 +171,59 @@ Sneltoets Sneltoets - Flow Launcher Sneltoets + Open Flow Launcher Voer snelkoppeling in om Flow Launcher te tonen/verbergen. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Open resultaatmodificatoren Kies een aanpassingstoets om het geselecteerde resultaat te openen via het toetsenbord. Sneltoets weergeven Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Ga naar vorige zoekopdracht + Ga naar volgende zoekopdracht + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Snel vensterbreedte aanpassen + Snel vensterhoogte aanpassen + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Custom Query Sneltoets Custom Query Shortcut Built-in Shortcut - Query + Zoekopdracht Shortcut Expansion Beschrijving Verwijder Bewerken Toevoegen + None Selecteer een item Weet u zeker dat je {0} plugin sneltoets wilt verwijderen? Are you sure you want to delete shortcut: {0} with expansion {1}? Get text from clipboard. Get path from active explorer. - Query window shadow effect - Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited. + Zoekvenster schaduweffect + Schaduw effect vergt een substantieel gebruik van uw GPU. Niet aanbevolen als uw computerprestaties beperkt zijn. Window Width Size You can also quickly adjust this by using Ctrl+[ and Ctrl+]. - Use Segoe Fluent Icons - Use Segoe Fluent Icons for query results where supported + Gebruik Segoe Fluent pictogrammen + Gebruik Segoe Fluent iconen voor zoekresultaten wanneer ondersteund Press Key @@ -253,7 +278,7 @@ Arg For File - Default Web Browser + Standaard webbrowser The default setting follows the OS default browser setting. If specified separately, flow uses that browser. Browser Browser Name @@ -286,6 +311,11 @@ Sneltoets is niet beschikbaar, selecteer een nieuwe sneltoets Ongeldige plugin sneltoets Update + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Sneltoets niet beschikbaar + + Opslaan + Overwrite + Annuleer + Reset + Verwijder Versie @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml index 8ac419ab0..03da99d91 100644 --- a/Flow.Launcher/Languages/pl.xaml +++ b/Flow.Launcher/Languages/pl.xaml @@ -156,6 +156,7 @@ Odtwarzaj krótki dźwięk po otwarciu okna wyszukiwania Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animacja Użyj animacji w interfejsie użytkownika Szybkość animacji @@ -170,14 +171,37 @@ Skrót klawiszowy Skrót klawiszowy - Skrót klawiszowy Flow Launcher + Open Flow Launcher Wprowadź skrót, aby pokazać/ukryć Flow Launcher. - Podgląd skrótu + Toggle Preview Wprowadź skrót, aby pokazać/ukryć podgląd w oknie wyszukiwania. + Hotkey Presets + List of currently registered hotkeys Modyfikatory klawiszów otwierających wyniki Select a modifier key to open selected result via keyboard. Pokaż skrót klawiszowy Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Otwórz folder zawierający + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Skrót klawiszowy niestandardowych zapytań Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Usuń Edytuj Dodaj + None Musisz coś wybrać Czy jesteś pewien że chcesz usunąć skrót klawiszowy {0} wtyczki? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Skrót klawiszowy jest niedostępny, musisz podać inny skrót klawiszowy Niepoprawny skrót klawiszowy Aktualizuj + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Niestandardowy skrót zapytania @@ -297,8 +327,12 @@ Jeśli dodasz prefiks '@' podczas wprowadzania skrótu, będzie on pasował do d Skrót już istnieje, wprowadź nowy skrót lub edytuj istniejący. Skrót i/lub jego rozwinięcie jest puste. - - Niepoprawny skrót klawiszowy + + Zapisz + Overwrite + Anuluj + Reset + Usu Wersja @@ -368,6 +402,12 @@ Jeśli dodasz prefiks '@' podczas wprowadzania skrótu, będzie on pasował do d Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml index e2ddd0524..562f43b96 100644 --- a/Flow.Launcher/Languages/pt-br.xaml +++ b/Flow.Launcher/Languages/pt-br.xaml @@ -156,6 +156,7 @@ Reproduzir um pequeno som ao abrir a janela de pesquisa Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animação Utilizar Animação na Interface Velocidade de Animação @@ -170,14 +171,37 @@ Atalho Atalho - Atalho do Flow Launcher + Open Flow Launcher Digite o atalho para exibir/ocultar o Flow Launcher. - Atalho de pré-visualização + Toggle Preview Digite o atalho para exibir/ocultar a pré-visualização na janela de pesquisa. + Hotkey Presets + List of currently registered hotkeys Modificadores de resultado aberto Selecione uma tecla modificadora para abrir o resultar selecionado pelo teclado. Mostrar tecla de atalho Exibir atalho de seleção de resultado com resultados. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Abrir Menu de Contexto + Abrir Janela de Configurações + Copy File Path + Toggle Game Mode + Toggle History + Abrir a pasta correspondente + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Atalho de Consulta Personalizada Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Apagar Editar Adicionar + None Por favor selecione um item Tem cereza de que deseja deletar o atalho {0} do plugin? Tem certeza que deseja excluir o atalho: {0} com expansão {1}? @@ -286,6 +311,11 @@ Atalho indisponível, escolha outro Atalho de plugin inválido Atualizar + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Atalho Personalidado de Pesquisa @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in O atalho já existe, por favor, digite um novo atalho ou edite o existente. Atalho e/ou sua expansão está vazia. - - Atalho indisponível + + Salvar + Overwrite + Cancelar + Reset + Apagar Versão @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Abrir Janela de Configurações Recarregar Dados de Plugin + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Clima Clima no Resultado do Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index ce04e907a..58f3aba43 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -156,6 +156,7 @@ Reproduzir um som ao abrir a janela de pesquisa Volume dos efeitos sonoros Ajustar volume dos efeitos sonoros + Windows Media Player não está disponível e é necessário para o ajuste de volume. Verifique a sua instalação caso precise ajustar o volume. Animação Utilizar animações na aplicação Velocidade da animação @@ -170,14 +171,37 @@ Tecla de atalho Teclas de atalho - Tecla de atalho Flow Launcher + Abrir Flow Launcher Introduza o atalho para mostrar/ocultar Flow Launcher - Preview Hotkey + Comutar pré-visualização Introduza o atalho para mostrar/ocultar a pré-visualização na janela de pesquisa. + Predefinições de teclas de atalho + Listagem de teclas de atalho registadas Tecla modificadora para os resultados Selecione a tecla modificadora para abrir o resultado com o teclado Mostrar tecla de atalho Mostrar tecla de atalho perto dos resultados + Conclusão automática + Executa a conclusão automática para os itens selecionados. + Selecionar seguinte + Selecionar anterior + Página seguinte + Página anterior + Ir para consulta anterior + Ir para consulta seguinte + Abrir menu de contexto + Abrir janela de definições + Copiar caminho do ficheiro + Comutar modo de jogo + Comutar histórico + Abrir pasta do resultado + Executar como administrador + Recarregar resultados + Recarregar dados dos plugins + Ajuste rápido da largura da janela + Ajuste rápido da altura da janela + Para utilizar quando pretende recarregar o plugin e os dados existentes. + Ainda pode adicionar mais uma tecla de atalho para esta função. Teclas de atalho personalizadas Atalhos de consultas personalizadas Atalhos nativos @@ -188,6 +212,7 @@ Eliminar Editar Adicionar + Nenhuma Selecione um item Tem a certeza de que deseja remover a tecla de atalho do plugin {0}? Tem a certeza de que deseja eliminar o atalho: {0} com expansão {1}? @@ -285,6 +310,11 @@ Tecla de atalho indisponível, por favor escolha outra Tecla de atalho inválida Atualizar + Associar tecla de atalho + A tecla de atalho atual não está disponível. + Esta tecla de atalho está reservada para "{0}" e não pode ser usada. Por favor, escolha outra. + Esta tecla de atalho está a ser utilizada por "{0}". Se escolher "Substituir", será removida de "{0}". + Prima as teclas que pretende utilizar para esta função. Atalho de consulta personalizada @@ -296,8 +326,12 @@ Se adicionar o prefixo '@' durante a introdução do atalho, será utilizada qua Este atallho já existe. Por favor escolha outro ou edite o existente. O atalho e/ou a expansão não estão preenchidos. - - Tecla de atalho indisponível + + Guardar + Substituir + Cancelar + Repor + Eliminar Versão @@ -367,6 +401,12 @@ Queira por favor mover a pasta do seu perfil de {0} para {1} Abrir janela de definições Recarregar dados do plugin + Selecionar primeiro resultado + Selecionar último resultado + Executar consulta novamente + Abrir resultado + Abrir resultado #{0} + Meteorologia Meteorologia no Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml index cf1e88c44..739252da7 100644 --- a/Flow.Launcher/Languages/ru.xaml +++ b/Flow.Launcher/Languages/ru.xaml @@ -1,7 +1,10 @@ - - + + - Failed to register hotkey "{0}". The hotkey may be in use by another program. Change to a different hotkey, or exit another program. + Не удалось зарегистрировать сочетание клавиш "{0}". Возможно, оно используется другой программой. Измените сочетание клавиш или закройте другую программу. Flow Launcher Не удалось запустить {0} Недопустимый формат файла плагина Flow Launcher @@ -75,6 +78,9 @@ Когда значок скрыт в трее, меню настройки можно открыть, щёлкнув правой кнопкой мыши на окне поиска. Точность поиска запросов Изменение минимального количества совпадений при поиске, необходимого для получения результатов. + Нет + Низкая + Обычная Поиск с использованием пиньинь Позволяет использовать пиньинь для поиска. Пиньинь - это стандартная система латинизированной орфографии для перевода китайского языка. Всегда предпросмотр @@ -154,8 +160,9 @@ Тёмная Звуковой эффект Воспроизведение небольшого звука при открытии окна поиска - Sound Effect Volume - Adjust the volume of the sound effect + Громкость звукового эффекта + Регулировка громкости звукового эффекта + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Анимация Использование анимации в меню Скорость анимации @@ -170,14 +177,37 @@ Горячая клавиша Горячая клавиша - Горячая клавиша Flow Launcher + Open Flow Launcher Введите ярлык, чтобы показать/скрыть Flow Launcher. - Просмотр горячей клавиши + Toggle Preview Введите ярлык для показа/скрытия предпросмотра в окне поиска. + Hotkey Presets + List of currently registered hotkeys Открыть ключ модификации результата Выберите клавишу-модификатор, чтобы открыть выбранный результат с помощью клавиатуры. Показать горячую клавишу Показать горячую клавишу выбора результата с результатами. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Открыть контекстное меню + Открыть окно настроек + Copy File Path + Toggle Game Mode + Toggle History + Открыть папку с содержимым + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Горячие клавиши пользовательского запроса Ярлыки пользовательского запроса Встроенные ярлыки @@ -188,6 +218,7 @@ Удалить Редактировать Добавить + None Сначала выберите элемент Вы уверены что хотите удалить горячую клавишу для плагина {0}? Вы уверены, что хотите удалить ярлык: {0} с расширением {1}? @@ -286,19 +317,28 @@ Горячая клавиша недоступна. Пожалуйста, задайте новую Недействительная горячая клавиша плагина Обновить + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Ярлык пользовательского запроса Введите ярлык, который автоматически расширяется до указанного запроса. - 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. +Если вы добавите префикс '@' при вводе ярлыка, он будет заменяться в любом местоположении в запросе. Встроенные ярлыки всегда заменяются в любом месте в запросе. Ярлык уже существует, пожалуйста, введите новый ярлык или измените существующий. Ярлык и/или его расширение пусты. - - Горячая клавиша недоступна + + Сохранить + Overwrite + Отменить + Reset + Удалить Версия @@ -368,6 +408,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Открыть окно настроек Перезагрузить данные плагинов + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Команда Weather Погода в результатах Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 974895bcb..3f1d39f0c 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -156,6 +156,7 @@ Po otvorení okna vyhľadávania prehrať krátky zvuk Hlasitosť zvukového efektu Upraviť hlasitosť zvukového efektu + Prehrávač Windows Media Player, ktorý sa vyžaduje sa na nastavenie hlasitosti Flow Launchera nie je k dispozícii. Ak potrebujete upraviť hlasitosť, prosím, skontrolujte si svoju inštaláciu. Animácia Animovať používateľské rozhranie Rýchlosť animácie @@ -170,14 +171,37 @@ Klávesové skratky Klávesové skratky - Klávesová skratka pre Flow Launcher + Otvoriť Flow Launcher Zadajte skratku na zobrazenie/skrytie Flow Launchera. - Klávesová skratka pre náhľad + Prepnúť náhľad Zadajte klávesovú skratku pre zobrazenie/skrytie náhľadu vo vyhľadávacom okne. + Predvoľby klávesových skratiek + Zoznam aktuálne registrovaných klávesových skratiek Modifikačný kláves na otvorenie výsledkov Vyberte modifikačný kláves na otvorenie vybraného výsledku pomocou klávesnice. Zobraziť klávesovú skratku Zobrazí klávesovú skratku spolu s výsledkami. + Automatické dokončovanie + Spustí automatické dokončovanie vybraných položiek. + Vybrať ďalšiu položku + Vybrať prechádzajúcu položku + Ďalšia strana + Predchádzajúca strana + Prejsť na predchádzajúci dopyt + Prejsť na nasledujúci dopyt + Otvoriť kontextovú ponuku + Otvoriť okno s nastaveniami + Kopírovať cestu k súboru + Prepnúť herný režim + Prepnúť históriu + Otvoriť umiestnenie priečinka + Spustiť ako správca + Aktualizovať výsledky vyhľadávania + Znova načítať údaje pluginov + Rýchla úprava šírky okna + Rýchla úprava výšky okna + Použite, ak potrebujete, aby pluginy znovu načítali a aktualizovali svoje existujúce údaje. + Pre túto funkciu môžete pridať alternatívnu klávesovú skratku. Klávesové skratky vlastného vyhľadávania Klávesové skratky vlastného dopytu Vstavané skratky @@ -188,8 +212,9 @@ Odstrániť Upraviť Pridať + Žiadna Vyberte položku, prosím - Ste si istý, že chcete odstrániť klávesovú skratku {0} pre plugin? + Naozaj chcete odstrániť klávesovú skratku {0} pre plugin? Naozaj chcete odstrániť skratku: {0} pre dopyt {1}? Kopírovať text do schránky. Získať cestu z aktívneho Prieskumníka. @@ -286,6 +311,11 @@ Klávesová skratka je nedostupná, prosím, zadajte novú skratku Neplatná klávesová skratka pluginu Aktualizovať + Priradenie klávesovej skratky + Aktuálna klávesová skratka nie je k dispozícii. + Táto skratka je rezervovaná pre "{0}" a nemôže byť použitá. Prosím, vyberte inú skratku. + Táto skratka sa používa pre "{0}". Ak stlačíte "Prepísať", odstráni sa pre "{0}". + Stlačte kláves, ktorý chcete nastaviť pre túto funkciu. Klávesová skratka vlastného dopytu @@ -297,8 +327,12 @@ Ak pri zadávaní skratky pred ňu pridáte "@", bude sa zhodovať s Skratka už existuje, zadajte novú skratku alebo upravte existujúcu. Skratka a/alebo jej celé znenie je prázdne. - - Klávesová skratka je nedostupná + + Uložiť + Prepísať + Zrušiť + Resetovať + Odstrániť Verzia @@ -368,6 +402,12 @@ Ak pri zadávaní skratky pred ňu pridáte "@", bude sa zhodovať s Otvoriť okno s nastaveniami Znova načítať údaje pluginov + Vybrať prvý výsledok + Vybrať posledný výsledok + Spustiť aktuálny dopyt znova + Otvoriť výsledok + Otvoriť výsledok #{0} + Počasie Počasie na Googli > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml index 973ee60cc..335a7deb7 100644 --- a/Flow.Launcher/Languages/sr.xaml +++ b/Flow.Launcher/Languages/sr.xaml @@ -156,6 +156,7 @@ Play a small sound when the search window opens Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animation Use Animation in UI Animation Speed @@ -170,14 +171,37 @@ Prečica Prečica - Flow Launcher prečica + Open Flow Launcher Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Отворите модификаторе резултата Select a modifier key to open selected result via keyboard. покажи хоткеи Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. prečica za ručno dodat upit Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Obriši Izmeni Dodaj + None Molim Vas izaberite stavku Da li ste sigurni da želite da obrišete prečicu za {0} plugin? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Prečica je nedustupna, molim Vas izaberite drugu prečicu Nepravlna prečica za plugin Ažuriraj + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Prečica nedostupna + + Sačuvaj + Overwrite + Otkaži + Reset + Obriši Verzija @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index 16564c112..8a54a9b8a 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -156,6 +156,7 @@ Arama penceresi açıldığında küçük bir ses oynat Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Animasyon Arayüzde Animasyon Kullan Animation Speed @@ -170,14 +171,37 @@ Kısayol Tuşu Kısayol Tuşu - Flow Launcher Kısayolu + Open Flow Launcher Enter shortcut to show/hide Flow Launcher. - Preview Hotkey + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys Açık Sonuç Değiştiricileri Select a modifier key to open selected result via keyboard. Kısayol Tuşunu Göster Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Open Context Menu + Open Setting Window + Copy File Path + Toggle Game Mode + Toggle History + Open Containing Folder + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Özel Sorgu Kısayolları Custom Query Shortcut Built-in Shortcut @@ -188,6 +212,7 @@ Sil Düzenle Ekle + None Lütfen bir öğe seçin {0} eklentisi için olan kısayolu silmek istediğinize emin misiniz? Are you sure you want to delete shortcut: {0} with expansion {1}? @@ -286,6 +311,11 @@ Kısayol tuşu kullanılabilir değil, lütfen başka bir kısayol tuşu seçin Geçersiz eklenti kısayol tuşu Güncelle + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - Kısayol tuşu kullanılabilir değil + + Kaydet + Overwrite + İptal + Reset + Sil Sürüm @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Open Setting Window Reload Plugin Data + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Weather Weather in Google Result > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml index 46ae5d2c0..88f88b7cb 100644 --- a/Flow.Launcher/Languages/uk-UA.xaml +++ b/Flow.Launcher/Languages/uk-UA.xaml @@ -156,6 +156,7 @@ Відтворювати невеликий звук при відкритті вікна пошуку Гучність звукового ефекту Налаштуйте гучність звукового ефекту + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. Анімація Використовувати анімацію в інтерфейсі Швидкість анімації @@ -169,15 +170,38 @@ Гаряча клавіша - Гаряча клавіша - Гаряча клавіша Flow Launcher + Гарячі клавіші + Open Flow Launcher Введіть скорочення, щоб показати/приховати Flow Launcher. - Гаряча клавіша попереднього перегляду + Toggle Preview Введіть скорочення, щоб показати/приховати попередній перегляд у вікні пошуку. + Hotkey Presets + List of currently registered hotkeys Відкрити ключ зміни результатів Виберіть ключ модифікатора для відкриття вибраних результатів за допомогою клавіатури. Показати гарячу клавішу Показати гарячу клавішу вибору результату з результатами. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + Відкрити контекстне меню + Відкрити вікно налаштувань + Copy File Path + Перемкнути режим гри + Toggle History + Відкрийте папку, що містить файл + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. Задані гарячі клавіші для запитів Користувацькі скорочення запитів Вбудовані скорочення @@ -188,6 +212,7 @@ Видалити Редагувати Додати + None Спочатку виберіть елемент Ви впевнені, що хочете видалити гарячу клавішу ({0}) плагіну? Ви впевнені, що хочете видалити скорочення: {0} з розширенням {1}? @@ -286,6 +311,11 @@ Гаряча клавіша недоступна. Будь ласка, вкажіть нову Недійсна гаряча клавіша плагіна Оновити + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Власне скорочення запиту @@ -297,8 +327,12 @@ Скорочення вже існує, будь ласка, введіть нове або відредагуйте існуюче. Скорочення та/або його розширення є порожнім. - - Гаряча клавіша недоступна + + Зберегти + Overwrite + Скасувати + Reset + Видалити Версія @@ -348,7 +382,7 @@ Пошук та запуск усіх файлів і програм на вашому комп'ютері Шукайте все: програми, файли, закладки, YouTube, Twitter тощо. І все це за допомогою клавіатури, навіть не торкаючись миші. Flow Launcher запускається за допомогою наведеної нижче гарячої клавіші, спробуйте натиснути її зараз. Щоб її змінити, клацніть на ввід і натисніть потрібну гарячу клавішу на клавіатурі. - Гаряча клавіша + Гарячі клавіші Ключове слово дії та команди Шукайте в Інтернеті, запускайте програми або виконуйте різноманітні функції за допомогою плагінів Flow Launcher. Деякі функції починаються з ключового слова дії, але за потреби їх можна використовувати і без нього. Спробуйте наведені нижче запити у Flow Launcher. Давайте запустимо Flow Launcher @@ -368,6 +402,12 @@ Відкрити вікно налаштувань Перезавантажити дані плагінів + Select first result + Select last result + Run current query again + Open result + Open result #{0} + Погода Погода в результатах Google > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/vi.xaml b/Flow.Launcher/Languages/vi.xaml new file mode 100644 index 000000000..dbb8b9a05 --- /dev/null +++ b/Flow.Launcher/Languages/vi.xaml @@ -0,0 +1,426 @@ + + + + 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. + Trình khởi chạy luồng + Không thể khởi động {0} + Định dạng tệp plugin Flow Launcher không chính xác + Đặt ở vị trí trên cùng trong truy vấn này + Hủy trên cùng trong truy vấn này + Thực thi truy vấn:{0} + Thời gian thực hiện lần cuối:{0} + Mở + Cài đặt + Giới thiệu + Thoát + Đóng + Sao chép + Di chuyển + Dán + Hoàn tác + Chọn tất cả + Ngày tháng + Thư Mục + Văn bản + Chế độ trò chơi + Tạm dừng sử dụng phím nóng. + Đặt lại vị trí + Đặt lại vị trí của cửa sổ tìm kiếm + + + Cài đặt + Tổng quan + Chế độ Portabler + Lưu trữ tất cả cài đặt và dữ liệu người dùng trong một thư mục (hữu ích khi sử dụng với thiết bị lưu trữ di động hoặc dịch vụ đám mây). + Khởi động Flow Launcher khi khởi động hệ thống + Không lưu được tính năng tự khởi động khi khởi động hệ thống + Ẩn Flow Launcher khi mất tiêu điểm + Không hiển thị thông báo khi có phiên bản mới + Vị trí Suchfenster + Ghi nhớ vị trí cuối cùng + Màn hình bằng con trỏ chuột + Màn hình có cửa sổ được tập trung + Màn hình chính + Màn hình tùy chỉnh + Tìm kiếm vị trí cửa sổ trên màn hình + Trung tâm + Trung tâm trên cùng + Liên kết oben + Trên cùng bên phải + Vị trí tùy chỉnh + Ngôn Ngữ + Chọn kiểu truy vấn + Hiển thị/ẩn các kết quả trước đó khi Flow Launcher được kích hoạt lại. + Giữ lại truy vấn cuối cùng + Chọn truy vấn cuối cùng + Trống truy vấn cuối cùng + Số kết quả tối đa + Có thể thiết lập nhanh chóng bằng CTRL+Plus và CTRL+Minus. + Bỏ qua phím nóng khi cửa sổ ở chế độ toàn màn hình + Tắt Flow Launcher khi ứng dụng toàn màn hình đang hoạt động (Được khuyến nghị để chơi trò chơi). + Trình quản lý ngày tháng tiêu chuẩn + Chọn trình quản lý tệp để sử dụng khi mở thư mục. + Trình duyệt chuẩn + Cài đặt cho tab mới, cửa sổ mới và chế độ riêng tư. + Python-Pfad + Node.js-Pfad + Vui lòng chọn chương trình Node.js + Vui lòng chọn pythonw.exe + Luôn bắt đầu nhập ở chế độ tiếng Anh + Tạm thời chuyển phương thức nhập sang tiếng Anh khi kích hoạt Flow. + Cập nhật tự động + Chọn + Ẩn Trình khởi chạy luồng khi khởi động + Ẩn biểu tượng thanh trạng thái + Khi biểu tượng bị ẩn khỏi khay, bạn có thể mở menu Cài đặt bằng cách nhấp chuột phải vào cửa sổ tìm kiếm. + Độ chính xác của tìm kiếm truy vấn + Kết quả tìm kiếm bắt buộc. + Hoạt động bính âm + 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. + Luôn xem trước + Luôn mở bảng xem trước khi Flow kích hoạt. Nhấn {0} để chuyển đổi chế độ xem trước. + 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ờ + + + Plugin tìm kiếm + Ctrl+F để tìm kiếm plugin + Không tìm thấy kết quả nào + Vui lòng thử tìm kiếm khác. + Tiện ích mở rộng + Tiện ích mở rộng + Tìm kiếm thêm plugin + Bật + Tắt + Cài đặt từ hành động + Từ khóa hành động + Từ hành động hiện tại + Từ hành động mới + Thay đổi từ hành động + Ưu tiên hiện tại + Ưu tiên mới + Ưu tiên + Thay đổi mức độ ưu tiên của kết quả plugin + Trình cắm + tác giả + Khởi tạo ban đầu: + Abfragezeit: + Phiên bản + Trang web + Gỡ cài đặt + + + + Tải tiện ích mở rộng + Bản phát hành mới + Cập nhật gần đây + Tiện ích mở rộng + Đã cài đặt + Làm mới + Cài đặt + Gỡ cài đặt + Cập nhật + Plugin đã được cài đặt + Phiên bản mới + Plugin này đã được cập nhật trong vòng 7 ngày qua + Đã có bản cập nhật mới + + + + + Giao Diện + Giao diện + Tìm kiếm thêm chủ đề + Cách tạo chủ đề + Xin chào + Thư mục + Tìm kiếm tệp, thư mục và nội dung tệp + Tìm kiếm trên web + Tìm kiếm trên web với sự hỗ trợ của công cụ tìm kiếm khác + Chương trình + Khởi chạy chương trình với tư cách quản trị viên hoặc người dùng khác + Buộc Tắt Tiến Trình + Chấm dứt các tiến trình không mong muốn + Phông chữ hộp truy vấn + Phông chữ kết quả + chế độ cửa sổ + độ mờ + Chủ đề {0} không tồn tại nên mẫu mặc định được kích hoạt + Tải chủ đề {0} không thành công, mẫu mặc định được kích hoạt + Mở thư mục chủ đề + Mở thư mục chủ đề + Bảng màu + Mặc định hệ thống + Sáng + Tối + Hiệu ứng âm thanh + Phát âm thanh khi cửa sổ tìm kiếm mở + Âm lượng hiệu ứng âm thanh + Điều chỉnh âm lượng của hiệu ứng âm thanh + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. + Hoạt hình + Sử dụng hình động trong giao diện + Tốc độ hoạt ảnh + Tốc độ của hoạt ảnh giao diện người dùng + Chậm + Trung bình + Nhanh + Tùy chỉnh + Giờ + Ngày + + + Phím tắt + Phím tắt + Chào mừng bạn đến với Trình khởi chạy luồng + Nhập phím tắt để hiển thị/ẩn Flow Launcher. + Bật tắt xem trước + Nhập phím tắt để hiển thị/ẩn bản xem trước trong cửa sổ tìm kiếm. + Cài đặt trước phím nóng + Danh sách các phím nóng hiện đã đăng ký + Mở công cụ sửa đổi kết quả + Chọn phím bổ trợ để mở kết quả đã chọn từ bàn phím. + Giải thích phím nóng + Hiển thị phím tắt chọn kết quả cùng với kết quả. + Tự động hoàn thành + Chạy tự động hoàn thành cho các mục đã chọn. + Select Next Item + Select Previous Item + Trang Tiếp Theo + Previous Page + Cycle Previous Query + Cycle Next Query + Mở menu ngữ cảnh + Mở cửa sổ cài đặt + Chép đường dẫn tập tin + Chuyển đổi chế độ trò chơi + Chuyển đổi lịch sử + Mở thư mục chứa + Chạy với quyền admin + Refresh Search Results + Dữ liệu plugin không tải + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. + Phím tắt truy vấn tùy chỉnh + Lối tắt truy vấn tùy chỉnh + Phím tắt tích hợp + Truy vấn + Phím tắt + Mở rộng + Mô Tả + Xóa + Chỉnh sửa + Thêm + Không + Vui lòng chọn một mục + Bạn có chắc chắn muốn xóa tổ hợp phím plugin {0} không? + Bạn có chắc chắn muốn xóa lối tắt: {0} với phần mở rộng {1} không? + Nhận văn bản từ bảng nhớ tạm. + Nhận đường dẫn từ trình thám hiểm đang hoạt động. + Hiệu ứng đổ bóng trong cửa sổ truy vấn + Hiệu ứng đổ bóng gây rất nhiều áp lực lên GPU. Không nên dùng nếu hiệu suất máy tính của bạn bị hạn chế. + Chiều rộng kích thước cửa sổ + Bạn cũng có thể nhanh chóng điều chỉnh điều này bằng cách sử dụng Ctrl+[ và Ctrl+]. + Sử dụng biểu tượng Segoe + Sử dụng Biểu tượng Segoe Fluent cho kết quả truy vấn nếu được hỗ trợ + Nhấn phím + + + Proxy HTTP + Proxy HTTP hoạt động + Máy chủ HTTP + Cổng + Tài Khoản + Mật khẩu + Proxy thử nghiệm + Lưu + Máy chủ không được để trống + Cổng máy chủ không được để trống + Định dạng cổng Falsches + Đã lưu cấu hình proxy thành công + Proxy được cấu hình đúng + Kết nối với proxy không thành công + + + Giới thiệu + Trang web + GitHub + Tài liệu + Phiên bản + Biểu tượng + Bạn đã kích hoạt Flow Launcher {0} lần + Kiểm tra các bản cập nhật + Trở thành nhà tài trợ + Đã có phiên bản mới {0}, bạn có muốn khởi động lại Flow Launcher để sử dụng bản cập nhật không? + Kiểm tra cập nhật không thành công. Vui lòng kiểm tra kết nối và cài đặt proxy của bạn tới api.github.com. + + + Tải xuống bản cập nhật không thành công. Vui lòng kiểm tra cài đặt kết nối và proxy của bạn tới github-cloud.s3.amazonaws.com, + hoặc truy cập https://github.com/Flow-Launcher/Flow.Launcher/releases để tải xuống các bản cập nhật theo cách thủ công. + + + Ghi chú phát hành + Mẹo sử dụng + Công cụ dành cho nhà phát triển + Thư mục cài đặt + Thư mục nhật ký + Xóa tệp nhật ký + Bạn có chắc chắn muốn xóa tất cả nhật ký không? + Wizard + + + Chọn trình quản lý tệp + Vui lòng chỉ định vị trí tệp của trình quản lý tệp mà bạn đang sử dụng và thêm đối số nếu cần. Đối số mặc định là "%d" và một đường dẫn được nhập tại vị trí đó. Ví dụ: Nếu một lệnh được yêu cầu như "totalcmd.exe /A c:\windows", đối số là /A "%d". + "%f" là một đối số đại diện cho đường dẫn tệp. Nó được sử dụng để nhấn mạnh tên tệp/thư mục khi mở một vị trí tệp cụ thể trong trình quản lý tệp của bên thứ 3. Đối số này chỉ có sẵn trong phần "Arg for File" mục. Nếu trình quản lý tệp không có chức năng đó, bạn có thể sử dụng "%d". + Trình quản lý ngày tháng + Tên hồ sơ + Đường dẫn quản lý tệp + Đối số cho thư mục + Đối số cho tệp + + + Trình duyệt web tiêu chuẩn + Mặc định sử dụng mặc định trình duyệt của hệ điều hành. Nếu được chỉ định, Flow sẽ sử dụng trình duyệt này. + Trình duyệt + Tên trình duyệt + Đường dẫn trình duyệt + Cửa sổ mới + Thẻ Mới + Chế độ riêng tư + + + Thay đổi mức độ ưu tiên + Số càng cao thì kết quả được xếp hạng càng cao. Hãy thử số 5. ​​Nếu bạn muốn kết quả sâu hơn so với các plugin khác, hãy sử dụng số âm + Vui lòng chỉ định số nguyên hợp lệ cho mức độ ưu tiên! + + + Từ khóa hành động cũ + Từ khóa hành động mới + Viết tắt + Fertig + Không thể tìm thấy plugin được chỉ định + Từ khóa hành động mới không được để trống + Từ khóa hành động mới này đã được gán cho một plugin khác, vui lòng chọn một plugin khác + Thành công + Đã hoàn tất thành công + Sử dụng * nếu bạn muốn xác định từ khóa hành động. + + + Phím nóng truy vấn tùy chỉnh + Nhấn phím nóng tùy chỉnh để mở Flow Launcher và tự động nhập truy vấn được chỉ định. + Xem trước + Tổ hợp phím không khả dụng, vui lòng chọn tổ hợp phím khác + Tổ hợp phím plugin không hợp lệ + Cập nhật + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. + + + Phím tắt truy vấn tùy chỉnh + Nhập một phím tắt tự động mở rộng theo truy vấn đã chỉ định. + + Một phím tắt được mở rộng khi nó khớp chính xác với truy vấn. + + Nếu bạn thêm tiền tố '@' trong khi nhập phím tắt, phím tắt đó sẽ khớp với bất kỳ vị trí nào trong truy vấn. Các phím tắt dựng sẵn khớp với bất kỳ vị trí nào trong truy vấn. + + + Phím tắt đã tồn tại, vui lòng nhập Phím tắt mới hoặc chỉnh sửa phím tắt hiện có. + Phím tắt và/hoặc phần mở rộng của nó trống. + + + Lưu + Ghi đè lên + Hủy + Đặt lại + Xóa + + + Phiên bản + Thời gian + Vui lòng cho chúng tôi biết ứng dụng bị lỗi như thế nào để chúng tôi có thể khắc phục + Gửi báo cáo + Huỷ bỏ + Chung + Ngoại lệ + Loại ngoại lệ + Nguồn + Ngăn xếp dấu vết + Gửi + Đã gửi báo cáo thành công + Báo cáo lỗi + Trình khởi chạy luồng có lỗi + + + Cảnh báo nhỏ... + + + Kiểm tra cập nhật mới + Bạn đã có phiên bản mới nhất + Tìm thấy cập nhật + Đang cập nhật... + + + Flow Launcher không thể di chuyển dữ liệu hồ sơ của bạn sang phiên bản cập nhật mới. + Vui lòng di chuyển thủ công thư mục dữ liệu hồ sơ của bạn từ {0} sang {1} + + + Cập nhật mới + Đã có sẵn V{0} của Flow Launcher + Đã xảy ra lỗi khi cố cài đặt bản cập nhật phần mềm + Cập nhật + Viết tắt + Cập nhật không thành công + Kiểm tra kết nối Internet của bạn và cập nhật cài đặt proxy để truy cập github-cloud.s3.amazonaws.com. + Bản cập nhật này sẽ khởi động lại Flow Launcher + Các tệp sau sẽ được cập nhật + Cập nhật tệp + Thông tin mô tả + + + Bỏ Qua + Chào mừng bạn đến với Trình khởi chạy luồng + Xin chào, đây là lần đầu tiên bạn sử dụng Flow Launcher! + Trước khi bạn bắt đầu, trình hướng dẫn này sẽ giúp thiết lập Flow Launcher. Bạn có thể bỏ qua điều này nếu bạn muốn. Vui lòng chọn ngôn ngữ + Tìm kiếm và khởi chạy tất cả các tệp và ứng dụng trên PC của bạn + Tìm kiếm mọi thứ từ ứng dụng, tệp, dấu trang, YouTube, Twitter và hơn thế nữa. Tất cả đều từ bàn phím thoải mái mà không cần chạm vào chuột. + Trình khởi chạy Flow bắt đầu bằng phím nóng bên dưới, hãy tiếp tục và dùng thử ngay bây giờ. Để thay đổi nó, hãy nhấp vào đầu vào và nhấn phím nóng mong muốn trên bàn phím. + Phím tắt + Từ khóa và lệnh hành động + Tìm kiếm trên web, khởi chạy ứng dụng hoặc chạy các chức năng khác nhau thông qua plugin Flow Launcher. Một số chức năng nhất định bắt đầu bằng từ khóa hành động và nếu cần, chúng có thể được sử dụng mà không cần từ khóa hành động. Hãy thử các truy vấn bên dưới trong Flow Launcher. + Bắt đầu Flow-Launcher + Xong. Thưởng thức Flow Launcher. Đừng quên phím tắt để khởi động Flow Launcher :) + + + + Menu Quay lại / Ngữ cảnh + Mục Điều hướng + Mở menu ngữ cảnh + Mở thư mục chứa + Chạy với tư cách quản trị viên / mở thư mục trong trình quản lý tệp tiêu chuẩn + Lịch sử tìm kiếm + Quay lại kết quả trong menu ngữ cảnh + Tự động hoàn thành + Mở/chạy mục đã chọn + Mở cửa sổ cài đặt + Dữ liệu plugin không tải + + Select first result + Select last result + Run current query again + Open result + Open result #{0} + + Thời Tiết + Thời tiết từ kết quả của Google + > ping 8.8.8.8 + Lệnh Shell + Bluetooth + Cài đặt Bluetooth + sn + Ghi chú + + diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml index b2d9eeaa5..dd24444b0 100644 --- a/Flow.Launcher/Languages/zh-cn.xaml +++ b/Flow.Launcher/Languages/zh-cn.xaml @@ -156,6 +156,7 @@ 启用激活音效 音效音量 调整音效音量 + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. 动画 启用动画 动画速度 @@ -170,14 +171,37 @@ 热键 热键 - Flow Launcher 激活热键 + Open Flow Launcher 输入显示/隐藏 Flow Launcher 的快捷键。 - 预览快捷键 + Toggle Preview 输入在搜索窗口中开启/关闭预览的快捷键。 + Hotkey Presets + List of currently registered hotkeys 打开结果快捷键修饰符 选择一个用以打开搜索结果的按键修饰符。 显示热键 显示用于打开结果的快捷键。 + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + 打开菜单目录 + 打开设置窗口 + Copy File Path + 切换游戏模式 + Toggle History + 打开所在目录 + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. 自定义查询热键 自定义查询捷径 内置捷径 @@ -188,6 +212,7 @@ 删除 编辑 添加 + None 请选择一项 你确定要删除插件 {0} 的热键吗? 你确定要删除捷径 {0} (展开为 {1})? @@ -286,6 +311,11 @@ 热键不可用,请选择一个新的热键 插件热键不合法 更新 + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. 自定义查询捷径 @@ -297,8 +327,12 @@ 捷径已存在,请输入一个新的或者编辑已有的。 捷径及其展开均不能为空。 - - 热键不可用 + + 保存 + Overwrite + 取消 + Reset + 删除 版本 @@ -368,6 +402,12 @@ 打开设置窗口 重新加载插件数据 + Select first result + Select last result + Run current query again + Open result + Open result #{0} + 天气 谷歌天气结果 > ping 8.8.8.8 diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml index 4f5db8194..3b0f19638 100644 --- a/Flow.Launcher/Languages/zh-tw.xaml +++ b/Flow.Launcher/Languages/zh-tw.xaml @@ -156,6 +156,7 @@ 搜尋窗口打開時播放音效 Sound Effect Volume Adjust the volume of the sound effect + Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume. 動畫 使用介面動畫 Animation Speed @@ -170,14 +171,37 @@ 快捷鍵 快捷鍵 - Flow Launcher 快捷鍵 + Open Flow Launcher 執行縮寫以顯示 / 隱藏 Flow Launcher。 - 預覽快捷鍵 + Toggle Preview Enter shortcut to show/hide preview in search window. + Hotkey Presets + List of currently registered hotkeys 開放結果修飾符 Select a modifier key to open selected result via keyboard. 顯示快捷鍵 Show result selection hotkey with results. + Auto Complete + Runs autocomplete for the selected items. + Select Next Item + Select Previous Item + Next Page + Previous Page + Cycle Previous Query + Cycle Next Query + 打開選單 + 打開視窗設定 + Copy File Path + Toggle Game Mode + Toggle History + 開啟檔案位置 + Run As Admin + Refresh Search Results + Reload Plugins Data + Quick Adjust Window Width + Quick Adjust Window Height + Use when require plugins to reload and update their existing data. + You can add one more hotkey for this function. 自定義查詢快捷鍵 自訂查詢縮寫 內建縮寫 @@ -188,6 +212,7 @@ 刪除 編輯 新增 + None 請選擇一項 確定要刪除插件 {0} 的快捷鍵嗎? 你確定你要刪除縮寫:{0} 展開為 {1}? @@ -286,6 +311,11 @@ 快捷鍵不存在,請設定一個新的快捷鍵 擴充功能熱鍵無法使用 更新 + Binding Hotkey + Current hotkey is unavailable. + This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey. + This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}". + Press the keys you want to use for this function. Custom Query Shortcut @@ -297,8 +327,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in Shortcut already exists, please enter a new Shortcut or edit the existing one. Shortcut and/or its expansion is empty. - - 快捷鍵無法使用 + + 儲存 + Overwrite + 取消 + Reset + 刪除 版本 @@ -368,6 +402,12 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in 開啟視窗設定 重新載入插件資料 + Select first result + Select last result + Run current query again + Open result + Open result #{0} + 天氣 Google 搜尋的天氣結果 > ping 8.8.8.8 diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index 2315d99ec..b312240d6 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -7,12 +7,14 @@ xmlns:flowlauncher="clr-namespace:Flow.Launcher" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:svgc="http://sharpvectors.codeplex.com/svgc/" + xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:ui="http://schemas.modernwpf.com/2019" xmlns:vm="clr-namespace:Flow.Launcher.ViewModel" Name="FlowMainWindow" Title="Flow Launcher" - MinWidth="{Binding MainWindowWidth, Mode=OneWay}" - MaxWidth="{Binding MainWindowWidth, Mode=OneWay}" + Width="{Binding MainWindowWidth, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" + MinWidth="400" + MinHeight="30" d:DataContext="{d:DesignInstance Type=vm:MainViewModel}" AllowDrop="True" AllowsTransparency="True" @@ -21,20 +23,24 @@ Deactivated="OnDeactivated" Icon="Images/app.png" Initialized="OnInitialized" + Left="{Binding Settings.WindowLeft, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Loaded="OnLoaded" LocationChanged="OnLocationChanged" Opacity="{Binding MainWindowOpacity, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" PreviewKeyDown="OnKeyDown" PreviewKeyUp="OnKeyUp" - ResizeMode="NoResize" + ResizeMode="CanResize" ShowInTaskbar="False" SizeToContent="Height" - Style="{DynamicResource WindowStyle}" Topmost="True" Visibility="{Binding MainWindowVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" WindowStartupLocation="Manual" WindowStyle="None" mc:Ignorable="d"> + + + + @@ -207,157 +213,184 @@ Command="{Binding ForwardHistoryCommand}" Modifiers="{Binding CycleHistoryDownHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - + @@ -365,75 +398,55 @@ x:Name="ResultArea" Grid.Column="0" Grid.ColumnSpan="{Binding ResultAreaColumn}"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + ShowsPreview="True" + Visibility="{Binding InternalPreviewVisible, Converter={StaticResource BoolToVisibilityConverter}}"> + + + + + + + Visibility="{Binding InternalPreviewVisible, Converter={StaticResource BoolToVisibilityConverter}}"> @@ -449,7 +462,7 @@ x:Name="PreviewGlyphIcon" Grid.Row="0" Height="Auto" - Margin="0,16,0,0" + Margin="0 16 0 0" FontFamily="{Binding Glyph.FontFamily}" Style="{DynamicResource PreviewGlyph}" Text="{Binding Glyph.Glyph}" @@ -458,7 +471,7 @@ x:Name="PreviewImageIcon" Grid.Row="0" MaxHeight="320" - Margin="0,16,0,0" + Margin="0 16 0 0" HorizontalAlignment="Center" Source="{Binding PreviewImage}" StretchDirection="DownOnly" @@ -477,7 +490,7 @@ - - - - \ No newline at end of file + + + + diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 9c5ed46c0..60048d070 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -12,7 +12,6 @@ using Flow.Launcher.Helper; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.ViewModel; using Screen = System.Windows.Forms.Screen; -using ContextMenuStrip = System.Windows.Forms.ContextMenuStrip; using DragEventArgs = System.Windows.DragEventArgs; using KeyEventArgs = System.Windows.Input.KeyEventArgs; using NotifyIcon = System.Windows.Forms.NotifyIcon; @@ -24,7 +23,6 @@ using System.Windows.Data; using ModernWpf.Controls; using Key = System.Windows.Input.Key; using System.Media; -using static Flow.Launcher.ViewModel.SettingWindowViewModel; using DataObject = System.Windows.DataObject; using System.Windows.Media; using System.Windows.Interop; @@ -46,9 +44,11 @@ namespace Flow.Launcher private ContextMenu contextMenu = new ContextMenu(); private MainViewModel _viewModel; private bool _animating; - MediaPlayer animationSound = new MediaPlayer(); private bool isArrowKeyPressed = false; + private MediaPlayer animationSoundWMP; + private SoundPlayer animationSoundWPF; + #endregion public MainWindow(Settings settings, MainViewModel mainVM) @@ -60,16 +60,81 @@ namespace Flow.Launcher InitializeComponent(); InitializePosition(); - animationSound.Open(new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources\\open.wav")); + InitSoundEffects(); DataObject.AddPastingHandler(QueryTextBox, OnPaste); + + this.Loaded += (_, _) => + { + var handle = new WindowInteropHelper(this).Handle; + var win = HwndSource.FromHwnd(handle); + win.AddHook(WndProc); + }; } + DispatcherTimer timer = new DispatcherTimer + { + Interval = new TimeSpan(0, 0, 0, 0, 500), + IsEnabled = false + }; + public MainWindow() { InitializeComponent(); } + private const int WM_ENTERSIZEMOVE = 0x0231; + private const int WM_EXITSIZEMOVE = 0x0232; + private int _initialWidth; + private int _initialHeight; + private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) + { + if (msg == WM_ENTERSIZEMOVE) + { + _initialWidth = (int)Width; + _initialHeight = (int)Height; + handled = true; + } + if (msg == WM_EXITSIZEMOVE) + { + if ( _initialHeight != (int)Height) + { + OnResizeEnd(); + } + if (_initialWidth != (int)Width) + { + FlowMainWindow.SizeToContent = SizeToContent.Height; + } + handled = true; + } + return IntPtr.Zero; + } + + private void OnResizeEnd() + { + int shadowMargin = 0; + if (_settings.UseDropShadowEffect) + { + shadowMargin = 32; + } + + if (!_settings.KeepMaxResults) + { + var itemCount = (Height - (_settings.WindowHeightSize + 14) - shadowMargin) / _settings.ItemHeightSize; + + if (itemCount < 2) + { + _settings.MaxResultsToShow = 2; + } + else + { + _settings.MaxResultsToShow = Convert.ToInt32(Math.Truncate(itemCount)); + } + } + FlowMainWindow.SizeToContent = SizeToContent.Height; + _viewModel.MainWindowWidth = Width; + } + private void OnCopy(object sender, ExecutedRoutedEventArgs e) { var result = _viewModel.Results.SelectedItem?.Result; @@ -96,7 +161,7 @@ namespace Flow.Launcher e.DataObject = data; } } - + private async void OnClosing(object sender, CancelEventArgs e) { _notifyIcon.Visible = false; @@ -114,7 +179,6 @@ namespace Flow.Launcher { // MouseEventHandler PreviewMouseMove += MainPreviewMouseMove; - CheckFirstLaunch(); HideStartup(); // show notify icon when flowlauncher is hidden @@ -140,9 +204,7 @@ namespace Flow.Launcher { if (_settings.UseSound) { - animationSound.Position = TimeSpan.Zero; - animationSound.Volume = _settings.SoundVolume / 100.0; - animationSound.Play(); + SoundPlay(); } UpdatePosition(); PreviewReset(); @@ -279,11 +341,10 @@ namespace Flow.Launcher _notifyIcon = new NotifyIcon { Text = Infrastructure.Constant.FlowLauncherFullName, - Icon = Properties.Resources.app, + Icon = Constant.Version == "1.0.0" ? Properties.Resources.dev : Properties.Resources.app, Visible = !_settings.HideNotifyIcon }; - var openIcon = new FontIcon { Glyph = "\ue71e" @@ -508,6 +569,33 @@ namespace Flow.Launcher windowsb.Begin(FlowMainWindow); } + private void InitSoundEffects() + { + if (_settings.WMPInstalled) + { + animationSoundWMP = new MediaPlayer(); + animationSoundWMP.Open(new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources\\open.wav")); + } + else + { + animationSoundWPF = new SoundPlayer(AppDomain.CurrentDomain.BaseDirectory + "Resources\\open.wav"); + } + } + + private void SoundPlay() + { + if (_settings.WMPInstalled) + { + animationSoundWMP.Position = TimeSpan.Zero; + animationSoundWMP.Volume = _settings.SoundVolume / 100.0; + animationSoundWMP.Play(); + } + else + { + animationSoundWPF.Play(); + } + } + private void OnMouseDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left) DragMove(); @@ -532,17 +620,17 @@ namespace Flow.Launcher { _settings.WindowLeft = Left; _settings.WindowTop = Top; - //This condition stops extra hide call when animator is on, + //This condition stops extra hide call when animator is on, // which causes the toggling to occasional hide instead of show. if (_viewModel.MainWindowVisibilityStatus) { - // Need time to initialize the main query window animation. + // Need time to initialize the main query window animation. // This also stops the mainwindow from flickering occasionally after Settings window is opened // and always after Settings window is closed. if (_settings.UseAnimation) await Task.Delay(100); - if (_settings.HideWhenDeactivated) + if (_settings.HideWhenDeactivated && !_viewModel.ExternalPreviewVisible) { _viewModel.Hide(); } @@ -607,7 +695,7 @@ namespace Flow.Launcher } return screen ?? Screen.AllScreens[0]; } - + public double HorizonCenter(Screen screen) { var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); diff --git a/Flow.Launcher/MessageBoxEx.xaml b/Flow.Launcher/MessageBoxEx.xaml new file mode 100644 index 000000000..f466a640e --- /dev/null +++ b/Flow.Launcher/MessageBoxEx.xaml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +