diff --git a/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCPublicAPI.cs b/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCPublicAPI.cs index 8df2ce9ed..4d988b837 100644 --- a/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCPublicAPI.cs +++ b/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCPublicAPI.cs @@ -12,7 +12,7 @@ namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models { public class JsonRPCPublicAPI { - private IPublicAPI _api; + private readonly IPublicAPI _api; public JsonRPCPublicAPI(IPublicAPI api) { @@ -104,7 +104,6 @@ namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models return _api.GetAllPlugins(); } - public MatchResult FuzzySearch(string query, string stringToCompare) { return _api.FuzzySearch(query, stringToCompare); @@ -156,6 +155,11 @@ namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models _api.LogWarn(className, message, methodName); } + public void LogError(string className, string message, [CallerMemberName] string methodName = "") + { + _api.LogError(className, message, methodName); + } + public void OpenDirectory(string DirectoryPath, string FileNameOrFilePath = null) { _api.OpenDirectory(DirectoryPath, FileNameOrFilePath); @@ -185,5 +189,10 @@ namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models { _api.StopLoadingBar(); } + + public void SavePluginCaches() + { + _api.SavePluginCaches(); + } } } diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index aa6c54a94..4c85fb061 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -13,6 +13,7 @@ using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; +using IRemovable = Flow.Launcher.Core.Storage.IRemovable; using ISavable = Flow.Launcher.Plugin.ISavable; namespace Flow.Launcher.Core.Plugin @@ -22,6 +23,8 @@ namespace Flow.Launcher.Core.Plugin /// public static class PluginManager { + private static readonly string ClassName = nameof(PluginManager); + private static IEnumerable _contextMenuPlugins; public static List AllPlugins { get; private set; } @@ -65,6 +68,7 @@ namespace Flow.Launcher.Core.Plugin } API.SavePluginSettings(); + API.SavePluginCaches(); } public static async ValueTask DisposePluginsAsync() @@ -192,7 +196,7 @@ namespace Flow.Launcher.Core.Plugin { try { - var milliseconds = await Stopwatch.DebugAsync($"|PluginManager.InitializePlugins|Init method time cost for <{pair.Metadata.Name}>", + var milliseconds = await API.StopwatchLogDebugAsync(ClassName, $"Init method time cost for <{pair.Metadata.Name}>", () => pair.Plugin.InitAsync(new PluginInitContext(pair.Metadata, API))); pair.Metadata.InitTime += milliseconds; @@ -264,7 +268,7 @@ namespace Flow.Launcher.Core.Plugin try { - var milliseconds = await Stopwatch.DebugAsync($"|PluginManager.QueryForPlugin|Cost for {metadata.Name}", + var milliseconds = await API.StopwatchLogDebugAsync(ClassName, $"Cost for {metadata.Name}", async () => results = await pair.Plugin.QueryAsync(query, token).ConfigureAwait(false)); token.ThrowIfCancellationRequested(); @@ -575,11 +579,11 @@ namespace Flow.Launcher.Core.Plugin if (removePluginSettings) { - // For dotnet plugins, we need to remove their PluginJsonStorage instance - if (AllowedLanguage.IsDotNet(plugin.Language)) + // For dotnet plugins, we need to remove their PluginJsonStorage and PluginBinaryStorage instances + if (AllowedLanguage.IsDotNet(plugin.Language) && API is IRemovable removable) { - var method = API.GetType().GetMethod("RemovePluginSettings"); - method?.Invoke(API, new object[] { plugin.AssemblyName }); + removable.RemovePluginSettings(plugin.AssemblyName); + removable.RemovePluginCaches(plugin.PluginCacheDirectoryPath); } try diff --git a/Flow.Launcher.Core/Plugin/PluginsLoader.cs b/Flow.Launcher.Core/Plugin/PluginsLoader.cs index 495a4c1ab..1010d9f08 100644 --- a/Flow.Launcher.Core/Plugin/PluginsLoader.cs +++ b/Flow.Launcher.Core/Plugin/PluginsLoader.cs @@ -11,12 +11,17 @@ using Flow.Launcher.Infrastructure.Logger; #pragma warning restore IDE0005 using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; -using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; namespace Flow.Launcher.Core.Plugin { public static class PluginsLoader { + private static readonly string ClassName = nameof(PluginsLoader); + + // We should not initialize API in static constructor because it will create another API instance + private static IPublicAPI api = null; + private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService(); + public static List Plugins(List metadatas, PluginsSettings settings) { var dotnetPlugins = DotNetPlugins(metadatas); @@ -59,8 +64,7 @@ namespace Flow.Launcher.Core.Plugin foreach (var metadata in metadatas) { - var milliseconds = Stopwatch.Debug( - $"|PluginsLoader.DotNetPlugins|Constructor init cost for {metadata.Name}", () => + var milliseconds = API.StopwatchLogDebug(ClassName, $"Constructor init cost for {metadata.Name}", () => { Assembly assembly = null; IAsyncPlugin plugin = null; diff --git a/Flow.Launcher.Core/Resource/LocalizationConverter.cs b/Flow.Launcher.Core/Resource/LocalizationConverter.cs index 81600e023..fdda33926 100644 --- a/Flow.Launcher.Core/Resource/LocalizationConverter.cs +++ b/Flow.Launcher.Core/Resource/LocalizationConverter.cs @@ -6,6 +6,7 @@ using System.Windows.Data; namespace Flow.Launcher.Core.Resource { + [Obsolete("LocalizationConverter is obsolete. Use with Flow.Launcher.Localization NuGet package instead.")] public class LocalizationConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) diff --git a/Flow.Launcher.Core/Resource/LocalizedDescriptionAttribute.cs b/Flow.Launcher.Core/Resource/LocalizedDescriptionAttribute.cs index 52a232334..3e1a19a76 100644 --- a/Flow.Launcher.Core/Resource/LocalizedDescriptionAttribute.cs +++ b/Flow.Launcher.Core/Resource/LocalizedDescriptionAttribute.cs @@ -1,15 +1,19 @@ using System.ComponentModel; +using CommunityToolkit.Mvvm.DependencyInjection; +using Flow.Launcher.Plugin; namespace Flow.Launcher.Core.Resource { public class LocalizedDescriptionAttribute : DescriptionAttribute { - private readonly Internationalization _translator; + // We should not initialize API in static constructor because it will create another API instance + private static IPublicAPI api = null; + private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService(); + private readonly string _resourceKey; public LocalizedDescriptionAttribute(string resourceKey) { - _translator = InternationalizationManager.Instance; _resourceKey = resourceKey; } @@ -17,7 +21,7 @@ namespace Flow.Launcher.Core.Resource { get { - string description = _translator.GetTranslation(_resourceKey); + string description = API.GetTranslation(_resourceKey); return string.IsNullOrWhiteSpace(description) ? string.Format("[[{0}]]", _resourceKey) : description; } diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index e5980b62f..59e76e2d2 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -16,6 +16,7 @@ using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; +using Flow.Launcher.Plugin.SharedModels; using Microsoft.Win32; namespace Flow.Launcher.Core.Resource @@ -81,11 +82,6 @@ namespace Flow.Launcher.Core.Resource #region Theme Resources - public string GetCurrentTheme() - { - return _settings.Theme; - } - private void MakeSureThemeDirectoriesExist() { foreach (var dir in _themeDirectories.Where(dir => !Directory.Exists(dir))) @@ -127,7 +123,7 @@ namespace Flow.Launcher.Core.Resource try { // Load a ResourceDictionary for the specified theme. - var themeName = GetCurrentTheme(); + var themeName = _settings.Theme; var dict = GetThemeResourceDictionary(themeName); // Apply font settings to the theme resource. @@ -330,7 +326,7 @@ namespace Flow.Launcher.Core.Resource private ResourceDictionary GetCurrentResourceDictionary() { - return GetResourceDictionary(GetCurrentTheme()); + return GetResourceDictionary(_settings.Theme); } private ThemeData GetThemeDataFromPath(string path) @@ -383,9 +379,20 @@ namespace Flow.Launcher.Core.Resource #endregion - #region Load & Change + #region Get & Change Theme - public List LoadAvailableThemes() + public ThemeData GetCurrentTheme() + { + var themes = GetAvailableThemes(); + var matchingTheme = themes.FirstOrDefault(t => t.FileNameWithoutExtension == _settings.Theme); + if (matchingTheme == null) + { + Log.Warn($"No matching theme found for '{_settings.Theme}'. Falling back to the first available theme."); + } + return matchingTheme ?? themes.FirstOrDefault(); + } + + public List GetAvailableThemes() { List themes = new List(); foreach (var themeDirectory in _themeDirectories) @@ -403,7 +410,7 @@ namespace Flow.Launcher.Core.Resource public bool ChangeTheme(string theme = null) { if (string.IsNullOrEmpty(theme)) - theme = GetCurrentTheme(); + theme = _settings.Theme; string path = GetThemePath(theme); try @@ -426,7 +433,7 @@ namespace Flow.Launcher.Core.Resource BlurEnabled = IsBlurTheme(); - // Can only apply blur but here also apply drop shadow effect to avoid possible drop shadow effect issues + // Apply blur and drop shadow effect so that we do not need to call it again _ = RefreshFrameAsync(); return true; @@ -591,7 +598,7 @@ namespace Flow.Launcher.Core.Resource { AutoDropShadow(useDropShadowEffect); } - SetBlurForWindow(GetCurrentTheme(), backdropType); + SetBlurForWindow(_settings.Theme, backdropType); if (!BlurEnabled) { @@ -610,7 +617,7 @@ namespace Flow.Launcher.Core.Resource // Get the actual backdrop type and drop shadow effect settings var (backdropType, _) = GetActualValue(); - SetBlurForWindow(GetCurrentTheme(), backdropType); + SetBlurForWindow(_settings.Theme, backdropType); }, DispatcherPriority.Render); } @@ -898,11 +905,5 @@ namespace Flow.Launcher.Core.Resource } #endregion - - #region Classes - - public record ThemeData(string FileNameWithoutExtension, string Name, bool? IsDark = null, bool? HasBlur = null); - - #endregion } } diff --git a/Flow.Launcher.Core/Resource/TranslationConverter.cs b/Flow.Launcher.Core/Resource/TranslationConverter.cs index ebab99e5b..eb0032758 100644 --- a/Flow.Launcher.Core/Resource/TranslationConverter.cs +++ b/Flow.Launcher.Core/Resource/TranslationConverter.cs @@ -1,19 +1,25 @@ using System; using System.Globalization; using System.Windows.Data; +using CommunityToolkit.Mvvm.DependencyInjection; +using Flow.Launcher.Plugin; namespace Flow.Launcher.Core.Resource { public class TranslationConverter : IValueConverter { + // We should not initialize API in static constructor because it will create another API instance + private static IPublicAPI api = null; + private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService(); + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var key = value.ToString(); - if (String.IsNullOrEmpty(key)) - return key; - return InternationalizationManager.Instance.GetTranslation(key); + if (string.IsNullOrEmpty(key)) return key; + return API.GetTranslation(key); } - public object ConvertBack(object value, System.Type targetType, object parameter, CultureInfo culture) => throw new System.InvalidOperationException(); + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => + throw new InvalidOperationException(); } } diff --git a/Flow.Launcher.Core/Storage/IRemovable.cs b/Flow.Launcher.Core/Storage/IRemovable.cs new file mode 100644 index 000000000..bcf1cdd5e --- /dev/null +++ b/Flow.Launcher.Core/Storage/IRemovable.cs @@ -0,0 +1,19 @@ +namespace Flow.Launcher.Core.Storage; + +/// +/// Remove storage instances from instance +/// +public interface IRemovable +{ + /// + /// Remove all instances of one plugin + /// + /// + public void RemovePluginSettings(string assemblyName); + + /// + /// Remove all instances of one plugin + /// + /// + public void RemovePluginCaches(string cacheDirectory); +} diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index b91da7114..f02b2297f 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -67,6 +67,7 @@ + diff --git a/Flow.Launcher.Infrastructure/Image/ImageCache.cs b/Flow.Launcher.Infrastructure/Image/ImageCache.cs index ddbab4ef0..b8c12868b 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageCache.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageCache.cs @@ -1,8 +1,6 @@ using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; using System.Windows.Media; using BitFaster.Caching.Lfu; @@ -55,7 +53,6 @@ namespace Flow.Launcher.Infrastructure.Image return image != null; } - image = null; return false; } diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index 01abf8995..9e31d2b4e 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -7,13 +7,22 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Media; using System.Windows.Media.Imaging; -using Flow.Launcher.Infrastructure.Logger; +using CommunityToolkit.Mvvm.DependencyInjection; using Flow.Launcher.Infrastructure.Storage; +using Flow.Launcher.Plugin; +using SharpVectors.Converters; +using SharpVectors.Renderers.Wpf; namespace Flow.Launcher.Infrastructure.Image { public static class ImageLoader { + // We should not initialize API in static constructor because it will create another API instance + private static IPublicAPI api = null; + private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService(); + + private static readonly string ClassName = nameof(ImageLoader); + private static readonly ImageCache ImageCache = new(); private static SemaphoreSlim storageLock { get; } = new SemaphoreSlim(1, 1); private static BinaryStorage> _storage; @@ -25,8 +34,10 @@ namespace Flow.Launcher.Infrastructure.Image public static ImageSource LoadingImage { get; } = new BitmapImage(new Uri(Constant.LoadingImgIcon)); public const int SmallIconSize = 64; public const int FullIconSize = 256; + public const int FullImageSize = 320; private static readonly string[] ImageExtensions = { ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".ico" }; + private static readonly string SvgExtension = ".svg"; public static async Task InitializeAsync() { @@ -34,6 +45,7 @@ namespace Flow.Launcher.Infrastructure.Image _hashGenerator = new ImageHashGenerator(); var usage = await LoadStorageToConcurrentDictionaryAsync(); + _storage.ClearData(); ImageCache.Initialize(usage); @@ -46,15 +58,14 @@ namespace Flow.Launcher.Infrastructure.Image _ = Task.Run(async () => { - await Stopwatch.NormalAsync("|ImageLoader.Initialize|Preload images cost", async () => + await API.StopwatchLogInfoAsync(ClassName, "Preload images cost", async () => { foreach (var (path, isFullImage) in usage) { await LoadAsync(path, isFullImage); } }); - Log.Info( - $"|ImageLoader.Initialize|Number of preload images is <{ImageCache.CacheSize()}>, Images Number: {ImageCache.CacheSize()}, Unique Items {ImageCache.UniqueImagesInCache()}"); + API.LogInfo(ClassName, $"Number of preload images is <{ImageCache.CacheSize()}>, Images Number: {ImageCache.CacheSize()}, Unique Items {ImageCache.UniqueImagesInCache()}"); }); } @@ -70,7 +81,7 @@ namespace Flow.Launcher.Infrastructure.Image } catch (System.Exception e) { - Log.Exception($"|ImageLoader.SaveAsync|Failed to save image cache to file", e); + API.LogException(ClassName, "Failed to save image cache to file", e); } finally { @@ -165,8 +176,8 @@ namespace Flow.Launcher.Infrastructure.Image } catch (System.Exception e2) { - Log.Exception($"|ImageLoader.Load|Failed to get thumbnail for {path} on first try", e); - Log.Exception($"|ImageLoader.Load|Failed to get thumbnail for {path} on second try", e2); + API.LogException(ClassName, $"|ImageLoader.Load|Failed to get thumbnail for {path} on first try", e); + API.LogException(ClassName, $"|ImageLoader.Load|Failed to get thumbnail for {path} on second try", e2); ImageSource image = ImageCache[Constant.MissingImgIcon, false]; ImageCache[path, false] = image; @@ -228,10 +239,11 @@ namespace Flow.Launcher.Infrastructure.Image image = LoadFullImage(path); type = ImageType.FullImageFile; } - catch (NotSupportedException) + catch (NotSupportedException ex) { image = Image; type = ImageType.Error; + API.LogException(ClassName, $"Failed to load image file from path {path}: {ex.Message}", ex); } } else @@ -244,6 +256,20 @@ namespace Flow.Launcher.Infrastructure.Image image = GetThumbnail(path, ThumbnailOptions.ThumbnailOnly); } } + else if (extension == SvgExtension) + { + try + { + image = LoadSvgImage(path, loadFullImage); + type = ImageType.FullImageFile; + } + catch (System.Exception ex) + { + image = Image; + type = ImageType.Error; + API.LogException(ClassName, $"Failed to load SVG image from path {path}: {ex.Message}", ex); + } + } else { type = ImageType.File; @@ -317,7 +343,7 @@ namespace Flow.Launcher.Infrastructure.Image return img; } - private static BitmapImage LoadFullImage(string path) + private static ImageSource LoadFullImage(string path) { BitmapImage image = new BitmapImage(); image.BeginInit(); @@ -326,24 +352,24 @@ namespace Flow.Launcher.Infrastructure.Image image.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; image.EndInit(); - if (image.PixelWidth > 320) + if (image.PixelWidth > FullImageSize) { BitmapImage resizedWidth = new BitmapImage(); resizedWidth.BeginInit(); resizedWidth.CacheOption = BitmapCacheOption.OnLoad; resizedWidth.UriSource = new Uri(path); resizedWidth.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; - resizedWidth.DecodePixelWidth = 320; + resizedWidth.DecodePixelWidth = FullImageSize; resizedWidth.EndInit(); - if (resizedWidth.PixelHeight > 320) + if (resizedWidth.PixelHeight > FullImageSize) { BitmapImage resizedHeight = new BitmapImage(); resizedHeight.BeginInit(); resizedHeight.CacheOption = BitmapCacheOption.OnLoad; resizedHeight.UriSource = new Uri(path); resizedHeight.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; - resizedHeight.DecodePixelHeight = 320; + resizedHeight.DecodePixelHeight = FullImageSize; resizedHeight.EndInit(); return resizedHeight; } @@ -353,5 +379,50 @@ namespace Flow.Launcher.Infrastructure.Image return image; } + + private static ImageSource LoadSvgImage(string path, bool loadFullImage = false) + { + // Set up drawing settings + var desiredHeight = loadFullImage ? FullImageSize : SmallIconSize; + var drawingSettings = new WpfDrawingSettings + { + IncludeRuntime = true, + // Set IgnoreRootViewbox to false to respect the SVG's viewBox + IgnoreRootViewbox = false + }; + + // Load and render the SVG + var converter = new FileSvgReader(drawingSettings); + var drawing = converter.Read(new Uri(path)); + + // Calculate scale to achieve desired height + var drawingBounds = drawing.Bounds; + if (drawingBounds.Height <= 0) + { + throw new InvalidOperationException($"Invalid SVG dimensions: Height must be greater than zero in {path}"); + } + var scale = desiredHeight / drawingBounds.Height; + var scaledWidth = drawingBounds.Width * scale; + var scaledHeight = drawingBounds.Height * scale; + + // Convert the Drawing to a Bitmap + var drawingVisual = new DrawingVisual(); + using (DrawingContext drawingContext = drawingVisual.RenderOpen()) + { + drawingContext.PushTransform(new ScaleTransform(scale, scale)); + drawingContext.DrawDrawing(drawing); + } + + // Create a RenderTargetBitmap to hold the rendered image + var bitmap = new RenderTargetBitmap( + (int)Math.Ceiling(scaledWidth), + (int)Math.Ceiling(scaledHeight), + 96, // DpiX + 96, // DpiY + PixelFormats.Pbgra32); + bitmap.Render(drawingVisual); + + return bitmap; + } } } diff --git a/Flow.Launcher.Infrastructure/Logger/Log.cs b/Flow.Launcher.Infrastructure/Logger/Log.cs index 9f5d6725e..807d631c7 100644 --- a/Flow.Launcher.Infrastructure/Logger/Log.cs +++ b/Flow.Launcher.Infrastructure/Logger/Log.cs @@ -1,12 +1,12 @@ using System.Diagnostics; using System.IO; using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using Flow.Launcher.Infrastructure.UserSettings; using NLog; using NLog.Config; using NLog.Targets; -using Flow.Launcher.Infrastructure.UserSettings; using NLog.Targets.Wrappers; -using System.Runtime.ExceptionServices; namespace Flow.Launcher.Infrastructure.Logger { diff --git a/Flow.Launcher.Infrastructure/NativeMethods.txt b/Flow.Launcher.Infrastructure/NativeMethods.txt index 363ecb9d0..18b206022 100644 --- a/Flow.Launcher.Infrastructure/NativeMethods.txt +++ b/Flow.Launcher.Infrastructure/NativeMethods.txt @@ -11,11 +11,6 @@ GetModuleHandle GetKeyState VIRTUAL_KEY -WM_KEYDOWN -WM_KEYUP -WM_SYSKEYDOWN -WM_SYSKEYUP - EnumWindows DwmSetWindowAttribute diff --git a/Flow.Launcher.Infrastructure/Stopwatch.cs b/Flow.Launcher.Infrastructure/Stopwatch.cs index dd6edaff9..784d323fe 100644 --- a/Flow.Launcher.Infrastructure/Stopwatch.cs +++ b/Flow.Launcher.Infrastructure/Stopwatch.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; using Flow.Launcher.Infrastructure.Logger; @@ -7,8 +6,6 @@ namespace Flow.Launcher.Infrastructure { public static class Stopwatch { - private static readonly Dictionary Count = new Dictionary(); - private static readonly object Locker = new object(); /// /// This stopwatch will appear only in Debug mode /// @@ -62,36 +59,5 @@ namespace Flow.Launcher.Infrastructure Log.Info(info); return milliseconds; } - - - - public static void StartCount(string name, Action action) - { - var stopWatch = new System.Diagnostics.Stopwatch(); - stopWatch.Start(); - action(); - stopWatch.Stop(); - var milliseconds = stopWatch.ElapsedMilliseconds; - lock (Locker) - { - if (Count.ContainsKey(name)) - { - Count[name] += milliseconds; - } - else - { - Count[name] = 0; - } - } - } - - public static void EndCount() - { - foreach (var key in Count.Keys) - { - string info = $"{key} already cost {Count[key]}ms"; - Log.Debug(info); - } - } } } diff --git a/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs b/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs index a8d5f5d62..43bb8dade 100644 --- a/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs +++ b/Flow.Launcher.Infrastructure/Storage/BinaryStorage.cs @@ -2,9 +2,12 @@ using System.Threading.Tasks; using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; +using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; using MemoryPack; +#nullable enable + namespace Flow.Launcher.Infrastructure.Storage { /// @@ -12,44 +15,55 @@ namespace Flow.Launcher.Infrastructure.Storage /// Normally, it has better performance, but not readable /// /// - /// It utilize MemoryPack, which means the object must be MemoryPackSerializable + /// It utilizes MemoryPack, which means the object must be MemoryPackSerializable /// - public class BinaryStorage + public class BinaryStorage : ISavable { + protected T? Data; + public const string FileSuffix = ".cache"; - // Let the derived class to set the file path - public BinaryStorage(string filename, string directoryPath = null) - { - directoryPath ??= DataLocation.CacheDirectory; - FilesFolders.ValidateDirectory(directoryPath); + protected string FilePath { get; init; } = null!; - FilePath = Path.Combine(directoryPath, $"{filename}{FileSuffix}"); + protected string DirectoryPath { get; init; } = null!; + + // Let the derived class to set the file path + protected BinaryStorage() + { } - public string FilePath { get; } + public BinaryStorage(string filename) + { + DirectoryPath = DataLocation.CacheDirectory; + FilesFolders.ValidateDirectory(DirectoryPath); + + FilePath = Path.Combine(DirectoryPath, $"{filename}{FileSuffix}"); + } public async ValueTask TryLoadAsync(T defaultData) { + if (Data != null) return Data; + if (File.Exists(FilePath)) { if (new FileInfo(FilePath).Length == 0) { Log.Error($"|BinaryStorage.TryLoad|Zero length cache file <{FilePath}>"); - await SaveAsync(defaultData); - return defaultData; + Data = defaultData; + await SaveAsync(); } await using var stream = new FileStream(FilePath, FileMode.Open); - var d = await DeserializeAsync(stream, defaultData); - return d; + Data = await DeserializeAsync(stream, defaultData); } else { Log.Info("|BinaryStorage.TryLoad|Cache file not exist, load default data"); - await SaveAsync(defaultData); - return defaultData; + Data = defaultData; + await SaveAsync(); } + + return Data; } private static async ValueTask DeserializeAsync(Stream stream, T defaultData) @@ -57,7 +71,7 @@ namespace Flow.Launcher.Infrastructure.Storage try { var t = await MemoryPackSerializer.DeserializeAsync(stream); - return t; + return t ?? defaultData; } catch (System.Exception) { @@ -66,6 +80,27 @@ namespace Flow.Launcher.Infrastructure.Storage } } + public void Save() + { + var serialized = MemoryPackSerializer.Serialize(Data); + + File.WriteAllBytes(FilePath, serialized); + } + + public async ValueTask SaveAsync() + { + await SaveAsync(Data.NonNull()); + } + + // ImageCache need to convert data into concurrent dictionary for usage, + // so we would better to clear the data + public void ClearData() + { + Data = default; + } + + // ImageCache storages data in its class, + // so we need to pass it to SaveAsync public async ValueTask SaveAsync(T data) { await using var stream = new FileStream(FilePath, FileMode.Create); diff --git a/Flow.Launcher.Infrastructure/Storage/JsonStorage.cs b/Flow.Launcher.Infrastructure/Storage/JsonStorage.cs index a3488124b..cdf3ae909 100644 --- a/Flow.Launcher.Infrastructure/Storage/JsonStorage.cs +++ b/Flow.Launcher.Infrastructure/Storage/JsonStorage.cs @@ -1,18 +1,20 @@ -#nullable enable -using System; +using System; using System.Globalization; using System.IO; using System.Text.Json; using System.Threading.Tasks; using Flow.Launcher.Infrastructure.Logger; +using Flow.Launcher.Plugin; using Flow.Launcher.Plugin.SharedCommands; +#nullable enable + namespace Flow.Launcher.Infrastructure.Storage { /// /// Serialize object using json format. /// - public class JsonStorage where T : new() + public class JsonStorage : ISavable where T : new() { protected T? Data; diff --git a/Flow.Launcher.Infrastructure/Storage/PluginBinaryStorage.cs b/Flow.Launcher.Infrastructure/Storage/PluginBinaryStorage.cs new file mode 100644 index 000000000..d18060e3d --- /dev/null +++ b/Flow.Launcher.Infrastructure/Storage/PluginBinaryStorage.cs @@ -0,0 +1,49 @@ +using System.IO; +using System.Threading.Tasks; +using CommunityToolkit.Mvvm.DependencyInjection; +using Flow.Launcher.Plugin; +using Flow.Launcher.Plugin.SharedCommands; + +namespace Flow.Launcher.Infrastructure.Storage +{ + public class PluginBinaryStorage : BinaryStorage where T : new() + { + private static readonly string ClassName = "PluginBinaryStorage"; + + // We should not initialize API in static constructor because it will create another API instance + private static IPublicAPI api = null; + private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService(); + + public PluginBinaryStorage(string cacheName, string cacheDirectory) + { + DirectoryPath = cacheDirectory; + FilesFolders.ValidateDirectory(DirectoryPath); + + FilePath = Path.Combine(DirectoryPath, $"{cacheName}{FileSuffix}"); + } + + public new void Save() + { + try + { + base.Save(); + } + catch (System.Exception e) + { + API.LogException(ClassName, $"Failed to save plugin caches to path: {FilePath}", e); + } + } + + public new async Task SaveAsync() + { + try + { + await base.SaveAsync(); + } + catch (System.Exception e) + { + API.LogException(ClassName, $"Failed to save plugin caches to path: {FilePath}", e); + } + } + } +} diff --git a/Flow.Launcher.Infrastructure/UI/EnumBindingSource.cs b/Flow.Launcher.Infrastructure/UI/EnumBindingSource.cs index 350c892cf..f9504e6d9 100644 --- a/Flow.Launcher.Infrastructure/UI/EnumBindingSource.cs +++ b/Flow.Launcher.Infrastructure/UI/EnumBindingSource.cs @@ -3,6 +3,7 @@ using System.Windows.Markup; namespace Flow.Launcher.Infrastructure.UI { + [Obsolete("EnumBindingSourceExtension is obsolete. Use with Flow.Launcher.Localization NuGet package instead.")] public class EnumBindingSourceExtension : MarkupExtension { private Type _enumType; diff --git a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs index da92a3583..7fb9b895a 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs @@ -120,10 +120,9 @@ namespace Flow.Launcher.Infrastructure.UserSettings public int Priority { get; set; } [JsonIgnore] - public SearchDelayTime? DefaultSearchDelayTime { get; set; } + public int? DefaultSearchDelayTime { get; set; } - [JsonConverter(typeof(JsonStringEnumConverter))] - public SearchDelayTime? SearchDelayTime { get; set; } + public int? SearchDelayTime { get; set; } /// /// Used only to save the state of the plugin in settings diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 6cb20d12f..e304a1b50 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -321,9 +321,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings public bool HideWhenDeactivated { get; set; } = true; public bool SearchQueryResultsWithDelay { get; set; } - - [JsonConverter(typeof(JsonStringEnumConverter))] - public SearchDelayTime SearchDelayTime { get; set; } = SearchDelayTime.Normal; + public int SearchDelayTime { get; set; } = 150; [JsonConverter(typeof(JsonStringEnumConverter))] public SearchWindowScreens SearchWindowScreen { get; set; } = SearchWindowScreens.Cursor; diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs index 1620d373a..a73ead814 100644 --- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs +++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs @@ -1,6 +1,4 @@ -using Flow.Launcher.Plugin.SharedModels; -using JetBrains.Annotations; -using System; +using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; @@ -9,6 +7,8 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; +using Flow.Launcher.Plugin.SharedModels; +using JetBrains.Annotations; namespace Flow.Launcher.Plugin { @@ -142,15 +142,47 @@ namespace Flow.Launcher.Plugin List GetAllPlugins(); /// - /// Register a callback for Global Keyboard Event + /// Registers a callback function for global keyboard events. /// - /// + /// + /// The callback function to invoke when a global keyboard event occurs. + /// + /// Parameters: + /// + /// int: The type of (key down, key up, etc.) + /// int: The virtual key code of the pressed/released key + /// : The state of modifier keys (Ctrl, Alt, Shift, etc.) + /// + /// + /// + /// Returns: true to allow normal system processing of the key event, + /// or false to intercept and prevent default handling. + /// + /// + /// + /// This callback will be invoked for all keyboard events system-wide. + /// Use with caution as intercepting system keys may affect normal system operation. + /// public void RegisterGlobalKeyboardCallback(Func callback); - + /// /// Remove a callback for Global Keyboard Event /// - /// + /// + /// The callback function to invoke when a global keyboard event occurs. + /// + /// Parameters: + /// + /// int: The type of (key down, key up, etc.) + /// int: The virtual key code of the pressed/released key + /// : The state of modifier keys (Ctrl, Alt, Shift, etc.) + /// + /// + /// + /// Returns: true to allow normal system processing of the key event, + /// or false to intercept and prevent default handling. + /// + /// public void RemoveGlobalKeyboardCallback(Func callback); /// @@ -228,6 +260,11 @@ namespace Flow.Launcher.Plugin /// void LogWarn(string className, string message, [CallerMemberName] string methodName = ""); + /// + /// Log error message. Preferred error logging method for plugins. + /// + void LogError(string className, string message, [CallerMemberName] string methodName = ""); + /// /// Log an Exception. Will throw if in debug mode so developer will be aware, /// otherwise logs the eror message. This is the primary logging method used for Flow @@ -347,7 +384,63 @@ namespace Flow.Launcher.Plugin public void StopLoadingBar(); /// - /// Load image from path. Support local, remote and data:image url. + /// Get all available themes + /// + /// + public List GetAvailableThemes(); + + /// + /// Get the current theme + /// + /// + public ThemeData GetCurrentTheme(); + + /// + /// Set the current theme + /// + /// + /// + /// True if the theme is set successfully, false otherwise. + /// + public bool SetCurrentTheme(ThemeData theme); + + /// + /// Save all Flow's plugins caches + /// + void SavePluginCaches(); + + /// + /// Load BinaryStorage for current plugin's cache. This is the method used to load cache from binary in Flow. + /// When the file is not exist, it will create a new instance for the specific type. + /// + /// Type for deserialization + /// Cache file name + /// Cache directory from plugin metadata + /// Default data to return + /// + /// + /// BinaryStorage utilizes MemoryPack, which means the object must be MemoryPackSerializable + /// + Task LoadCacheBinaryStorageAsync(string cacheName, string cacheDirectory, T defaultData) where T : new(); + + /// + /// Save BinaryStorage for current plugin's cache. This is the method used to save cache to binary in Flow.Launcher + /// This method will save the original instance loaded with LoadCacheBinaryStorageAsync. + /// This API call is for manually Save. Flow will automatically save all cache type that has called LoadCacheBinaryStorageAsync or SaveCacheBinaryStorageAsync previously. + /// + /// Type for Serialization + /// Cache file name + /// Cache directory from plugin metadata + /// + /// + /// BinaryStorage utilizes MemoryPack, which means the object must be MemoryPackSerializable + /// + Task SaveCacheBinaryStorageAsync(string cacheName, string cacheDirectory) where T : new(); + + /// + /// Load image from path. + /// Support local, remote and data:image url. + /// Support png, jpg, jpeg, gif, bmp, tiff, ico, svg image files. /// If image path is missing, it will return a missing icon. /// /// The path of the image. @@ -361,6 +454,7 @@ namespace Flow.Launcher.Plugin /// ValueTask LoadImageAsync(string path, bool loadFullImage = false, bool cacheImage = true); + /// /// Update the plugin manifest /// /// @@ -416,5 +510,31 @@ namespace Flow.Launcher.Plugin /// /// public Task UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false); + + /// + /// Log debug message of the time taken to execute a method + /// Message will only be logged in Debug mode + /// + /// The time taken to execute the method in milliseconds + public long StopwatchLogDebug(string className, string message, Action action, [CallerMemberName] string methodName = ""); + + /// + /// Log debug message of the time taken to execute a method asynchronously + /// Message will only be logged in Debug mode + /// + /// The time taken to execute the method in milliseconds + public Task StopwatchLogDebugAsync(string className, string message, Func action, [CallerMemberName] string methodName = ""); + + /// + /// Log info message of the time taken to execute a method + /// + /// The time taken to execute the method in milliseconds + public long StopwatchLogInfo(string className, string message, Action action, [CallerMemberName] string methodName = ""); + + /// + /// Log info message of the time taken to execute a method asynchronously + /// + /// The time taken to execute the method in milliseconds + public Task StopwatchLogInfoAsync(string className, string message, Func action, [CallerMemberName] string methodName = ""); } } diff --git a/Flow.Launcher.Plugin/Interfaces/ISavable.cs b/Flow.Launcher.Plugin/Interfaces/ISavable.cs index 77bd304e4..38cbf8e08 100644 --- a/Flow.Launcher.Plugin/Interfaces/ISavable.cs +++ b/Flow.Launcher.Plugin/Interfaces/ISavable.cs @@ -1,18 +1,21 @@ -namespace Flow.Launcher.Plugin +namespace Flow.Launcher.Plugin { /// - /// Inherit this interface if additional data e.g. cache needs to be saved. + /// Inherit this interface if you need to save additional data which is not a setting or cache, + /// please implement this interface. /// /// /// For storing plugin settings, prefer - /// or . - /// Once called, your settings will be automatically saved by Flow. + /// or . + /// For storing plugin caches, prefer + /// or . + /// Once called, those settings and caches will be automatically saved by Flow. /// public interface ISavable : IFeatures { /// - /// Save additional plugin data, such as cache. + /// Save additional plugin data. /// void Save(); } -} \ No newline at end of file +} diff --git a/Flow.Launcher.Infrastructure/Hotkey/KeyEvent.cs b/Flow.Launcher.Plugin/KeyEvent.cs similarity index 61% rename from Flow.Launcher.Infrastructure/Hotkey/KeyEvent.cs rename to Flow.Launcher.Plugin/KeyEvent.cs index 95bb25837..321f17cc1 100644 --- a/Flow.Launcher.Infrastructure/Hotkey/KeyEvent.cs +++ b/Flow.Launcher.Plugin/KeyEvent.cs @@ -1,7 +1,12 @@ using Windows.Win32; -namespace Flow.Launcher.Infrastructure.Hotkey +namespace Flow.Launcher.Plugin { + /// + /// Enumeration of key events for + /// + /// and + /// public enum KeyEvent { /// diff --git a/Flow.Launcher.Plugin/NativeMethods.txt b/Flow.Launcher.Plugin/NativeMethods.txt index e3e2b705e..0596691cc 100644 --- a/Flow.Launcher.Plugin/NativeMethods.txt +++ b/Flow.Launcher.Plugin/NativeMethods.txt @@ -1,3 +1,8 @@ EnumThreadWindows GetWindowText -GetWindowTextLength \ No newline at end of file +GetWindowTextLength + +WM_KEYDOWN +WM_KEYUP +WM_SYSKEYDOWN +WM_SYSKEYUP \ No newline at end of file diff --git a/Flow.Launcher.Plugin/PluginMetadata.cs b/Flow.Launcher.Plugin/PluginMetadata.cs index 1496765ce..da10bc6a5 100644 --- a/Flow.Launcher.Plugin/PluginMetadata.cs +++ b/Flow.Launcher.Plugin/PluginMetadata.cs @@ -99,10 +99,9 @@ namespace Flow.Launcher.Plugin public bool HideActionKeywordPanel { get; set; } /// - /// Plugin search delay time. Null means use default search delay time. + /// Plugin search delay time in ms. Null means use default search delay time. /// - [JsonConverter(typeof(JsonStringEnumConverter))] - public SearchDelayTime? SearchDelayTime { get; set; } = null; + public int? SearchDelayTime { get; set; } = null; /// /// Plugin icon path. diff --git a/Flow.Launcher.Plugin/SearchDelayTime.cs b/Flow.Launcher.Plugin/SearchDelayTime.cs deleted file mode 100644 index ae1daabe0..000000000 --- a/Flow.Launcher.Plugin/SearchDelayTime.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Flow.Launcher.Plugin; - -/// -/// Enum for search delay time -/// -public enum SearchDelayTime -{ - /// - /// Very long search delay time. 250ms. - /// - VeryLong, - - /// - /// Long search delay time. 200ms. - /// - Long, - - /// - /// Normal search delay time. 150ms. Default value. - /// - Normal, - - /// - /// Short search delay time. 100ms. - /// - Short, - - /// - /// Very short search delay time. 50ms. - /// - VeryShort -} diff --git a/Flow.Launcher.Plugin/SharedModels/ThemeData.cs b/Flow.Launcher.Plugin/SharedModels/ThemeData.cs new file mode 100644 index 000000000..cb389c21f --- /dev/null +++ b/Flow.Launcher.Plugin/SharedModels/ThemeData.cs @@ -0,0 +1,77 @@ +using System; + +namespace Flow.Launcher.Plugin.SharedModels; + +/// +/// Theme data model +/// +public class ThemeData +{ + /// + /// Theme file name without extension + /// + public string FileNameWithoutExtension { get; private init; } + + /// + /// Theme name + /// + public string Name { get; private init; } + + /// + /// Indicates whether the theme supports dark mode + /// + public bool? IsDark { get; private init; } + + /// + /// Indicates whether the theme supports blur effects + /// + public bool? HasBlur { get; private init; } + + /// + /// Theme data constructor + /// + public ThemeData(string fileNameWithoutExtension, string name, bool? isDark = null, bool? hasBlur = null) + { + FileNameWithoutExtension = fileNameWithoutExtension; + Name = name; + IsDark = isDark; + HasBlur = hasBlur; + } + + /// + public static bool operator ==(ThemeData left, ThemeData right) + { + if (left is null && right is null) + return true; + if (left is null || right is null) + return false; + return left.Equals(right); + } + + /// + public static bool operator !=(ThemeData left, ThemeData right) + { + return !(left == right); + } + + /// + public override bool Equals(object obj) + { + if (obj is not ThemeData other) + return false; + return FileNameWithoutExtension == other.FileNameWithoutExtension && + Name == other.Name; + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(FileNameWithoutExtension, Name); + } + + /// + public override string ToString() + { + return Name; + } +} diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs index 81938612c..90fefe0a6 100644 --- a/Flow.Launcher/App.xaml.cs +++ b/Flow.Launcher/App.xaml.cs @@ -21,7 +21,6 @@ using Flow.Launcher.Plugin; using Flow.Launcher.ViewModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; namespace Flow.Launcher { @@ -35,6 +34,8 @@ namespace Flow.Launcher #region Private Fields + private static readonly string ClassName = nameof(App); + private static bool _disposed; private MainWindow _mainWindow; private readonly MainViewModel _mainVM; @@ -136,7 +137,7 @@ namespace Flow.Launcher private async void OnStartup(object sender, StartupEventArgs e) { - await Stopwatch.NormalAsync("|App.OnStartup|Startup cost", async () => + await API.StopwatchLogInfoAsync(ClassName, "Startup cost", async () => { // Because new message box api uses MessageBoxEx window, // if it is created and closed before main window is created, it will cause the application to exit. @@ -313,7 +314,7 @@ namespace Flow.Launcher _disposed = true; } - Stopwatch.Normal("|App.Dispose|Dispose cost", () => + API.StopwatchLogInfo(ClassName, "Dispose cost", () => { Log.Info("|App.Dispose|Begin Flow Launcher dispose ----------------------------------------------------"); diff --git a/Flow.Launcher/Languages/ar.xaml b/Flow.Launcher/Languages/ar.xaml index a57179da6..b5eafaae9 100644 --- a/Flow.Launcher/Languages/ar.xaml +++ b/Flow.Launcher/Languages/ar.xaml @@ -7,6 +7,11 @@ انقر فوق لا إذا كان مثبتاً بالفعل، وسوف يطلب منك تحديد المجلد الذي يحتوي على {1} القابل للتنفيذ الرجاء اختيار الملف التنفيذي لـ {0} + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + تعذر تعيين مسار الملف التنفيذي لـ {0}، يرجى المحاولة من إعدادات Flow (قم بالتمرير إلى الأسفل). فشل في تهيئة الإضافات الإضافات: {0} - فشل في التحميل وسيتم تعطيلها، يرجى الاتصال بمطور الإضافة للحصول على المساعدة @@ -37,7 +42,7 @@ وضع اللعب تعليق استخدام مفاتيح التشغيل السريع. إعادة تعيين الموقع - إعادة تعيين موضع نافذة البحث + Type here to search الإعدادات @@ -70,8 +75,6 @@ تفريغ الاستعلام الأخير Preserve Last Action Keyword Select Last Action Keyword - ارتفاع ثابت للنافذة - ارتفاع النافذة غير قابل للتعديل عن طريق السحب. الحد الأقصى للنتائج المعروضة يمكنك أيضًا تعديل هذا بسرعة باستخدام CTRL+Plus وCTRL+Minus. تجاهل مفاتيح التشغيل السريع في وضع ملء الشاشة @@ -102,6 +105,15 @@ دائمًا معاينة فتح لوحة المعاينة دائمًا عند تنشيط Flow. اضغط على {0} للتبديل بين المعاينة وعدمها. تأثير الظل غير مسموح به بينما يتم تمكين تأثير التمويه في السمة الحالية + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short البحث عن إضافة @@ -118,6 +130,8 @@ كلمة الفعل الحالية كلمة فعل جديدة تغيير كلمات الفعل + Plugin seach delay time + Change Plugin Seach Delay Time الأولوية الحالية أولوية جديدة الأولوية @@ -131,6 +145,9 @@ إلغاء التثبيت Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default متجر الإضافات @@ -193,8 +210,20 @@ مخصص الساعة التاريخ + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + بلا + Acrylic + Mica + Mica Alt هذه السمة تدعم الوضعين (فاتح/داكن). هذه السمة تدعم الخلفية الضبابية الشفافة. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. مفتاح الاختصار @@ -294,6 +323,9 @@ مجلد السجلات مسح السجلات هل أنت متأكد أنك تريد حذف جميع السجلات؟ + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information معالج الترحيب موقع بيانات المستخدم يتم حفظ إعدادات المستخدم والإضافات المثبتة في مجلد بيانات المستخدم. قد يختلف هذا الموقع اعتمادًا على ما إذا كان في وضع النقل أم لا. @@ -335,9 +367,16 @@ لا يمكن العثور على الإضافة المحددة كلمة المفتاح الجديدة لا يمكن أن تكون فارغة تم تعيين كلمة المفتاح الجديدة هذه إلى إضافة أخرى، يرجى اختيار كلمة أخرى + This new Action Keyword is the same as old, please choose a different one نجاح اكتمل بنجاح - أدخل كلمة المفتاح التي ترغب في استخدامها لبدء الإضافة. استخدم * إذا كنت لا ترغب في تحديد أي كلمة، وسيتم تشغيل الإضافة بدون كلمات مفتاحية. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time مفتاح اختصار الاستعلام المخصص diff --git a/Flow.Launcher/Languages/cs.xaml b/Flow.Launcher/Languages/cs.xaml index 92721b70a..806e9f203 100644 --- a/Flow.Launcher/Languages/cs.xaml +++ b/Flow.Launcher/Languages/cs.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Herní režim Potlačit užívání klávesových zkratek. Obnovit pozici - Obnovit pozici vyhledávacího okna + Type here to search Nastavení @@ -70,8 +75,6 @@ Smazat poslední dotaz Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. Počet zobrazených výsledků Toto nastavení můžete také rychle upravit pomocí CTRL + Plus a CTRL + Minus. Ignorovat klávesové zkratky v režimu celé obrazovky @@ -102,6 +105,15 @@ Vždy zobrazit náhled Při aktivaci služby Flow vždy otevřete panel náhledu. Stisknutím klávesy {0} přepnete náhled. Stínový efekt není povolen, pokud je aktivní efekt rozostření + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Vyhledat plugin @@ -118,6 +130,8 @@ Aktuální aktivační příkaz Nový aktivační příkaz Upravit aktivační příkaz + Plugin seach delay time + Change Plugin Seach Delay Time Aktuální priorita Nová priorita Priorita @@ -131,6 +145,9 @@ Odinstalovat Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Obchod s pluginy @@ -193,8 +210,20 @@ Vlastní Hodiny Datum + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Klávesová zkratka @@ -294,6 +323,9 @@ Složka s logy Vymazat logy Opravdu chcete odstranit všechny logy? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Průvodce 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. @@ -335,9 +367,16 @@ Nepodařilo se najít zadaný plugin Nový aktivační příkaz nemůže být prázdný Nový aktivační příkaz byl již přiřazen jinému pluginu, vyberte jiný aktivační příkaz + This new Action Keyword is the same as old, please choose a different one Úspěšné Úspěšně dokončeno - Zadejte aktivační příkaz, který je nutný ke spuštění pluginu. Pokud nechcete zadávat aktivační příkaz, použijte * a plugin bude spuštěn bez aktivačního příkazu. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Vlastní klávesová zkratka pro vyhledávání diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml index 629173f74..6055a79e1 100644 --- a/Flow.Launcher/Languages/da.xaml +++ b/Flow.Launcher/Languages/da.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Game Mode Suspend the use of Hotkeys. Position Reset - Reset search window position + Type here to search Indstillinger @@ -70,8 +75,6 @@ Empty last Query Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. Maksimum antal resultater vist You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. Ignorer genvejstaster i fuldskærmsmode @@ -102,6 +105,15 @@ 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 + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Search Plugin @@ -118,6 +130,8 @@ Current action keyword New action keyword Change Action Keywords + Plugin seach delay time + Change Plugin Seach Delay Time Current Priority New Priority Priority @@ -131,6 +145,9 @@ Uninstall Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Plugin Store @@ -193,8 +210,20 @@ Custom Clock Date + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Genvejstast @@ -294,6 +323,9 @@ Log Folder Clear Logs Are you sure you want to delete all logs? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 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. @@ -335,9 +367,16 @@ Kan ikke finde det valgte plugin Nyt nøgleord må ikke være tomt Nyt nøgleord er tilknyttet et andet plugin, tilknyt venligst et andet nyt nøgeleord + This new Action Keyword is the same as old, please choose a different one Fortsæt Completed successfully - Brug * hvis du ikke vil angive et nøgleord + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Tilpasset søgegenvejstast diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml index 8a7e3498a..4fb441d8c 100644 --- a/Flow.Launcher/Languages/de.xaml +++ b/Flow.Launcher/Languages/de.xaml @@ -7,13 +7,18 @@ Klicken Sie auf „Nein“, wenn es bereits installiert ist, und Sie werden aufgefordert, den Ordner auszuwählen, der die ausführbare Datei {1} enthält Bitte wählen Sie die ausführbare Datei {0} aus + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Der Pfad zur ausführbaren Datei {0} kann nicht festgelegt werden. Bitte versuchen Sie es in den Einstellungen von Flow (scrollen Sie nach unten). Plug-ins können nicht initialisiert werden - Plug-ins: {0} - nicht geladen werden und wird deaktiviert, bitte kontaktiere Sie den Ersteller des Plug-ins für Hilfe + Plug-ins: {0} - nicht geladen werden und wird deaktiviert, bitte kontaktieren Sie den Ersteller des Plug-ins für Hilfe Hotkey "{0}" konnte nicht registriert werden. Der Hotkey ist möglicherweise von einem anderen Programm in Verwendung. Wechseln Sie zu einem anderen Hotkey oder beenden Sie das andere Programm. - Failed to unregister hotkey "{0}". Please try again or see log for details + Registrierung des Hotkeys "{0}" konnte nicht aufgehoben werden. Bitte versuchen Sie es erneut oder lesen Sie das Log für Details Flow Launcher Konnte nicht gestartet werden {0} Flow Launcher Plug-in-Dateiformat ungültig @@ -37,7 +42,7 @@ Spielmodus Aussetzen der Verwendung von Hotkeys. Position zurücksetzen - Position des Suchfensters zurücksetze + Type here to search Einstellungen @@ -45,9 +50,9 @@ Portabler Modus Speichern Sie alle Einstellungen und Benutzerdaten in einem Ordner (nützlich bei Verwendung von Wechsellaufwerken oder Cloud-Diensten). Flow Launcher bei Systemstart starten - Use logon task instead of startup entry for faster startup experience - After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler - Fehler bei Einstellungsstart bei Start + Log-on-Aufgabe anstelle des Starteintrags für schnelleres Startup-Erfahrung verwenden + Nach der Deinstallation müssen Sie diese Aufgabe (Flow.Launcher Startup) via Task-Scheduler manuell entfernen + Fehler bei Einstellungsstart beim Start Flow Launcher ausblenden, wenn Fokus verloren geht Versionsbenachrichtigungen nicht zeigen Position des Suchfensters @@ -70,8 +75,6 @@ Letzte Abfrage leeren Letztes Aktions-Schlüsselwort beibehalten Letztes Aktions-Schlüsselwort auswählen - Feste Fensterhöhe - Die Fensterhöhe ist durch Ziehen nicht anpassbar. Maximal gezeigte Ergebnisse Sie können dies auch unter Verwendung von STRG+Plus und STRG+Minus schnell anpassen. Hotkeys im Vollbildmodus ignorieren @@ -102,6 +105,15 @@ Immer Vorschau Vorschau-Panel immer öffnen, wenn Flow aktiviert ist. Drücken Sie {0}, um Vorschau umzuschalten. Schatteneffekt ist nicht erlaubt, während das aktuelle Theme den Unschärfe-Effekt aktiviert hat + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Plug-in suchen @@ -118,6 +130,8 @@ Aktuelles Action-Schlüsselwort Neues Aktions-Schlüsselwort Aktions-Schlüsselwörter ändern + Plugin seach delay time + Change Plugin Seach Delay Time Aktuelle Priorität Neue Priorität Priorität @@ -129,8 +143,11 @@ Version Website Deinstallieren - Fail to remove plugin settings - Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Plug-in-Einstellungen können nicht entfernt werden + Plug-ins: {0} - Plug-in-Einstellungsdateien können nicht entfernt werden, bitte entfernen Sie diese manuell + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Plug-in-Store @@ -193,8 +210,20 @@ Benutzerdefiniert Uhr Datum + Backdrop-Typ + Backdrop supported starting from Windows 11 build 22000 and above + Keine + Acrylic + Mica + Mica Alt Dieses Theme unterstützt zwei Modi (hell/dunkel). Dieses Theme unterstützt Unschärfe und transparenten Hintergrund. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Hotkey @@ -294,11 +323,14 @@ Ordner »Logs« Logs löschen Sind Sie sicher, dass Sie alle Logs löschen wollen? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Assistent Speicherort für Benutzerdaten Benutzereinstellungen und installierte Plug-ins werden im Ordner für Benutzerdaten gespeichert. Dieser Speicherort kann variieren, je nachdem, ob sich das Programm im portablen Modus befindet oder nicht. Ordner öffnen - Log Level + Log-Ebene Debug Info @@ -335,9 +367,16 @@ Das angegebene Plug-in kann nicht gefunden werden Neues Aktions-Schlüsselwort darf nicht leer sein Dieses neue Aktions-Schlüsselwort ist bereits einem anderen Plug-in zugewiesen, bitte wählen Sie ein anderes + Dieses neue Aktions-Schlüsselwort ist dasselbe wie das alte, bitte wählen Sie ein anderes Erfolg Erfolgreich abgeschlossen - Geben Sie das Aktions-Schlüsselwort ein, das Sie verwenden möchten, um das Plug-in zu starten. Verwenden Sie *, wenn Sie keines angeben möchten, und das Plug-in wird ohne irgendwelche Aktions-Schlüsselwörter ausgelöst. + Geben Sie die Aktions-Schlüsselwörter ein, die Sie zum Starten des Plug-ins verwenden möchten, und trennen Sie sie durch Leerzeichen voneinander ab. Verwenden Sie *, wenn Sie keine spezifizieren möchten, und das Plug-in wird ohne jegliche Aktions-Schlüsselwörter ausgelöst. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Benutzerdefinierter Abfrage-Hotkey @@ -388,9 +427,9 @@ Wenn Sie bei der Eingabe eines Shortcuts ein '@'-Präfix hinzufügen, stimmt die Bericht erfolgreich gesendet Bericht konnte nicht gesendet werden Flow Launcher hat einen Fehler - Please open new issue in - 1. Upload log file: {0} - 2. Copy below exception message + Bitte öffnen Sie einen neuen Fall in + 1. Logdatei hochladen: {0} + 2. Kopieren Sie die Ausnahmemeldung unterhalb Bitte warten Sie ... diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index c4c87dbc4..dc0799f90 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -108,7 +108,7 @@ Always open preview panel when Flow activates. Press {0} to toggle preview. Shadow effect is not allowed while current theme has blur effect enabled Search Delay - Delay for a while to search when typing. This reduces interface jumpiness and result load. + Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average. Default Search Delay Time Plugin default delay time after which search results appear when typing is stopped. Very long @@ -130,6 +130,7 @@ Open Use Legacy Korean IME You can change the IME settings directly from here without opening a separate settings window + Wait time before showing results after typing stops. Higher values wait longer. (ms) Search Plugin diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml index 1ab69727b..23d58eca3 100644 --- a/Flow.Launcher/Languages/es-419.xaml +++ b/Flow.Launcher/Languages/es-419.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Modo de juego Suspender el uso de las teclas de acceso directo. Position Reset - Reset search window position + Type here to search Ajustes @@ -70,8 +75,6 @@ Borrar última consulta Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. Máximo de resultados mostrados You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. Ignorar atajos de teclado en modo pantalla completa @@ -102,6 +105,15 @@ Always Preview Always open preview panel when Flow activates. Press {0} to toggle preview. El efecto de sombra no está permitido mientras el tema actual tenga el efecto de desenfoque habilitado + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Search Plugin @@ -118,6 +130,8 @@ Palabra clave actual Nueva palabra clave Cambiar palabras clave + Plugin seach delay time + Change Plugin Seach Delay Time Prioridad Actual Nueva Prioridad Prioridad @@ -131,6 +145,9 @@ Uninstall Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Tienda de Plugins @@ -193,8 +210,20 @@ Custom Clock Date + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Tecla Rápida @@ -294,6 +323,9 @@ Carpeta de registros Clear Logs Are you sure you want to delete all logs? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Asistente 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. @@ -335,9 +367,16 @@ No se puede encontrar el plugin especificado La nueva palabra clave no puede estar vacía Esta palabra clave ya está asignada a otro plugin, por favor elija una diferente + This new Action Keyword is the same as old, please choose a different one Éxito Completado con éxito - Introduzca la palabra clave que desea utilizar para iniciar el plugin. Utilice * si no desea especificar ninguno, y el plugin se activará sin ninguna palabra clave. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Tecla de Acceso Personalizada diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml index 4cba4c8a7..8b3c42fa6 100644 --- a/Flow.Launcher/Languages/es.xaml +++ b/Flow.Launcher/Languages/es.xaml @@ -7,6 +7,11 @@ Haga clic en no si ya está instalado, y seleccione la carpeta que contiene el ejecutable {1} Por favor, seleccione el ejecutable {0} + + El ejecutable {0} seleccionado no es válido. + {2}{2} + Pulsar Sí, si desea seleccionar de nuevo el ejecutable {0}. Pulsar No, si desea descargar {1} + No se puede establecer la ruta del ejecutable {0}, por favor inténtelo desde la configuración de Flow (desplácese hacia abajo). Fallo al iniciar los complementos Complemento: {0} - no se pudo cargar y se desactivará, póngase en contacto con el creador del complemento para obtener ayuda @@ -37,7 +42,7 @@ Modo Juego Suspende el uso de atajos de teclado. Restablecer posición - Restablece la posición de la ventana de búsqueda + Escribir aquí para buscar Configuración @@ -70,8 +75,6 @@ Limpiar la última consulta Conservar última palabra clave de acción Seleccionar última palabra clave de acción - Altura de la ventana fija - La altura de la ventana no se puede ajustar arrastrando el ratón. Número máximo de resultados mostrados También puede ajustarse rápidamente usando Ctrl+Más(+) y Ctrl+Menos(-). Ignorar atajos de teclado en modo pantalla completa @@ -102,6 +105,15 @@ Mostrar siempre vista previa Muestra siempre el panel de vista previa al iniciar Flow. Pulsar {0} para mostrar/ocultar la vista previa. El efecto de sombra no está permitido si el tema actual tiene activado el efecto de desenfoque + Retardo de búsqueda + Retrasa un poco la búsqueda al escribir. Esto reduce los saltos en la interfaz y la carga de resultados. + Tiempo de retardo de búsqueda predeterminado + Tiempo de retardo predeterminado del complemento tras el que aparecerán los resultados de la búsqueda cuando se deje de escribir. + Muy largo + Largo + Normal + Corto + Muy corto Buscar complemento @@ -118,6 +130,8 @@ Palabra clave de acción actual Nueva palabra clave de acción Cambia la palabra clave de acción + Tiempo de retardo de la búsqueda del complemento + Cambiar tiempo de retardo de la búsqueda del complemento Prioridad actual Nueva prioridad Prioridad @@ -131,6 +145,9 @@ Desinstalar Fallo al eliminar la configuración del complemento Complementos: {0} - Fallo al eliminar los archivos de configuración del complemento, por favor elimínelos manualmente + Fallo al eliminar la caché del complemento + Complementos: {0} - Fallo al eliminar los archivos de caché del complemento, por favor elimínelos manualmente + Predeterminado Tienda complementos @@ -193,8 +210,20 @@ Personalizada Reloj Fecha + Tipo de telón de fondo + Telón de fondo compatible a partir de Windows 11 build 22000 y superiores + Ninguno + Acrílico + Mica + Mica Alt Este tema soporta dos modos (claro/oscuro). Este tema soporta fondo transparente desenfocado. + Mostrar marcador de posición + Mostrar marcador de posición cuando la consulta esté vacía + Texto del marcador de posición + Cambiar el texto del marcador de posición. La entrada vacía utilizará: {0} + Tamaño fijo de la ventana + El tamaño de la ventana no se puede ajustar mediante arrastre. Atajo de teclado @@ -294,6 +323,9 @@ Carpeta de registros Eliminar registros ¿Está seguro de que desea eliminar todos los registros? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Asistente Ubicación de datos del usuario La configuración del usuario y los complementos instalados se guardan en la carpeta de datos del usuario. Esta ubicación puede variar dependiendo de si está en modo portable o no. @@ -335,9 +367,16 @@ No se puede encontrar el complemento especificado La nueva palabra clave de acción no puede estar vacía Esta nueva palabra clave de acción ya está asignada a otro complemento, por favor elija una diferente + Esta nueva palabra clave de acción es la misma que la anterior, por favor elija una diferente Correcto Finalizado correctamente - Introduzca la palabra clave que desea utilizar para iniciar el complemento. Utilice * si no desea especificar ninguna, y el complemento se activará sin ninguna palabra clave. + Introduzca las palabras clave de acción que desea utilizar para iniciar el complemento y utilice espacios en blanco para separarlas. Utilice * si no desea especificar ninguna, para que el complemento se inicie sin ninguna palabra clave de acción. + + + Ajuste del tiempo de retardo de búsqueda + Seleccionar el tiempo de retardo de búsqueda que se desea utilizar para el complemento. Seleccionar "{0}" si no se desea especificar nada, y el complemento utilizará el tiempo de retardo de búsqueda predeterminado. + Tiempo de retardo de búsqueda actual + Nuevo tiempo de retardo de búsqueda Atajo de teclado de consulta personalizada diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml index d0d1d010d..e46e0dc9d 100644 --- a/Flow.Launcher/Languages/fr.xaml +++ b/Flow.Launcher/Languages/fr.xaml @@ -7,6 +7,11 @@ Cliquez sur non s'il est déjà installé, et vous serez invité à sélectionner le dossier qui contient l'exécutable {1} Veuillez sélectionner l'exécutable {0} + + L'exécutable {0} que vous avez sélectionné est invalide. + {2}{2} + Cliquez sur oui si vous souhaitez sélectionner l'exécutable {0} à nouveau. Cliquez sur non si vous souhaitez télécharger {1}. + Impossible de définir {0} comme chemin d'accès vers l'exécutable. Veuillez essayer à partir des paramètres de Flow (défiler vers le bas). Échec de l'initialisation des plugins Plugins : {0} - n'ont pas pu être chargés et doivent être désactivés, veuillez contacter le créateur du plugin pour obtenir de l'aide @@ -37,7 +42,7 @@ Mode jeu Suspend l'utilisation des raccourcis claviers. Réinitialiser la position - Rétablir la position de la fenêtre de recherche + Tapez ici pour rechercher Paramètres @@ -70,8 +75,6 @@ Ne pas afficher la dernière recherche Conserver le mot clé de la dernière action Sélectionnez le mot clé de la dernière action - Hauteur de fenêtre fixe - La hauteur de la fenêtre n'est pas réglable par glissement. Résultats maximums à afficher Vous pouvez également ajuster ce paramètre en utilisant CTRL+Plus ou CTRL+Moins. Ignore les raccourcis lorsqu'une application est en plein écran @@ -102,6 +105,15 @@ Toujours prévisualiser Toujours ouvrir le panneau d'aperçu lorsque Flow s'active. Appuyez sur {0} pour activer/désactiver l'aperçu. L'effet d'ombre n'est pas autorisé lorsque le thème actuel à un effet de flou activé + Délai de recherche + Attendre un certain temps pour effectuer une recherche lors de la saisie. Cela permet de réduire les sauts d'interface et la charge des résultats. + Délai de recherche par défaut + Délai par défaut du plugin après lequel les résultats de la recherche s'affichent lorsque la saisie est interrompue. + Très long + Long + Normal + Court + Très court Rechercher des plugins @@ -118,6 +130,8 @@ Mot-clé d'action actuel Nouveau mot-clé d'action Changer les mots-clés d'action + Délai de recherche du plugin + Modifier le délai de recherche du plugin Priorité actuelle Nouvelle priorité Priorité @@ -131,6 +145,9 @@ Désinstaller Échec de la suppression des paramètres du plugin Plugins : {0} - Échec de la suppression des fichiers de configuration des plugins, veuillez les supprimer manuellement + Échec de la suppression du cache du plugin + Plugins : {0} - Échec de la suppression des fichiers cache des plugins, veuillez les supprimer manuellement + Défaut Magasin des Plugins @@ -193,8 +210,20 @@ Personnalisé Heure Date + Type d'arrière-plan + Arrière-plan pris en charge à partir de Windows 11 version 22000 et plus + Aucun + Acrylique + Mica + Mica Alt Ce thème prend en charge deux modes (clair/sombre). Ce thème prend en charge l'arrière-plan flou et transparent. + Afficher l'espace réservé + Afficher un espace réservé lorsque la requête est vide + Texte de l'espace réservé + Modifier le texte de l'espace réservé. Les entrées vides utiliseront : {0} + Taille de la fenêtre fixe + La taille de la fenêtre n'est pas réglable par glissement. Raccourcis @@ -293,6 +322,9 @@ Répertoire des journaux Effacer le journal Êtes-vous sûr de vouloir supprimer tous les journaux ? + Vider les caches + Êtes-vous sûr de vouloir supprimer tous les caches ? + Échec de l'effacement d'une partie des dossiers et des fichiers. Veuillez consulter le fichier journal pour plus d'informations Assistant Emplacement des données utilisateur Les paramètres utilisateur et les plugins installés sont enregistrés dans le dossier des données utilisateur. Cet emplacement peut varier selon que vous soyez en mode portable ou non. @@ -334,9 +366,16 @@ Impossible de trouver le module spécifi Le nouveau mot-clé d'action doit être spécifi Le nouveau mot-clé d'action a été assigné à un autre module, veuillez en choisir un autre + Ce nouveau mot-clé d'action est identique à l'ancien, veuillez en choisir un autre Ajout Terminé avec succès - Saisissez * si vous ne souhaitez pas utiliser de mot-clé spécifique + Saisissez les mots-clés d'action que vous souhaitez utiliser pour lancer le plugin et séparez-les par des espaces. Utilisez * si vous ne voulez en spécifier aucun, et le plugin sera déclenché sans aucun mot-clé d'action. + + + Réglage du délai de recherche + Sélectionnez le délai de recherche que vous souhaitez utiliser pour le plugin. Sélectionnez "{0}" si vous ne voulez pas en spécifier, et le plugin utilisera le délai de recherche par défaut. + Délai de recherche actuel + Nouveau délai de recherche Requêtes personnalisées diff --git a/Flow.Launcher/Languages/he.xaml b/Flow.Launcher/Languages/he.xaml index c912052f1..38e943cda 100644 --- a/Flow.Launcher/Languages/he.xaml +++ b/Flow.Launcher/Languages/he.xaml @@ -7,6 +7,11 @@ אם זה כבר מותקן, לחץ על 'לא' ותתבקש לבחור את התיקיה המכילה את קובץ ההפעלה {1} אנא בחר את קובץ ההפעלה {0} + + קובץ ההפעלה {0} שבחרת אינו חוקי. + {2}{2} + לחץ על כן אם ברצונך, בחר את {0} ההפעלה הקודמת. לחץ על לא אם ברצונך להוריד את {1} + לא ניתן להגדיר נתיב הפעלה {0}, אנא נסה שוב בהגדרות Flow (גלול עד למטה). נכשל בהפעלת תוספים תוספים: {0} - נכשלו בטעינה ויושבתו, אנא צור קשר עם יוצרי התוספים לקבלת עזרה @@ -37,7 +42,7 @@ מצב משחק השהה את השימוש במקשי קיצור. איפוס מיקום - אפס את מיקום חלון החיפוש + הקלד כאן כדי לחפש הגדרות @@ -70,8 +75,6 @@ נקה שאילתא אחרונה שמור מילת מפתח לפעולה האחרונה בחר מילת מפתח לפעולה האחרונה - גובה חלון קבוע - גובה החלון אינו ניתן להתאמה באמצעות גרירה. כמות תוצאות מרבית ניתן גם להתאים במהירות באמצעות CTRL+פלוס ו-CTRL+מינוס. התעלם מקיצורי מקשים במצב מסך מלא @@ -97,11 +100,20 @@ ללא נמוך Regular - Search with Pinyin + חפש באמצעות Pinyin Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese. הצג תמיד תצוגה מקדימה פתח תמיד את לוח התצוגה המקדימה כאשר Flow מופעל. הקש על {0} כדי להחליף את התצוגה המקדימה. לא ניתן להחיל אפקט צל כאשר העיצוב הנוכחי מוגדר לאפקט טשטוש + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short חפש תוסף @@ -118,6 +130,8 @@ מילת מפתח נוכחית לפעולה מילת מפתח חדשה לפעולה שנה מילות מפתח לפעולה + Plugin seach delay time + Change Plugin Seach Delay Time עדיפות נוכחית עדיפות חדשה עדיפות @@ -131,6 +145,9 @@ הסר התקנה נכשל בהסרת הגדרות התוסף תוספים: {0} - נכשל בהסרת קבצי הגדרות התוסף, יש להסירם ידנית + נכשל בהסרת מטמון התוסף + תוספים: {0} - נכשל בהסרת קובצי מטמון התוסף, אנא הסר אותם ידנית + Default חנות תוספים @@ -156,7 +173,7 @@ סייר חפש קבצים, תיקיות ובתוכן הקבצים חיפוש באינטרנט - Search the web with different search engine support + חפש באינטרנט עם תמיכה במנועי חיפוש שונים תוכנה הפעל תוכנות כמנהל או כמשתמש אחר ProcessKiller @@ -193,8 +210,20 @@ מותאם אישית שעון תאריך + סוג רקע + התמיכה ב-Backdrop קיימת החל מ-Windows 11 build 22000 ומעלה + ללא + אקריליק + מיקה + Mica Alt ערכת נושא זאת תומך בשני מצבים (בהיר/כהה). ערכת נושא זו תומכת בטשטוש רקע שקוף. + הצג מציין מיקום + הצג מציין מיקום כאשר השאילתה ריקה + טקסט מציין מיקום + שנה את טקסט מציין המיקום. אם הקלט ריק, ייעשה שימוש ב: {0} + גודל חלון קבוע + לא ניתן להתאים את גודל החלון באמצעות גרירה. מקש קיצור @@ -289,18 +318,21 @@ הערות שחרור טיפים לשימוש - DevTools + כלי פיתוח תיקיית ההגדרות תיקיית יומני רישום נקה יומני רישום האם אתה בטוח שברצונך למחוק את כל היומנים? + נקה נתוני מטמון + האם אתה בטוח שברצונך למחוק את כל הנתונים שבמטמון? + נכשל ניקוי חלק מהתיקיות והקבצים. עיין בלוג לקבלת מידע נוסף אשף מיקום נתוני משתמש הגדרות המשתמש והתוספים המותקנים נשמרים בתיקיית נתוני המשתמש. מיקום זה עשוי להשתנות אם התוכנה במצב נייד. פתח תיקיה Log Level - Debug - Info + ניפוי שגיאות + מידע בחר מנהל קבצים @@ -335,9 +367,16 @@ לא ניתן למצוא את התוסף שצוין מילת הפעולה החדשה לא יכולה להיות ריקה מילת הפעולה החדשה כבר מוקצה לתוסף אחר, אנא בחר אחת שונה + מילת הפעולה החדשה זהה לישנה, נא לבחור מילת פעולה שונה הצליח הושלם בהצלחה - הזן את מילת הפעולה שברצונך להשתמש בה להפעלת התוסף. השתמש ב-* אם אינך רוצה לציין מילה כלשהי, והתוסף יופעל ללא צורך במילת פעולה. + הזן את מילות הפעולה שבהן תרצה להשתמש כדי להפעיל את התוסף, והשתמש ברווחים כדי להפריד ביניהן. השתמש ב-* אם אינך רוצה להגדיר כלל, והתוסף יופעל ללא מילות פעולה. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time מקש קיצור לשאילתה מותאמת אישית diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index e4d4d3e2c..fd34bf366 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Modalità gioco Sospendere l'uso dei tasti di scelta rapida. Ripristina Posizione - Ripristina posizione finestra di ricerca + Type here to search Impostazioni @@ -70,8 +75,6 @@ Cancella ultima ricerca Preserve Last Action Keyword Select Last Action Keyword - Altezza Finestra Fissa - L'altezza della finestra non si può regolare trascinando. Numero massimo di risultati mostrati È anche possibile regolarlo rapidamente utilizzando CTRL+Più e CTRL+Meno. Ignora i tasti di scelta rapida in applicazione a schermo pieno @@ -102,6 +105,15 @@ Mostra Sempre Anteprima Apri sempre il pannello di anteprima quando Flow si attiva. Premi {0} per attivare l'anteprima. L'effetto ombra non è consentito mentre il tema corrente ha un effetto di sfocatura abilitato + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Plugin di ricerca @@ -118,6 +130,8 @@ Parola chiave di azione corrente Nuova parola chiave d'azione Cambia Keywords Azione + Plugin seach delay time + Change Plugin Seach Delay Time Priorità Attuale Nuova Priorità Priorità @@ -131,6 +145,9 @@ Disinstalla Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Negozio dei Plugin @@ -193,8 +210,20 @@ Personalizzato Orologio Data + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Vuoto + Acrylic + Mica + Mica Alt Questo tema supporta due (chiaro/scuro) varianti. Questo tema supporta lo sfondo trasparente blurrato. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Tasti scelta rapida @@ -294,6 +323,9 @@ Cartella dei Log Cancella i log Sei sicuro di voler cancellare tutti i log? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Wizard Posizione Dati Utente Le impostazioni dell'utente e i plugin installati sono salvati nella cartella dati utente. Questa posizione può variare se è in modalità portable o no. @@ -335,9 +367,16 @@ Impossibile trovare il plugin specificato La nuova parola chiave d'azione non può essere vuota La nuova parola chiave d'azione è stata assegnata ad un altro plugin, per favore sceglierne una differente + This new Action Keyword is the same as old, please choose a different one Successo Completato con successo - Usa * se non vuoi specificare una parola chiave d'azione + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Tasti scelta rapida per ricerche personalizzate diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml index 28c334667..e6f2223cd 100644 --- a/Flow.Launcher/Languages/ja.xaml +++ b/Flow.Launcher/Languages/ja.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ ゲームモード ホットキーの使用を一時停止します。 位置のリセット - 検索ウィンドウの位置をリセットします。 + Type here to search 設定 @@ -70,8 +75,6 @@ 前回のクエリを消去 Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. 結果の最大表示件数 CTRL+PlusとCTRL+Minusを使用すれば、簡単に調整することもできます。 ウィンドウがフルスクリーン時にホットキーを無効にする @@ -102,6 +105,15 @@ 常にプレビューする Flow が有効になったとき、常にプレビューパネルを開きます。 {0} を押してプレビューの表示/非表示を切り替えます。 現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Search Plugin @@ -118,6 +130,8 @@ Current action keyword New action keyword Change Action Keywords + Plugin seach delay time + Change Plugin Seach Delay Time Current Priority New Priority 重要度 @@ -131,6 +145,9 @@ アンインストール Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default プラグインストア @@ -193,8 +210,20 @@ カスタム 時刻 日付 + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. ホットキー @@ -294,6 +323,9 @@ Log Folder Clear Logs Are you sure you want to delete all logs? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 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. @@ -335,9 +367,16 @@ プラグインが見つかりません 新しいアクションキーボードを空にすることはできません 新しいアクションキーボードは他のプラグインに割り当てられています。他のアクションキーボードを指定してください + This new Action Keyword is the same as old, please choose a different one 成功しました Completed successfully - アクションキーボードを指定しない場合、* を使用してください + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml index d9da26bcb..3aee3f5e4 100644 --- a/Flow.Launcher/Languages/ko.xaml +++ b/Flow.Launcher/Languages/ko.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ 게임 모드 단축키 사용을 일시중단합니다. 창 위치 초기화 - 검색창 위치 초기화 + 검색어 입력 설정 @@ -45,8 +50,8 @@ 포터블 모드 모든 설정이 폴더안에 들어갑니다. USB 드라이브나 클라우드로 사용 가능합니다. 시스템 시작 시 Flow Launcher 실행 - Use logon task instead of startup entry for faster startup experience - After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler + 더 빠른 시작을 위해 시작 프로그램 항목 대신 로그온 Task 사용 + Flow Launcher를 제거한 후에는 작업 스케줄러에서 이 작업(Flow.Launcher Startup)을 수동으로 삭제해야 합니다 Error setting launch on startup 포커스 잃으면 Flow Launcher 숨김 새 버전 알림 끄기 @@ -70,8 +75,6 @@ 직전 쿼리 지우기 Preserve Last Action Keyword Select Last Action Keyword - 창 높이 고정 - 드래그로 창 높이를 조정하지 않습니다. 표시할 결과 수 Ctrl + '+'키와 Ctrl + '-'키로도 빠르게 조정할 수 있습니다 전체화면 모드에서는 단축키 무시 @@ -89,7 +92,7 @@ 자동 업데이트 선택 시작 시 Flow Launcher 숨김 - Flow Launcher search window is hidden in the tray after starting up. + Flowr Launcher가 트레이에 숨겨진 상태로 시작합니다. 트레이 아이콘 숨기기 트레이에서 아이콘을 숨길 경우, 검색창 우클릭으로 설정창을 열 수 있습니다. 쿼리 검색 정밀도 @@ -102,6 +105,15 @@ 항상 미리보기 Flow 사용시 항상 미리보기 패널을 열어둡니다. {0} 키를 눌러 프리뷰창을 켜고 끌 수 있습니다. 반투명 흐림 효과를 사용하는 경우, 그림자 효과를 쓸 수 없습니다. + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short 플러그인 검색 @@ -118,6 +130,8 @@ 현재 액션 키워드 새 액션 키워드 액션 키워드 변경 + Plugin seach delay time + Change Plugin Seach Delay Time 현재 중요도: 새 중요도: 중요도 @@ -131,6 +145,9 @@ 제거 Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default 플러그인 스토어 @@ -193,8 +210,20 @@ 사용자 정의 시계 날짜 + 배경 효과 타입 + Backdrop supported starting from Windows 11 build 22000 and above + 없음 + 아크릴 + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + 안내 텍스트 표시 + 입력 내용이 없을때 입력창 위치를 알 수 있는 텍스트를 표시합니다 + 안내 텍스트 + 안내 텍스트를 변경하세요. 아무것도 입력하지 않으면 다음을 사용합니다: "{0}" + Fixed Window Size + The window size is not adjustable by dragging. 단축키 @@ -294,6 +323,9 @@ 로그 폴더 로그 삭제 정말 모든 로그를 삭제하시겠습니까? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 마법사 사용자 데이터 위치 사용자 설정과 설치된 플러그인은 사용자 데이터 폴더에 저장됩니다. 이 위치는 휴대용 모드 활성화 여부에 따라 달라질 수 있습니다. @@ -335,9 +367,16 @@ 플러그인을 찾을 수 없습니다. 새 액션 키워드를 입력하세요. 새 액션 키워드가 할당된 플러그인이 이미 있습니다. 다른 액션 키워드를 입력하세요. + This new Action Keyword is the same as old, please choose a different one 성공 성공적으로 완료했습니다. - 플러그인을 시작하는데 필요한 액션 키워드를 입력하세요. 액션 키워드를 지정하지 않으려면 *를 사용하세요. 이 경우 키워드를 입력하지 않아도 동작합니다. + 플러그인을 실행할 때 사용할 액션 키워드를 입력하세요. 여러 개를 입력할 경우 공백으로 구분하세요. 아무 키워드도 지정하지 않으려면 * 를 입력하세요. 이 경우 액션 키워드 없이도 플러그인이 실행됩니다. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time 사용자지정 쿼리 단축키 diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml index a37a204e1..b78bcb7d7 100644 --- a/Flow.Launcher/Languages/nb.xaml +++ b/Flow.Launcher/Languages/nb.xaml @@ -7,6 +7,11 @@ Klikk nei hvis det allerede er installert, og du vil bli bedt om å velge mappen som inneholder {1} kjørbar fil Velg den kjørbare filen for {0} + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Kan ikke angi {0} kjørbar bane, prøv fra Flows innstillinger (bla ned til bunnen). Mislykkes i å initialisere programtillegg Programtillegg: {0} - mislykkes å lastes inn og vil bli deaktivert, vennligst kontakt utvikleren av programtillegget for hjelp @@ -37,7 +42,7 @@ Spillmodus Stopp bruken av hurtigtaster. Tilbakestilling av posisjon - Tilbakestill posisjonen til søkevinduet + Type here to search Innstillinger @@ -70,8 +75,6 @@ Tøm siste spørring Preserve Last Action Keyword Select Last Action Keyword - Fast vindushøyde - Vindushøyden kan ikke justeres ved å dra. Maksimalt antall resultater vist Du kan også raskt justere dette ved å bruke CTRL+Plus og CTRL+Minus. Ignorer hurtigtaster i fullskjermmodus @@ -102,6 +105,15 @@ Alltid forhåndsvisning Åpne alltid forhåndsvisningspanel når Flow aktiveres. Trykk på {0} for å velge forhåndsvisning. Skyggeeffekt er ikke tillatt mens gjeldende tema har uskarphet-effekt aktivert + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Søk etter programtillegg @@ -118,6 +130,8 @@ Nåværende handlingsnøkkelord Nytt handlingsnøkkelord Endre handlingsnøkkelord + Plugin seach delay time + Change Plugin Seach Delay Time Gjeldende prioritet Ny prioritet Prioritet @@ -131,6 +145,9 @@ Avinstaller Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Programtillegg butikk @@ -193,8 +210,20 @@ Egendefinert Klokke Dato + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Ingen + Acrylic + Mica + Mica Alt Dette temaet støtter to (lys/mørk) moduser. Dette temaet støtter uskarp gjennomsiktig bakgrunn. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Hurtigtast @@ -294,6 +323,9 @@ Loggmappe Tøm logger Er du sikker på at du vil slette alle loggene? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Veiviser Plassering av brukerdata Brukerinnstillinger og installerte programtillegg lagres i brukerens datamappe. Denne plasseringen kan variere avhengig av om den er i portabel modus eller ikke. @@ -335,9 +367,16 @@ Kan ikke finne spesifisert programtillegg Nytt handlingsnøkkelord kan ikke være tom Det nye nøkkelordet for handling er allerede tilordnet et annet programtillegg, velg et annet + This new Action Keyword is the same as old, please choose a different one Vellykket Fullført vellykket - Skriv inn handlingsnøkkelord du vil bruke for å starte programtillegget. Bruk * hvis du ikke ønsker å spesifisere noen, og utvidelsen vil bli utløst uten noen handlingsord. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Hurtigtast for egendefinert spørring diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml index 64adccd94..ce3406142 100644 --- a/Flow.Launcher/Languages/nl.xaml +++ b/Flow.Launcher/Languages/nl.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Spelmodus Stop het gebruik van Sneltoetsen. Positie resetten - Positie zoekvenster resetten + Type here to search Instellingen @@ -70,8 +75,6 @@ Laatste zoekopdracht verwijderen Preserve Last Action Keyword Select Last Action Keyword - Vaste venster hoogte - De vensterhoogte is niet aanpasbaar door te slepen. Laat maximale resultaten zien Je kunt dit ook snel aanpassen met CTRL+Plus en CTRL+Minus. Negeer sneltoetsen in vol scherm modus @@ -102,6 +105,15 @@ Altijd voorbeeld Open altijd het voorbeeld paneel wanneer Flow activeert. Druk op {0} om voorbeeld te schakelen. Schaduw effect is niet toegestaan omdat het huidige thema een vervagingseffect heeft + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Plug-ins zoeken @@ -118,6 +130,8 @@ Huidige actie sneltoets Nieuw actie sneltoets Wijzig actie-sneltoets + Plugin seach delay time + Change Plugin Seach Delay Time Huidige Prioriteit Nieuwe Prioriteit Prioriteit @@ -131,6 +145,9 @@ Verwijderen Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Plugin Winkel @@ -193,8 +210,20 @@ Aangepast Klok Datum + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt Dit thema ondersteunt twee (licht/donker) modi. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Sneltoets @@ -294,6 +323,9 @@ Log Map Logbestanden wissen Weet u zeker dat u alle logbestanden wilt verwijderen? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Wizard Gegevenslocatie van gebruiker Gebruikersinstellingen en geïnstalleerde plug-ins worden opgeslagen in de gebruikersgegevensmap. Deze locatie kan variëren afhankelijk van of het in draagbare modus is of niet. @@ -335,9 +367,16 @@ Kan plugin niet vinden Nieuwe actie sneltoets moet ingevuld worden Nieuwe actie sneltoets is toegewezen aan een andere plugin, wijs een nieuwe actie sneltoets aan + This new Action Keyword is the same as old, please choose a different one Succesvol Succesvol afgerond - Gebruik * wanneer je geen nieuwe actie sneltoets wilt specificeren + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Custom Query Sneltoets diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml index 06204395c..12af37c3e 100644 --- a/Flow.Launcher/Languages/pl.xaml +++ b/Flow.Launcher/Languages/pl.xaml @@ -7,6 +7,11 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy poproszony o wybranie folderu zawierającego plik wykonywalny {1} Wybierz plik wykonywalny {0} + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Nie można ustawić ścieżki do pliku wykonywalnego {0}. Spróbuj ponownie w ustawieniach Flow (przewiń na sam dół). Nie udało się zainicjować wtyczek Wtyczki: {0} – nie udało się ich wczytać i zostaną wyłączone. Skontaktuj się z twórcą wtyczki, aby uzyskać pomoc @@ -37,7 +42,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Tryb grania Wstrzymaj używanie skrótów. Resetowanie pozycji - Zresetuj pozycję okna wyszukiwania + Type here to search Ustawienia @@ -70,8 +75,6 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Puste ostatnie zapytanie Zachowaj ostatnie słowo kluczowe akcji Wybierz ostatnie słowo kluczowe akcji - Stała wysokość okna - Wysokość okna nie jest regulowana poprzez przeciąganie. Maksymalna liczba wyników Możesz to również szybko dostosować używając CTRL+Plus i CTRL+Minus. Ignoruj skróty klawiszowe w trybie pełnoekranowym @@ -102,6 +105,15 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Zawsze podgląd Zawsze otwieraj panel podglądu, gdy aktywowany jest Flow. Naciśnij {0}, aby przełączyć podgląd. Efekt cienia jest niedozwolony, gdy bieżący motyw ma włączony efekt rozmycia + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Szukaj wtyczek @@ -118,6 +130,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Bieżące słowo kluczowe akcji Nowe słowo kluczowe akcji Zmień słowa kluczowe akcji + Plugin seach delay time + Change Plugin Seach Delay Time Obecny Priorytet Nowy Priorytet Priorytet @@ -131,6 +145,9 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Odinstalowywanie Nie udało się usunąć ustawień wtyczki Wtyczki: {0} – nie udało się usunąć plików ustawień wtyczek, usuń je ręcznie + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Sklep z wtyczkami @@ -193,8 +210,20 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Niestandardowa Zegar Data + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Brak + Acrylic + Mica + Mica Alt Ten motyw obsługuje dwa tryby (jasny/ciemny). Ten motyw obsługuje rozmyte przezroczyste tło. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Skrót klawiszowy @@ -294,6 +323,9 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Folder dziennika Wyczyść logi Czy na pewno chcesz usunąć wszystkie logi? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Kreator Lokalizacja danych użytkownika Ustawienia użytkownika i zainstalowane wtyczki są zapisywane w folderze danych użytkownika. Ta lokalizacja może się różnić w zależności od tego, czy aplikacja jest w trybie przenośnym, czy nie. @@ -335,9 +367,16 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros Nie można odnaleźć podanej wtyczki Nowy wyzwalacz nie może być pusty Ten wyzwalacz został już przypisany do innej wtyczki, musisz podać inny wyzwalacz. + This new Action Keyword is the same as old, please choose a different one Sukces Zakończono pomyślnie - Użyj * jeżeli nie chcesz podawać wyzwalacza + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Skrót klawiszowy niestandardowych zapyta diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml index 62293b1a1..d0040d799 100644 --- a/Flow.Launcher/Languages/pt-br.xaml +++ b/Flow.Launcher/Languages/pt-br.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Modo Gamer Suspender o uso de Teclas de Atalho. Redefinição de Posição - Redefinir posição da janela de busca + Type here to search Configurações @@ -70,8 +75,6 @@ Limpar última consulta Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. Máximo de resultados mostrados Você também pode ajustar isso rapidamente usando CTRL+Mais e CTRL+Menos. Ignorar atalhos em tela cheia @@ -102,6 +105,15 @@ Sempre Pré-visualizar Sempre abrir o painel de pré-visualização quando o Flow é ativado. Pressione {0} para ativar ou desativar a pré-visualização. O efeito de sombra não é permitido enquanto o tema atual tem o efeito de desfoque ativado + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Buscar Plugin @@ -118,6 +130,8 @@ Palavra-chave de ação atual Nova palavra-chave de ação Alterar Palavras-chave de Ação + Plugin seach delay time + Change Plugin Seach Delay Time Prioridade atual Nova Prioridade Prioridade @@ -131,6 +145,9 @@ Desinstalar Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Loja de Plugins @@ -193,8 +210,20 @@ Personalizado Relógio Data + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Atalho @@ -294,6 +323,9 @@ Pasta de Registro Limpar Registros Tem certeza que quer excluir todos os registros? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Assistente 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. @@ -335,9 +367,16 @@ Não foi possível encontrar o plugin especificado A nova palavra-chave da ação não pode ser vazia A nova palavra-chave da ação já foi atribuída a outro plugin, por favor tente outra + This new Action Keyword is the same as old, please choose a different one Sucesso Concluído com sucesso - Use * se não quiser especificar uma palavra-chave de ação + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Atalho de Consulta Personalizada diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index bad37f688..9dc520cbd 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -7,6 +7,11 @@ Clique "Não" se já tiver instalado e, de seguida, ser-lhe-á solicitada a pasta que contém o executável {1}. Por favor, selecione o executável {0} + + O executável {0} é inválido. + {2}{2} + Clique Sim se quiser escolher o novo executável {0}. Clique Não se quiser descarregar {1}. + Não foi possível definir o caminho do executável {0}. Experimente definir o caminho nas definições (desloque até ao fundo). Falha ao iniciar os plugins Plugin: {0} - não foi possível iniciar e será desativado. Contacte o criador do plugin para obter ajuda. @@ -37,7 +42,7 @@ Modo de jogo Suspender utilização das teclas de atalho Repor posição - Repor posição da janela de pesquisa + Escreva aqui para pesquisar Definições @@ -70,8 +75,6 @@ Limpar última consulta Manter palavra-chave da última ação Selecionar palavra-chave da última ação - Altura fixa de janela - Não é possível ajustar o tamanho da janela por arrasto. Número máximo de resultados Também pode ajustar rapidamente através do atalho Ctrl+ e Ctrl-. Ignorar teclas de atalho se em ecrã completo @@ -102,6 +105,15 @@ Pré-visualizar sempre Abrir painel de pré-visualização ao ativar Flow Launcher. Prima {0} para comutar a pré-visualização. O efeito sombra não é permitido com este tema porque o efeito desfocar está ativo + Atraso da pesquisa + Tempo a esperar após a digitação. Esta definição melhora o carregamento dos resultados. + Tempo de espera padrão + O valor padrão a esperar, antes de iniciar a pesquisa após terminar a digitação. + Muito longo + Longo + Normal + Curto + Muito curto Pesquisar plugins @@ -118,6 +130,8 @@ Palavra-chave atual Nova palavra-chave Alterar palavras-chave + Tempo de espera do plugin + Alterar tempo de espera do plugin Prioridade atual Nova prioridade Prioridade @@ -131,6 +145,9 @@ Desinstalar Falha ao remover as definições do plugin Plugin: {0} - Falha ao remover o ficheiro de definições do plugin. Experimente remover manualmente. + Falha ao limpar a cache do plugin + Plugin: {0} - Falha ao remover os ficheiros em cache do plugin. Experimente remover manualmente. + Padrão Loja de plugins @@ -193,8 +210,20 @@ Personalizada Relógio Data + Tipo de fundo + Esta opção apenas está disponível em sistemas após Windows 11 Build 22000 + Nenhuma + Acrílico + Mica + Mica alternativo Este tema tem suporte a dois modos (claro/escuro). Este tema tem suporte a fundo transparente desfocado. + Mostrar marcador de posição + Mostrar marcador de posição se a consulta estiver vazia + Texto do marcador + O texto do marcador de posição. Se vazio, será utilizado: {0} + Janela com tamanho fixo + Não pode ajustar o tamanho da janela por arrasto. Tecla de atalho @@ -293,13 +322,16 @@ Pasta de registos Limpar registos Tem a certeza de que deseja remover todos os registos? + Limpar cache + Tem a certeza de que pretende limpar todas as caches? + Não foi possível limpar todas as pastas e ficheiros. Consulte o ficheiro de registo para mais informações. Assistente Localização dos dados do utilizador As definições e os plugins instalados são guardados na pasta de dados do utilizador. A localização pode variar, tendo em conta se a aplicação está instalada ou no modo portátil Abrir pasta - Log Level - Debug - Info + Nível de registo + Depuração + Informação Selecione o gestor de ficheiros @@ -334,9 +366,16 @@ Plugin não encontrado A nova palavra-chave não pode estar vazia Esta palavra-chave já está associada a um plugin. Por favor escolha outra. + A palavra-chave escolhida é igual à anterior. Por favor escolha outra. Sucesso Terminado com sucesso - Introduza a palavra-chave a utilizar para iniciar o plugin. Utilize * se não quiser utilizar esta funcionalidade e o plugin não será ativado com palavras-chave. + Introduza as palavras-chave que pretende utilizar para iniciar o plugin e um espaço vazio caso queira mais do que uma. Utilize * se não quiser especificar uma palavra-chave e o plugin será ativado sem palavras-chave. + + + Definição do tempo de espera + Selecione o tempo de espera que pretende utilizar com este plugin. Selecione "{0}" se não o quiser especificar e, desta forma, o plugin irá utilizar o tempo de espera padrão. + Tempo de espera atual + Novo tempo de espera Tecla de atalho personalizada diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml index a56a770da..c38855474 100644 --- a/Flow.Launcher/Languages/ru.xaml +++ b/Flow.Launcher/Languages/ru.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Игровой режим Приостановить использование горячих клавиш. Сброс положения - Сброс положения окна поиска + Type here to search Настройки @@ -70,8 +75,6 @@ Очистить последний запрос Preserve Last Action Keyword Select Last Action Keyword - Фиксированная высота окна - The window height is not adjustable by dragging. Максимальное количество результатов Вы также можете быстро настроить это с помощью CTRL+плюс и CTRL+минус. Игнорировать горячие клавиши в полноэкранном режиме @@ -102,6 +105,15 @@ Всегда предпросмотр Всегда открывать панель предварительного просмотра при запуске Flow. Нажмите {0}, чтобы переключить предварительный просмотр. Эффект тени не допускается, если в текущей теме включён эффект размытия + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Поиск плагина @@ -118,6 +130,8 @@ Ключевое слово текущего действия Ключевое слово нового действия Изменить ключевое слово действия + Plugin seach delay time + Change Plugin Seach Delay Time Текущий приоритет Новый приоритет Приоритет @@ -131,6 +145,9 @@ Удалить Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Магазин плагинов @@ -193,8 +210,20 @@ Своя Часы Дата + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Горячая клавиша @@ -294,6 +323,9 @@ Папка журнала Очистить журнал Вы уверены, что хотите удалить все журналы? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Мастер 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. @@ -335,9 +367,16 @@ Не удалось найти заданный плагин Новая горячая клавиша не может быть пустой Новая горячая клавиша уже используется другим плагином. Пожалуйста, задайте новую + This new Action Keyword is the same as old, please choose a different one Успешно Выполнено успешно - Введите горячую клавишу, которое вы хотите использовать для запуска плагина. Используйте *, если вы не хотите ничего указывать, и плагин будет запускаться без каких-либо горячих клавиш. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Задаваемые горячие клавиши для запросов diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 332528b2b..0f07387c6 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -7,6 +7,11 @@ Ak už ho máte nainštalovaný, kliknite na nie, a budete vyzvaný na zadanie cesty k priečinku spustiteľného súboru {1} Vyberte spustiteľný súbor {0} + + Vybrali ste nesprávny spustiteľný súbor {0}. + {2}{2} + Ak chcete znovu vybrať spustiteľný súbor {0}, kliknite na Áno. Kliknutím na Nie sa stiahne {1}. + Nie je možné nastaviť cestu ku spustiteľnému súboru {0}, skúste to v nastaveniach Flowu (prejdite nadol). Nepodarilo sa inicializovať pluginy Pluginy: {0} – nepodarilo sa načítať a mal by byť zakázaný, na pomoc kontaktujte autora pluginu @@ -37,7 +42,7 @@ Herný režim Pozastaviť používanie klávesových skratiek. Resetovať pozíciu - Resetovať pozíciu vyhľadávacieho okna + Zadajte text na vyhľadávanie Nastavenia @@ -70,8 +75,6 @@ Vymazať Ponechať posledný akčný príkaz Označiť posledný akčný príkaz - Pevná výška okna - Výška okna sa nedá nastaviť ťahaním. Maximum výsledkov Túto hodnotu môžete rýchlo upraviť aj pomocou klávesových skratiek CTRL + znamienko plus (+) a CTRL + znamienko mínus (-). Ignorovať klávesové skratky v režime na celú obrazovku @@ -102,6 +105,15 @@ Vždy zobraziť náhľad Pri aktivácii Flowu vždy otvoriť panel s náhľadom. Stlačením klávesu {0} prepnete náhľad. Efekt tieňa nie je povolený, kým má aktuálny motív povolený efekt rozostrenia + Oneskorenie vyhľadávania + Pri písaní sa na chvíľu oneskorí vyhľadávanie. Tým sa zníži skákanie rozhrania a načítanie výsledkov. + Predvolené oneskorenie vyhľadávania + Predvolené oneskorenie pluginu, po ktorom sa zobrazia výsledky vyhľadávania po zastavení písania. + Veľmi dlhé + Dlhé + Normálne + Krátke + Veľmi krátke Vyhľadať plugin @@ -118,6 +130,8 @@ Aktuálny aktivačný príkaz Nový aktivačný príkaz Upraviť aktivačný príkaz + Oneskorenie vyhľadávania pomocou pluginu + Zmení oneskorenie vyhľadávania pomocou pluginu Aktuálna priorita Nová priorita Priorita @@ -131,6 +145,9 @@ Odinštalovať Nepodarilo sa odstrániť nastavenia pluginu Pluginy: {0} – Nepodarilo sa odstrániť súbory s nastaveniami pluginu, odstráňte ich manuálne + Nepodarilo sa odstrániť vyrovnávaciu pamäť pluginu + Pluginy: {0} – Nepodarilo sa odstrániť vyrovnávaciu pamäť pluginu, odstráňte ju manuálne + Predvolené Repozitár pluginov @@ -193,8 +210,20 @@ Vlastné Hodiny Dátum + Typ pozadia + Backdrop je podporovaný od Windows 11 zostava 22000 a novších + Žiadna + Acrylic + Mica + Mica Alt Tento motív podporuje 2 režimy (svetlý/tmavý). Tento motív podporuje rozostrenie priehľadného pozadia. + Zobraziť zástupný text + Zobrazí zástupný text v prázdnom vyhľadávacom poli + Zástupný text + Zobrazí zástupný text. V prázdnom poli sa zobrazí: {0} + Pevná veľkosť okna + Veľkosť okna sa nedá nastaviť ťahaním. Klávesové skratky @@ -294,6 +323,9 @@ Priečinok s logmi Vymazať logy Naozaj chcete odstrániť všetky logy? + Vymazať vyrovnávaciu pamäť + Naozaj chcete vymazať všetky vyrovnávacie pamäte? + Nepodarilo sa odstrániť niektoré priečinky a súbory. Pre viac informácií si pozrite súbor logu Sprievodca Cesta k používateľskému priečinku Nastavenia používateľa a nainštalované pluginy sa ukladajú do používateľského priečinka. Toto umiestnenie sa môže líšiť v závislosti od toho, či je v prenosnom režime alebo nie. @@ -335,9 +367,16 @@ Nepodarilo sa nájsť zadaný plugin Nový aktivačný príkaz nemôže byť prázdny Nový aktivačný príkaz už bol priradený inému pluginu, prosím, zvoľte iný aktivačný príkaz + Tento nový aktivačný príkaz je rovnaký ako starý, vyberte iný Úspešné Úspešne dokončené - Zadajte aktivačný príkaz, ktorý je potrebný na spustenie pluginu. Ak nechcete zadať aktivačný príkaz, použite * a plugin bude spustený bez aktivačného príkazu. + Zadajte aktivačné príkazy, ktoré chcete používať na spustenie pluginu a oddeľte ich medzerou. Ak nechcete zadať aktivačný príkaz, použite * a plugin bude spustený bez aktivačného príkazu. + + + Nastavenie oneskoreného vyhľadávania + Vyberte oneskorenie vyhľadávania, ktoré chcete použiť pre plugin. Ak vyberiete "{0}", plugin použije predvolené oneskorenie vyhľadávania. + Aktuálne oneskorenie vyhľadávania + Nové oneskorenie vyhľadávania Klávesová skratka vlastného vyhľadávania diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml index b244c4660..1d1eb9120 100644 --- a/Flow.Launcher/Languages/sr.xaml +++ b/Flow.Launcher/Languages/sr.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Game Mode Suspend the use of Hotkeys. Position Reset - Reset search window position + Type here to search Podešavanja @@ -70,8 +75,6 @@ Isprazni poslednji Upit Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. Maksimum prikazanih rezultata You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. Ignoriši prečice u fullscreen režimu @@ -102,6 +105,15 @@ 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 + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Search Plugin @@ -118,6 +130,8 @@ Current action keyword New action keyword Change Action Keywords + Plugin seach delay time + Change Plugin Seach Delay Time Current Priority New Priority Priority @@ -131,6 +145,9 @@ Uninstall Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Plugin Store @@ -193,8 +210,20 @@ Custom Clock Date + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Prečica @@ -294,6 +323,9 @@ Log Folder Clear Logs Are you sure you want to delete all logs? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 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. @@ -335,9 +367,16 @@ Navedeni plugin nije moguće pronaći Prečica za novu radnju ne može da bude prazna Prečica za novu radnju je dodeljena drugom plugin-u, molim Vas dodelite drugu prečicu + This new Action Keyword is the same as old, please choose a different one Uspešno Completed successfully - Koristite * ako ne želite da navedete prečicu za radnju + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time prečica za ručno dodat upit diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index 5d550ebed..b9b5d351e 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ Oyun Modu Kısayol tuşlarının kullanımını durdurun. Pencere Konumunu Sıfırla - Arama penceresinin konumunu sıfırla + Type here to search Ayarlar @@ -70,8 +75,6 @@ Sorgu Kutusunu Temizle Preserve Last Action Keyword Select Last Action Keyword - Sabit Pencere Yükseliği - Pencere yüksekliği sürükleme ile ayarlanamaz. Maksimum Sonuç Sayısı Bunu CTRL + ve CTRL - kısayollarıyla da ayarlayabilirsiniz. Tam Ekran Modunda Kısayol Tuşunu Gözardı Et @@ -102,6 +105,15 @@ Önizleme Önizleme panelini her zaman aç. Önizlemeyi bu ayardan bağımsız {0} kısayolu ile açıp kapatabilirsiniz. Mevcut temada bulanıklık efekti etkinken gölgelendirme efektine izin verilmez + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Eklenti Ara @@ -118,6 +130,8 @@ Geçerli anahtar kelime Yeni anahtar kelime Anahtar kelimeyi değiştir + Plugin seach delay time + Change Plugin Seach Delay Time Mevcut öncelik Yeni Öncelik Öncelik @@ -131,6 +145,9 @@ Kaldır Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Eklenti Mağazası @@ -193,8 +210,20 @@ Özel Saat Tarih + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Hiçbiri + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Kısayol Tuşu @@ -294,6 +323,9 @@ Günlük Klasörü Günlükleri Temizle Tüm günlük kayıtlarını silmek istediğinize emin misiniz? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Kurulum Sihirbazı Kullanıcı Verisi Dizini Kullanıcı ayarları ve yüklü eklentiler bu klasörde saklanır. Klasörün konumu taşınabilir moda bağlı olarak değişebilir. @@ -335,9 +367,16 @@ Belirtilen eklenti bulunamadı Yeni anahtar kelime boş olamaz Yeni anahtar kelime başka bir eklentiye atanmış durumda. Lütfen başka bir anahtar kelime seçin. + This new Action Keyword is the same as old, please choose a different one Başarılı Başarıyla tamamlandı - Herhangi bir anahtar kelime belirlemek istemiyorsanız * kullanın + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Özel Sorgu Kısayolları diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml index 95a746a51..427511c66 100644 --- a/Flow.Launcher/Languages/uk-UA.xaml +++ b/Flow.Launcher/Languages/uk-UA.xaml @@ -7,6 +7,11 @@ Клацніть Ні, якщо воно вже встановлене, і вам буде запропоновано вибрати теку, яка містить виконуваник {1} Будласка оберіть виконуваник {0} + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Не вдається встановити шлях до виконуваника {0}, будласка спробуйте в налаштуваннях Flow (прокрутіть вниз до кінця). Невдача ініціалізації плагінів Плагіни: {0} - не вдалося підвантажити і буде вимкнено, зверніться за допомогою до автора плагіна @@ -37,7 +42,7 @@ Режим гри Призупинити використання гарячих клавіш. Скидання позиції - Скинути положення вікна пошуку + Type here to search Налаштування @@ -70,8 +75,6 @@ Очистити останній запит Preserve Last Action Keyword Select Last Action Keyword - Фіксована висота вікна - Висота вікна не регулюється перетягуванням. Максимальна кількість результатів Ви також можете швидко налаштувати цей параметр за допомогою клавіш CTRL+Плюс чи CTRL+Мінус. Ігнорувати гарячі клавіші в повноекранному режимі @@ -102,6 +105,15 @@ Завжди переглядати Завжди відкривати панель попереднього перегляду при активації Flow. Натисніть {0}, щоб переключити попередній перегляд. Ефект тіні не дозволено, коли поточна тема має ефект розмиття + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Плагін для пошуку @@ -118,6 +130,8 @@ Поточна гаряча клавіша Нова гаряча клавіша Змінити гарячі клавіши + Plugin seach delay time + Change Plugin Seach Delay Time Поточний пріоритет Новий пріоритет Пріоритет @@ -131,6 +145,9 @@ Видалити Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Магазин плагінів @@ -193,8 +210,20 @@ Користувацька Годинник Дата + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Нема + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. Ця тема підтримує розмитий прозорий фон. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Гаряча клавіша @@ -294,6 +323,9 @@ Тека журналу Очистити журнали Ви впевнені, що хочете видалити всі журнали? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Чаклун Розташування даних користувача Налаштування користувача та встановлені плагіни зберігаються у теці даних користувача. Це місце може змінюватися залежно від того, чи перебуває програма в портативному режимі, чи ні. @@ -335,9 +367,16 @@ Не вдалося знайти вказаний плагін Нова гаряча клавіша не може бути порожньою Нова гаряча клавіша вже використовується іншим плагіном. Будь ласка, вкажіть нову + This new Action Keyword is the same as old, please choose a different one Успішно Успішно завершено - Введіть гарячу клавішу, яку ви хочете використовувати для запуску плагіна. Використовуйте * у разі, якщо ви не хочете ставити конкретну гарячу клавішу. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Задані гарячі клавіші для запитів diff --git a/Flow.Launcher/Languages/vi.xaml b/Flow.Launcher/Languages/vi.xaml index 17e421e16..6223efc00 100644 --- a/Flow.Launcher/Languages/vi.xaml +++ b/Flow.Launcher/Languages/vi.xaml @@ -7,6 +7,11 @@ Hãy chọn không nếu nó đã được cài đặt, và bạn sẽ được hỏi chọn thư mục chứa chương trình thực thi {1} Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ 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 + Type here to search Cài đặt @@ -70,8 +75,6 @@ Trống truy vấn cuối cùng Preserve Last Action Keyword Select Last Action Keyword - Giữ nguyên chiều cao cửa sổ - Chiều cao cửa sổ không thể thay đổi bằng cách kéo. 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 @@ -102,6 +105,15 @@ 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ờ + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Plugin tìm kiếm @@ -118,6 +130,8 @@ Từ hành động hiện tại Từ hành động mới Thay đổi từ hành động + Plugin seach delay time + Change Plugin Seach Delay Time Ưu tiên hiện tại Ưu tiên mới Ưu tiên @@ -131,6 +145,9 @@ Gỡ cài đặt Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default Tải tiện ích mở rộng @@ -193,8 +210,20 @@ Tùy chỉnh Giờ Ngày + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + Không + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. Phím tắt @@ -296,6 +325,9 @@ 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? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information Wizard Vị trí dữ liệu người dùng Thiết đặt người dùng và plugin đã cài đặt sẽ được lưu trong thư mục dữ liệu người dùng. Vị trí này có thể thay đổi tùy thuộc vào việc nó có ở chế độ di động hay không. @@ -337,9 +369,16 @@ 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 + This new Action Keyword is the same as old, please choose a different one 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. + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time Phím nóng truy vấn tùy chỉnh diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml index d9966d757..3d302da5b 100644 --- a/Flow.Launcher/Languages/zh-cn.xaml +++ b/Flow.Launcher/Languages/zh-cn.xaml @@ -7,6 +7,11 @@ 如果已安装,请单击“否”,系统将提示您选择包含 {1} 可执行文件的文件夹 请选择 {0} 可执行文件 + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + 无法设置 {0} 可执行路径,请尝试从 Flow 的设置中设置(向下滚动到底部)。 无法初始化插件 插件:{0} - 无法加载并将被禁用,请联系插件创建者寻求帮助 @@ -37,7 +42,7 @@ 游戏模式 暂停使用热键。 重置位置 - 重置搜索窗口位置 + Type here to search 设置 @@ -70,8 +75,6 @@ 清空上次搜索关键字 Preserve Last Action Keyword Select Last Action Keyword - 固定窗口高度 - 窗口高度不能通过拖动来调整。 最大结果显示个数 您也可以通过使用 CTRL+ "+" 和 CTRL+ "-" 来快速调整它。 全屏模式下忽略热键 @@ -102,6 +105,15 @@ 始终打开预览 Flow 启动时总是打开预览面板。按 {0} 以切换预览。 当前主题已启用模糊效果,不允许启用阴影效果 + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short 搜索插件 @@ -118,6 +130,8 @@ 当前触发关键字 新触发关键字 更改触发关键字 + Plugin seach delay time + Change Plugin Seach Delay Time 当前优先级 新优先级 优先级 @@ -131,6 +145,9 @@ 卸载 Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default 插件商店 @@ -193,8 +210,20 @@ 自定义 时钟 日期 + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + + Acrylic + Mica + Mica Alt 该主题支持两种(浅色/深色)模式。 该主题支持模糊透明背景。 + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. 热键 @@ -294,6 +323,9 @@ 日志目录 清除日志 你确定要删除所有的日志吗? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 向导 用户数据位置 用户设置和已安装的插件保存在用户数据文件夹中。此位置可能因是否处于便携模式而异。 @@ -335,9 +367,16 @@ 找不到指定的插件 新触发关键字不能为空 此触发关键字已经被指派给其他插件了,请换一个关键字 + This new Action Keyword is the same as old, please choose a different one 成功 成功完成 - 如果你不想设置触发关键字,可以使用*代替 + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time 自定义查询热键 @@ -371,7 +410,7 @@ 更新 - 背景 + 后台 版本 diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml index 01b667e72..cecad8e0d 100644 --- a/Flow.Launcher/Languages/zh-tw.xaml +++ b/Flow.Launcher/Languages/zh-tw.xaml @@ -7,6 +7,11 @@ Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable Please select the {0} executable + + Your selected {0} executable is invalid. + {2}{2} + Click yes if you would like select the {0} executable agian. Click no if you would like to download {1} + Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom). Fail to Init Plugins Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help @@ -37,7 +42,7 @@ 遊戲模式 暫停使用快捷鍵。 重設位置 - 重設搜尋視窗位置 + Type here to search 設定 @@ -70,8 +75,6 @@ 清空上次搜尋關鍵字 Preserve Last Action Keyword Select Last Action Keyword - Fixed Window Height - The window height is not adjustable by dragging. 最大結果顯示個數 You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. 全螢幕模式下忽略快捷鍵 @@ -102,6 +105,15 @@ 一律預覽 當 Flow 啟動時,一律開啟預覽面板。按下 {0} 可切換預覽。 Shadow effect is not allowed while current theme has blur effect enabled + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Default Search Delay Time + Plugin default delay time after which search results appear when typing is stopped. + Very long + Long + Normal + Short + Very short Search Plugin @@ -118,6 +130,8 @@ 目前觸發關鍵字 新觸發關鍵字 更改觸發關鍵字 + Plugin seach delay time + Change Plugin Seach Delay Time 目前優先 新增優先 優先 @@ -131,6 +145,9 @@ 解除安裝 Fail to remove plugin settings Plugins: {0} - Fail to remove plugin settings files, please remove them manually + Fail to remove plugin cache + Plugins: {0} - Fail to remove plugin cache files, please remove them manually + Default 插件商店 @@ -193,8 +210,20 @@ Custom 時鐘 日期 + Backdrop Type + Backdrop supported starting from Windows 11 build 22000 and above + None + Acrylic + Mica + Mica Alt This theme supports two(light/dark) modes. This theme supports Blur Transparent Background. + Show placeholder + Display placeholder when query is empty + Placeholder text + Change placeholder text. Input empty will use: {0} + Fixed Window Size + The window size is not adjustable by dragging. 快捷鍵 @@ -294,6 +323,9 @@ 日誌資料夾 清除日誌 請確認要刪除所有日誌嗎? + Clear Caches + Are you sure you want to delete all caches? + Failed to clear part of folders and files. Please see log file for more information 嚮導 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. @@ -335,9 +367,16 @@ 找不到指定的插件 新觸發關鍵字不能為空白 新觸發關鍵字已經被指派給另一個插件,請設定其他關鍵字。 + This new Action Keyword is the same as old, please choose a different one 成功 成功完成 - 如果不想設定觸發關鍵字,可以使用*代替 + Enter the action keywords you like to use to start the plugin and use whitespace to divide them. Use * if you don't want to specify any, and the plugin will be triggered without any action keywords. + + + Search Delay Time Setting + Select the search delay time you like to use for the plugin. Select "{0}" if you don't want to specify any, and the plugin will use default search delay time. + Current search delay time + New search delay time 自定義快捷鍵查詢 diff --git a/Flow.Launcher/PriorityChangeWindow.xaml b/Flow.Launcher/PriorityChangeWindow.xaml deleted file mode 100644 index 33ed54bb4..000000000 --- a/Flow.Launcher/PriorityChangeWindow.xaml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Flow.Launcher/PriorityChangeWindow.xaml.cs b/Flow.Launcher/PriorityChangeWindow.xaml.cs deleted file mode 100644 index fbe2a941d..000000000 --- a/Flow.Launcher/PriorityChangeWindow.xaml.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Flow.Launcher.Core.Plugin; -using Flow.Launcher.Core.Resource; -using Flow.Launcher.Plugin; -using Flow.Launcher.ViewModel; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Input; -using Flow.Launcher.Core; - -namespace Flow.Launcher -{ - /// - /// Interaction Logic of PriorityChangeWindow.xaml - /// - public partial class PriorityChangeWindow : Window - { - private readonly PluginPair plugin; - private readonly Internationalization translater = InternationalizationManager.Instance; - private readonly PluginViewModel pluginViewModel; - public PriorityChangeWindow(string pluginId, PluginViewModel pluginViewModel) - { - InitializeComponent(); - plugin = PluginManager.GetPluginForId(pluginId); - this.pluginViewModel = pluginViewModel; - if (plugin == null) - { - App.API.ShowMsgBox(translater.GetTranslation("cannotFindSpecifiedPlugin")); - Close(); - } - } - - private void BtnCancel_OnClick(object sender, RoutedEventArgs e) - { - Close(); - } - - private void btnDone_OnClick(object sender, RoutedEventArgs e) - { - if (int.TryParse(tbAction.Text.Trim(), out var newPriority)) - { - pluginViewModel.ChangePriority(newPriority); - Close(); - } - else - { - string msg = translater.GetTranslation("invalidPriority"); - App.API.ShowMsgBox(msg); - } - - } - - private void PriorityChangeWindow_Loaded(object sender, RoutedEventArgs e) - { - tbAction.Text = pluginViewModel.Priority.ToString(); - tbAction.Focus(); - } - private void window_MouseDown(object sender, MouseButtonEventArgs e) /* for close hotkey popup */ - { - TextBox textBox = Keyboard.FocusedElement as TextBox; - if (textBox != null) - { - TraversalRequest tRequest = new TraversalRequest(FocusNavigationDirection.Next); - textBox.MoveFocus(tRequest); - } - } - } -} diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index e3bbc2eee..95ef6c9f3 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -12,9 +12,11 @@ using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using CommunityToolkit.Mvvm.DependencyInjection; -using Squirrel; using Flow.Launcher.Core; using Flow.Launcher.Core.Plugin; +using Flow.Launcher.Core.Resource; +using Flow.Launcher.Core.ExternalPlugins; +using Flow.Launcher.Core.Storage; using Flow.Launcher.Helper; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.Http; @@ -28,17 +30,20 @@ using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.Plugin.SharedCommands; using Flow.Launcher.ViewModel; using JetBrains.Annotations; -using Flow.Launcher.Core.Resource; -using Flow.Launcher.Core.ExternalPlugins; +using Squirrel; +using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; namespace Flow.Launcher { - public class PublicAPIInstance : IPublicAPI + public class PublicAPIInstance : IPublicAPI, IRemovable { private readonly Settings _settings; private readonly Internationalization _translater; private readonly MainViewModel _mainVM; + private Theme _theme; + private Theme Theme => _theme ??= Ioc.Default.GetRequiredService(); + private readonly object _saveSettingsLock = new(); #region Constructor @@ -89,7 +94,11 @@ namespace Flow.Launcher public bool IsMainWindowVisible() => _mainVM.MainWindowVisibilityStatus; - public event VisibilityChangedEventHandler VisibilityChanged { add => _mainVM.VisibilityChanged += value; remove => _mainVM.VisibilityChanged -= value; } + public event VisibilityChangedEventHandler VisibilityChanged + { + add => _mainVM.VisibilityChanged += value; + remove => _mainVM.VisibilityChanged -= value; + } // Must use Ioc.Default.GetRequiredService() to avoid circular dependency public void CheckForNewUpdate() => _ = Ioc.Default.GetRequiredService().UpdateAppAsync(false); @@ -176,13 +185,14 @@ namespace Flow.Launcher public MatchResult FuzzySearch(string query, string stringToCompare) => StringMatcher.FuzzySearch(query, stringToCompare); - public Task HttpGetStringAsync(string url, CancellationToken token = default) => Http.GetAsync(url, token); + public Task HttpGetStringAsync(string url, CancellationToken token = default) => + Http.GetAsync(url, token); public Task HttpGetStreamAsync(string url, CancellationToken token = default) => Http.GetStreamAsync(url, token); public Task HttpDownloadAsync([NotNull] string url, [NotNull] string filePath, Action reportProgress = null, - CancellationToken token = default) => Http.DownloadAsync(url, filePath, reportProgress, token); + CancellationToken token = default) =>Http.DownloadAsync(url, filePath, reportProgress, token); public void AddActionKeyword(string pluginId, string newActionKeyword) => PluginManager.AddActionKeyword(pluginId, newActionKeyword); @@ -201,8 +211,11 @@ namespace Flow.Launcher public void LogWarn(string className, string message, [CallerMemberName] string methodName = "") => Log.Warn(className, message, methodName); - public void LogException(string className, string message, Exception e, - [CallerMemberName] string methodName = "") => Log.Exception(className, message, e, methodName); + public void LogError(string className, string message, [CallerMemberName] string methodName = "") => + Log.Error(className, message, methodName); + + public void LogException(string className, string message, Exception e, [CallerMemberName] string methodName = "") => + Log.Exception(className, message, e, methodName); private readonly ConcurrentDictionary _pluginJsonStorages = new(); @@ -215,20 +228,17 @@ namespace Flow.Launcher var name = value.GetType().GetField("AssemblyName")?.GetValue(value)?.ToString(); if (name == assemblyName) { - _pluginJsonStorages.Remove(key, out var pluginJsonStorage); + _pluginJsonStorages.TryRemove(key, out var _); } } } - /// - /// Save plugin settings. - /// public void SavePluginSettings() { foreach (var value in _pluginJsonStorages.Values) { - var method = value.GetType().GetMethod("Save"); - method?.Invoke(value, null); + var savable = value as ISavable; + savable?.Save(); } } @@ -250,14 +260,6 @@ namespace Flow.Launcher ((PluginJsonStorage)_pluginJsonStorages[type]).Save(); } - public void SaveJsonStorage(T settings) where T : new() - { - var type = typeof(T); - _pluginJsonStorages[type] = new PluginJsonStorage(settings); - - ((PluginJsonStorage)_pluginJsonStorages[type]).Save(); - } - public void OpenDirectory(string DirectoryPath, string FileNameOrFilePath = null) { using var explorer = new Process(); @@ -344,17 +346,72 @@ namespace Flow.Launcher private readonly List> _globalKeyboardHandlers = new(); - public void RegisterGlobalKeyboardCallback(Func callback) => _globalKeyboardHandlers.Add(callback); - public void RemoveGlobalKeyboardCallback(Func callback) => _globalKeyboardHandlers.Remove(callback); + public void RegisterGlobalKeyboardCallback(Func callback) => + _globalKeyboardHandlers.Add(callback); + + public void RemoveGlobalKeyboardCallback(Func callback) => + _globalKeyboardHandlers.Remove(callback); public void ReQuery(bool reselect = true) => _mainVM.ReQuery(reselect); public void BackToQueryResults() => _mainVM.BackToQueryResults(); - public MessageBoxResult ShowMsgBox(string messageBoxText, string caption = "", MessageBoxButton button = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None, MessageBoxResult defaultResult = MessageBoxResult.OK) => + public MessageBoxResult ShowMsgBox(string messageBoxText, string caption = "", + MessageBoxButton button = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None, + MessageBoxResult defaultResult = MessageBoxResult.OK) => MessageBoxEx.Show(messageBoxText, caption, button, icon, defaultResult); - public Task ShowProgressBoxAsync(string caption, Func, Task> reportProgressAsync, Action cancelProgress = null) => ProgressBoxEx.ShowAsync(caption, reportProgressAsync, cancelProgress); + public Task ShowProgressBoxAsync(string caption, Func, Task> reportProgressAsync, + Action cancelProgress = null) => ProgressBoxEx.ShowAsync(caption, reportProgressAsync, cancelProgress); + + public List GetAvailableThemes() => Theme.GetAvailableThemes(); + + public ThemeData GetCurrentTheme() => Theme.GetCurrentTheme(); + + public bool SetCurrentTheme(ThemeData theme) => + Theme.ChangeTheme(theme.FileNameWithoutExtension); + + private readonly ConcurrentDictionary<(string, string, Type), object> _pluginBinaryStorages = new(); + + public void RemovePluginCaches(string cacheDirectory) + { + foreach (var keyValuePair in _pluginBinaryStorages) + { + var key = keyValuePair.Key; + var currentCacheDirectory = key.Item2; + if (cacheDirectory == currentCacheDirectory) + { + _pluginBinaryStorages.TryRemove(key, out var _); + } + } + } + + public void SavePluginCaches() + { + foreach (var value in _pluginBinaryStorages.Values) + { + var savable = value as ISavable; + savable?.Save(); + } + } + + public async Task LoadCacheBinaryStorageAsync(string cacheName, string cacheDirectory, T defaultData) where T : new() + { + var type = typeof(T); + if (!_pluginBinaryStorages.ContainsKey((cacheName, cacheDirectory, type))) + _pluginBinaryStorages[(cacheName, cacheDirectory, type)] = new PluginBinaryStorage(cacheName, cacheDirectory); + + return await ((PluginBinaryStorage)_pluginBinaryStorages[(cacheName, cacheDirectory, type)]).TryLoadAsync(defaultData); + } + + public async Task SaveCacheBinaryStorageAsync(string cacheName, string cacheDirectory) where T : new() + { + var type = typeof(T); + if (!_pluginBinaryStorages.ContainsKey((cacheName, cacheDirectory, type))) + _pluginBinaryStorages[(cacheName, cacheDirectory, type)] = new PluginBinaryStorage(cacheName, cacheDirectory); + + await ((PluginBinaryStorage)_pluginBinaryStorages[(cacheName, cacheDirectory, type)]).SaveAsync(); + } public ValueTask LoadImageAsync(string path, bool loadFullImage = false, bool cacheImage = true) => ImageLoader.LoadAsync(path, loadFullImage, cacheImage); @@ -375,6 +432,18 @@ namespace Flow.Launcher public Task UninstallPluginAsync(PluginMetadata pluginMetadata, bool removePluginSettings = false) => PluginManager.UninstallPluginAsync(pluginMetadata, removePluginSettings); + public long StopwatchLogDebug(string className, string message, Action action, [CallerMemberName] string methodName = "") => + Stopwatch.Debug($"|{className}.{methodName}|{message}", action); + + public Task StopwatchLogDebugAsync(string className, string message, Func action, [CallerMemberName] string methodName = "") => + Stopwatch.DebugAsync($"|{className}.{methodName}|{message}", action); + + public long StopwatchLogInfo(string className, string message, Action action, [CallerMemberName] string methodName = "") => + Stopwatch.Normal($"|{className}.{methodName}|{message}", action); + + public Task StopwatchLogInfoAsync(string className, string message, Func action, [CallerMemberName] string methodName = "") => + Stopwatch.NormalAsync($"|{className}.{methodName}|{message}", action); + #endregion #region Private Methods diff --git a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml index b19c668e0..231036244 100644 --- a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml +++ b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml @@ -3,6 +3,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cc="clr-namespace:Flow.Launcher.Resources.Controls" + xmlns:converters="clr-namespace:Flow.Launcher.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ui="http://schemas.modernwpf.com/2019" @@ -11,6 +12,9 @@ d:DesignHeight="300" d:DesignWidth="300" mc:Ignorable="d"> + + + + - - + Orientation="Horizontal" + Visibility="{Binding DataContext.IsPrioritySelected, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}"> + + + + + + + + + + OnContent="{DynamicResource enable}" + Visibility="{Binding DataContext.IsOnOffSelected, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}" /> @@ -98,8 +116,6 @@ - - - + diff --git a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs index dfa03a204..a27a00782 100644 --- a/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs +++ b/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs @@ -1,4 +1,6 @@ -namespace Flow.Launcher.Resources.Controls; +using ModernWpf.Controls; + +namespace Flow.Launcher.Resources.Controls; public partial class InstalledPluginDisplay { @@ -6,4 +8,13 @@ public partial class InstalledPluginDisplay { InitializeComponent(); } + + // This is used for PriorityControl to force its value to be 0 when the user clears the value + private void NumberBox_OnValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args) + { + if (double.IsNaN(args.NewValue)) + { + sender.Value = 0; + } + } } diff --git a/Flow.Launcher/Resources/Controls/InstalledPluginSearchDelay.xaml b/Flow.Launcher/Resources/Controls/InstalledPluginSearchDelay.xaml deleted file mode 100644 index 0fd98bfac..000000000 --- a/Flow.Launcher/Resources/Controls/InstalledPluginSearchDelay.xaml +++ /dev/null @@ -1,49 +0,0 @@ - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Flow.Launcher/SearchDelayTimeWindow.xaml.cs b/Flow.Launcher/SearchDelayTimeWindow.xaml.cs deleted file mode 100644 index 4a3c9f5a7..000000000 --- a/Flow.Launcher/SearchDelayTimeWindow.xaml.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Linq; -using System.Windows; -using Flow.Launcher.Plugin; -using Flow.Launcher.SettingPages.ViewModels; -using Flow.Launcher.ViewModel; -using static Flow.Launcher.SettingPages.ViewModels.SettingsPaneGeneralViewModel; - -namespace Flow.Launcher; - -public partial class SearchDelayTimeWindow : Window -{ - private readonly PluginViewModel _pluginViewModel; - - public SearchDelayTimeWindow(PluginViewModel pluginViewModel) - { - InitializeComponent(); - _pluginViewModel = pluginViewModel; - } - - private void SearchDelayTimeWindow_OnLoaded(object sender, RoutedEventArgs e) - { - tbSearchDelayTimeTips.Text = string.Format(App.API.GetTranslation("searchDelayTime_tips"), - App.API.GetTranslation("default")); - tbOldSearchDelayTime.Text = _pluginViewModel.SearchDelayTimeText; - var searchDelayTimes = DropdownDataGeneric.GetValues("SearchDelayTime"); - SearchDelayTimeData selected = null; - // Because default value is SearchDelayTime.VeryShort, we need to get selected value before adding default value - if (_pluginViewModel.PluginSearchDelayTime != null) - { - selected = searchDelayTimes.FirstOrDefault(x => x.Value == _pluginViewModel.PluginSearchDelayTime); - } - // Add default value to the beginning of the list - // When _pluginViewModel.PluginSearchDelayTime equals null, we will select this - searchDelayTimes.Insert(0, new SearchDelayTimeData { Display = App.API.GetTranslation("default"), LocalizationKey = "default" }); - selected ??= searchDelayTimes.FirstOrDefault(); - cbDelay.ItemsSource = searchDelayTimes; - cbDelay.SelectedItem = selected; - cbDelay.Focus(); - } - - private void BtnCancel_OnClick(object sender, RoutedEventArgs e) - { - Close(); - } - - private void btnDone_OnClick(object sender, RoutedEventArgs _) - { - // Update search delay time - var selected = cbDelay.SelectedItem as SearchDelayTimeData; - SearchDelayTime? changedValue = selected?.LocalizationKey != "default" ? selected.Value : null; - _pluginViewModel.PluginSearchDelayTime = changedValue; - - // Update search delay time text and close window - _pluginViewModel.OnSearchDelayTimeChanged(); - Close(); - } -} diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs index dcd17cf24..97b31637d 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Windows.Forms; +using CommunityToolkit.Mvvm.DependencyInjection; using CommunityToolkit.Mvvm.Input; using Flow.Launcher.Core; using Flow.Launcher.Core.Configuration; @@ -39,7 +40,7 @@ public partial class SettingsPaneGeneralViewModel : BaseModel public class SearchWindowAlignData : DropdownDataGeneric { } public class SearchPrecisionData : DropdownDataGeneric { } public class LastQueryModeData : DropdownDataGeneric { } - public class SearchDelayTimeData : DropdownDataGeneric { } + public bool StartFlowLauncherOnSystemStartup { @@ -152,25 +153,20 @@ public partial class SettingsPaneGeneralViewModel : BaseModel public List LastQueryModes { get; } = DropdownDataGeneric.GetValues("LastQuery"); - public List SearchDelayTimes { get; } = - DropdownDataGeneric.GetValues("SearchDelayTime"); - - public SearchDelayTimeData SearchDelayTime + public int SearchDelayTimeValue { - get => SearchDelayTimes.FirstOrDefault(x => x.Value == Settings.SearchDelayTime) ?? - SearchDelayTimes.FirstOrDefault(x => x.Value == Plugin.SearchDelayTime.Normal) ?? - SearchDelayTimes.FirstOrDefault(); + get => Settings.SearchDelayTime; set { - if (value == null) - return; - - if (Settings.SearchDelayTime != value.Value) + if (Settings.SearchDelayTime != value) { - Settings.SearchDelayTime = value.Value; + Settings.SearchDelayTime = value; + OnPropertyChanged(); + OnPropertyChanged(nameof(SearchDelayTimeDisplay)); } } } + public string SearchDelayTimeDisplay => $"{SearchDelayTimeValue}ms"; private void UpdateEnumDropdownLocalizations() { @@ -178,7 +174,6 @@ public partial class SettingsPaneGeneralViewModel : BaseModel DropdownDataGeneric.UpdateLabels(SearchWindowAligns); DropdownDataGeneric.UpdateLabels(SearchPrecisionScores); DropdownDataGeneric.UpdateLabels(LastQueryModes); - DropdownDataGeneric.UpdateLabels(SearchDelayTimes); } public string Language diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginStoreViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginStoreViewModel.cs index 84d8a2ff9..fd2c8e09f 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginStoreViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginStoreViewModel.cs @@ -32,7 +32,7 @@ public partial class SettingsPanePluginStoreViewModel : BaseModel public bool SatisfiesFilter(PluginStoreItemViewModel plugin) { return string.IsNullOrEmpty(FilterText) || - StringMatcher.FuzzySearch(FilterText, plugin.Name).IsSearchPrecisionScoreMet() || - StringMatcher.FuzzySearch(FilterText, plugin.Description).IsSearchPrecisionScoreMet(); + App.API.FuzzySearch(FilterText, plugin.Name).IsSearchPrecisionScoreMet() || + App.API.FuzzySearch(FilterText, plugin.Description).IsSearchPrecisionScoreMet(); } } diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginsViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginsViewModel.cs index 3c1aba400..b89e970e9 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginsViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPanePluginsViewModel.cs @@ -1,22 +1,90 @@ using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; +using System.Windows.Controls; +using System.Windows; +using CommunityToolkit.Mvvm.Input; using Flow.Launcher.Core.Plugin; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; using Flow.Launcher.ViewModel; +using ModernWpf.Controls; #nullable enable namespace Flow.Launcher.SettingPages.ViewModels; -public class SettingsPanePluginsViewModel : BaseModel +public partial class SettingsPanePluginsViewModel : BaseModel { private readonly Settings _settings; + public class DisplayModeData : DropdownDataGeneric { } + + public List DisplayModes { get; } = + DropdownDataGeneric.GetValues("DisplayMode"); + + private DisplayMode _selectedDisplayMode = DisplayMode.OnOff; + public DisplayMode SelectedDisplayMode + { + get => _selectedDisplayMode; + set + { + if (_selectedDisplayMode != value) + { + _selectedDisplayMode = value; + OnPropertyChanged(); + UpdateDisplayModeFromSelection(); + } + } + } + + private bool _isOnOffSelected = true; + public bool IsOnOffSelected + { + get => _isOnOffSelected; + set + { + if (_isOnOffSelected != value) + { + _isOnOffSelected = value; + OnPropertyChanged(); + } + } + } + + private bool _isPrioritySelected; + public bool IsPrioritySelected + { + get => _isPrioritySelected; + set + { + if (_isPrioritySelected != value) + { + _isPrioritySelected = value; + OnPropertyChanged(); + } + } + } + + private bool _isSearchDelaySelected; + public bool IsSearchDelaySelected + { + get => _isSearchDelaySelected; + set + { + if (_isSearchDelaySelected != value) + { + _isSearchDelaySelected = value; + OnPropertyChanged(); + } + } + } + public SettingsPanePluginsViewModel(Settings settings) { _settings = settings; + UpdateEnumDropdownLocalizations(); } public string FilterText { get; set; } = string.Empty; @@ -38,8 +106,86 @@ public class SettingsPanePluginsViewModel : BaseModel public List FilteredPluginViewModels => PluginViewModels .Where(v => string.IsNullOrEmpty(FilterText) || - StringMatcher.FuzzySearch(FilterText, v.PluginPair.Metadata.Name).IsSearchPrecisionScoreMet() || - StringMatcher.FuzzySearch(FilterText, v.PluginPair.Metadata.Description).IsSearchPrecisionScoreMet() + App.API.FuzzySearch(FilterText, v.PluginPair.Metadata.Name).IsSearchPrecisionScoreMet() || + App.API.FuzzySearch(FilterText, v.PluginPair.Metadata.Description).IsSearchPrecisionScoreMet() ) .ToList(); + + [RelayCommand] + private async Task OpenHelperAsync() + { + var helpDialog = new ContentDialog() + { + Content = new StackPanel + { + Children = + { + new TextBlock + { + Text = (string)Application.Current.Resources["priority"], + FontSize = 18, + Margin = new Thickness(0, 0, 0, 10), + TextWrapping = TextWrapping.Wrap + }, + new TextBlock + { + Text = (string)Application.Current.Resources["priority_tips"], + TextWrapping = TextWrapping.Wrap + }, + new TextBlock + { + Text = (string)Application.Current.Resources["searchDelay"], + FontSize = 18, + Margin = new Thickness(0, 24, 0, 10), + TextWrapping = TextWrapping.Wrap + }, + new TextBlock + { + Text = (string)Application.Current.Resources["searchDelayTimeTips"], + TextWrapping = TextWrapping.Wrap + } + } + }, + + PrimaryButtonText = (string)Application.Current.Resources["commonOK"], + CornerRadius = new CornerRadius(8), + Style = (Style)Application.Current.Resources["ContentDialog"] + }; + + await helpDialog.ShowAsync(); + } + + private void UpdateEnumDropdownLocalizations() + { + DropdownDataGeneric.UpdateLabels(DisplayModes); + } + + private void UpdateDisplayModeFromSelection() + { + switch (SelectedDisplayMode) + { + case DisplayMode.Priority: + IsOnOffSelected = false; + IsPrioritySelected = true; + IsSearchDelaySelected = false; + break; + case DisplayMode.SearchDelay: + IsOnOffSelected = false; + IsPrioritySelected = false; + IsSearchDelaySelected = true; + break; + default: + IsOnOffSelected = true; + IsPrioritySelected = false; + IsSearchDelaySelected = false; + break; + } + } +} + +public enum DisplayMode +{ + OnOff, + Priority, + SearchDelay } diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs index 6e2488fe1..f78704ef2 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneThemeViewModel.cs @@ -12,6 +12,7 @@ using Flow.Launcher.Helper; using Flow.Launcher.Infrastructure; using Flow.Launcher.Infrastructure.UserSettings; using Flow.Launcher.Plugin; +using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.ViewModel; using ModernWpf; using ThemeManagerForColorSchemeSwitch = ModernWpf.ThemeManager; @@ -28,25 +29,23 @@ public partial class SettingsPaneThemeViewModel : BaseModel public static string LinkHowToCreateTheme => @"https://www.flowlauncher.com/theme-builder/"; public static string LinkThemeGallery => "https://github.com/Flow-Launcher/Flow.Launcher/discussions/1438"; - private List _themes; - public List Themes => _themes ??= _theme.LoadAvailableThemes(); + private List _themes; + public List Themes => _themes ??= App.API.GetAvailableThemes(); - private Theme.ThemeData _selectedTheme; - public Theme.ThemeData SelectedTheme + private ThemeData _selectedTheme; + public ThemeData SelectedTheme { - get => _selectedTheme ??= Themes.Find(v => v.FileNameWithoutExtension == _theme.GetCurrentTheme()); + get => _selectedTheme ??= Themes.Find(v => v == App.API.GetCurrentTheme()); set { _selectedTheme = value; - _theme.ChangeTheme(value.FileNameWithoutExtension); + App.API.SetCurrentTheme(value); // Update UI state OnPropertyChanged(nameof(BackdropType)); OnPropertyChanged(nameof(IsBackdropEnabled)); OnPropertyChanged(nameof(IsDropShadowEnabled)); OnPropertyChanged(nameof(DropShadowEffect)); - - _ = _theme.RefreshFrameAsync(); } } diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml index 1d4dfd8ae..e4b195e10 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml @@ -201,6 +201,35 @@ + + + + + + + + + + + - - - @@ -31,58 +28,93 @@ Style="{StaticResource PageTitle}" Text="{DynamicResource plugins}" TextAlignment="Left" /> - - - - - + Orientation="Horizontal"> + + + public partial class ProgramSetting : UserControl { - private PluginInitContext context; - private Settings _settings; + private readonly PluginInitContext context; + private readonly Settings _settings; private GridViewColumnHeader _lastHeaderClicked; private ListSortDirection _lastDirection; @@ -109,7 +109,7 @@ namespace Flow.Launcher.Plugin.Program.Views public bool ShowUWPCheckbox => UWPPackage.SupportUWP(); - public ProgramSetting(PluginInitContext context, Settings settings, Win32[] win32s, UWPApp[] uwps) + public ProgramSetting(PluginInitContext context, Settings settings) { this.context = context; _settings = settings; @@ -183,7 +183,7 @@ namespace Flow.Launcher.Plugin.Program.Views EditProgramSource(selectedProgramSource); } - private void EditProgramSource(ProgramSource selectedProgramSource) + private async void EditProgramSource(ProgramSource selectedProgramSource) { if (selectedProgramSource == null) { @@ -202,13 +202,13 @@ namespace Flow.Launcher.Plugin.Program.Views { if (selectedProgramSource.Enabled) { - ProgramSettingDisplay.SetProgramSourcesStatus(new List { selectedProgramSource }, + await ProgramSettingDisplay.SetProgramSourcesStatusAsync(new List { selectedProgramSource }, true); // sync status in win32, uwp and disabled ProgramSettingDisplay.RemoveDisabledFromSettings(); } else { - ProgramSettingDisplay.SetProgramSourcesStatus(new List { selectedProgramSource }, + await ProgramSettingDisplay.SetProgramSourcesStatusAsync(new List { selectedProgramSource }, false); ProgramSettingDisplay.StoreDisabledInSettings(); } @@ -277,14 +277,14 @@ namespace Flow.Launcher.Plugin.Program.Views } } - private void btnLoadAllProgramSource_OnClick(object sender, RoutedEventArgs e) + private async void btnLoadAllProgramSource_OnClick(object sender, RoutedEventArgs e) { - ProgramSettingDisplay.DisplayAllPrograms(); + await ProgramSettingDisplay.DisplayAllProgramsAsync(); ViewRefresh(); } - private void btnProgramSourceStatus_OnClick(object sender, RoutedEventArgs e) + private async void btnProgramSourceStatus_OnClick(object sender, RoutedEventArgs e) { var selectedItems = programSourceView .SelectedItems.Cast() @@ -311,18 +311,18 @@ namespace Flow.Launcher.Plugin.Program.Views } else if (HasMoreOrEqualEnabledItems(selectedItems)) { - ProgramSettingDisplay.SetProgramSourcesStatus(selectedItems, false); + await ProgramSettingDisplay.SetProgramSourcesStatusAsync(selectedItems, false); ProgramSettingDisplay.StoreDisabledInSettings(); } else { - ProgramSettingDisplay.SetProgramSourcesStatus(selectedItems, true); + await ProgramSettingDisplay.SetProgramSourcesStatusAsync(selectedItems, true); ProgramSettingDisplay.RemoveDisabledFromSettings(); } - if (selectedItems.IsReindexRequired()) + if (await selectedItems.IsReindexRequiredAsync()) ReIndexing(); programSourceView.SelectedItems.Clear(); diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj b/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj index 8f443214b..c7ea7cdd5 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj +++ b/Plugins/Flow.Launcher.Plugin.Shell/Flow.Launcher.Plugin.Shell.csproj @@ -37,7 +37,6 @@ - diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml index 77a3fed47..dcfc82e0a 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml @@ -6,7 +6,7 @@ Drücken Sie eine beliebige Taste, um dieses Fenster zu schließen ... Eingabeaufforderung nach Befehlsausführung nicht schließen Immer als Administrator ausführen - Use Windows Terminal + Windows-Terminal verwenden Als anderer Benutzer ausführen Shell Ermöglicht das Ausführen von Systembefehlen aus Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs index 53479b81f..0d395c053 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs @@ -7,20 +7,21 @@ using System.Linq; using System.Threading.Tasks; using WindowsInput; using WindowsInput.Native; -using Flow.Launcher.Infrastructure.Hotkey; -using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Plugin.SharedCommands; using Control = System.Windows.Controls.Control; using Keys = System.Windows.Forms.Keys; namespace Flow.Launcher.Plugin.Shell { - public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu + public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, IDisposable { + private static readonly string ClassName = nameof(Main); + + internal PluginInitContext Context { get; private set; } + private const string Image = "Images/shell.png"; - private PluginInitContext context; private bool _winRStroked; - private readonly KeyboardSimulator _keyboardSimulator = new KeyboardSimulator(new InputSimulator()); + private readonly KeyboardSimulator _keyboardSimulator = new(new InputSimulator()); private Settings _settings; @@ -53,7 +54,7 @@ namespace Flow.Launcher.Plugin.Shell { basedir = Path.GetDirectoryName(excmd); var dirName = Path.GetDirectoryName(cmd); - dir = (dirName.EndsWith("/") || dirName.EndsWith(@"\")) ? dirName : cmd.Substring(0, dirName.Length + 1); + dir = (dirName.EndsWith("/") || dirName.EndsWith(@"\")) ? dirName : cmd[..(dirName.Length + 1)]; } if (basedir != null) @@ -88,7 +89,7 @@ namespace Flow.Launcher.Plugin.Shell } catch (Exception e) { - Log.Exception($"|Flow.Launcher.Plugin.Shell.Main.Query|Exception when query for <{query}>", e); + Context.API.LogException(ClassName, $"Exception when query for <{query}>", e); } return results; } @@ -102,14 +103,14 @@ namespace Flow.Launcher.Plugin.Shell { if (m.Key == cmd) { - result.SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value); + result.SubTitle = string.Format(Context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value); return null; } var ret = new Result { Title = m.Key, - SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value), + SubTitle = string.Format(Context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value), IcoPath = Image, Action = c => { @@ -139,7 +140,7 @@ namespace Flow.Launcher.Plugin.Shell { Title = cmd, Score = 5000, - SubTitle = context.API.GetTranslation("flowlauncher_plugin_cmd_execute_through_shell"), + SubTitle = Context.API.GetTranslation("flowlauncher_plugin_cmd_execute_through_shell"), IcoPath = Image, Action = c => { @@ -164,7 +165,7 @@ namespace Flow.Launcher.Plugin.Shell .Select(m => new Result { Title = m.Key, - SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value), + SubTitle = string.Format(Context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value), IcoPath = Image, Action = c => { @@ -211,7 +212,7 @@ namespace Flow.Launcher.Plugin.Shell info.FileName = "cmd.exe"; } - info.ArgumentList.Add($"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command} {(_settings.CloseShellAfterPress ? $"&& echo {context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")} && pause > nul /c" : "")}"); + info.ArgumentList.Add($"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command} {(_settings.CloseShellAfterPress ? $"&& echo {Context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")} && pause > nul /c" : "")}"); break; } @@ -234,7 +235,7 @@ namespace Flow.Launcher.Plugin.Shell else { info.ArgumentList.Add("-Command"); - info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); + info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{Context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); } break; } @@ -255,7 +256,7 @@ namespace Flow.Launcher.Plugin.Shell info.ArgumentList.Add("-NoExit"); } info.ArgumentList.Add("-Command"); - info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); + info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{Context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); break; } @@ -309,17 +310,17 @@ namespace Flow.Launcher.Plugin.Shell { var name = "Plugin: Shell"; var message = $"Command not found: {e.Message}"; - context.API.ShowMsg(name, message); + Context.API.ShowMsg(name, message); } catch (Win32Exception e) { var name = "Plugin: Shell"; var message = $"Error running the command: {e.Message}"; - context.API.ShowMsg(name, message); + Context.API.ShowMsg(name, message); } } - private bool ExistInPath(string filename) + private static bool ExistInPath(string filename) { if (File.Exists(filename)) { @@ -350,14 +351,14 @@ namespace Flow.Launcher.Plugin.Shell public void Init(PluginInitContext context) { - this.context = context; + Context = context; _settings = context.API.LoadSettingJsonStorage(); context.API.RegisterGlobalKeyboardCallback(API_GlobalKeyboardEvent); } bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state) { - if (!context.CurrentPluginMetadata.Disabled && _settings.ReplaceWinR) + if (!Context.CurrentPluginMetadata.Disabled && _settings.ReplaceWinR) { if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed) { @@ -380,10 +381,9 @@ namespace Flow.Launcher.Plugin.Shell // show the main window and set focus to the query box _ = Task.Run(() => { - context.API.ShowMainWindow(); - context.API.ChangeQuery($"{context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeparator}"); + Context.API.ShowMainWindow(); + Context.API.ChangeQuery($"{Context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeparator}"); }); - } public Control CreateSettingPanel() @@ -393,12 +393,12 @@ namespace Flow.Launcher.Plugin.Shell public string GetTranslatedPluginTitle() { - return context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_name"); + return Context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_name"); } public string GetTranslatedPluginDescription() { - return context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_description"); + return Context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_description"); } public List LoadContextMenus(Result selectedResult) @@ -407,8 +407,8 @@ namespace Flow.Launcher.Plugin.Shell { new() { - Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_different_user"), - AsyncAction = async c => + Title = Context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_different_user"), + Action = c => { Execute(ShellCommand.RunAsDifferentUser, PrepareProcessStartInfo(selectedResult.Title)); return true; @@ -418,7 +418,7 @@ namespace Flow.Launcher.Plugin.Shell }, new() { - Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_administrator"), + Title = Context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_administrator"), Action = c => { Execute(Process.Start, PrepareProcessStartInfo(selectedResult.Title, true)); @@ -429,10 +429,10 @@ namespace Flow.Launcher.Plugin.Shell }, new() { - Title = context.API.GetTranslation("flowlauncher_plugin_cmd_copy"), + Title = Context.API.GetTranslation("flowlauncher_plugin_cmd_copy"), Action = c => { - context.API.CopyToClipboard(selectedResult.Title); + Context.API.CopyToClipboard(selectedResult.Title); return true; }, IcoPath = "Images/copy.png", @@ -442,5 +442,10 @@ namespace Flow.Launcher.Plugin.Shell return results; } + + public void Dispose() + { + Context.API.RemoveGlobalKeyboardCallback(API_GlobalKeyboardEvent); + } } } diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj index 266c24170..dbc36ad42 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj +++ b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj @@ -39,7 +39,6 @@ - diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ar.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ar.xaml index 529be9f45..ccc50678e 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ar.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ar.xaml @@ -2,8 +2,9 @@ - أمر + اسم البرنامج وصف + أمر إيقاف التشغيل إعادة التشغيل @@ -27,6 +28,8 @@ تبديل وضع اللعبة Set the Flow Launcher Theme + تعدي + إيقاف تشغيل الكمبيوتر إعادة تشغيل الكمبيوتر @@ -59,6 +62,15 @@ هل أنت متأكد أنك تريد إعادة تشغيل الكمبيوتر مع خيارات التمهيد المتقدمة؟ هل أنت متأكد أنك تريد تسجيل الخروج؟ + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + إعادة تعيين + Confirm + إلغاء + Please enter a non-empty command keyword + أوامر النظام يوفر أوامر متعلقة بالنظام، مثل إيقاف التشغيل، القفل، الإعدادات، وما إلى ذلك. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/cs.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/cs.xaml index 1a42ce51b..de35c9592 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/cs.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/cs.xaml @@ -2,8 +2,9 @@ - Příkaz + Jméno Popis + Příkaz Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Editovat + Vypnout počítač Restartovat počítač @@ -59,6 +62,15 @@ Opravdu chcete restartovat počítač s rozšířenými možnostmi spouštění? Opravdu se chcete odhlásit? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Potvrdit + Zrušit + Please enter a non-empty command keyword + Systémové příkazy Poskytuje příkazy související se systémem, jako je vypnutí, uzamčení počítače atd. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/da.xaml index 172adfd2f..91230e7e3 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/da.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/da.xaml @@ -2,8 +2,9 @@ - Command + Name Description + Command Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Rediger + Shutdown Computer Restart Computer @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + Annuller + Please enter a non-empty command keyword + System Commands Provides System related commands. e.g. shutdown, lock, settings etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/de.xaml index cdd0e0348..794e949ad 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/de.xaml @@ -2,8 +2,9 @@ - Befehl + Name Beschreibung + Befehl Herunterfahren Neu starten @@ -25,7 +26,9 @@ Flow Launcher-Tipps Flow Launcher UserData-Ordner Spielmodus umschalten - Set the Flow Launcher Theme + Flow Launcher-Theme festlegen + + Bearbeiten Computer herunterfahren @@ -48,7 +51,7 @@ Besuchen Sie die Dokumentation von Flow Launcher für mehr Hilfe und Tipps zur Verwendung Den Ort öffnen, an dem die Einstellungen von Flow Launcher gespeichert sind Spielmodus umschalten - Quickly change the Flow Launcher theme + Das Flow-Launcher-Theme schnell ändern Erfolg @@ -56,9 +59,18 @@ Alle anwendbaren Plug-in-Daten neu geladen Sind Sie sicher, dass Sie den Computer herunterfahren wollen? Sind Sie sicher, dass Sie den Computer neu starten wollen? - Soll der Computer wirklich mit erweiterten Startoptionen neu gestartet werden? + Sind Sie sicher, dass Sie den Computer mit erweiterten Boot-Optionen neu starten wollen? Sind Sie sicher, dass Sie sich ausloggen wollen? + Befehls-Schlüsselwort-Einstellung + Benutzerdefiniertes Befehls-Schlüsselwort + Geben Sie ein Schlüsselwort ein, um nach dem Befehl zu suchen: {0}. Dieses Schlüsselwort wird verwendet, um Ihre Anfrage abzugleichen. + Befehls-Schlüsselwort + Zurücksetzen + Bestätigen + Abbrechen + Bitte geben Sie ein nicht-leeres Befehls-Schlüsselwort ein + Systembefehle Bietet systembezogene Befehle, z. B. Herunterfahren, Sperren, Einstellungen etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es-419.xaml index 99eec60fa..ac4040dca 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es-419.xaml @@ -2,8 +2,9 @@ - Command + Name Description + Command Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Editar + Shutdown Computer Restart Computer @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + Cancelar + Please enter a non-empty command keyword + System Commands Provides System related commands. e.g. shutdown, lock, settings etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml index 2139738f7..5f3688ab8 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/es.xaml @@ -2,8 +2,9 @@ - Comando + Nombre Descripción + Comando Apagar Reiniciar @@ -27,6 +28,8 @@ Cambiar a Modo Juego Establecer el tema de Flow Launcher + Editar + Apaga el equipo Reinicia el equipo @@ -59,6 +62,15 @@ ¿Está seguro de que desea reiniciar el equipo con opciones de arranque avanzadas? ¿Está seguro de que desea cerrar la sesión? + Configuración de la palabra clave de comando + Palabra clave de comando personalizada + Introducir una palabra clave para buscar el comando: {0}. Esta palabra clave se utiliza para que coincida con la búsqueda. + Palabra clave de comando + Restablecer + Confirmar + Cancelar + Por favor, introducir una palabra clave de comando no vacía + Comandos del sistema Proporciona comandos relacionados con el sistema. Por ejemplo, apagar, bloquear, configurar, etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/fr.xaml index 727a9a6ad..5419bd8e2 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/fr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/fr.xaml @@ -2,8 +2,9 @@ - Commande + Nom Description + Commande Arrêter Redémarrer @@ -27,6 +28,8 @@ Basculer le mode de jeu Définir le thème Flow Launcher + Modifier + Éteindre l'ordinateur Redémarrer l'ordinateur @@ -59,6 +62,15 @@ Êtes-vous sûr de vouloir redémarrer l'ordinateur avec les options de démarrage avancées ? Êtes-vous sûr de vouloir vous déconnecter ? + Réglage du mot-clé de commande + Mot-clé de commande personnalisé + Entrez un mot-clé pour rechercher la commande : {0}. Ce mot-clé est utilisé pour répondre à votre requête. + Mot-clé de commande + Réinitialiser + Confirmer + Annuler + Veuillez saisir un mot-clé de commande non vide + Commandes système Fournit des commandes liées au système. Par exemple, arrêt, verrouillage, paramètres, etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/he.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/he.xaml index acc3f3b59..86688a130 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/he.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/he.xaml @@ -2,8 +2,9 @@ - פקודה + שם תיאור + פקודה כיבוי הפעלה מחדש @@ -27,6 +28,8 @@ מצב משחק Set the Flow Launcher Theme + ערו + כבה את המחשב הפעל מחדש את המחשב @@ -59,6 +62,15 @@ האם אתה בטוח שברצונך להפעיל מחדש את המחשב עם אפשרויות אתחול מתקדמות? האם אתה בטוח שברצונך להתנתק? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + אפס + אישו + ביטול + Please enter a non-empty command keyword + פקודות מערכת מספק פקודות הקשורות למערכת, כגון כיבוי, נעילה, הגדרות ועוד. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/it.xaml index b464cab28..be31e4e52 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/it.xaml @@ -2,8 +2,9 @@ - Comando + Nome Descrizione + Comando Spegni Riavvia @@ -27,6 +28,8 @@ Attiva/Disattiva Modalità Di Gioco Set the Flow Launcher Theme + Modifica + Spegni il computer Riavvia il Computer @@ -59,6 +62,15 @@ Sei sicuro di voler riavviare il computer con le Opzioni di Avvio Avanzate? Sei sicuro di volerti disconettere? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Resetta + Conferma + Annulla + Please enter a non-empty command keyword + Comandi di Sistema Fornisce comandi relativi al sistema, ad esempio spegnimento, blocco, impostazioni ecc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml index cff426d4e..bc7dff59f 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml @@ -2,8 +2,9 @@ - コマンド + Name 説明 + コマンド Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + + コンピュータをシャットダウンする コンピュータを再起動する @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + + Please enter a non-empty command keyword + システムコマンド システム関連のコマンドを提供します。例:シャットダウン、ロック、設定など diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ko.xaml index d9b568e14..f2049038f 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ko.xaml @@ -2,8 +2,9 @@ - 명령어 + Name 설명 + 명령어 Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + 편집 + 시스템 종료 시스템 재시작 @@ -59,6 +62,15 @@ 고급 부팅 옵션으로 시스템을 다시 시작하시겠습니까? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + 확인 + 취소 + Please enter a non-empty command keyword + 시스템 명령어 시스템 종료, 컴퓨터 잠금, 설정 등과 같은 시스템 관련 명령어를 제공합니다 diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/nb.xaml index a531189fe..072fd623d 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/nb.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/nb.xaml @@ -2,8 +2,9 @@ - Kommando + Navn Beskrivelse + Kommando Slå av Start på nytt @@ -27,6 +28,8 @@ Vis/Skjul spillmodus Set the Flow Launcher Theme + Rediger + Slår av datamaskin Start datamaskinen på nytt @@ -59,6 +62,15 @@ Er du sikker på at du vil starte datamaskinen på nytt med avanserte oppstartsalternativer? Er du sikker på at du vil logge av? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Tilbakestill + Bekreft + Avbryt + Please enter a non-empty command keyword + Systemkommandoer Gir systemrelaterte kommandoer, f.eks. slå av, lås, innstillinger osv. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/nl.xaml index e0e4d46a8..9d1d54076 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/nl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/nl.xaml @@ -2,8 +2,9 @@ - Opdracht + Name Beschrijving + Opdracht Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Bewerken + Computer afsluiten Computer opnieuw opstarten @@ -59,6 +62,15 @@ Weet u zeker dat u de computer wilt herstarten met geavanceerde opstartopties? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Herstellen + Confirm + Annuleer + Please enter a non-empty command keyword + Systeemopdrachten Voorziet in systeem gerelateerde opdrachten. bijv.: afsluiten, vergrendelen, instellingen, enz. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pl.xaml index bbb3bec88..c09a447d2 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pl.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pl.xaml @@ -2,8 +2,9 @@ - Komenda + Nazwa Opis + Komenda Wyłącz komputer Restart @@ -27,6 +28,8 @@ Przełącz tryb gry Set the Flow Launcher Theme + Edytuj + Wyłącz komputer Uruchom ponownie komputer @@ -59,6 +62,15 @@ Czy na pewno chcesz ponownie uruchomić komputer z Zaawansowanymi opcjami rozruchu? Czy na pewno chcesz się wylogować? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Zresetuj + Potwierdź + Anuluj + Please enter a non-empty command keyword + Komendy systemowe Wykonywanie komend systemowych, np. wyłącz, zablokuj komputer, otwórz ustawienia itp. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-br.xaml index b356f6bc7..a19ab39d6 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-br.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-br.xaml @@ -2,8 +2,9 @@ - Comando + Nome Descrição + Comando Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Editar + Desligar o Computador Reiniciar o Computador @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + Cancelar + Please enter a non-empty command keyword + System Commands Provides System related commands. e.g. shutdown, lock, settings etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml index aa7217c01..9e0e39066 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/pt-pt.xaml @@ -2,8 +2,9 @@ - Comando + Nome Descrição + Comando Desligar Reiniciar @@ -25,7 +26,9 @@ Dicas Flow Launcher Pasta de dados do utilizador Flow Launcher Comutar modo de jogo - Set the Flow Launcher Theme + Definir tema Flow Launcher + + Editar Desligar computador @@ -48,7 +51,7 @@ Aceda à documentação para mais informações e dicas de utilização Abrir localização onde as definições do Flow Launcher estão guardadas Comutar modo de jogo - Quickly change the Flow Launcher theme + Alterar rapidamente o tema da aplicação Sucesso @@ -59,6 +62,15 @@ Tem certeza de que deseja reiniciar o computador com as opções avançadas de arranque? Tem certeza de que deseja terminar a sessão? + Definição de palavra-chave + Palavra-chave personalizada + Indique a palavra-chave para pesquisar o comando: {0}. A aplavra-chave será usada para correspondência com a consulta. + Palavra-chave + Repor + Confirmar + Cancelar + Não pode indicar uma palavra-chave vazia + Comandos do sistema Disponibiliza os comandos relacionados com o sistema tais como: desligar, bloquear, reiniciar... diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml index 4547274f8..796cda69d 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml @@ -2,8 +2,9 @@ - Command + Name Description + Command Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Редактировать + Shutdown Computer Restart Computer @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + Отменить + Please enter a non-empty command keyword + System Commands Provides System related commands. e.g. shutdown, lock, settings etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml index 0f8894288..087ff9f05 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sk.xaml @@ -2,8 +2,9 @@ - Príkaz + Názov Popis + Príkaz Vypnúť Reštartovať @@ -27,6 +28,8 @@ Prepnúť herný režim Nastaviť motív pre Flow Laucher + Upraviť + Vypnúť počítač Reštartovať počítač @@ -59,6 +62,15 @@ Naozaj chcete počítač reštartovať s pokročilými možnosťami spúšťania? Naozaj sa chcete odhlásiť? + Nastavenia kľúčového slova príkazu + Vlastné kľúčové slovo príkazu + Na vyhľadanie príkazu zadajte kľúčové slovo: {0}. Toto kľúčové slovo sa použije na vyhľadnie príkazu. + Kľúčové slovo príkazu + Resetovať + Potvrdiť + Zrušiť + Prosím, zadajte neprázdne kľúčové slovo príkazu + Systémové príkazy Poskytuje príkazy súvisiace so systémom ako je vypnutie, uzamknutie počítača atď. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sr.xaml index d04a783d0..f5a2f1b30 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/sr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/sr.xaml @@ -2,8 +2,9 @@ - Command + Name Description + Command Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Izmeni + Shutdown Computer Restart Computer @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + Confirm + Otkaži + Please enter a non-empty command keyword + System Commands Provides System related commands. e.g. shutdown, lock, settings etc. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/tr.xaml index 93973913f..18f7f63f5 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/tr.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/tr.xaml @@ -2,8 +2,9 @@ - Komut + Name Açıklama + Komut Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Düzenle + Bilgisayarı Kapat Yeniden Başlat @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Sıfırla + Onayla + İptal + Please enter a non-empty command keyword + Sistem Komutları Sistem ile ilgili komutlara erişim sağlar. ör. shutdown, lock, settings vb. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/uk-UA.xaml index 57c83e1a5..19d69511b 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/uk-UA.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/uk-UA.xaml @@ -2,8 +2,9 @@ - Команда + Назва Опис + Команда Вимкнути Перезавантажити @@ -27,6 +28,8 @@ Перемкнути режим гри Set the Flow Launcher Theme + Редагувати + Вимкнути комп'ютер Перезавантажити комп'ютер @@ -59,6 +62,15 @@ Ви впевнені, що хочете перезавантажити комп'ютер за допомогою додаткових параметрів завантаження? Ви впевнені, що хочете вийти з системи? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Скинути + Підтвердити + Скасувати + Please enter a non-empty command keyword + Системні команди Надає команди, пов'язані з системою, наприклад, вимкнення, блокування, налаштування тощо. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/vi.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/vi.xaml index 8d0bc43c0..dae12c501 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/vi.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/vi.xaml @@ -2,8 +2,9 @@ - Lệnh + Tên Mô Tả + Lệnh Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + Sửa + shutdown máy tính Khởi động lại máy tính @@ -59,6 +62,15 @@ Bạn có chắc chắn muốn khởi động lại máy tính bằng Advanced Boot Options không? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Đặt lại + Xác nhận + Hủy + Please enter a non-empty command keyword + Lệnh hệ thống Cung cấp các lệnh liên quan đến Hệ thống. ví dụ. tắt máy, khóa, cài đặt, v.v. diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml index e08f312b1..745129130 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml @@ -2,8 +2,9 @@ - 命令 + 名称 描述 + 命令 关机 重启 @@ -27,6 +28,8 @@ 切换游戏模式 Set the Flow Launcher Theme + 编辑 + 关闭电脑 重启这台电脑 @@ -59,6 +62,15 @@ 您确定要以高级启动选项重启吗? 您确定要注销吗? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + 重置 + 确认 + 取消 + Please enter a non-empty command keyword + 系统命令 提供操作系统相关的命令,如关机、锁定、设置等。 diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-tw.xaml index d43496466..573aefcbd 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-tw.xaml +++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-tw.xaml @@ -2,8 +2,9 @@ - 命令 + 名稱 描述 + 命令 Shutdown Restart @@ -27,6 +28,8 @@ Toggle Game Mode Set the Flow Launcher Theme + 編輯 + 電腦關機 電腦重新啟動 @@ -59,6 +62,15 @@ Are you sure you want to restart the computer with Advanced Boot Options? Are you sure you want to log off? + Command Keyword Setting + Custom Command Keyword + Enter a keyword to search for command: {0}. This keyword is used to match your query. + Command Keyword + Reset + 確認 + 取消 + Please enter a non-empty command keyword + 系統命令 系統相關的命令。例如,關機,鎖定,設定等 diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs index 94a9d0348..043eb7a19 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs @@ -6,7 +6,6 @@ using System.Linq; using System.Runtime.InteropServices; using System.Windows; using Flow.Launcher.Infrastructure; -using Flow.Launcher.Infrastructure.Logger; using Flow.Launcher.Infrastructure.UserSettings; using Windows.Win32; using Windows.Win32.Foundation; @@ -19,6 +18,8 @@ namespace Flow.Launcher.Plugin.Sys { public class Main : IPlugin, ISettingProvider, IPluginI18n { + private static readonly string ClassName = nameof(Main); + private readonly Dictionary KeywordTitleMappings = new() { {"Shutdown", "flowlauncher_plugin_sys_shutdown_computer_cmd"}, @@ -106,7 +107,7 @@ namespace Flow.Launcher.Plugin.Sys { if (!KeywordTitleMappings.TryGetValue(key, out var translationKey)) { - Log.Error("Flow.Launcher.Plugin.Sys.Main", $"Title not found for: {key}"); + _context.API.LogError(ClassName, $"Title not found for: {key}"); return "Title Not Found"; } @@ -117,7 +118,7 @@ namespace Flow.Launcher.Plugin.Sys { if (!KeywordDescriptionMappings.TryGetValue(key, out var translationKey)) { - Log.Error("Flow.Launcher.Plugin.Sys.Main", $"Description not found for: {key}"); + _context.API.LogError(ClassName, $"Description not found for: {key}"); return "Description Not Found"; } diff --git a/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs b/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs index 31faeba52..f8aeaeafd 100644 --- a/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs +++ b/Plugins/Flow.Launcher.Plugin.Sys/ThemeSelector.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Linq; -using CommunityToolkit.Mvvm.DependencyInjection; -using Flow.Launcher.Core.Resource; +using Flow.Launcher.Plugin.SharedModels; namespace Flow.Launcher.Plugin.Sys { @@ -11,32 +10,6 @@ namespace Flow.Launcher.Plugin.Sys private readonly PluginInitContext _context; - // Do not initialize it in the constructor, because it will cause null reference in - // var dicts = Application.Current.Resources.MergedDictionaries; line of Theme - private Theme theme = null; - private Theme Theme => theme ??= Ioc.Default.GetRequiredService(); - - #region Theme Selection - - // Theme select codes simplified from SettingsPaneThemeViewModel.cs - - private Theme.ThemeData _selectedTheme; - public Theme.ThemeData SelectedTheme - { - get => _selectedTheme ??= Themes.Find(v => v.FileNameWithoutExtension == Theme.GetCurrentTheme()); - set - { - _selectedTheme = value; - Theme.ChangeTheme(value.FileNameWithoutExtension); - - _ = Theme.RefreshFrameAsync(); - } - } - - private List Themes => Theme.LoadAvailableThemes(); - - #endregion - public ThemeSelector(PluginInitContext context) { _context = context; @@ -44,28 +17,30 @@ namespace Flow.Launcher.Plugin.Sys public List Query(Query query) { + var themes = _context.API.GetAvailableThemes(); + var selectedTheme = _context.API.GetCurrentTheme(); + var search = query.SecondToEndSearch; if (string.IsNullOrWhiteSpace(search)) { - return Themes.Select(CreateThemeResult) + return themes.Select(x => CreateThemeResult(x, selectedTheme)) .OrderBy(x => x.Title) .ToList(); } - return Themes.Select(theme => (theme, matchResult: _context.API.FuzzySearch(search, theme.Name))) + return themes.Select(theme => (theme, matchResult: _context.API.FuzzySearch(search, theme.Name))) .Where(x => x.matchResult.IsSearchPrecisionScoreMet()) - .Select(x => CreateThemeResult(x.theme, x.matchResult.Score, x.matchResult.MatchData)) + .Select(x => CreateThemeResult(x.theme, selectedTheme, x.matchResult.Score, x.matchResult.MatchData)) .OrderBy(x => x.Title) .ToList(); } - private Result CreateThemeResult(Theme.ThemeData theme) => CreateThemeResult(theme, 0, null); + private Result CreateThemeResult(ThemeData theme, ThemeData selectedTheme) => CreateThemeResult(theme, selectedTheme, 0, null); - private Result CreateThemeResult(Theme.ThemeData theme, int score, IList highlightData) + private Result CreateThemeResult(ThemeData theme, ThemeData selectedTheme, int score, IList highlightData) { - string themeName = theme.Name; string title; - if (theme == SelectedTheme) + if (theme == selectedTheme) { title = $"{theme.Name} ★"; // Set current theme to the top @@ -101,8 +76,10 @@ namespace Flow.Launcher.Plugin.Sys Score = score, Action = c => { - SelectedTheme = theme; - _context.API.ReQuery(); + if (_context.API.SetCurrentTheme(theme)) + { + _context.API.ReQuery(); + } return false; } }; diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj b/Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj index c2d0a46a0..73726ab37 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Flow.Launcher.Plugin.WebSearch.csproj @@ -51,7 +51,6 @@ - diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ar.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ar.xaml index 6e92178db..cefb5d1d1 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ar.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ar.xaml @@ -17,7 +17,7 @@ كلمة مفتاحية للعمل الرابط بحث - استخدام الإكمال التلقائي لاستعلام البحث: + Use Search Query Autocomplete بيانات الإكمال التلقائي من: يرجى اختيار بحث على الويب هل أنت متأكد أنك تريد حذف {0}؟ diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/cs.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/cs.xaml index 849f27f05..ca98581c3 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/cs.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/cs.xaml @@ -17,7 +17,7 @@ Aktivační příkaz URL Hledat - Používejte automatické dokončování vyhledávaných výrazů: + Use Search Query Autocomplete Automatické doplnění údajů z: Vyberte webové vyhledávání Opravdu chcete odstranit {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/da.xaml index 2a7d4aa32..b1113acb7 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/da.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/da.xaml @@ -17,7 +17,7 @@ Action Keyword URL Search - Use Search Query Autocomplete: + Use Search Query Autocomplete Autocomplete Data from: Please select a web search Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/de.xaml index 0c72b11bf..2a7dca596 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/de.xaml @@ -17,8 +17,8 @@ Aktions-Schlüsselwort URL Suche - Autovervollständigung von Suchanfragen verwenden: - Daten automatisch vervollständigen aus: + Autovervollständigung von Suchanfragen verwenden + Autovervollständigung der Daten aus: Bitte wählen Sie eine Websuche aus Sind Sie sicher, dass Sie {0} löschen wollen? Wenn Sie Flow eine Suche nach einer bestimmten Website hinzufügen möchten, geben Sie zunächst eine Dummy-Textzeichenfolge in die Suchleiste dieser Website ein und starten Sie die Suche. Kopieren Sie jetzt den Inhalt der Adressleiste des Browsers und fügen Sie ihn in das URL-Feld unten ein. Ersetzen Sie Ihre Testzeichenfolge durch {q}. Zum Beispiel, wenn Sie auf Netflix nach casino suchen, steht in der Adressleiste @@ -30,8 +30,8 @@ https://www.netflix.com/search?q={q} - Copy URL - Copy search URL to clipboard + URL kopieren + Such-URL in Zwischenablage kopieren Titel diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es-419.xaml index 517ac0918..3ce22bb78 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es-419.xaml @@ -17,7 +17,7 @@ Palabra clave URL Buscar - Autocompletar la búsqueda: + Use Search Query Autocomplete Autocompletar datos de: Por favor, seleccione una búsqueda ¿Seguro que desea eliminar {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es.xaml index e6e4a94d2..7f14b59c6 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/es.xaml @@ -17,7 +17,7 @@ Palabra clave de acción URL Busca en - Usar autocompletado en consultas de búsqueda: + Usar autocompletado en consultas de búsqueda Autocompletar datos desde: Por favor, seleccione una búsqueda web ¿Está seguro de que desea eliminar {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/fr.xaml index c6b1b145c..f04cfb48a 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/fr.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/fr.xaml @@ -17,7 +17,7 @@ Mot-clé d'action URL Rechercher sur - Utiliser la saisie automatique de la requête de recherche : + Utiliser la fonction d'auto-complétion des requêtes de recherche Saisir automatiquement les données à partir de : Veuillez sélectionner une recherche web Êtes-vous sûr de vouloir supprimer {0} ? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/he.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/he.xaml index 630287983..78ee7ca7d 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/he.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/he.xaml @@ -17,7 +17,7 @@ מילת מפתח לפעולה כתובת URL חיפו - השתמש בהשלמה אוטומטית לשאילתות חיפוש: + השתמש בהשלמה אוטומטית לשאילתת חיפוש השלמה אוטומטית מתוך: בחר שירות חיפוש אינטרנטי האם אתה בטוח שברצונך למחוק את {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/it.xaml index 26c1e8459..db2a4dfeb 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/it.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/it.xaml @@ -17,7 +17,7 @@ Parola Chiave URL Cerca - Usa Autocompletamento Ricerca: + Use Search Query Autocomplete Autocompleta i dati da: Seleziona una ricerca web Sei sicuro di voler eliminare {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml index 85ce0e282..9ae628853 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml @@ -17,7 +17,7 @@ キーワード URL 検索 - 検索サジェスチョンを有効にする + Use Search Query Autocomplete Autocomplete Data from: web検索を選択してください Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml index 5ab5fffa3..3ac9f6a6c 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ko.xaml @@ -17,7 +17,7 @@ 액션 키워드 URL 검색 - 검색 쿼리 자동완성 사용: + Use Search Query Autocomplete 자동완성 데이터 출처: 웹 검색을 선택하세요 Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nb.xaml index 4bba382a9..9f793c43f 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nb.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nb.xaml @@ -17,7 +17,7 @@ Nøkkelord for handling Nettadresse Søk - Bruk autofullføring av søkespørring: + Use Search Query Autocomplete Autofullfør data fra: Vennligst velg et websøk Er du sikker på at du ønsker å slette {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nl.xaml index a48d99487..a18710324 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nl.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/nl.xaml @@ -17,7 +17,7 @@ Action Keyword URL Search - Use Search Query Autocomplete: + Use Search Query Autocomplete Autocomplete Data from: Please select a web search Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pl.xaml index 499351343..d693a3f28 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pl.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pl.xaml @@ -17,7 +17,7 @@ Wyzwalacz Adres URL Szukaj - Pokazuj podpowiedzi wyszukiwania + Use Search Query Autocomplete Autouzupełnianie danych z: Musisz wybrać coś z listy Czy jesteś pewien że chcesz usunąć {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-br.xaml index d4135c795..6f0d7fcc9 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-br.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-br.xaml @@ -17,7 +17,7 @@ Action Keyword URL Search - Use Search Query Autocomplete: + Use Search Query Autocomplete Autocomplete Data from: Please select a web search Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-pt.xaml index 16969dac7..1a2476a2c 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-pt.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/pt-pt.xaml @@ -17,7 +17,7 @@ Palavra-chave de ação URL Pesquisar - Utilizar conclusão automática da consulta: + Utilizar conclusão automática para as consultas Preencher dados a partir de: Selecione uma pesquisa web Tem a certeza de que deseja eliminar {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml index c59182290..1fd9aca96 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml @@ -1,4 +1,4 @@ - + Search Source Setting @@ -17,7 +17,7 @@ Action Keyword URL Search - Use Search Query Autocomplete: + Use Search Query Autocomplete Autocomplete Data from: Please select a web search Are you sure you want to delete {0}? @@ -28,8 +28,9 @@ Then replace casino with {q}. Thus, the generic formula for a search on Netflix is https://www.netflix.com/search?q={q} - Скопировать URL-адрес - Скопировать URL поиска в буфер обмена + + Copy URL + Copy search URL to clipboard Title diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml index 44b765c58..1afcdb360 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sk.xaml @@ -17,7 +17,7 @@ Aktivačný príkaz Adresa URL Hľadať - Použiť automatické dokončovanie výrazov vyhľadávania: + Použiť automatické dokončovanie výrazov vyhľadávania Automatické dokončovanie údajov z: Vyberte webové vyhľadávanie Naozaj chcete odstrániť {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sr.xaml index 5f1803655..06707b4af 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sr.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/sr.xaml @@ -17,7 +17,7 @@ Action Keyword URL Search - Use Search Query Autocomplete: + Use Search Query Autocomplete Autocomplete Data from: Please select a web search Are you sure you want to delete {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/tr.xaml index 1506b753b..aaad035a0 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/tr.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/tr.xaml @@ -17,7 +17,7 @@ Anahtar Kelime URL Ara: - Arama önerilerini etkinleştir + Use Search Query Autocomplete Autocomplete Data from: Lütfen bir web araması seçin {0} bağlantısını silmek istediğinize emin misiniz? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/uk-UA.xaml index beb085d28..5536a7e68 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/uk-UA.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/uk-UA.xaml @@ -17,7 +17,7 @@ Ключове слово дії URL Пошук - Використовувати автозаповнення пошукового запиту: + Use Search Query Autocomplete Автозаповнення даних з: Будь ласка, виберіть пошуковий запит в Інтернеті Ви впевнені, що хочете видалити {0}? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/vi.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/vi.xaml index e3105283f..731275c5e 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/vi.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/vi.xaml @@ -17,7 +17,7 @@ Từ khóa hành động Địa chỉ URL Tìm kiếm - Sử dụng Tự động hoàn thành truy vấn tìm kiếm: + Use Search Query Autocomplete Tự động hoàn thành dữ liệu từ: Vui lòng chọn tìm kiếm trên web Bạn có chắc chắn muốn xóa {0} không? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-cn.xaml index d3df223cc..375a741d0 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-cn.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-cn.xaml @@ -17,7 +17,7 @@ 触发关键字 打开链接 搜索 - 启用搜索建议 + Use Search Query Autocomplete 自动补全数据: 请选择一项 您确定要删除 {0} 吗? diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-tw.xaml index eb58a4ec0..727b2f4a9 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-tw.xaml +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/zh-tw.xaml @@ -17,7 +17,7 @@ 觸發關鍵字 網址 搜尋 - 啟用搜尋建議 + Use Search Query Autocomplete 從以下位置自動填入資料: 請選擇一項 你確認要刪除{0}嗎 diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json b/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json index 64681f803..c8b6310a7 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json @@ -32,5 +32,5 @@ "Website": "https://github.com/Flow-Launcher/Flow.Launcher", "ExecuteFileName": "Flow.Launcher.Plugin.WebSearch.dll", "IcoPath": "Images\\web_search.png", - "SearchDelayTime": "VeryLong" + "SearchDelayTime": 450 } diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.de-DE.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.de-DE.resx index dcc74d520..5f8d9a6df 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.de-DE.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.de-DE.resx @@ -275,7 +275,7 @@ Hardware und Sound - Startseite + Homepage Mixed Reality @@ -2161,7 +2161,7 @@ Erweiterte Druckereinrichtung - Change default printer + Standard-Drucker ändern Edit environment variables for your account @@ -2416,7 +2416,7 @@ Erweiterte Sharing-Einstellungen verwalten - Change battery settings + Akku-Einstellungen ändern Diesen Computer umbenennen @@ -2479,7 +2479,7 @@ Find and fix bluescreen problems - Hear a tone when keys are pressed + Einen Ton hören, wenn Tasten gedrückt werden Browsing-Historie löschen diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.he-IL.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.he-IL.resx index 55ac42dd3..faa8c2dcc 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.he-IL.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.he-IL.resx @@ -432,7 +432,7 @@ Area Personalization - Client service for NetWare + שירות לקוח עבור NetWare Area Control Panel (legacy settings) diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ko-KR.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ko-KR.resx index c7c1854b7..ab69a2a31 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ko-KR.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ko-KR.resx @@ -1203,7 +1203,7 @@ Area Gaming - Windows 설정을 검색하는 플러그 인 + Windows 설정을 검색하는 플러그인 Windows Settings diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.pt-PT.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.pt-PT.resx index e7f8e1683..39062bbb8 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.pt-PT.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.pt-PT.resx @@ -1797,13 +1797,13 @@ Mostrar ficheiros e pastas ocultas - Change Windows To Go start-up options + Mudar as configurações de início do Windows Portátil - See which processes start up automatically when you start Windows + Veja quais processos se iniciam automaticamente quando o Windows inicia - Tell if an RSS feed is available on a website + Informar se um feed RSS está disponível em um site Adicionar relógios para diferentes fusos horários @@ -1815,7 +1815,7 @@ Personalizar botões do rato - Set tablet buttons to perform certain tasks + Definir botões do tablet para executar certas tarefas Ver tipos de letra instalados @@ -1869,13 +1869,13 @@ Ver digitalizadores e câmaras - Microsoft IME Register Word (Japanese) + Registro do Word Microsoft IME (japonês) Restaurar ficheiros com o Histórico de ficheiros - Turn On-Screen keyboard on or off + Ativar ou desativar o teclado na tela Bloquear ou permitir cookies de terceiros @@ -1887,7 +1887,7 @@ Criar uma unidade de recuperação - Microsoft New Phonetic Settings + Configurações do Microsoft New Phonetic Gerer relatório de saúde do sistema @@ -1899,16 +1899,16 @@ Cópia de segurança e restauro (Windows 7) - Preview, delete, show or hide fonts + Pré-visualizar, excluir, mostrar ou ocultar fontes - Microsoft Quick Settings + Configurações Rápidas da Microsoft Ver histórico de fiabilidade - Access RemoteApp and desktops + Acessar o RemoteApp e desktops Configurar fontes de dados ODBC @@ -1926,7 +1926,7 @@ Opções SimpleFast do Microsoft Pinyin - Change what closing the lid does + Mudar o que fechar a tampa faz Desativar animações desnecessárias @@ -1947,7 +1947,7 @@ Ver ações recomendadas para manter o sistema a funcionar nas melhores condições - Alterar a frequência de piscar do cursor + Alterar frequência de intermitência do cursor Adicionar ou remover programas @@ -1959,13 +1959,13 @@ Configurar propriedades avançadas do perfil de utilizador - Start or stop using AutoPlay for all media and devices + Inicie ou pare de usar o AutoPlay para todas as mídias e dispositivos Alterar definições de manutenção automática - Specify single- or double-click to open + Especificar se um clique ou dois são necessários para abrir Utilizadores que podem utilizar o ambiente de trabalho remoto @@ -1995,13 +1995,13 @@ Analisar estado do teclado - Control the computer without the mouse or keyboard + Controle o computador sem o mouse ou teclado Alterar ou remover um programa - Change multi-touch gesture settings + Alterar configurações de gestos multi-toque Configurar origens ODBC (64 bits) @@ -2013,13 +2013,13 @@ Alterar página inicial - Group similar windows on the taskbar + Agrupar janelas semelhantes na barra de tarefas - Change Windows SideShow settings + Alterar configurações do Windows SideShow - Use audio description for video + Usar descrição de áudio para vídeos Alterar nome do grupo de trabalho @@ -2028,13 +2028,13 @@ Encontrar e corrigir problemas de impressão - Change when the computer sleeps + Mudar quando o computador dorme Configurar uma rede privada (VPN) - Accommodate learning abilities + Acomodar habilidades de aprendizagem Configurar uma ligação telefónica @@ -2046,7 +2046,7 @@ Como alterar a palavra-passe do Windows - Tornar mais fácil ver o ponteiro do rato + Tornar mais fácil de ver o ponteiro do mouse Configurar o iniciador iSCSI @@ -2067,7 +2067,7 @@ Substituir sons por pistas visuais - Change temporary Internet file settings + Alterar configurações de arquivo de Internet temporárias Estabelecer ligação à Internet @@ -2085,16 +2085,16 @@ Guardar cópias de segurança dos ficheiros no Histórico de Ficheiros - View current accessibility settings + Ver configurações de acessibilidade atuais - Change tablet pen settings + Alterar configurações da caneta Alterar modo de funcionamento do rato - Show how much RAM is on this computer + Mostrar quanta memória RAM este computador tem Editar plano de energia @@ -2115,7 +2115,7 @@ Ampliar partes do ecrão com o Magnificador - Change the file type associated with a file extension + Alterar o tipo de arquivo associado a uma extensão de arquivo Ver registo de eventos @@ -2133,17 +2133,17 @@ Alterar definições de poupança de energia - Optimise for blindness + Otimizar para cegueira - Turn Windows features on or off + Ative ou desative os recursos do Windows - Show which operating system your computer is running + Mostra qual sistema operacional o seu computador está executando Ver serviços locais @@ -2152,7 +2152,7 @@ Gerir pastas de trabalho - Encrypt your offline files + Criptografe seus arquivos offline Treinar o computador para reconhecer a sua voz @@ -2173,43 +2173,43 @@ Alterar definições ddo clique do rato - Change advanced colour management settings for displays, scanners and printers + Alterar configurações avançadas de gerenciamento de cores para telas, scanners e impressoras - Let Windows suggest Ease of Access settings + Permitir que o Windows sugira Facilidade de Acesso - Clear disk space by deleting unnecessary files + Limpar espaço em disco excluindo arquivos desnecessários Ver dispositivos e impressoras - Private Character Editor + Editor de Caracteres Privados - Record steps to reproduce a problem + Registrar as etapas para reproduzir um problema - Adjust the appearance and performance of Windows + Ajustar a aparência e o desempenho do Windows - Settings for Microsoft IME (Japanese) + Configurações para o Microsoft IME (japonês) - Invite someone to connect to your PC and help you, or offer to help someone else + Convide alguém para se conectar ao seu PC e ajudá-lo, ou ofereça para ajudar outra pessoa - Run programs made for previous versions of Windows + Execute programas feitos para versões anteriores do Windows - Choose the order of how your screen rotates + Escolha a ordem de como a tela gira - Change how Windows searches + Alterar como o Windows pesquisa - Set flicks to perform certain tasks + Defina gestos para realizar certas ações Alterar tipo de conta @@ -2221,64 +2221,64 @@ Alterar Configurações de Controlo da Conta do Utilizador - Turn on easy access keys + Ativar teclas de acesso fácil - Identify and repair network problems + Identificar e reparar problemas de rede - Find and fix networking and connection problems + Encontrar e corrigir problemas de rede e conexão - Play CDs or other media automatically + Reproduzir CDs ou outras mídias automaticamente - View basic information about your computer + Ver informações básicas sobre seu computador - Choose how you open links + Escolha como abrir os links - Allow Remote Assistance invitations to be sent from this computer + Permitir que convites de assistência remota sejam enviados a partir deste computador Gestor de tarefas - Turn flicks on or off + Ativar ou desativar gestos Adicionar um idioma - View network status and tasks + Ver status de rede e tarefas - Turn Magnifier on or off + Ativar ou desativar a lupa - See the name of this computer + Ver o nome deste computador Ver ligações de rede - Perform recommended maintenance tasks automatically + Executar tarefas recomendadas de manutenção automaticamente - Manage disk space used by your offline files + Gerir espaço de disco utilizado pelos ficheiros locais - Turn High Contrast on or off + Ativar ou desativar modo de alto contraste - Change the way time is displayed + Alterar modo de exibição da hora - Change how web pages are displayed in tabs + Alterar modo de exibição das páginas web nos separadores - Change the way dates and lists are displayed + Alterar modo de exibição das datas e das listas Gerir dispositivos de áudio @@ -2293,37 +2293,37 @@ Apagar cookies ou ficheiros temporários - Specify which hand you write with + Especificar a mão com a qual escreve - Change touch input settings + Alterar definições do painel de toque - How to change the size of virtual memory + Como alterar tamanho da memória virtual - Hear text read aloud with Narrator + Utilizar Narrador para ouvir os textos - Set up USB game controllers + Configurar controladores de jogos USB - Show which domain your computer is on + Mostrar o domínio ao qual o computador pertence - View all problem reports + Ver todos os relatórios de erro - 16-Bit Application Support + Suporte a aplicações 16-bit - Set up dialling rules + Configurar regras de marcação Ativar ou desativar cookies da sessão - Give administrative rights to a domain user + Conceder direitos de administrador a um domínio Choose when to turn off display diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx index f47b9ada3..5b4dea6a9 100644 --- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx +++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - O aplikácii + O systéme Area System