diff --git a/Flow.Launcher.Core/ExternalPlugins/CommunityPluginSource.cs b/Flow.Launcher.Core/ExternalPlugins/CommunityPluginSource.cs
index 6f3b23e11..841099dd1 100644
--- a/Flow.Launcher.Core/ExternalPlugins/CommunityPluginSource.cs
+++ b/Flow.Launcher.Core/ExternalPlugins/CommunityPluginSource.cs
@@ -73,6 +73,17 @@ namespace Flow.Launcher.Core.ExternalPlugins
return null;
}
}
+ catch (OperationCanceledException) when (token.IsCancellationRequested)
+ {
+ API.LogDebug(ClassName, $"Fetching from {ManifestFileUrl} was cancelled by caller.");
+ return null;
+ }
+ catch (TaskCanceledException)
+ {
+ // Likely an HttpClient timeout or external cancellation not requested by our token
+ API.LogWarn(ClassName, $"Fetching from {ManifestFileUrl} timed out.");
+ return null;
+ }
catch (Exception e)
{
if (e is HttpRequestException or WebException or SocketException || e.InnerException is TimeoutException)
diff --git a/Flow.Launcher.Core/Flow.Launcher.Core.csproj b/Flow.Launcher.Core/Flow.Launcher.Core.csproj
index 527950061..1369d7e5d 100644
--- a/Flow.Launcher.Core/Flow.Launcher.Core.csproj
+++ b/Flow.Launcher.Core/Flow.Launcher.Core.csproj
@@ -55,8 +55,8 @@
-
-
+
+
diff --git a/Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs b/Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs
index 435d97ab7..9212dada6 100644
--- a/Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs
+++ b/Flow.Launcher.Core/Plugin/JsonRPCPluginSettings.cs
@@ -27,6 +27,7 @@ namespace Flow.Launcher.Core.Plugin
private JsonStorage> _storage = null!;
+ private static readonly double MainGridColumn0MaxWidthRatio = 0.6;
private static readonly Thickness SettingPanelMargin = (Thickness)Application.Current.FindResource("SettingPanelMargin");
private static readonly Thickness SettingPanelItemLeftMargin = (Thickness)Application.Current.FindResource("SettingPanelItemLeftMargin");
private static readonly Thickness SettingPanelItemTopBottomMargin = (Thickness)Application.Current.FindResource("SettingPanelItemTopBottomMargin");
@@ -156,7 +157,7 @@ namespace Flow.Launcher.Core.Plugin
{
if (!NeedCreateSettingPanel()) return null!;
- // Create main grid with two columns (Column 1: Auto, Column 2: *)
+ // Create main grid with two columns (Column 0: Auto, Column 1: *)
var mainPanel = new Grid { Margin = SettingPanelMargin, VerticalAlignment = VerticalAlignment.Center };
mainPanel.ColumnDefinitions.Add(new ColumnDefinition()
{
@@ -200,7 +201,7 @@ namespace Flow.Launcher.Core.Plugin
{
Text = attributes.Label,
VerticalAlignment = VerticalAlignment.Center,
- TextWrapping = TextWrapping.WrapWithOverflow
+ TextWrapping = TextWrapping.Wrap
};
// Create a text block for description
@@ -211,7 +212,7 @@ namespace Flow.Launcher.Core.Plugin
{
Text = attributes.Description,
VerticalAlignment = VerticalAlignment.Center,
- TextWrapping = TextWrapping.WrapWithOverflow
+ TextWrapping = TextWrapping.Wrap
};
desc.SetResourceReference(TextBlock.StyleProperty, "SettingPanelTextBlockDescriptionStyle"); // for theme change
@@ -247,7 +248,8 @@ namespace Flow.Launcher.Core.Plugin
VerticalAlignment = VerticalAlignment.Center,
Margin = SettingPanelItemLeftTopBottomMargin,
Text = Settings[attributes.Name] as string ?? string.Empty,
- ToolTip = attributes.Description
+ ToolTip = attributes.Description,
+ TextWrapping = TextWrapping.Wrap
};
textBox.TextChanged += (_, _) =>
@@ -269,7 +271,8 @@ namespace Flow.Launcher.Core.Plugin
VerticalAlignment = VerticalAlignment.Center,
Margin = SettingPanelItemLeftMargin,
Text = Settings[attributes.Name] as string ?? string.Empty,
- ToolTip = attributes.Description
+ ToolTip = attributes.Description,
+ TextWrapping = TextWrapping.Wrap
};
textBox.TextChanged += (_, _) =>
@@ -333,7 +336,7 @@ namespace Flow.Launcher.Core.Plugin
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Center,
Margin = SettingPanelItemLeftTopBottomMargin,
- TextWrapping = TextWrapping.WrapWithOverflow,
+ TextWrapping = TextWrapping.Wrap,
AcceptsReturn = true,
Text = Settings[attributes.Name] as string ?? string.Empty,
ToolTip = attributes.Description
@@ -488,6 +491,8 @@ namespace Flow.Launcher.Core.Plugin
rowCount++;
}
+ mainPanel.SizeChanged += MainPanel_SizeChanged;
+
// Wrap the main grid in a user control
return new UserControl()
{
@@ -495,6 +500,28 @@ namespace Flow.Launcher.Core.Plugin
};
}
+ private void MainPanel_SizeChanged(object sender, SizeChangedEventArgs e)
+ {
+ if (sender is not Grid grid) return;
+
+ var workingWidth = grid.ActualWidth;
+
+ if (workingWidth <= 0) return;
+
+ var constrainedWidth = MainGridColumn0MaxWidthRatio * workingWidth;
+
+ // Set MaxWidth of column 0 and its children
+ // We must set MaxWidth of its children to make text wrapping work correctly
+ grid.ColumnDefinitions[0].MaxWidth = constrainedWidth;
+ foreach (var child in grid.Children)
+ {
+ if (child is FrameworkElement element && Grid.GetColumn(element) == 0 && Grid.GetColumnSpan(element) == 1)
+ {
+ element.MaxWidth = constrainedWidth;
+ }
+ }
+ }
+
private static bool NeedSaveInSettings(string type)
{
return type != "textBlock" && type != "separator" && type != "hyperlink";
diff --git a/Flow.Launcher.Core/Resource/Internationalization.cs b/Flow.Launcher.Core/Resource/Internationalization.cs
index 8261feab3..983f8b234 100644
--- a/Flow.Launcher.Core/Resource/Internationalization.cs
+++ b/Flow.Launcher.Core/Resource/Internationalization.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
@@ -14,7 +14,7 @@ using Flow.Launcher.Plugin;
namespace Flow.Launcher.Core.Resource
{
- public class Internationalization
+ public class Internationalization : IDisposable
{
private static readonly string ClassName = nameof(Internationalization);
@@ -30,6 +30,7 @@ namespace Flow.Launcher.Core.Resource
private readonly List _languageDirectories = [];
private readonly List _oldResources = [];
private static string SystemLanguageCode;
+ private readonly SemaphoreSlim _langChangeLock = new(1, 1);
public Internationalization(Settings settings)
{
@@ -185,20 +186,33 @@ namespace Flow.Launcher.Core.Resource
private async Task ChangeLanguageAsync(Language language, bool updateMetadata = true)
{
- // Remove old language files and load language
- RemoveOldLanguageFiles();
- if (language != AvailableLanguages.English)
+ await _langChangeLock.WaitAsync();
+
+ try
{
- LoadLanguage(language);
+ // Remove old language files and load language
+ RemoveOldLanguageFiles();
+ if (language != AvailableLanguages.English)
+ {
+ LoadLanguage(language);
+ }
+
+ // Change culture info
+ ChangeCultureInfo(language.LanguageCode);
+
+ if (updateMetadata)
+ {
+ // Raise event for plugins after culture is set
+ await Task.Run(UpdatePluginMetadataTranslations);
+ }
}
-
- // Change culture info
- ChangeCultureInfo(language.LanguageCode);
-
- if (updateMetadata)
+ catch (Exception e)
{
- // Raise event for plugins after culture is set
- await Task.Run(UpdatePluginMetadataTranslations);
+ API.LogException(ClassName, $"Failed to change language to <{language.LanguageCode}>", e);
+ }
+ finally
+ {
+ _langChangeLock.Release();
}
}
@@ -257,6 +271,7 @@ namespace Flow.Launcher.Core.Resource
{
dicts.Remove(r);
}
+ _oldResources.Clear();
}
private void LoadLanguage(Language language)
@@ -368,5 +383,15 @@ namespace Flow.Launcher.Core.Resource
}
#endregion
+
+ #region IDisposable
+
+ public void Dispose()
+ {
+ RemoveOldLanguageFiles();
+ _langChangeLock.Dispose();
+ }
+
+ #endregion
}
}
diff --git a/Flow.Launcher.Core/packages.lock.json b/Flow.Launcher.Core/packages.lock.json
index 5e9abc24c..b7a00d94d 100644
--- a/Flow.Launcher.Core/packages.lock.json
+++ b/Flow.Launcher.Core/packages.lock.json
@@ -13,15 +13,15 @@
},
"FSharp.Core": {
"type": "Direct",
- "requested": "[9.0.300, )",
- "resolved": "9.0.300",
- "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ=="
+ "requested": "[9.0.303, )",
+ "resolved": "9.0.303",
+ "contentHash": "6JlV8aD8qQvcmfoe/PMOxCHXc0uX4lR23u0fAyQtnVQxYULLoTZgwgZHSnRcuUHOvS3wULFWcwdnP1iwslH60g=="
},
"Meziantou.Framework.Win32.Jobs": {
"type": "Direct",
- "requested": "[3.4.3, )",
- "resolved": "3.4.3",
- "contentHash": "REjInKnQ0OrhjjtSMPQtLtdURctCroB4L8Sd2gjTOYDysklvsdnrStx1tHS7uLv+fSyFF3aazZmo5Ka0v1oz/w=="
+ "requested": "[3.4.4, )",
+ "resolved": "3.4.4",
+ "contentHash": "AivBzH5wM1NHBLehclim+o37SmireP7JxCRUoTilsc/h7LH9+YCPjb6Ig6y0khnQhFcO1P8RHYw4oiR15TGHUg=="
},
"Microsoft.IO.RecyclableMemoryStream": {
"type": "Direct",
@@ -90,8 +90,8 @@
},
"JetBrains.Annotations": {
"type": "Transitive",
- "resolved": "2024.3.0",
- "contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
+ "resolved": "2025.2.2",
+ "contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
},
"MemoryPack": {
"type": "Transitive",
@@ -199,21 +199,21 @@
},
"NLog": {
"type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
+ "resolved": "6.0.4",
+ "contentHash": "Xr+lIk1ZlTTFXEqnxQVLxrDqZlt2tm5X+/AhJbaY2emb/dVtGDiU5QuEtj3gHtwV/SWlP/rJ922I/BPuOJXlRw=="
},
"NLog.OutputDebugString": {
"type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
+ "resolved": "6.0.4",
+ "contentHash": "TOP2Ap9BbE98B/l/TglnguowOD0rXo8B/20xAgvj9shO/kf6IJ5M4QMhVxq72mrneJ/ANhHY7Jcd+xJbzuI5PA==",
"dependencies": {
- "NLog": "6.0.1"
+ "NLog": "6.0.4"
}
},
"SharpVectors.Wpf": {
"type": "Transitive",
- "resolved": "1.8.4.2",
- "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
+ "resolved": "1.8.5",
+ "contentHash": "WURdBDq5AE8RjKV9pFS7lNkJe81gxja9SaMGE4URq9GJUZ6M+5DGUL0Lm3B0iYW2/Meyowaz4ffGsyW+RBSTtg=="
},
"Splat": {
"type": "Transitive",
@@ -254,14 +254,14 @@
"Ben.Demystifier": "[0.4.1, )",
"BitFaster.Caching": "[2.5.4, )",
"CommunityToolkit.Mvvm": "[8.4.0, )",
- "Flow.Launcher.Plugin": "[4.7.0, )",
+ "Flow.Launcher.Plugin": "[5.0.0, )",
"InputSimulator": "[1.0.4, )",
"MemoryPack": "[1.21.4, )",
"Microsoft.VisualStudio.Threading": "[17.14.15, )",
"NHotkey.Wpf": "[3.0.0, )",
- "NLog": "[6.0.1, )",
- "NLog.OutputDebugString": "[6.0.1, )",
- "SharpVectors.Wpf": "[1.8.4.2, )",
+ "NLog": "[6.0.4, )",
+ "NLog.OutputDebugString": "[6.0.4, )",
+ "SharpVectors.Wpf": "[1.8.5, )",
"System.Drawing.Common": "[7.0.0, )",
"ToolGood.Words.Pinyin": "[3.1.0.3, )"
}
@@ -269,7 +269,7 @@
"flow.launcher.plugin": {
"type": "Project",
"dependencies": {
- "JetBrains.Annotations": "[2024.3.0, )"
+ "JetBrains.Annotations": "[2025.2.2, )"
}
}
}
diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj
index c32c36248..5b4eaf893 100644
--- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj
+++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj
@@ -56,24 +56,24 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
-
+
diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs
index 64d323de6..598347fd2 100644
--- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs
+++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs
@@ -22,7 +22,7 @@ namespace Flow.Launcher.Infrastructure.Image
private static Lock storageLock { get; } = new();
private static BinaryStorage> _storage;
private static readonly ConcurrentDictionary GuidToKey = new();
- private static IImageHashGenerator _hashGenerator;
+ private static ImageHashGenerator _hashGenerator;
private static readonly bool EnableImageHash = true;
public static ImageSource Image => ImageCache[Constant.ImageIcon, false];
public static ImageSource MissingImage => ImageCache[Constant.MissingImgIcon, false];
@@ -31,7 +31,7 @@ namespace Flow.Launcher.Infrastructure.Image
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[] ImageExtensions = [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".ico"];
private static readonly string SvgExtension = ".svg";
public static async Task InitializeAsync()
@@ -327,7 +327,7 @@ namespace Flow.Launcher.Infrastructure.Image
return img;
}
- private static ImageSource LoadFullImage(string path)
+ private static BitmapImage LoadFullImage(string path)
{
BitmapImage image = new BitmapImage();
image.BeginInit();
@@ -364,7 +364,7 @@ namespace Flow.Launcher.Infrastructure.Image
return image;
}
- private static ImageSource LoadSvgImage(string path, bool loadFullImage = false)
+ private static RenderTargetBitmap LoadSvgImage(string path, bool loadFullImage = false)
{
// Set up drawing settings
var desiredHeight = loadFullImage ? FullImageSize : SmallIconSize;
diff --git a/Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs b/Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs
index 24584115d..9c795f952 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs
@@ -1,11 +1,18 @@
+using System.Text.Json.Serialization;
+using CommunityToolkit.Mvvm.DependencyInjection;
using Flow.Launcher.Plugin;
-using System.Text.Json.Serialization;
namespace Flow.Launcher.Infrastructure.UserSettings
{
public class CustomBrowserViewModel : BaseModel
{
+ // 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 string Name { get; set; }
+ [JsonIgnore]
+ public string DisplayName => Name == "Default" ? API.GetTranslation("defaultBrowser_default") : Name;
public string Path { get; set; }
public string PrivateArg { get; set; }
public bool EnablePrivate { get; set; }
@@ -26,8 +33,10 @@ namespace Flow.Launcher.Infrastructure.UserSettings
Editable = Editable
};
}
+
+ public void OnDisplayNameChanged()
+ {
+ OnPropertyChanged(nameof(DisplayName));
+ }
}
}
-
-
-
diff --git a/Flow.Launcher.Infrastructure/UserSettings/CustomExplorerViewModel.cs b/Flow.Launcher.Infrastructure/UserSettings/CustomExplorerViewModel.cs
index c54c30478..2af0bb0e5 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/CustomExplorerViewModel.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/CustomExplorerViewModel.cs
@@ -1,10 +1,18 @@
-using Flow.Launcher.Plugin;
+using System.Text.Json.Serialization;
+using CommunityToolkit.Mvvm.DependencyInjection;
+using Flow.Launcher.Plugin;
-namespace Flow.Launcher.ViewModel
+namespace Flow.Launcher.Infrastructure.UserSettings
{
public class CustomExplorerViewModel : BaseModel
{
+ // 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 string Name { get; set; }
+ [JsonIgnore]
+ public string DisplayName => Name == "Explorer" ? API.GetTranslation("fileManagerExplorer") : Name;
public string Path { get; set; }
public string FileArgument { get; set; } = "\"%d\"";
public string DirectoryArgument { get; set; } = "\"%d\"";
@@ -21,5 +29,10 @@ namespace Flow.Launcher.ViewModel
Editable = Editable
};
}
+
+ public void OnDisplayNameChanged()
+ {
+ OnPropertyChanged(nameof(DisplayName));
+ }
}
}
diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
index 0c3402050..d49cd276a 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
@@ -9,7 +9,6 @@ using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.Storage;
using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin.SharedModels;
-using Flow.Launcher.ViewModel;
namespace Flow.Launcher.Infrastructure.UserSettings
{
diff --git a/Flow.Launcher.Infrastructure/Win32Helper.cs b/Flow.Launcher.Infrastructure/Win32Helper.cs
index 811733925..5d30b740d 100644
--- a/Flow.Launcher.Infrastructure/Win32Helper.cs
+++ b/Flow.Launcher.Infrastructure/Win32Helper.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
@@ -904,5 +904,19 @@ namespace Flow.Launcher.Infrastructure
}
#endregion
+
+ #region File / Folder Dialog
+
+ public static string SelectFile()
+ {
+ var dlg = new OpenFileDialog();
+ var result = dlg.ShowDialog();
+ if (result == true)
+ return dlg.FileName;
+
+ return string.Empty;
+ }
+
+ #endregion
}
}
diff --git a/Flow.Launcher.Infrastructure/packages.lock.json b/Flow.Launcher.Infrastructure/packages.lock.json
index abd250f7c..47c94d5f6 100644
--- a/Flow.Launcher.Infrastructure/packages.lock.json
+++ b/Flow.Launcher.Infrastructure/packages.lock.json
@@ -25,9 +25,9 @@
},
"Fody": {
"type": "Direct",
- "requested": "[6.9.2, )",
- "resolved": "6.9.2",
- "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
+ "requested": "[6.9.3, )",
+ "resolved": "6.9.3",
+ "contentHash": "1CUGgFdyECDKgi5HaUBhdv6k+VG9Iy4OCforGfHyar3xQXAJypZkzymgKtWj/4SPd6nSG0Qi7NH71qHrDSZLaA=="
},
"InputSimulator": {
"type": "Direct",
@@ -58,9 +58,9 @@
},
"Microsoft.Windows.CsWin32": {
"type": "Direct",
- "requested": "[0.3.183, )",
- "resolved": "0.3.183",
- "contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
+ "requested": "[0.3.205, )",
+ "resolved": "0.3.205",
+ "contentHash": "U5wGAnyKd7/I2YMd43nogm81VMtjiKzZ9dsLMVI4eAB7jtv5IEj0gprj0q/F3iRmAIaGv5omOf8iSYx2+nE6BQ==",
"dependencies": {
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
@@ -78,17 +78,17 @@
},
"NLog": {
"type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
+ "requested": "[6.0.4, )",
+ "resolved": "6.0.4",
+ "contentHash": "Xr+lIk1ZlTTFXEqnxQVLxrDqZlt2tm5X+/AhJbaY2emb/dVtGDiU5QuEtj3gHtwV/SWlP/rJ922I/BPuOJXlRw=="
},
"NLog.OutputDebugString": {
"type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
+ "requested": "[6.0.4, )",
+ "resolved": "6.0.4",
+ "contentHash": "TOP2Ap9BbE98B/l/TglnguowOD0rXo8B/20xAgvj9shO/kf6IJ5M4QMhVxq72mrneJ/ANhHY7Jcd+xJbzuI5PA==",
"dependencies": {
- "NLog": "6.0.1"
+ "NLog": "6.0.4"
}
},
"PropertyChanged.Fody": {
@@ -102,9 +102,9 @@
},
"SharpVectors.Wpf": {
"type": "Direct",
- "requested": "[1.8.4.2, )",
- "resolved": "1.8.4.2",
- "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
+ "requested": "[1.8.5, )",
+ "resolved": "1.8.5",
+ "contentHash": "WURdBDq5AE8RjKV9pFS7lNkJe81gxja9SaMGE4URq9GJUZ6M+5DGUL0Lm3B0iYW2/Meyowaz4ffGsyW+RBSTtg=="
},
"System.Drawing.Common": {
"type": "Direct",
@@ -123,8 +123,8 @@
},
"JetBrains.Annotations": {
"type": "Transitive",
- "resolved": "2024.3.0",
- "contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
+ "resolved": "2025.2.2",
+ "contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
},
"MemoryPack.Core": {
"type": "Transitive",
@@ -190,7 +190,7 @@
"flow.launcher.plugin": {
"type": "Project",
"dependencies": {
- "JetBrains.Annotations": "[2024.3.0, )"
+ "JetBrains.Annotations": "[2025.2.2, )"
}
}
}
diff --git a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
index ae2454279..1ae0b1f58 100644
--- a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
+++ b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
@@ -1,4 +1,4 @@
-
+
net9.0-windows
@@ -68,13 +68,13 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Flow.Launcher.Plugin/packages.lock.json b/Flow.Launcher.Plugin/packages.lock.json
index af835c598..70f71f20d 100644
--- a/Flow.Launcher.Plugin/packages.lock.json
+++ b/Flow.Launcher.Plugin/packages.lock.json
@@ -4,15 +4,15 @@
"net9.0-windows7.0": {
"Fody": {
"type": "Direct",
- "requested": "[6.9.2, )",
- "resolved": "6.9.2",
- "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
+ "requested": "[6.9.3, )",
+ "resolved": "6.9.3",
+ "contentHash": "1CUGgFdyECDKgi5HaUBhdv6k+VG9Iy4OCforGfHyar3xQXAJypZkzymgKtWj/4SPd6nSG0Qi7NH71qHrDSZLaA=="
},
"JetBrains.Annotations": {
"type": "Direct",
- "requested": "[2024.3.0, )",
- "resolved": "2024.3.0",
- "contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
+ "requested": "[2025.2.2, )",
+ "resolved": "2025.2.2",
+ "contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
},
"Microsoft.SourceLink.GitHub": {
"type": "Direct",
@@ -26,9 +26,9 @@
},
"Microsoft.Windows.CsWin32": {
"type": "Direct",
- "requested": "[0.3.183, )",
- "resolved": "0.3.183",
- "contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
+ "requested": "[0.3.205, )",
+ "resolved": "0.3.205",
+ "contentHash": "U5wGAnyKd7/I2YMd43nogm81VMtjiKzZ9dsLMVI4eAB7jtv5IEj0gprj0q/F3iRmAIaGv5omOf8iSYx2+nE6BQ==",
"dependencies": {
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
diff --git a/Flow.Launcher.Test/Flow.Launcher.Test.csproj b/Flow.Launcher.Test/Flow.Launcher.Test.csproj
index 33479c5a0..11ccff05b 100644
--- a/Flow.Launcher.Test/Flow.Launcher.Test.csproj
+++ b/Flow.Launcher.Test/Flow.Launcher.Test.csproj
@@ -39,6 +39,7 @@
+
@@ -49,8 +50,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Flow.Launcher.Test/Plugins/CalculatorTest.cs b/Flow.Launcher.Test/Plugins/CalculatorTest.cs
new file mode 100644
index 000000000..b075813db
--- /dev/null
+++ b/Flow.Launcher.Test/Plugins/CalculatorTest.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using Flow.Launcher.Plugin.Calculator;
+using Mages.Core;
+using NUnit.Framework;
+using NUnit.Framework.Legacy;
+
+namespace Flow.Launcher.Test.Plugins
+{
+ [TestFixture]
+ public class CalculatorPluginTest
+ {
+ private readonly Main _plugin;
+ private readonly Settings _settings = new()
+ {
+ DecimalSeparator = DecimalSeparator.UseSystemLocale,
+ MaxDecimalPlaces = 10,
+ ShowErrorMessage = false // Make sure we return the empty results when error occurs
+ };
+ private readonly Engine _engine = new(new Configuration
+ {
+ Scope = new Dictionary
+ {
+ { "e", Math.E }, // e is not contained in the default mages engine
+ }
+ });
+
+ public CalculatorPluginTest()
+ {
+ _plugin = new Main();
+
+ var settingField = typeof(Main).GetField("_settings", BindingFlags.NonPublic | BindingFlags.Instance);
+ if (settingField == null)
+ Assert.Fail("Could not find field '_settings' on Flow.Launcher.Plugin.Calculator.Main");
+ settingField.SetValue(_plugin, _settings);
+
+ var engineField = typeof(Main).GetField("MagesEngine", BindingFlags.NonPublic | BindingFlags.Static);
+ if (engineField == null)
+ Assert.Fail("Could not find static field 'MagesEngine' on Flow.Launcher.Plugin.Calculator.Main");
+ engineField.SetValue(null, _engine);
+ }
+
+ // Basic operations
+ [TestCase(@"1+1", "2")]
+ [TestCase(@"2-1", "1")]
+ [TestCase(@"2*2", "4")]
+ [TestCase(@"4/2", "2")]
+ [TestCase(@"2^3", "8")]
+ // Decimal places
+ [TestCase(@"10/3", "3.3333333333")]
+ // Parentheses
+ [TestCase(@"(1+2)*3", "9")]
+ [TestCase(@"2^(1+2)", "8")]
+ // Functions
+ [TestCase(@"pow(2,3)", "8")]
+ [TestCase(@"min(1,-1,-2)", "-2")]
+ [TestCase(@"max(1,-1,-2)", "1")]
+ [TestCase(@"sqrt(16)", "4")]
+ [TestCase(@"sin(pi)", "0.0000000000")]
+ [TestCase(@"cos(0)", "1")]
+ [TestCase(@"tan(0)", "0")]
+ [TestCase(@"log10(100)", "2")]
+ [TestCase(@"log(100)", "2")]
+ [TestCase(@"log2(8)", "3")]
+ [TestCase(@"ln(e)", "1")]
+ [TestCase(@"abs(-5)", "5")]
+ // Constants
+ [TestCase(@"pi", "3.1415926536")]
+ // Complex expressions
+ [TestCase(@"(2+3)*sqrt(16)-log(100)/ln(e)", "18")]
+ [TestCase(@"sin(pi/2)+cos(0)+tan(0)", "2")]
+ // Error handling (should return empty result)
+ [TestCase(@"10/0", "")]
+ [TestCase(@"sqrt(-1)", "")]
+ [TestCase(@"log(0)", "")]
+ [TestCase(@"invalid_expression", "")]
+ public void CalculatorTest(string expression, string result)
+ {
+ ClassicAssert.AreEqual(GetCalculationResult(expression), result);
+ }
+
+ private string GetCalculationResult(string expression)
+ {
+ var results = _plugin.Query(new Plugin.Query()
+ {
+ Search = expression
+ });
+ return results.Count > 0 ? results[0].Title : string.Empty;
+ }
+ }
+}
diff --git a/Flow.Launcher/App.xaml.cs b/Flow.Launcher/App.xaml.cs
index 0360c761e..8ec11e5ff 100644
--- a/Flow.Launcher/App.xaml.cs
+++ b/Flow.Launcher/App.xaml.cs
@@ -45,6 +45,7 @@ namespace Flow.Launcher
private static Settings _settings;
private static MainWindow _mainWindow;
private readonly MainViewModel _mainVM;
+ private readonly Internationalization _internationalization;
// To prevent two disposals running at the same time.
private static readonly object _disposingLock = new();
@@ -107,6 +108,7 @@ namespace Flow.Launcher
API = Ioc.Default.GetRequiredService();
_settings.Initialize();
_mainVM = Ioc.Default.GetRequiredService();
+ _internationalization = Ioc.Default.GetRequiredService();
}
catch (Exception e)
{
@@ -193,7 +195,7 @@ namespace Flow.Launcher
Win32Helper.EnableWin32DarkMode(_settings.ColorScheme);
// Initialize language before portable clean up since it needs translations
- await Ioc.Default.GetRequiredService().InitializeLanguageAsync();
+ await _internationalization.InitializeLanguageAsync();
Ioc.Default.GetRequiredService().PreStartCleanUpAfterPortabilityUpdate();
@@ -421,6 +423,7 @@ namespace Flow.Launcher
_mainWindow?.Dispatcher.Invoke(_mainWindow.Dispose);
_mainVM?.Dispose();
DialogJump.Dispose();
+ _internationalization.Dispose();
}
API.LogInfo(ClassName, "End Flow Launcher dispose ----------------------------------------------------");
diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj
index fa23d8886..a99d4d8c2 100644
--- a/Flow.Launcher/Flow.Launcher.csproj
+++ b/Flow.Launcher/Flow.Launcher.csproj
@@ -40,49 +40,11 @@
-
+
-
+
@@ -132,7 +94,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -141,8 +103,8 @@
-
-
+
+
@@ -152,7 +114,7 @@
-
+
diff --git a/Flow.Launcher/Helper/WallpaperPathRetrieval.cs b/Flow.Launcher/Helper/WallpaperPathRetrieval.cs
index 93b9a8aaa..fd04b3e88 100644
--- a/Flow.Launcher/Helper/WallpaperPathRetrieval.cs
+++ b/Flow.Launcher/Helper/WallpaperPathRetrieval.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Threading;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
@@ -16,7 +17,7 @@ public static class WallpaperPathRetrieval
private const int MaxCacheSize = 3;
private static readonly Dictionary<(string, DateTime), ImageBrush> WallpaperCache = new();
- private static readonly object CacheLock = new();
+ private static readonly Lock CacheLock = new();
public static Brush GetWallpaperBrush()
{
@@ -31,7 +32,7 @@ public static class WallpaperPathRetrieval
var wallpaperPath = Win32Helper.GetWallpaperPath();
if (string.IsNullOrEmpty(wallpaperPath) || !File.Exists(wallpaperPath))
{
- App.API.LogInfo(ClassName, $"Wallpaper path is invalid: {wallpaperPath}");
+ App.API.LogError(ClassName, $"Wallpaper path is invalid: {wallpaperPath}");
var wallpaperColor = GetWallpaperColor();
return new SolidColorBrush(wallpaperColor);
}
@@ -47,17 +48,22 @@ public static class WallpaperPathRetrieval
return cachedWallpaper;
}
}
-
- using var fileStream = File.OpenRead(wallpaperPath);
- var decoder = BitmapDecoder.Create(fileStream, BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
- var frame = decoder.Frames[0];
- var originalWidth = frame.PixelWidth;
- var originalHeight = frame.PixelHeight;
+
+ int originalWidth, originalHeight;
+ // Use `using ()` instead of `using var` sentence here to ensure the wallpaper file is not locked
+ using (var fileStream = File.OpenRead(wallpaperPath))
+ {
+ var decoder = BitmapDecoder.Create(fileStream, BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
+ var frame = decoder.Frames[0];
+ originalWidth = frame.PixelWidth;
+ originalHeight = frame.PixelHeight;
+ }
if (originalWidth == 0 || originalHeight == 0)
{
- App.API.LogInfo(ClassName, $"Failed to load bitmap: Width={originalWidth}, Height={originalHeight}");
- return new SolidColorBrush(Colors.Transparent);
+ App.API.LogError(ClassName, $"Failed to load bitmap: Width={originalWidth}, Height={originalHeight}");
+ var wallpaperColor = GetWallpaperColor();
+ return new SolidColorBrush(wallpaperColor);
}
// Calculate the scaling factor to fit the image within 800x600 while preserving aspect ratio
@@ -70,7 +76,9 @@ public static class WallpaperPathRetrieval
// Set DecodePixelWidth and DecodePixelHeight to resize the image while preserving aspect ratio
var bitmap = new BitmapImage();
bitmap.BeginInit();
+ bitmap.CacheOption = BitmapCacheOption.OnLoad; // Use OnLoad to ensure the wallpaper file is not locked
bitmap.UriSource = new Uri(wallpaperPath);
+ bitmap.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
bitmap.DecodePixelWidth = decodedPixelWidth;
bitmap.DecodePixelHeight = decodedPixelHeight;
bitmap.EndInit();
@@ -104,13 +112,13 @@ public static class WallpaperPathRetrieval
private static Color GetWallpaperColor()
{
- RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Colors", false);
+ using var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Colors", false);
var result = key?.GetValue("Background", null);
if (result is string strResult)
{
try
{
- var parts = strResult.Trim().Split(new[] { ' ' }, 3).Select(byte.Parse).ToList();
+ var parts = strResult.Trim().Split([' '], 3).Select(byte.Parse).ToList();
return Color.FromRgb(parts[0], parts[1], parts[2]);
}
catch (Exception ex)
diff --git a/Flow.Launcher/Languages/ar.xaml b/Flow.Launcher/Languages/ar.xaml
index 9c252f7a7..b8845c3f5 100644
--- a/Flow.Launcher/Languages/ar.xaml
+++ b/Flow.Launcher/Languages/ar.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
متجر الإضافات
@@ -467,8 +468,10 @@
فتح المجلد
Advanced
Log Level
- Debug
+ Silent
+ خطأ
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
حجة للملف
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
متصفح الويب الافتراضي
@@ -500,6 +504,8 @@
نافذة جديدة
تبويب جديد
الوضع الخاص
+ Default
+ New Profile
تغيير الأولوية
diff --git a/Flow.Launcher/Languages/cs.xaml b/Flow.Launcher/Languages/cs.xaml
index 57415948f..30a1cdbb9 100644
--- a/Flow.Launcher/Languages/cs.xaml
+++ b/Flow.Launcher/Languages/cs.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Obchod s pluginy
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Chyba
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Argumenty pro Soubor
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Výchozí prohlížeč
@@ -500,6 +504,8 @@
Nové okno
Nová karta
Soukromý režim
+ Default
+ New Profile
Změnit prioritu
diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml
index 363d8de9a..067ea16fc 100644
--- a/Flow.Launcher/Languages/da.xaml
+++ b/Flow.Launcher/Languages/da.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Plugin-butik
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg for fil
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Default Web Browser
@@ -500,6 +504,8 @@
New Window
New Tab
Privattilstand
+ Default
+ New Profile
Skift prioritet
diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml
index fc16826bd..529531b58 100644
--- a/Flow.Launcher/Languages/de.xaml
+++ b/Flow.Launcher/Languages/de.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Plug-in-Store
@@ -467,8 +468,10 @@
Ordner öffnen
Erweitert
Log-Ebene
- Debug
+ Silent
+ Fehler
Info
+ Debug
Einstellung der Fensterschriftart
@@ -490,6 +493,7 @@
Arg For File
Der Dateimanager '{0}' konnte nicht unter '{1}' gefunden werden. Möchten Sie fortfahren?
Pfadfehler bei Dateimanager
+ File Explorer
Webbrowser per Default
@@ -500,6 +504,8 @@
Neues Fenster
Neuer Tab
Privater Modus
+ Default
+ New Profile
Priorität ändern
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index d2f78e1f6..fba57a593 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -485,6 +485,7 @@
Arg For File
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Default Web Browser
@@ -495,6 +496,8 @@
New Window
New Tab
Private Mode
+ Default
+ New Profile
Change Priority
diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml
index b3333c7a9..e18cdb3fe 100644
--- a/Flow.Launcher/Languages/es-419.xaml
+++ b/Flow.Launcher/Languages/es-419.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Tienda de Plugins
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg para Archivo
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Navegador Web Predeterminado
@@ -500,6 +504,8 @@
Nueva Ventana
Nueva Pestaña
Modo Privado
+ Default
+ New Profile
Cambiar Prioridad
diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml
index 73cd943a2..faaef8451 100644
--- a/Flow.Launcher/Languages/es.xaml
+++ b/Flow.Launcher/Languages/es.xaml
@@ -24,8 +24,8 @@
Flow Launcher ha detectado que los datos de usario existen tanto en {0} como en {1}. {2}{2}Por favor, elimine {1} para continuar. No se han producido cambios.
- El siguiente complemento ha sufrido un error y no puede cargarse:
- Los siguientes complementos han sufrido un error y no pueden cargarse:
+ El siguiente complemento ha sufrido un fallo y no se puede cargar:
+ Los siguientes complementos han sufrido un fallo y no se pueden cargar:
Por favor, consulte los registros para más información
@@ -224,6 +224,7 @@
Fallo al desinstalar {0}
No se puede encontrar plugin.json en el archivo zip extraído, o esta ruta {0} no existe
Ya existe un complemento con el mismo ID y versión, o la versión es superior a la de este complemento descargado
+ Error creating setting panel for plugin {0}:{1}{2}
Tienda complementos
@@ -332,7 +333,7 @@
Cambia 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.
- Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height
+ Dado que la vista previa está siempre activada, es posible que no se muestren los resultados máximos, ya que el panel de vista previa requiere una altura mínima determinada
Atajo de teclado
@@ -395,7 +396,7 @@
Mostrar distintivos en resultados
Para los complementos compatibles, se muestran distintivos que ayudan a distinguirlos más fácilmente.
Mostrar distintivos en resultados solo para consulta global
- Mostrar distintivos solo para los resultados de consultas globales
+ Muestra distintivos solo para los resultados de consultas globales
Salto de diálogo
Introducir atajo de teclado para acceder rápidamente a la ventana de diálogo Abrir/Guardar como en la ruta del administrador de archivos actual.
Salto de diálogo
@@ -467,8 +468,10 @@
Abrir carpeta
Avanzado
Nivel de registro
- Depuración
+ Silencioso
+ Error
Información
+ Depuración
Configuración de fuente de la ventana
@@ -490,6 +493,7 @@
Argumentos del archivo
El administrador de archivos '{0}' no pudo ser localizado en '{1}'. ¿Desea continuar?
Error de ruta del administrador de archivos
+ File Explorer
Navegador web predeterminado
@@ -500,6 +504,8 @@
Nueva ventana
Nueva pestaña
Modo privado
+ Default
+ New Profile
Cambiar la prioridad
diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml
index ced3aabe0..8aa1b5cd5 100644
--- a/Flow.Launcher/Languages/fr.xaml
+++ b/Flow.Launcher/Languages/fr.xaml
@@ -224,6 +224,7 @@
Échec de la désinstallation de {0}
Impossible de trouver le fichier plugin.json dans le fichier zip extrait, ou ce chemin {0} n'existe pas
Un plugin avec le même ID et la même version existe déjà, ou la version est supérieure à ce plugin téléchargé
+ Erreur lors de la création du panneau de configuration pour le plugin {0}:{1}{2}
Magasin des Plugins
@@ -466,8 +467,10 @@
Ouvrir le dossier
Avancé
Niveau de journalisation
- Débogage
+ Silencieux
+ Erreur
Info
+ Débogage
Réglage de la police de la fenêtre
@@ -489,6 +492,7 @@
Arguments pour le fichier
Le gestionnaire de fichiers '{0}' n'a pas pu être situé à '{1}'. Souhaitez-vous continuer ?
Erreur de chemin du gestionnaire de fichiers
+ Explorateur de fichiers
Navigateur web par défaut
@@ -499,6 +503,8 @@
Nouvelle fenêtre
Nouvel onglet
Mode privé
+ Par défaut
+ Nouveau profil
Changer la priorité
diff --git a/Flow.Launcher/Languages/he.xaml b/Flow.Launcher/Languages/he.xaml
index 164f13afd..f9f0ba2e3 100644
--- a/Flow.Launcher/Languages/he.xaml
+++ b/Flow.Launcher/Languages/he.xaml
@@ -223,6 +223,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
חנות תוספים
@@ -466,8 +467,10 @@
פתח תיקיה
Advanced
רמת יומן
- ניפוי שגיאות
+ Silent
+ שגיאה
מידע
+ ניפוי שגיאות
Setting Window Font
@@ -489,6 +492,7 @@
ארגומנט לקובץ
לא ניתן היה לאתר את מנהל הקבצים '{0}' ב-'{1}'. האם ברצונך להמשיך?
שגיאת נתיב למנהל הקבצים
+ File Explorer
דפדפן ברירת מחדל
@@ -499,6 +503,8 @@
חלון חדש
כרטיסייה חדשה
מצב פרטיות
+ Default
+ New Profile
שנה עדיפות
diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml
index e1d0fadca..60584807c 100644
--- a/Flow.Launcher/Languages/it.xaml
+++ b/Flow.Launcher/Languages/it.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Negozio dei Plugin
@@ -467,8 +468,10 @@
Apri Cartella
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg Per Cartella
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Browser predefinito
@@ -500,6 +504,8 @@
Nuova Finestra
Nuova Scheda
Modalità Privata
+ Default
+ New Profile
Cambia Priorità
diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml
index 13cd30fd7..de142733f 100644
--- a/Flow.Launcher/Languages/ja.xaml
+++ b/Flow.Launcher/Languages/ja.xaml
@@ -2,43 +2,43 @@
- Flow detected you have installed {0} plugins, which will require {1} to run. Would you like to download {1}?
+ Flow はあなたが {0} プラグインをインストールしており、実行するために {1} が必要であることを検知しました。{1} をインストールしますか?
{2}{2}
- Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable
+ {1}がすでにインストールされている場合は「いいえ」をクリックし、それが入っているフォルダーを選択してください
- Please select the {0} executable
+ {0} の実行ファイルを選択してください
- Your selected {0} executable is invalid.
+ あなたが選択した {0} の実行ファイルが不正です。
{2}{2}
- Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
+ {0} の実行ファイルをもう一度選択する場合は「はい」を、{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
+ {0} の実行可能ファイルのパスを設定できません。Flow の設定から試してください(下までスクロールしてください)。
+ プラグインの起動失敗
+ プラグイン: {0} の読み込みに失敗したため、無効になりました。プラグインの作成者にお問い合わせください
Flow Launcherはポータブルモードの無効化のために再起動する必要があります。再起動の後、ポータブルな形式の設定項目は削除され、あなたのパソコンのフォルダに保存されます
Flow Launcherはポータブルモードの有効化のために再起動する必要があります。再起動の後、パソコンに保存された設定項目は削除され、ポータブルな形式で保存されます
Flow Launcherはポータブルモードの有効化を検知しました。Flow Launcherを別の場所に移動しますか?
Flow Launcherはポータブルモードの無効化を検知しました。関連するショートカットやアンインストーラーが配置されます
- Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.
+ Flow Launcherはあなたのユーザーデータが{0} と {1} の両方に存在することを検知しました。{2}{2}続行するには、{1}を削除してください。処理は中断されました。
- The following plugin has errored and cannot be loaded:
- The following plugins have errored and cannot be loaded:
- Please refer to the logs for more information
+ 以下のプラグインにエラーがあるためロードできません:
+ 以下のプラグインにエラーがあるためロードできません:
+ 詳細はログを参照してください
- Please try again
- Unable to parse Http Proxy
+ もう一度お試しください
+ Http プロキシをパースできません
- Failed to install TypeScript environment. Please try again later
- Failed to install Python environment. Please try again later.
+ TypeScript環境のインストールに失敗しました。後でもう一度お試しください
+ Python 環境のインストールに失敗しました。後でもう一度お試しください。
ホットキー "{0}" の登録に失敗しました。このホットキーは別のプログラムで使用されている可能性があります。別のホットキーに変更するか、このホットキーを使用しているプログラムを終了してください。
- Failed to unregister hotkey "{0}". Please try again or see log for details
+ ホットキー「{0}」の登録解除に失敗しました。もう一度試すか、ログを参照して詳細を確認してください
Flow Launcher
{0}の起動に失敗しました
Flow Launcherプラグインの形式が正しくありません
@@ -58,7 +58,7 @@
全て選択
ファイル
フォルダー
- Text
+ テキスト
ゲームモード
ホットキーの使用を一時停止します。
位置のリセット
@@ -73,7 +73,7 @@
スタートアップ時にFlow Launcherを起動する
起動の高速化のためにスタートアップではなくログオンタスクを使用
アンインストール後は、「タスク スケジューラ」からこのタスク(Flow.Launcher Startup)を手動で削除する必要があります。
- Error setting launch on startup
+ スタートアップ時に起動の設定失敗
フォーカスを失った時にFlow Launcherを隠す
最新版が入手可能であっても、アップグレードメッセージを表示しない
検索ウィンドウの位置
@@ -111,7 +111,7 @@
常に英語モードで入力を開始する
Flowを起動したとき、一時的に入力方法を英語モードに変更します。
自動更新
- Automatically check and update the app when available
+ 利用可能な場合、Flow Launcherを自動的に確認して更新します
選択
起動時にFlow Launcherを隠す
起動後、Flow Launcher の検索ウィンドウは非表示になり、トレイに格納されます。
@@ -123,10 +123,10 @@
低
標準
ピンインによる検索
- Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.
- Use Double Pinyin
- Use Double Pinyin instead of Full Pinyin to search.
- Double Pinyin Schema
+ Pinyinは中国語を翻訳するためのローマ字入力の標準的な方法です。有効にすると、検索時のメモリ使用量が大幅に増加する可能性があります。
+ 双拼入力を使用
+ 検索するときに全拼の代わりに双拼を使用する。
+ 双拼の入力方式
Xiao He
Zi Ran Ma
Wei Ruan
@@ -142,10 +142,10 @@
現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません
検索遅延
入力中に短い遅延を追加することで、UIのちらつきや結果の読み込みを軽減します。平均的なタイピング速度のユーザーにおすすめです。
- Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.
+ 入力中の結果表示までの待ち時間をミリ秒単位で入力します。これは、検索遅延が有効な場合にのみ編集できます。
デフォルトの検索遅延時間
入力が停止した後に結果が表示されるまでの待ち時間。値が大きいほど長く待機します。(単位 ms)
- Information for Korean IME user
+ 韓国語IMEユーザーへの情報
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
@@ -160,29 +160,29 @@
- Open Language and Region System Settings
+ システムの言語と地域設定を開く
Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility
開く
- Use Previous Korean IME
+ 前の韓国語IMEを使用
You can change the Previous Korean IME settings directly from here
Failed to change Korean IME setting
- Please check your system registry access or contact support.
+ システムのレジストリへのアクセスが可能か確認するか、サポートにお問い合わせください。
ホームページ
検索文字列が空の場合、ホームページの結果を表示します。
クエリの履歴をホームページに表示
ホームページに表示される最大の履歴の数
- This can only be edited if plugin supports Home feature and Home Page is enabled.
- Show Search Window at Foremost
+ これは、プラグインがホーム機能をサポートし、ホームページが有効な場合にのみ編集することができます。
+ 検索ウィンドウを最前面に表示
他のプログラムの 'Always on Top' (最前面に表示)設定を上書きし、常に最前面のウィンドウで Flow を表示します。
- プラグインストアでプラグインを変更した後に再起動します
+ プラグインストアでプラグインを変更した後に再起動
プラグインストア経由でプラグインをインストール、アンインストール、または更新した後、Flow Lancherを自動的に再起動します
不明なソースの警告を表示
不明なソースからプラグインをインストールするときに警告を表示する
- Auto update plugins
- Automatically check plugin updates and notify if there are any updates available
+ プラグインの自動アップデート
+ プラグインの更新を自動的にチェックし、利用可能な更新がある場合に通知します
- Search Plugin
+ プラグインの検索
Ctrl+F でプラグインを検索します
検索結果が見つかりませんでした
別の検索を試してみてください。
@@ -191,20 +191,20 @@
プラグインを探す
有効
無効
- Action keyword Setting
+ アクションキーワードの設定
キーワード
- Current action keyword
- New action keyword
- Change Action Keywords
- Plugin search delay time
- Change Plugin Search Delay Time
+ 現在のアクションキーワード
+ 新しいアクションキーワード
+ アクションキーワードの変更
+ プラグインの検索遅延時間
+ プラグインの検索遅延時間を変更
詳細設定:
有効
重要度
検索遅延
ホームページ
- Current Priority
- New Priority
+ 現在の優先度
+ 新しい優先度
重要度
プラグインの結果の優先度を変更します。
プラグイン・ディレクトリ
@@ -214,59 +214,60 @@
バージョン
ウェブサイト
アンインストール
- 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
- {0} modified already
- Please restart Flow before making any further changes
- Fail to install {0}
- Fail to uninstall {0}
- Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
- A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ プラグイン設定の削除に失敗
+ プラグイン: {0} - プラグイン設定ファイルの削除に失敗しました。手動で削除してください
+ プラグインキャッシュの削除に失敗
+ プラグイン: {0} - プラグインキャッシュファイルの削除に失敗しました。手動で削除してください
+ {0} は既に変更されています
+ これ以上変更を加える前に Flow Launcher を再起動してください
+ {0} のインストールに失敗
+ {0} のアンインストールに失敗
+ 展開されたzipファイルからplugin.jsonが見つからないか、このパス {0} が存在しません
+ 同じIDとバージョンのプラグインがすでに存在するか、またはこのダウンロードしたプラグインよりもバージョンが大きいです
+ Error creating setting panel for plugin {0}:{1}{2}
プラグインストア
新規リリース
最近の更新
プラグイン
- Installed
+ インストール済み
更新
インストール
アンインストール
更新
- Plugin already installed
- New Version
- This plugin has been updated within the last 7 days
+ プラグインは既にインストールされています
+ 新しいバージョン
+ このプラグインは過去1週間以内に更新されました
新しいアップデートが利用可能です
プラグインのインストール失敗
プラグインのアンインストール失敗
- Error updating plugin
+ プラグインの更新に失敗
プラグインの設定を維持
再びインストールして使用するときのためにプラグインの設定を維持しますか?
- Plugin {0} successfully installed. Please restart Flow.
- Plugin {0} successfully uninstalled. Please restart Flow.
- Plugin {0} successfully updated. Please restart Flow.
+ プラグイン {0} のインストールに成功しました。Flow を再起動してください。
+ プラグイン {0} のアンインストールに成功しました。Flow を再起動してください。
+ プラグイン {0} が正常に更新されました。Flow を再起動してください。
プラグインのインストール
{0} by {1} {2}{2}このプラグインをインストールしますか?
プラグインのアンインストール
{0} by {1} {2}{2}このプラグインをアンインストールしますか?
- Plugin update
- {0} by {1} {2}{2}Would you like to update this plugin?
- Downloading plugin
- Automatically restart after installing/uninstalling/updating plugins in plugin store
- Zip file does not have a valid plugin.json configuration
+ プラグインの更新
+ {0} by {1} {2}{2}このプラグインを更新しますか?
+ プラグインをダウンロード中
+ プラグインストア経由でのプラグインのインストール 、アンインストール、または更新後に自動的に再起動します
+ Zipファイルに有効なplugin.jsonファイルがありません
不明なソースからのインストール
このプラグインは不明なソースから提供されており、潜在的なリスクを含んでいる可能性があります!{0}{0}このプラグインの開発元をよく調べ、安全であることをご自身で確かめてください。{0}{0}それでもあなたはこのプラグインをインストールしますか?{0}{0}(この警告は設定の「一般」セクションで無効にすることができます)
- Zip files
- Please select zip file
+ Zip ファイル
+ zipファイルを選択してください
ローカルパスからプラグインをインストール
- No update available
- All plugins are up to date
- Plugin updates available
- Update plugins
- Check plugin updates
- Plugins are successfully updated. Please restart Flow.
+ 利用可能な更新はありません
+ すべてのプラグインが最新です
+ プラグインの更新が利用可能
+ プラグインを更新
+ プラグインの更新を確認
+ プラグインが正常に更新されました。Flow を再起動してください。
テーマ
@@ -285,13 +286,13 @@
検索バーの高さ
アイテムの高さ
検索ボックスのフォント
- Result Title Font
- Result Subtitle Font
+ 結果のタイトルのフォント
+ 結果のサブタイトルのフォント
リセット
- Reset to the recommended font and size settings.
- Import Theme Size
- If a size value intended by the theme designer is available, it will be retrieved and applied.
- Customize
+ 推奨されるフォントとサイズの設定にリセットします。
+ テーマ中のサイズをインポート
+ テーマのデザイナーによって意図されたサイズ値が利用可能なとき、それを取得して適用します。
+ カスタマイズ
ウィンドウモード
透過度
テーマ {0} が存在しません、デフォルトのテーマに戻します。
@@ -306,7 +307,7 @@
検索ウィンドウが開いたとき、小さな音を鳴らします
効果音の音量
効果音の音量を調整します
- Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume.
+ Windows Media Player は Flow を使った音量調整に必要です。ボリュームを調整する必要がある場合は、Windows Media Player がインストールされているかどうか確認してください。
アニメーション
UIでアニメーションを使用します
アニメーション速度
@@ -324,15 +325,15 @@
アクリル
マイカ
マイカ(代替)
- This theme supports two (light/dark) modes.
- This theme supports Blur Transparent Background.
+ このテーマはライト/ダークの2モードに対応しています。
+ このテーマは背景をぼかした透明効果をサポートしています。
プレースホルダーを表示
クエリが空の場合にプレースホルダを表示します
検索欄の案内文
- Change placeholder text. Input empty will use: {0}
+ プレースホルダのテキストを変更します。空にすると、 {0} が使用されます
ウィンドウサイズの固定
ウィンドウのサイズを固定し、ドラッグでの変更を無効にします。
- Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height
+ 「常にプレビューする」が有効になっているため、プレビューパネルの高さの確保のために「結果の最大表示件数」設定は無視される可能性があります
ホットキー
@@ -372,51 +373,51 @@
カスタムクエリ ホットキー
Custom Query Shortcut
組み込みショートカット
- Query
+ クエリー
ショートカット
展開
説明
削除
編集
追加
- None
+ なし
項目を選択してください
{0} プラグインのホットキーを本当に削除しますか?
本当にこのショートカットを削除しますか?: {0} を {1} に展開
- Get text from clipboard.
+ クリップボードからテキストを取得します。
アクティブなエクスプローラーからパスを取得します。
検索ウィンドウの落陰効果
- Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited.
- Window Width Size
- You can also quickly adjust this by using Ctrl+[ and Ctrl+].
+ 影の効果は GPU に大きな負荷をかけます。お使いのコンピューターの性能が限定的な場合、無効にすることをおすすめします。
+ ウィンドウ幅のサイズ
+ Ctrl+Plus と Ctrl+Minus を使用すれば、簡単に調整することもできます。
Segoe Fluent アイコンを使用する
サポートされているクエリ結果にSegoe Fluentアイコンを使用する
- Press Key
- Show Result Badges
+ キーを入力
+ 結果のバッジを表示
サポートされているプラグインでは、バッジが表示され、より簡単に区別できます。
- Show Result Badges for Global Query Only
- Show badges for global query results only
- Dialog Jump
- Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.
- Dialog Jump
- When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.
- Dialog Jump Automatically
- When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)
- Show Dialog Jump Window
- Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.
- Dialog Jump Window Position
- Select position for the Dialog Jump search window
- Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed
- Default search window position. Displayed when triggered by search window hotkey
- Dialog Jump Result Navigation Behaviour
- Behaviour to navigate Open/Save As dialog window to the selected result path
- Left click or Enter key
- Right click
- Dialog Jump File Navigation Behaviour
- Behaviour to navigate Open/Save As dialog window when the result is a file path
- Fill full path in file name box
- Fill full path in file name box and open
- Fill directory in path box
+ グローバルクエリのみ、結果のバッジを表示
+ グローバルクエリの結果にのみバッジを表示する
+ ダイアログジャンプ
+ ショートカットを入力して、「名前を付けて開く/保存」ダイアログ・ウィンドウを現在のファイルマネージャのパスにすばやくナビゲートします。
+ ダイアログジャンプ
+ 「名前を付けて開く/保存」ダイアログウィンドウが開いたら、すぐにファイルマネージャの現在のパスに移動します。
+ 自動ダイアログジャンプ
+ 開く/名前を付けて保存ダイアログが表示されると、自動的に現在のファイルマネージャのパスに移動させます。 (実験的)
+ ダイアログジャンプウィンドウを表示
+ 「名前をつけて保存/開く」ダイアログウィンドウが表示されたときにダイアログジャンプのウィンドウを開いて、ファイルやフォルダーを素早く開く。
+ ダイアログジャンプのウィンドウの位置
+ ダイアログジャンプ検索ウィンドウの位置を選択します
+ 「名前を付けて開く/保存」ダイアログウィンドウの下に固定。ウィンドウが閉じるまで開いたまま表示されます
+ デフォルトの検索ウィンドウの位置。検索ウィンドウのホットキーによってトリガーされたときに表示されます
+ ダイアログジャンプの検索結果の開き方
+ 「開く/名前を付けて保存」ダイアログウィンドウの選択した結果パスに移動する動作
+ 左クリックまたはEnter キー
+ 右クリック
+ ダイアログジャンプのファイルに対する動作
+ 結果がファイルパスの場合の、「開く/名前を付けて保存」ダイアログウィンドウに対する動作
+ フルパスをファイル名ボックスに入力
+ フルパスをファイル名ボックスに入力して開く
+ パスボックスに含まれるフォルダを入力
HTTP プロキシ
@@ -467,44 +468,49 @@
フォルダーを開く
上級者向け機能
ログレベル
- デバッグ
+ Silent
+ エラー
情報
+ デバッグ
設定ウィンドウで使用するフォント
- See more release notes on GitHub
- Failed to fetch release notes
- Please check your network connection or ensure GitHub is accessible
- Flow Launcher has been updated to {0}
- Click here to view the release notes
+ GitHub で詳細なリリース ノートを見る
+ リリースノートの取得に失敗
+ ネットワーク接続を確認するか、GitHubにアクセスできることを確認してください
+ Flow Launcher が {0}に更新されました
+ ここをクリックしてリリースノートを表示
デフォルトのファイルマネージャー
- Learn more
- Please specify the file location of the file manager you using and add arguments as required. The "%d" represents the directory path to open for, used by the Arg for Folder field and for commands opening specific directories. The "%f" represents the file path to open for, used by the Arg for File field and for commands opening specific files.
- For example, if the file manager uses a command such as "totalcmd.exe /A c:\windows" to open the c:\windows directory, the File Manager Path will be totalcmd.exe, and the Arg For Folder will be /A "%d". Certain file managers like QTTabBar may just require a path to be supplied, in this instance use "%d" as the File Manager Path and leave the rest of the fields blank.
- File Manager
- Profile Name
- File Manager Path
- Arg For Folder
- Arg For File
- The file manager '{0}' could not be located at '{1}'. Would you like to continue?
- File Manager Path Error
+ 詳細を見る
+ 使用したいファイルマネージャーのファイルの位置を指定し、コマンドライン引数を入力してください。"%d" は開こうとしているフォルダーのパスを表し、「フォルダー用の引数」の欄で特定のフォルダーを開くために使用されます。"%f" は開こうとしているファイルのパスを表し、「ファイル用の引数」の欄で特定のファイルを開くために使用されます。
+ 例として、ファイルマネージャーが "totalcmd.exe /A c:\windows" というコマンドを c:\windows というフォルダを開くために使用する場合を考えます。この場合、ファイルマネージャーのパスは totalcmd.exe で、フォルダー用の引数は /A "%d" になります。QTTabBarのように、パスのみを要求するファイルマネージャーの場合、”%d” をファイルマネージャーのパスの欄に指定し、残りを空欄にしてください。
+ ファイル マネージャー
+ プロファイル名
+ ファイルマネージャーのパス
+ フォルダー用の引数
+ ファイル用の引数
+ ファイルマネージャー '{0}' は、'{1}' に見つかりませんでした。続行しますか?
+ ファイルマネージャのパスエラー
+ File Explorer
デフォルトのウェブブラウザー
- The default setting follows the OS default browser setting. If specified separately, flow uses that browser.
- Browser
- Browser Name
- Browser Path
- New Window
- New Tab
- Private Mode
+ デフォルトの設定は、OS のデフォルトのブラウザ設定に従います。別々に指定すると、Flow はそのブラウザを使用します。
+ ブラウザー
+ ブラウザー名
+ ブラウザーのパス
+ 新しいウィンドウ
+ 新しいタブ
+ プライベートモード
+ Default
+ New Profile
- Change Priority
- Greater the number, the higher the result will be ranked. Try setting it as 5. If you want the results to be lower than any other plugin's, provide a negative number
- Please provide an valid integer for Priority!
+ 優先度の変更
+ 数値が大きいほど、結果の上の方に表示されます。試しに5として設定してみてください。 結果を他のプラグインよりも低くしたい場合は、負の数字を入力してください
+ 優先度には有効な整数を入力してください!
古いアクションキーワード
@@ -514,33 +520,33 @@
指定されたプラグインが見つかりません
新しいアクションキーワードを空にすることはできません
新しいアクションキーワードは他のプラグインに割り当てられています。他のアクションキーワードを入力してください
- This new Action Keyword is the same as old, please choose a different one
+ そのアクションキーワードは以前のものと同じです。他のアクションキーワードを入力してください
成功しました
- Completed successfully
- Failed to copy
- 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
- Input the search delay time in ms you like to use for the plugin. Input empty if you don't want to specify any, and the plugin will use default search delay time.
+ 検索の遅延時間の設定
+ プラグインに使用したい検索の遅延時間をミリ秒で入力します。 何も指定したくない場合は空にしておくと、プラグインはデフォルトの検索の遅延時間を使用します。
ホームページ
- Enable the plugin home page state if you like to show the plugin results when query is empty.
+ クエリが空のときにプラグインの結果を表示したい場合は、プラグインのホームページの設定を有効にします。
カスタムクエリのホットキー
- Press a custom hotkey to open Flow Launcher and input the specified query automatically.
+ カスタムホットキーを押して Flow Launcher を開き、指定したクエリを自動的に入力します。
プレビュー
ホットキーは使用できません。新しいホットキーを選択してください
- Hotkey is invalid
+ そのホットキーは無効です
更新
- Binding Hotkey
- Current hotkey is unavailable.
- This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey.
- This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}".
- Press the keys you want to use for this function.
- Hotkey and action keyword are empty
+ ホットキーの設定
+ 現在のホットキーは使用できません。
+ このホットキーは "{0}" で予約されており、使用できません。別のホットキーを選択してください。
+ このホットキーは "{0}" によってすでに使用されています。「上書き」を押すと、"{0}"から削除されます。
+ この機能に使用するキーを押してください。
+ ホットキーとアクションキーワードが空です
カスタムクエリのショートカット
@@ -551,11 +557,11 @@
そのショートカットは既に存在します。新しいショートカットを入力するか、既存のショートカットを編集してください。
ショートカット、展開の少なくとも一方が空です。
- Shortcut is invalid
+ ショートカットが無効です
保存
- Overwrite
+ 上書き
キャンセル
リセット
削除
@@ -580,46 +586,46 @@
クラッシュレポートの送信に失敗しました
Flow Launcherにエラーが発生しました
Please open new issue in
- 1. Upload log file: {0}
- 2. Copy below exception message
+ 1. ログファイルをアップロード: {0}
+ 2. 例外メッセージ以下をコピー
- File Manager Error
+ ファイルマネージャのエラー
- The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
+ 指定されたファイルマネージャーが見つかりませんでした。設定 > 一般でカスタムファイルマネージャの設定を確認してください。
- Error
- An error occurred while opening the folder. {0}
- An error occurred while opening the URL in the browser. Please check your Default Web Browser configuration in the General section of the settings window
+ エラー
+ フォルダを開く際にエラーが発生しました。 {0}
+ ブラウザでURLを開く際にエラーが発生しました。設定ウィンドウの一般セクションでデフォルトのウェブブラウザ設定を確認してください
- Please wait...
+ しばらくお待ちください…
- Checking for new update
+ 新しい更新を確認中
Flow Launcherは既に最新です
- Update found
- Updating...
+ 更新が見つかりました
+ 更新中…
- Flow Launcher was not able to move your user profile data to the new update version.
- Please manually move your profile data folder from {0} to {1}
+ Flow Launcherはユーザープロファイルデータを新しいバージョンに移動できませんでした。
+ 手動で {0} から {1}にプロフィールデータフォルダを移動してください
- New Update
+ 新しい更新
Flow Launcher の最新バージョン V{0} が入手可能です
Flow Launcherのアップデート中にエラーが発生しました
更新
キャンセル
- Update Failed
- Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.
+ アップデート失敗
+ 接続を確認し、その後プロキシ設定を github-cloud.s3.amazonaws.com に更新してみてください。
このアップデートでは、Flow Launcherの再起動が必要です
次のファイルがアップデートされます
更新ファイル一覧
アップデートの詳細
- Restart Flow Launcher after updating plugins
- {0}: Update from v{1} to v{2}
- No plugin selected
+ プラグインを更新した後、Flow Launcher を再起動する
+ {0}: v{1} から v{2} へ更新
+ プラグインが選択されていません
スキップ
@@ -642,18 +648,18 @@
コンテキストメニューを開く
ファイルのあるフォルダを開く
管理者として実行、または、 デフォルトのファイルマネージャでフォルダを開く
- Query History
+ クエリの履歴
コンテキストメニューから検索結果に戻る
- Autocomplete
+ 自動補完
選択したアイテムを開く、または、実行する
Flow Launcherの設定ウインドウを開く
プラグインデータのリロード
- Select first result
- Select last result
- Run current query again
+ 最初の結果を選択
+ 最後の結果を選択
+ 現在のクエリをもう一度実行
結果を開く
- Open result #{0}
+ #{0} を開く
天気
天気についてのGoogle検索
diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml
index 6cf1a6274..131aa50cb 100644
--- a/Flow.Launcher/Languages/ko.xaml
+++ b/Flow.Launcher/Languages/ko.xaml
@@ -215,6 +215,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
플러그인 스토어
@@ -458,8 +459,10 @@
폴더 열기
Advanced
로그 레벨
- Debug
+ Silent
+ Error
Info
+ Debug
설정창 글꼴
@@ -481,6 +484,7 @@
파일경로 인수
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
기본 웹 브라우저
@@ -491,6 +495,8 @@
새 창
새 탭
사생활 보호 모드
+ Default
+ New Profile
중요도 변경
diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml
index 57afaa87b..a27f66d11 100644
--- a/Flow.Launcher/Languages/nb.xaml
+++ b/Flow.Launcher/Languages/nb.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Programtillegg butikk
@@ -467,8 +468,10 @@
Åpne mappe
Advanced
Log Level
- Debug
+ Silent
+ Feil
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg for fil
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Standard nettleser
@@ -500,6 +504,8 @@
Nytt vindu
Ny fane
Privat modus
+ Default
+ New Profile
Endre prioritet
diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml
index 5b7ba1d21..416091858 100644
--- a/Flow.Launcher/Languages/nl.xaml
+++ b/Flow.Launcher/Languages/nl.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Plugin Winkel
@@ -467,8 +468,10 @@
Map openen
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg voor bestand
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Standaard webbrowser
@@ -500,6 +504,8 @@
Nieuw Venster
Nieuw tabblad
Privé modus
+ Default
+ New Profile
Prioriteit wijzigen
diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml
index 92b91d287..1295e66c9 100644
--- a/Flow.Launcher/Languages/pl.xaml
+++ b/Flow.Launcher/Languages/pl.xaml
@@ -223,6 +223,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Sklep z wtyczkami
@@ -466,8 +467,10 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
Otwórz folder
Zaawansowane
Poziom logowania
- Debug
+ Silent
+ Błąd
Info
+ Debug
Ustawienia czcionki okna
@@ -489,6 +492,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
Arg dla pliku
Menedżer plików „{0}” nie został znaleziony w lokalizacji „{1}”. Czy chcesz kontynuować?
Błąd ścieżki do menedżera plików
+ File Explorer
Domyślna przeglądarka
@@ -499,6 +503,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
Nowe okno
Nowa zakładka
Tryb prywatny
+ Default
+ New Profile
Zmień priorytet
diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml
index 9b0db5a9e..91193bd0a 100644
--- a/Flow.Launcher/Languages/pt-br.xaml
+++ b/Flow.Launcher/Languages/pt-br.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Loja de Plugins
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg para Arquivo
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Navegador da Web Padrão
@@ -500,6 +504,8 @@
Nova Janela
Nova Aba
Modo Privado
+ Default
+ New Profile
Alterar Prioridade
diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml
index 1a68f23f4..080573821 100644
--- a/Flow.Launcher/Languages/pt-pt.xaml
+++ b/Flow.Launcher/Languages/pt-pt.xaml
@@ -223,6 +223,7 @@
Falha ao desinstalar {0}
Não foi possível encontrar plugin.json no ficheiro zip ou, então, o caminho {0} não existe.
Já existe um plugin com a mesma ID e versão ou, então, a versão instalada é superior à do plugin descarregado.
+ Erro ao criar o painel de definição para o plugin {0}:{1}{2}
Loja de plugins
@@ -331,7 +332,7 @@
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.
- Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height
+ Como a opção "Pré-visualizar sempre" está ativa, os resultados máximos mostrados podem não ter efeito porque o painel de visualização requer uma altura mínima
Tecla de atalho
@@ -465,8 +466,10 @@
Abrir pasta
Avançado
Nível de registo
- Depuração
+ Silencioso
+ Erro
Informação
+ Depuração
Tipo de letra da aplicação
@@ -488,6 +491,7 @@
Argumento para ficheiro
Não foi possível encontrar o gestor de ficheiros '{0}' em '{1}'. Deseja continuar?
Erro no caminho do gestor de ficheiros
+ Gestor de ficheiros
Navegador web padrão
@@ -498,6 +502,8 @@
Nova janela
Novo separador
Modo privado
+ Padrão
+ Novo perfil
Alterar prioridade
diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml
index 43d26aff2..c506d0765 100644
--- a/Flow.Launcher/Languages/ru.xaml
+++ b/Flow.Launcher/Languages/ru.xaml
@@ -167,7 +167,7 @@
You can change the Previous Korean IME settings directly from here
Failed to change Korean IME setting
Please check your system registry access or contact support.
- Home Page
+ Главная страница
Show home page results when query text is empty.
Show History Results in Home Page
Maximum History Results Shown in Home Page
@@ -199,10 +199,10 @@
Plugin search delay time
Change Plugin Search Delay Time
Advanced Settings:
- Enabled
+ Включено
Приоритет
Search Delay
- Home Page
+ Главная страница
Текущий приоритет
Новый приоритет
Приоритет
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Магазин плагинов
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Ошибка
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Аргумент для файла
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Браузер по умолчанию
@@ -500,6 +504,8 @@
Новое окно
Новая вкладка
Приватный режим
+ Default
+ New Profile
Изменить приоритет
@@ -525,7 +531,7 @@
Input the search delay time in ms you like to use for the plugin. Input empty if you don't want to specify any, and the plugin will use default search delay time.
- Home Page
+ Главная страница
Enable the plugin home page state if you like to show the plugin results when query is empty.
diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml
index 855c0635e..e909a24b1 100644
--- a/Flow.Launcher/Languages/sk.xaml
+++ b/Flow.Launcher/Languages/sk.xaml
@@ -176,7 +176,7 @@ Nevykonali sa žiadne zmeny.
Zobraziť vyhľadávacie okno v popredí
Prepíše nastavenie "Vždy na vrchu" ostatných programov a zobrazí navrchu Flow.
Reštartovať po úprave pluginu cez Repozitár pluginov
- Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizáciu pluginu cez Repozitár pluginov
+ Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizácii pluginu cez Repozitár pluginov
Zobraziť upozornenie na neznámy zdroj
Zobraziť upozornenie pri inštalácii z neznámych zdrojov
Automaticky aktualizovať pluginy
@@ -225,6 +225,7 @@ Nevykonali sa žiadne zmeny.
Nepodarilo sa odinštalovať {0}
Súbor plugin.json sa nenašiel v rozbalenom zip súbore, alebo táto cesta {0} neexistuje
Plugin s rovnakým ID už existuje, alebo ide o vyššiu verziu ako stiahnutý plugin
+ Chyba pri vytváraní panelu nastavení pre plugin {0}:{1}{2}
Repozitár pluginov
@@ -255,7 +256,7 @@ Nevykonali sa žiadne zmeny.
Aktualizácia pluginu
{0} od {1} {2}{2}Chcete aktualizovať tento plugin?
Sťahovanie pluginu
- Automaticky reštartovať po inštalácii/odinštalácii/aktualizáciu pluginov cez Repozitár pluginov
+ Automaticky reštartovať po inštalácii/odinštalácii/aktualizácii pluginov cez Repozitár pluginov
V zipe sa nenachádza platná konfigurácia plugin.json
Inštalácia z neznámeho zdroja
Tento plugin pochádza z neznámeho zdroja a môže predstavovať potenciálne riziká!{0}{0}Uistite sa, že viete, odkiaľ tento plugin pochádza, a že je bezpečný.{0}{0}Stále chcete pokračovať?{0}{0}(Toto upozornenie môžete vypnúť sekcii Všeobecné v nastaveniach)
@@ -267,7 +268,7 @@ Nevykonali sa žiadne zmeny.
Dostupná aktualizácia pluginu
Aktualizovať pluginy
Skontrolovať dostupnosť aktualizácií
- Pluginy {0} boli úspešne aktualizované. Prosím, reštartuje Flow.
+ Pluginy boli úspešne aktualizované. Prosím, reštartuje Flow.
Motív
@@ -396,28 +397,28 @@ Nevykonali sa žiadne zmeny.
Zobraziť výsledok v odznaku
Ak to plugin podporuje, zobrazí sa jeho ikona v odznaku na jednoduchšie odlíšenie.
Zobraziť výsledok v odznaku len pre globálne vyhľadávanie
- Show badges for global query results only
- Dialog Jump
- Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.
- Dialog Jump
- When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.
- Dialog Jump Automatically
- When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)
- Show Dialog Jump Window
- Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.
- Dialog Jump Window Position
- Select position for the Dialog Jump search window
- Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed
- Default search window position. Displayed when triggered by search window hotkey
- Dialog Jump Result Navigation Behaviour
- Behaviour to navigate Open/Save As dialog window to the selected result path
- Left click or Enter key
- Right click
- Dialog Jump File Navigation Behaviour
- Behaviour to navigate Open/Save As dialog window when the result is a file path
- Fill full path in file name box
- Fill full path in file name box and open
- Fill directory in path box
+ Zobrazí výsledok v odznaku len pre výsledky globálneho vyhľadávania
+ Rýchly prechod
+ Zadajte skratku na rýchly prechod na aktuálnu cestu správcu súborov v dialógovom okne Otvoriť/Uložiť.
+ Rýchly prechod
+ Keď sa otvorí dialógové okno Otvoriť/Uložiť, rýchlo prejdete na aktuálnu cestu správcu súborov.
+ Automatický rýchly prechod
+ Keď je otvorené dialógové okno Otvoriť/Uložiť, automaticky prejsť na cestu v aktuálnom správcovi súborov (Experimentálne)
+ Zobraziť okno na rýchly prechod
+ Zobraziť okno rýchleho prechodu, keď je zobrazené dialógové okno Ovoriť/Uložiť na rýchlu navigáciu do umiestnenia súborov/priečinkov.
+ Umiestnenie okna "rýchly prechod"
+ Vyberte umiestnenie vyhľadávacieho okna pre "rýchly prechod"
+ Fixné pod oknom Otvoriť/Uložiť. Zostane zobrazené po otvorení až do uzavretia okna
+ Predvolená pozícia vyhľadávacieho okna. Zobrazí sa po zadaní skratky na otvorenie vyhľadávacieho okna
+ Akcia na prechod k výsledku rýchleho prechodu
+ Ako prejsť na vybranú cestu v otvorenom dialógovom okne Otvoriť/Uložiť
+ Kliknutie ľavým tlačidlom myši alebo klávesom Enter
+ Kliknutie pravým tlačidlom myši
+ Akcia na prechod k súboru rýchleho prechodu
+ Akcia, ktorá sa vykoná na navigáciu v dialógovom okne Otvoriť/Uložiť, ak výsledkom je súbor
+ Vložiť celú cestu k súboru do poľa názvu súboru
+ Vložiť celú cestu k súboru do poľa názvu súboru a otvoriť
+ Vložiť priečinok do poľa s cestou
HTTP proxy
@@ -468,8 +469,10 @@ Nevykonali sa žiadne zmeny.
Otvoriť priečinok
Rozšírené
Úroveň logovania
- Debug
+ Žiadne
+ Chyba
Info
+ Debug
Nastavenie písma okna
@@ -482,8 +485,8 @@ Nevykonali sa žiadne zmeny.
Vyberte správcu súborov
Viac informácií
- Zadajte umiestnenie súboru správcu súborov, ktorý používate, a podľa potreby pridajte argumenty. "%d" predstavuje cestu k priečinku, ktorý sa má otvoriť, používa sa v poli Arg pre priečinok a pri príkazoch na otvorenie konkrétnych priečinkov. "%f" predstavuje cestu k súboru, ktorá sa má otvoriť a používa sa v poli Arg pre súbor a pri príkazoch na otvorenie konkrétnych súborov.
- Napríklad, ak správca súborov používa príkaz ako "totalcmd.exe /A c:\windows" na otvorenie priečinka c:\windows, cesta správcu súborov bude totalcmd.exe a Arg pre priečinok bude /A "%d". Niektorí správcovia súborov, ako napríklad QTTabBar, môžu vyžadovať len zadanie cesty, v tomto prípade použite "%d" ako cestu správcu súborov a zvyšok súborov nechajte prázdny.
+ Zadajte umiestnenie súboru správcu súborov, ktorý používate, a podľa potreby pridajte argumenty. "%d" predstavuje cestu k priečinku, ktorý sa má otvoriť, používa sa v poli Arg. pre priečinok a pri príkazoch na otvorenie konkrétnych priečinkov. "%f" predstavuje cestu k súboru, ktorá sa má otvoriť a používa sa v poli Arg. pre súbor a pri príkazoch na otvorenie konkrétnych súborov.
+ Napríklad, ak správca súborov používa príkaz ako "totalcmd.exe /A c:\windows" na otvorenie priečinka c:\windows, cesta správcu súborov bude totalcmd.exe a Arg. pre priečinok bude /A "%d". Niektorí správcovia súborov, ako napríklad QTTabBar, môžu vyžadovať len zadanie cesty, v tomto prípade použite "%d" ako cestu správcu súborov a zvyšok súborov nechajte prázdny.
Správca súborov
Názov profilu
Cesta k správcovi súborov
@@ -491,6 +494,7 @@ Nevykonali sa žiadne zmeny.
Arg. pre súbor
Správca súborov '{0}' sa nenachádza na '{1}'. Chcete pokračovať?
Chyba v ceste k správcovi súborov
+ Prieskumník
Predvolený webový prehliadač
@@ -501,6 +505,8 @@ Nevykonali sa žiadne zmeny.
Nové okno
Nová karta
Privátny režim
+ Predvolené
+ Nový profil
Zmena priority
diff --git a/Flow.Launcher/Languages/sr-Cyrl-RS.xaml b/Flow.Launcher/Languages/sr-Cyrl-RS.xaml
index 4e6c35d98..189e882ec 100644
--- a/Flow.Launcher/Languages/sr-Cyrl-RS.xaml
+++ b/Flow.Launcher/Languages/sr-Cyrl-RS.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Plugin Store
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg For File
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Default Web Browser
@@ -500,6 +504,8 @@
New Window
New Tab
Private Mode
+ Default
+ New Profile
Change Priority
diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml
index e1495efd6..636942ac4 100644
--- a/Flow.Launcher/Languages/sr.xaml
+++ b/Flow.Launcher/Languages/sr.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Plugin Store
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
Arg For File
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Default Web Browser
@@ -500,6 +504,8 @@
New Window
New Tab
Private Mode
+ Default
+ New Profile
Change Priority
diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml
index a91b7997d..e91ba5b3f 100644
--- a/Flow.Launcher/Languages/tr.xaml
+++ b/Flow.Launcher/Languages/tr.xaml
@@ -224,6 +224,7 @@
{0} kaldırılamıyor
plugin.json dosyası çıkarılan zip dosyasında bulunamadı veya {0} yolu mevcut değil
Bu eklentiyle aynı ID ve sürüme sahip bir eklenti zaten var, ya da mevcut sürüm daha yüksek
+ Error creating setting panel for plugin {0}:{1}{2}
Eklenti Mağazası
@@ -405,14 +406,14 @@
Diyalog Atlama Penceresini Göster
Dosya/klasör konumlarına hızlı erişim için aç/kaydet penceresi gösterildiğinde Diyalog Atlama arama penceresini görüntüle.
Diyalog Atlama Penceresi Konumu
- Select position for the Dialog Jump search window
+ Diyalog Atlama arama penceresi için konum seçin
Farklı Aç/Kaydet iletişim penceresinin altında düzeltildi. Açıldığında görüntülenir ve pencere kapatılana kadar kalır
Varsayılan arama penceresi konumu. Arama penceresi kısayol tuşu tarafından tetiklendiğinde görüntülenir
- Dialog Jump Result Navigation Behaviour
+ Diyalog Atlama Sonucu Gezinme Davranışı
Farklı Aç/Kaydet iletişim penceresini seçilen sonuç yoluna yönlendirmek için davranış
Sol tık veya Enter tuşu
Sağ tık
- Dialog Jump File Navigation Behaviour
+ Dialog Jump Dosya Gezinme Davranışı
Sonuç bir dosya yolu olduğunda Farklı Aç/Kaydet iletişim penceresinde gezinme davranışı
Dosya adı kutusuna tam yolu girin
Dosya adı kutusuna tam yolu girin ve açın
@@ -467,8 +468,10 @@
Klasörü Aç
Gelişmiş
Günlük Düzeyi
- Hata ayıklama
+ Sessiz
+ Hata
Bilgi
+ Hata ayıklama
Pencere Yazı Tipini Ayarla
@@ -490,6 +493,7 @@
Dosya Açarken
'{0}' dosya yöneticisi '{1}' konumunda bulunamadı. Devam etmek ister misiniz?
Dosya Yöneticisi Yol Hatası
+ File Explorer
İnternet Tarayıcı Seçenekleri
@@ -500,6 +504,8 @@
Yeni Pencere
Yeni Sekme
Gizli Mod için Bağımsız Değişken
+ Default
+ New Profile
Önceliği Ayarla
diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml
index 55d12a14e..42541d046 100644
--- a/Flow.Launcher/Languages/uk-UA.xaml
+++ b/Flow.Launcher/Languages/uk-UA.xaml
@@ -224,6 +224,7 @@
Не вдалося видалити {0}
Не вдалося знайти файл plugin.json у розпакованому zip-файлі або цей шлях {0} не існує.
Вже існує плагін з таким самим ідентифікатором та версією, або версія цього плагіну вища за версію завантаженого.
+ Помилка створення панелі налаштувань для плагіну {0}: {1}{2}
Магазин плагінів
@@ -467,8 +468,10 @@
Відкрити теку
Розширені
Рівень журналювання
- Налагодження
+ Без звуку
+ Помилка
Інформація
+ Налагодження
Встановлення шрифту вікна
@@ -490,6 +493,7 @@
Аргумент для файлу
Не вдалося знайти файловий менеджер «{0}» за адресою «{1}». Чи бажаєте продовжити?
Помилка шляху до файлового менеджера
+ Файловий провідник
Типовий веббраузер
@@ -500,6 +504,8 @@
Нове вікно
Нова вкладка
Приватний режим
+ Типово
+ Новий профіль
Змінити пріоритет
diff --git a/Flow.Launcher/Languages/vi.xaml b/Flow.Launcher/Languages/vi.xaml
index 29aaffc8a..f56703b7a 100644
--- a/Flow.Launcher/Languages/vi.xaml
+++ b/Flow.Launcher/Languages/vi.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
Tải tiện ích mở rộng
@@ -469,8 +470,10 @@
Mở thư mục
Advanced
Log Level
- Debug
+ Silent
+ Lỗi
Info
+ Debug
Setting Window Font
@@ -492,6 +495,7 @@
Đối số cho tệp
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
Trình duyệt web tiêu chuẩn
@@ -502,6 +506,8 @@
Cửa sổ mới
Thẻ Mới
Chế độ riêng tư
+ Default
+ New Profile
Thay đổi mức độ ưu tiên
diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml
index 0f8934fe4..3b368f170 100644
--- a/Flow.Launcher/Languages/zh-cn.xaml
+++ b/Flow.Launcher/Languages/zh-cn.xaml
@@ -224,6 +224,7 @@
卸载 {0} 失败
无法从提取的zip文件中找到plugin.json,或者此路径 {0} 不存在
已存在相同ID和版本的插件,或者存在版本大于此下载的插件
+ Error creating setting panel for plugin {0}:{1}{2}
插件商店
@@ -467,8 +468,10 @@
打开文件夹
高级
日志等级
- 调试
+ 静默
+ 错误
信息
+ 调试
设置窗口字体
@@ -490,6 +493,7 @@
选中文件路径参数
文件管理器 '{0}' 不能在 '{1}'中定位。您想要继续吗?
文件管理器路径错误
+ 文件资源管理器
默认浏览器
@@ -500,6 +504,8 @@
新窗口
新标签
隐身模式
+ 默认
+ 新配置
更改优先级
diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml
index 0cec258f1..c80e8b092 100644
--- a/Flow.Launcher/Languages/zh-tw.xaml
+++ b/Flow.Launcher/Languages/zh-tw.xaml
@@ -224,6 +224,7 @@
Fail to uninstall {0}
Unable to find plugin.json from the extracted zip file, or this path {0} does not exist
A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin
+ Error creating setting panel for plugin {0}:{1}{2}
插件商店
@@ -467,8 +468,10 @@
Open Folder
Advanced
Log Level
- Debug
+ Silent
+ Error
Info
+ Debug
Setting Window Font
@@ -490,6 +493,7 @@
檔案參數
The file manager '{0}' could not be located at '{1}'. Would you like to continue?
File Manager Path Error
+ File Explorer
預設瀏覽器
@@ -500,6 +504,8 @@
新增視窗
新增分頁
無痕模式
+ Default
+ New Profile
更改優先度
diff --git a/Flow.Launcher/SelectBrowserWindow.xaml b/Flow.Launcher/SelectBrowserWindow.xaml
index d51d597b7..67c22b07d 100644
--- a/Flow.Launcher/SelectBrowserWindow.xaml
+++ b/Flow.Launcher/SelectBrowserWindow.xaml
@@ -92,7 +92,7 @@
SelectedIndex="{Binding SelectedCustomBrowserIndex}">
-
+
diff --git a/Flow.Launcher/SelectBrowserWindow.xaml.cs b/Flow.Launcher/SelectBrowserWindow.xaml.cs
index 565b4cbc3..290712aad 100644
--- a/Flow.Launcher/SelectBrowserWindow.xaml.cs
+++ b/Flow.Launcher/SelectBrowserWindow.xaml.cs
@@ -1,6 +1,7 @@
using System.Windows;
using System.Windows.Controls;
using CommunityToolkit.Mvvm.DependencyInjection;
+using Flow.Launcher.Infrastructure;
using Flow.Launcher.ViewModel;
namespace Flow.Launcher
@@ -31,7 +32,7 @@ namespace Flow.Launcher
private void btnBrowseFile_Click(object sender, RoutedEventArgs e)
{
- var selectedFilePath = _viewModel.SelectFile();
+ var selectedFilePath = Win32Helper.SelectFile();
if (!string.IsNullOrEmpty(selectedFilePath))
{
diff --git a/Flow.Launcher/SelectFileManagerWindow.xaml b/Flow.Launcher/SelectFileManagerWindow.xaml
index b3b219d1c..cd4bec424 100644
--- a/Flow.Launcher/SelectFileManagerWindow.xaml
+++ b/Flow.Launcher/SelectFileManagerWindow.xaml
@@ -102,7 +102,7 @@
SelectedIndex="{Binding SelectedCustomExplorerIndex}">
-
+
diff --git a/Flow.Launcher/SelectFileManagerWindow.xaml.cs b/Flow.Launcher/SelectFileManagerWindow.xaml.cs
index d9c672aff..5143f9a56 100644
--- a/Flow.Launcher/SelectFileManagerWindow.xaml.cs
+++ b/Flow.Launcher/SelectFileManagerWindow.xaml.cs
@@ -2,6 +2,7 @@
using System.Windows.Controls;
using System.Windows.Navigation;
using CommunityToolkit.Mvvm.DependencyInjection;
+using Flow.Launcher.Infrastructure;
using Flow.Launcher.ViewModel;
namespace Flow.Launcher
@@ -32,13 +33,13 @@ namespace Flow.Launcher
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
- _viewModel.OpenUrl(e.Uri.AbsoluteUri);
+ App.API.OpenUrl(e.Uri.AbsoluteUri);
e.Handled = true;
}
private void btnBrowseFile_Click(object sender, RoutedEventArgs e)
{
- var selectedFilePath = _viewModel.SelectFile();
+ var selectedFilePath = Win32Helper.SelectFile();
if (!string.IsNullOrEmpty(selectedFilePath))
{
diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
index 1efc89972..647b36701 100644
--- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
+++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
@@ -231,35 +231,41 @@ public partial class SettingsPaneAboutViewModel : BaseModel
}
});
- // Firstly, delete plugin cache directories
- pluginCacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
- .ToList()
- .ForEach(dir =>
+ // Check if plugin cache directory exists before attempting to delete
+ // Or it will throw DirectoryNotFoundException in `pluginCacheDirectory.EnumerateDirectories`
+ if (pluginCacheDirectory.Exists)
+ {
+ // Firstly, delete plugin cache directories
+ pluginCacheDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
+ .ToList()
+ .ForEach(dir =>
+ {
+ try
+ {
+ // Plugin may create directories in its cache directory
+ dir.Delete(recursive: true);
+ }
+ catch (Exception e)
+ {
+ App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
+ success = false;
+ }
+ });
+
+ // Then, delete plugin directory
+ var dir = pluginCacheDirectory;
+ try
{
- try
- {
- // Plugin may create directories in its cache directory
- dir.Delete(recursive: true);
- }
- catch (Exception e)
- {
- App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
- success = false;
- }
- });
-
- // Then, delete plugin directory
- var dir = GetPluginCacheDir();
- try
- {
- dir.Delete(recursive: false);
- }
- catch (Exception e)
- {
- App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
- success = false;
+ dir.Delete(recursive: false);
+ }
+ catch (Exception e)
+ {
+ App.API.LogException(ClassName, $"Failed to delete cache directory: {dir.Name}", e);
+ success = false;
+ }
}
+ // Raise regardless to cover scenario where size needs to be recalculated if the folder is manually removed on disk.
OnPropertyChanged(nameof(CacheFolderSize));
return success;
diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs
index ec75ddf90..b47b53654 100644
--- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs
+++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
@@ -219,6 +219,8 @@ public partial class SettingsPaneGeneralViewModel : BaseModel
DropdownDataGeneric.UpdateLabels(DialogJumpFileResultBehaviours);
// Since we are using Binding instead of DynamicResource, we need to manually trigger the update
OnPropertyChanged(nameof(AlwaysPreviewToolTip));
+ Settings.CustomExplorer.OnDisplayNameChanged();
+ Settings.CustomBrowser.OnDisplayNameChanged();
}
public string Language
diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml
index 81e15df69..07cc7b6a7 100644
--- a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml
+++ b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml
@@ -403,7 +403,7 @@
MaxWidth="250"
Margin="10 0 0 0"
Command="{Binding SelectFileManagerCommand}"
- Content="{Binding Settings.CustomExplorer.Name}" />
+ Content="{Binding Settings.CustomExplorer.DisplayName}" />
+ Content="{Binding Settings.CustomBrowser.DisplayName}" />
diff --git a/Flow.Launcher/ViewModel/SelectBrowserViewModel.cs b/Flow.Launcher/ViewModel/SelectBrowserViewModel.cs
index 67bbbd930..e3a0e4e44 100644
--- a/Flow.Launcher/ViewModel/SelectBrowserViewModel.cs
+++ b/Flow.Launcher/ViewModel/SelectBrowserViewModel.cs
@@ -17,8 +17,13 @@ public partial class SelectBrowserViewModel : BaseModel
get => selectedCustomBrowserIndex;
set
{
- selectedCustomBrowserIndex = value;
- OnPropertyChanged(nameof(CustomBrowser));
+ // When one custom browser is selected and removed, the index will become -1, so we need to ignore this change
+ if (value < 0) return;
+ if (selectedCustomBrowserIndex != value)
+ {
+ selectedCustomBrowserIndex = value;
+ OnPropertyChanged(nameof(CustomBrowser));
+ }
}
}
@@ -40,22 +45,12 @@ public partial class SelectBrowserViewModel : BaseModel
return true;
}
- internal string SelectFile()
- {
- var dlg = new Microsoft.Win32.OpenFileDialog();
- var result = dlg.ShowDialog();
- if (result == true)
- return dlg.FileName;
-
- return string.Empty;
- }
-
[RelayCommand]
private void Add()
{
CustomBrowsers.Add(new()
{
- Name = "New Profile"
+ Name = App.API.GetTranslation("defaultBrowser_new_profile")
});
SelectedCustomBrowserIndex = CustomBrowsers.Count - 1;
}
diff --git a/Flow.Launcher/ViewModel/SelectFileManagerViewModel.cs b/Flow.Launcher/ViewModel/SelectFileManagerViewModel.cs
index 77f004980..f6a32e3fe 100644
--- a/Flow.Launcher/ViewModel/SelectFileManagerViewModel.cs
+++ b/Flow.Launcher/ViewModel/SelectFileManagerViewModel.cs
@@ -21,6 +21,8 @@ public partial class SelectFileManagerViewModel : BaseModel
get => selectedCustomExplorerIndex;
set
{
+ // When one custom file manager is selected and removed, the index will become -1, so we need to ignore this change
+ if (value < 0) return;
if (selectedCustomExplorerIndex != value)
{
selectedCustomExplorerIndex = value;
@@ -98,27 +100,12 @@ public partial class SelectFileManagerViewModel : BaseModel
}
}
- internal void OpenUrl(string absoluteUri)
- {
- App.API.OpenUrl(absoluteUri);
- }
-
- internal string SelectFile()
- {
- var dlg = new Microsoft.Win32.OpenFileDialog();
- var result = dlg.ShowDialog();
- if (result == true)
- return dlg.FileName;
-
- return string.Empty;
- }
-
[RelayCommand]
private void Add()
{
CustomExplorers.Add(new()
{
- Name = "New Profile"
+ Name = App.API.GetTranslation("defaultBrowser_new_profile")
});
SelectedCustomExplorerIndex = CustomExplorers.Count - 1;
}
diff --git a/Flow.Launcher/packages.lock.json b/Flow.Launcher/packages.lock.json
index 32b78c334..c90db6b0c 100644
--- a/Flow.Launcher/packages.lock.json
+++ b/Flow.Launcher/packages.lock.json
@@ -16,9 +16,9 @@
},
"Fody": {
"type": "Direct",
- "requested": "[6.9.2, )",
- "resolved": "6.9.2",
- "contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
+ "requested": "[6.9.3, )",
+ "resolved": "6.9.3",
+ "contentHash": "1CUGgFdyECDKgi5HaUBhdv6k+VG9Iy4OCforGfHyar3xQXAJypZkzymgKtWj/4SPd6nSG0Qi7NH71qHrDSZLaA=="
},
"MdXaml": {
"type": "Direct",
@@ -71,41 +71,41 @@
},
"Microsoft.Extensions.DependencyInjection": {
"type": "Direct",
- "requested": "[9.0.7, )",
- "resolved": "9.0.7",
- "contentHash": "i05AYA91vgq0as84ROVCyltD2gnxaba/f1Qw2rG7mUsS0gv8cPTr1Gm7jPQHq7JTr4MJoQUcanLVs16tIOUJaQ==",
+ "requested": "[9.0.9, )",
+ "resolved": "9.0.9",
+ "contentHash": "zQV2WOSP+3z1EuK91ULxfGgo2Y75bTRnmJHp08+w/YXAyekZutX/qCd88/HOMNh35MDW9mJJJxPpMPS+1Rww8A==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Hosting": {
"type": "Direct",
- "requested": "[9.0.7, )",
- "resolved": "9.0.7",
- "contentHash": "Dkv55VfitwJjPUk9mFHxT9MJAd8su7eJNaCHhBU/Y9xFqw3ZNHwrpeptXeaXiaPtfQq+alMmawIz1Impk5pHkQ==",
+ "requested": "[9.0.9, )",
+ "resolved": "9.0.9",
+ "contentHash": "DmRsWH3g8yZGho/pLQ79hxhM2ctE1eDTZ/HbAnrD/uw8m+P2pRRJOoBVxlrhbhMP3/y3oAJoy0yITasfmilbTg==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Configuration.Binder": "9.0.7",
- "Microsoft.Extensions.Configuration.CommandLine": "9.0.7",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.7",
- "Microsoft.Extensions.Configuration.FileExtensions": "9.0.7",
- "Microsoft.Extensions.Configuration.Json": "9.0.7",
- "Microsoft.Extensions.Configuration.UserSecrets": "9.0.7",
- "Microsoft.Extensions.DependencyInjection": "9.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Diagnostics": "9.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Physical": "9.0.7",
- "Microsoft.Extensions.Hosting.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging.Configuration": "9.0.7",
- "Microsoft.Extensions.Logging.Console": "9.0.7",
- "Microsoft.Extensions.Logging.Debug": "9.0.7",
- "Microsoft.Extensions.Logging.EventLog": "9.0.7",
- "Microsoft.Extensions.Logging.EventSource": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Configuration.Binder": "9.0.9",
+ "Microsoft.Extensions.Configuration.CommandLine": "9.0.9",
+ "Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.9",
+ "Microsoft.Extensions.Configuration.FileExtensions": "9.0.9",
+ "Microsoft.Extensions.Configuration.Json": "9.0.9",
+ "Microsoft.Extensions.Configuration.UserSecrets": "9.0.9",
+ "Microsoft.Extensions.DependencyInjection": "9.0.9",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Diagnostics": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Physical": "9.0.9",
+ "Microsoft.Extensions.Hosting.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging.Configuration": "9.0.9",
+ "Microsoft.Extensions.Logging.Console": "9.0.9",
+ "Microsoft.Extensions.Logging.Debug": "9.0.9",
+ "Microsoft.Extensions.Logging.EventLog": "9.0.9",
+ "Microsoft.Extensions.Logging.EventSource": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9"
}
},
"Microsoft.Toolkit.Uwp.Notifications": {
@@ -154,9 +154,9 @@
},
"VirtualizingWrapPanel": {
"type": "Direct",
- "requested": "[2.3.0, )",
- "resolved": "2.3.0",
- "contentHash": "Dpmtcpn2HqAWZR0NkN7Qd4YCjf+sdQcemIMKm2suZVbOIB9NsmKZnYaQDIpXWTh87a9+nArVto6Od1cM2ohzCQ=="
+ "requested": "[2.3.1, )",
+ "resolved": "2.3.1",
+ "contentHash": "imph3SJqFFgX8vc7XRBcftfgzIL7Q+uE0Tvk7dbY0KY0tcqUCs0ZmKV3Gt9QX2745v6bSw6ns8UHpXtiptHqdA=="
},
"AvalonEdit": {
"type": "Transitive",
@@ -196,8 +196,8 @@
},
"FSharp.Core": {
"type": "Transitive",
- "resolved": "9.0.300",
- "contentHash": "TVt2J7RCE1KCS2IaONF+p8/KIZ1eHNbW+7qmKF6hGoD4tXl+o07ja1mPtFjMqRa5uHMFaTrGTPn/m945WnDLiQ=="
+ "resolved": "9.0.303",
+ "contentHash": "6JlV8aD8qQvcmfoe/PMOxCHXc0uX4lR23u0fAyQtnVQxYULLoTZgwgZHSnRcuUHOvS3wULFWcwdnP1iwslH60g=="
},
"HtmlAgilityPack": {
"type": "Transitive",
@@ -211,8 +211,8 @@
},
"JetBrains.Annotations": {
"type": "Transitive",
- "resolved": "2024.3.0",
- "contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
+ "resolved": "2025.2.2",
+ "contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
},
"MemoryPack": {
"type": "Transitive",
@@ -249,249 +249,249 @@
},
"Meziantou.Framework.Win32.Jobs": {
"type": "Transitive",
- "resolved": "3.4.3",
- "contentHash": "REjInKnQ0OrhjjtSMPQtLtdURctCroB4L8Sd2gjTOYDysklvsdnrStx1tHS7uLv+fSyFF3aazZmo5Ka0v1oz/w=="
+ "resolved": "3.4.4",
+ "contentHash": "AivBzH5wM1NHBLehclim+o37SmireP7JxCRUoTilsc/h7LH9+YCPjb6Ig6y0khnQhFcO1P8RHYw4oiR15TGHUg=="
},
"Microsoft.Extensions.Configuration": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "oxGR51+w5cXm5B9gU6XwpAB2sTiyPSmZm7hjvv0rzRnmL5o/KZzE103AuQj7sK26OBupjVzU/bZxDWvvU4nhEg==",
+ "resolved": "9.0.9",
+ "contentHash": "w87wF/90/VI0ZQBhf4rbMEeyEy0vi2WKjFmACsNAKNaorY+ZlVz7ddyXkbADvaWouMKffNmR0yQOGcrvSSvKGg==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "lut/kiVvNsQ120VERMUYSFhpXPpKjjql+giy03LesASPBBcC0o6+aoFdzJH9GaYpFTQ3fGVhVjKjvJDoAW5/IQ==",
+ "resolved": "9.0.9",
+ "contentHash": "p5RKAY9POvs3axwA/AQRuJeM8AHuE8h4qbP1NxQeGm0ep46aXz1oCLAp/oOYxX1GsjStgdhHrN3XXLLXr0+b3w==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "ExY+zXHhU4o9KC2alp3ZdLWyVWVRSn5INqax5ABk+HEOHlAHzomhJ7ek9HHliyOMiVGoYWYaMFOGr9q59mSAGA==",
+ "resolved": "9.0.9",
+ "contentHash": "6SIp/6Bngk4jm2W36JekZbiIbFPdE/eMUtrJEqIqHGpd1zar3jvgnwxnpWQfzUiGrkyY8q8s6V82zkkEZozghA==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7"
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.CommandLine": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "LqwdkMNFeRyuqExewBSaWj8roEgZH8JQ9zEAmHl5ZFcnhCvjAdHICdYVRIiSEq9RWGB731LL8kZJM8tdTKEscA==",
+ "resolved": "9.0.9",
+ "contentHash": "9bzGOcHoTi8ijrj0MHh5qUY6n9CuittZUqEOj5iE0ZJoSCfG0BI9nhcpd8MC9bOOgjZW5OeizKO8rgta9lSVyA==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "R8kgazVpDr4k1K7MeWPLAwsi5VpwrhE3ubXK38D9gpHEvf9XhZhJ8kWHKK00LDg5hJ7pMQLggdZ7XFdQ5182Ug==",
+ "resolved": "9.0.9",
+ "contentHash": "AB8suTh4STAMGDkPer5vL0YNp09eplvbkIbOfFJ1z8D1zOiFF8Hipk9FhCLU4Ea6TosWmGrK30ZIUO9KvAeFcg==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.FileExtensions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "3LVg32iMfR9ENeegXAo73L+877iOcQauLJsXlKZNVSsLA/HbPgClZdeMGdjLSkaidYw3l02XbXTlOdGYNgu91Q==",
+ "resolved": "9.0.9",
+ "contentHash": "fvgubCs++wTowHWuQ5TAyZV0S6ldA59U+tBVqFr4/WLd0oEf6ESbdBN2CFaVdn4sZqnarqMnl2O3++RG/Jrf/w==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Physical": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Physical": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.Json": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "3HQV326liEInT9UKEc+k73f1ECwNhvDS/DJAe5WvtMKDJTJqTH2ujrUC2ZlK/j6pXyPbV9f0Ku8JB20JveGImg==",
+ "resolved": "9.0.9",
+ "contentHash": "PiPYo1GTinR2ECM80zYdZUIFmde6jj5DryXUcOJg3yIjh+KQMQr42e+COD03QUsUiqNkJk511wVTnVpTm2AVZA==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Configuration.FileExtensions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Configuration.FileExtensions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Configuration.UserSecrets": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "ouDuPgRdeF4TJXKUh+lbm6QwyWwnCy+ijiqfFM2cI5NmW83MwKg1WNp2nCdMVcwQW8wJXteF/L9lA6ZPS3bCIQ==",
+ "resolved": "9.0.9",
+ "contentHash": "bFaNxfU8gQJX3K/Dd6XT0YIJ5ZVihdAY6Z02p2nVTUHjUsaWflLIucZOgB/ecSNnN3zbbBEf1oFC7q5NHTZIHw==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Configuration.Json": "9.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Physical": "9.0.7"
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Configuration.Json": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Physical": "9.0.9"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "iPK1FxbGFr2Xb+4Y+dTYI8Gupu9pOi8I3JPuPsrogUmEhe2hzZ9LpCmolMEBhVDo2ikcSr7G5zYiwaapHSQTew=="
+ "resolved": "9.0.9",
+ "contentHash": "/hymojfWbE9AlDOa0mczR44m00Jj+T3+HZO0ZnVTI032fVycI0ZbNOVFP6kqZMcXiLSYXzR2ilcwaRi6dzeGyA=="
},
"Microsoft.Extensions.Diagnostics": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "6ykfInm6yw7pPHJACgnrPUXxUWVslFnzad44K/siXk6Ovan6fNMnXxI5X9vphHJuZ4JbMOdPIgsfTmLD+Dyxug==",
+ "resolved": "9.0.9",
+ "contentHash": "gtzl9SD6CvFYOb92qEF41Z9rICzYniM342TWbbJwN3eLS6a5fCLFvO1pQGtpMSnP3h1zHXupMEeKSA9musWYCQ==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.9"
}
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "d39Ov1JpeWCGLCOTinlaDkujhrSAQ0HFxb7Su1BjhCKBfmDcQ6Ia1i3JI6kd3NFgwi1dexTunu82daDNwt7E6w==",
+ "resolved": "9.0.9",
+ "contentHash": "YHGmxccrVZ2Ar3eI+/NdbOHkd1/HzrHvmQ5yBsp0Gl7jTyBe6qcXNYjUt9v9JIO+Z14la44+YYEe63JSqs1fYg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9"
}
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "y9djCca1cz/oz/J8jTxtoecNiNvaiGBJeWd7XOPxonH+FnfHqcfslJMcSr5JMinmWFyS7eh3C9L6m6oURZ5lSA==",
+ "resolved": "9.0.9",
+ "contentHash": "M1ZhL9QkBQ/k6l/Wjgcli5zrV86HzytQ+gQiNtk9vs9Ge1fb17KKZil9T6jd15p2x/BGfXpup7Hg55CC0kkfig==",
"dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.FileProviders.Physical": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "JYEPYrb+YBpFTCdmSBrk8cg3wAi1V4so7ccq04qbhg3FQHQqgJk28L3heEOKMXcZobOBUjTnGCFJD49Ez9kG5w==",
+ "resolved": "9.0.9",
+ "contentHash": "sRrPtEwbK23OCFOQ36Xn6ofiB0/nl54/BOdR7lJ/Vwg3XlyvUdmyXvFUS1EU5ltn+sQtbcPuy1l0hsysO8++SQ==",
"dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileSystemGlobbing": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileSystemGlobbing": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.FileSystemGlobbing": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "5VKpTH2ME0SSs0lrtkpKgjCeHzXR5ka/H+qThPwuWi78wHubApZ/atD7w69FDt0OOM7UMV6LIbkqEQgoby4IXA=="
+ "resolved": "9.0.9",
+ "contentHash": "iQAgORaVIlkhcpxFnVEfjqNWfQCwBEEH7x2IanTwGafA6Tb4xiBoDWySTxUo3MV2NUV/PmwS/8OhT/elPnJCnw=="
},
"Microsoft.Extensions.Hosting.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "yG2JCXAR+VqI1mKqynLPNJlNlrUJeEISEpX4UznOp2uM4IEFz3pDDauzyMvTjICutEJtOigJ1yWBvxbaIlibBw==",
+ "resolved": "9.0.9",
+ "contentHash": "ORA4dICNz7cuwupPkjXpSuoiK6GMg0aygInBIQCCFEimwoHntRKdJqB59faxq2HHJuTPW3NsZm5EjN5P5Zh6nQ==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.7",
- "Microsoft.Extensions.FileProviders.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7"
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.9",
+ "Microsoft.Extensions.FileProviders.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Logging": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "fdIeQpXYV8yxSWG03cCbU2Otdrq4NWuhnQLXokWLv3L9YcK055E7u8WFJvP+uuP4CFeCEoqZQL4yPcjuXhCZrg==",
+ "resolved": "9.0.9",
+ "contentHash": "MaCB0Y9hNDs4YLu3HCJbo199WnJT8xSgajG1JYGANz9FkseQ5f3v/llu3HxLI6mjDlu7pa7ps9BLPWjKzsAAzQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "sMM6NEAdUTE/elJ2wqjOi0iBWqZmSyaTByLF9e8XHv6DRJFFnOe0N+s8Uc6C91E4SboQCfLswaBIZ+9ZXA98AA==",
+ "resolved": "9.0.9",
+ "contentHash": "FEgpSF+Z9StMvrsSViaybOBwR0f0ZZxDm8xV5cSOFiXN/t+ys+rwAlTd/6yG7Ld1gfppgvLcMasZry3GsI9lGA==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Logging.Configuration": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "AEBty9rvFGvdFRqgIDEhQmiCnIfQWyzVoOZrO244cfu+n9M+wI1QLDpuROVILlplIBtLVmOezAF7d1H3Qog6Xw==",
+ "resolved": "9.0.9",
+ "contentHash": "Abuo+S0Sg+Ke6vzSh5Ell+lwJJM+CEIqg1ImtWnnqF6a/ibJkQnmFJi4/ekEw/0uAcdFKJXtGV7w6cFN0nyXeg==",
"dependencies": {
- "Microsoft.Extensions.Configuration": "9.0.7",
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Configuration.Binder": "9.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.7"
+ "Microsoft.Extensions.Configuration": "9.0.9",
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Configuration.Binder": "9.0.9",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.9"
}
},
"Microsoft.Extensions.Logging.Console": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "pEHlNa8iCfKsBFA3YVDn/8EicjSU/m8uDfyoR0i4svONDss4Yu9Kznw53E/TyI+TveTo7CwRid4kfd4pLYXBig==",
+ "resolved": "9.0.9",
+ "contentHash": "x3+W7IfW9Tg3sV+sU9N1039M4CqklaAecwhz9qNtjOCBdmg7h96JaL+NAvhYgZgweVJTJaxAvuO8I+ZZehE7Pg==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging.Configuration": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging.Configuration": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9"
}
},
"Microsoft.Extensions.Logging.Debug": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "MxzZj7XbsYJwfjclVTjJym2/nVIkksu7l7tC/4HYy+YRdDmpE4B+hTzCXu3BNfLNhdLPZsWpyXuYe6UGgWDm3g==",
+ "resolved": "9.0.9",
+ "contentHash": "q8IbjIzTjfaGfuf9LAuG3X9BytAWj2hWhLU61rEkit847oaSSbcdx/yybY3yL9RgVG1u9ctk7kbCv18M+7Fi6Q==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9"
}
},
"Microsoft.Extensions.Logging.EventLog": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "usrMVsY7c8M8fESt34Y3eEIQIlRlKXfPDlI+vYEb6xT7SUjhua2ey3NpHgQktiTgz8Uo5RiWqGD8ieiyo2WaDA==",
+ "resolved": "9.0.9",
+ "contentHash": "1SX5+mv16SBb5NrtLNxIvUt8PHbdvDloZazQdxz1CNM39jG7yeF6olH3sceQ4ONF0oVD5mVUsTag0iVX4xgyog==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7",
- "System.Diagnostics.EventLog": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9",
+ "System.Diagnostics.EventLog": "9.0.9"
}
},
"Microsoft.Extensions.Logging.EventSource": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "/wwi6ckTEegCExFV6gVToCO7CvysZnmE50fpdkYUsSMh0ue9vRkQ7uOqkHyHol93ASYTEahrp+guMtS/+fZKaA==",
+ "resolved": "9.0.9",
+ "contentHash": "rGQi5mImot7tTFxj1tQWknWjOBHX1+gsX1WLmQNl5WHr4Sx1kXUBGDuRUjfx4c8pe/hcYHdalAmgk7RdusW6Jw==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Logging": "9.0.7",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Logging": "9.0.9",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "trJnF6cRWgR5uMmHpGoHmM1wOVFdIYlELlkO9zX+RfieK0321Y55zrcs4AaEymKup7dxgEN/uJU25CAcMNQRXw==",
+ "resolved": "9.0.9",
+ "contentHash": "loxGGHE1FC2AefwPHzrjPq7X92LQm64qnU/whKfo6oWaceewPUVYQJBJs3S3E2qlWwnCpeZ+dGCPTX+5dgVAuQ==",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "pE/jeAWHEIy/8HsqYA+I1+toTsdvsv+WywAcRoNSvPoFwjOREa8Fqn7D0/i0PbiXsDLFupltTTctliePx8ib4w==",
+ "resolved": "9.0.9",
+ "contentHash": "n4DCdnn2qs6V5U06Sx62FySEAZsJiJJgOzrPHDh9hPK7c2W8hEabC76F3Re3tGPjpiKa02RvB6FxZyxo8iICzg==",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.7",
- "Microsoft.Extensions.Configuration.Binder": "9.0.7",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.7",
- "Microsoft.Extensions.Options": "9.0.7",
- "Microsoft.Extensions.Primitives": "9.0.7"
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Configuration.Binder": "9.0.9",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.9",
+ "Microsoft.Extensions.Options": "9.0.9",
+ "Microsoft.Extensions.Primitives": "9.0.9"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "ti/zD9BuuO50IqlvhWQs9GHxkCmoph5BHjGiWKdg2t6Or8XoyAfRJiKag+uvd/fpASnNklfsB01WpZ4fhAe0VQ=="
+ "resolved": "9.0.9",
+ "contentHash": "z4pyMePOrl733ltTowbN565PxBw1oAr8IHmIXNDiDqd22nFpYltX9KhrNC/qBWAG1/Zx5MHX+cOYhWJQYCO/iw=="
},
"Microsoft.IO.RecyclableMemoryStream": {
"type": "Transitive",
@@ -590,15 +590,15 @@
},
"NLog": {
"type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
+ "resolved": "6.0.4",
+ "contentHash": "Xr+lIk1ZlTTFXEqnxQVLxrDqZlt2tm5X+/AhJbaY2emb/dVtGDiU5QuEtj3gHtwV/SWlP/rJ922I/BPuOJXlRw=="
},
"NLog.OutputDebugString": {
"type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
+ "resolved": "6.0.4",
+ "contentHash": "TOP2Ap9BbE98B/l/TglnguowOD0rXo8B/20xAgvj9shO/kf6IJ5M4QMhVxq72mrneJ/ANhHY7Jcd+xJbzuI5PA==",
"dependencies": {
- "NLog": "6.0.1"
+ "NLog": "6.0.4"
}
},
"runtime.osx.10.10-x64.CoreCompat.System.Drawing": {
@@ -608,8 +608,8 @@
},
"SharpVectors.Wpf": {
"type": "Transitive",
- "resolved": "1.8.4.2",
- "contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
+ "resolved": "1.8.5",
+ "contentHash": "WURdBDq5AE8RjKV9pFS7lNkJe81gxja9SaMGE4URq9GJUZ6M+5DGUL0Lm3B0iYW2/Meyowaz4ffGsyW+RBSTtg=="
},
"Splat": {
"type": "Transitive",
@@ -672,8 +672,8 @@
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
- "resolved": "9.0.7",
- "contentHash": "AJ+9fyCtQUImntxAJ9l4PZiCd4iepuk4pm7Qcno7PBIWQnfXlvwKuFsGk2H+QyY69GUVzDP2heELW6ho5BCXUg=="
+ "resolved": "9.0.9",
+ "contentHash": "wpsUfnyv8E5K4WQaok6weewvAbQhcLwXFcHBm5U0gdEaBs85N//ssuYvRPFWwz2rO/9/DFP3A1sGMzUFBj8y3w=="
},
"System.Drawing.Common": {
"type": "Transitive",
@@ -838,10 +838,10 @@
"type": "Project",
"dependencies": {
"Droplex": "[1.7.0, )",
- "FSharp.Core": "[9.0.300, )",
+ "FSharp.Core": "[9.0.303, )",
"Flow.Launcher.Infrastructure": "[1.0.0, )",
- "Flow.Launcher.Plugin": "[4.7.0, )",
- "Meziantou.Framework.Win32.Jobs": "[3.4.3, )",
+ "Flow.Launcher.Plugin": "[5.0.0, )",
+ "Meziantou.Framework.Win32.Jobs": "[3.4.4, )",
"Microsoft.IO.RecyclableMemoryStream": "[3.0.1, )",
"SemanticVersioning": "[3.0.0, )",
"StreamJsonRpc": "[2.22.11, )",
@@ -854,14 +854,14 @@
"Ben.Demystifier": "[0.4.1, )",
"BitFaster.Caching": "[2.5.4, )",
"CommunityToolkit.Mvvm": "[8.4.0, )",
- "Flow.Launcher.Plugin": "[4.7.0, )",
+ "Flow.Launcher.Plugin": "[5.0.0, )",
"InputSimulator": "[1.0.4, )",
"MemoryPack": "[1.21.4, )",
"Microsoft.VisualStudio.Threading": "[17.14.15, )",
"NHotkey.Wpf": "[3.0.0, )",
- "NLog": "[6.0.1, )",
- "NLog.OutputDebugString": "[6.0.1, )",
- "SharpVectors.Wpf": "[1.8.4.2, )",
+ "NLog": "[6.0.4, )",
+ "NLog.OutputDebugString": "[6.0.4, )",
+ "SharpVectors.Wpf": "[1.8.5, )",
"System.Drawing.Common": "[7.0.0, )",
"ToolGood.Words.Pinyin": "[3.1.0.3, )"
}
@@ -869,7 +869,7 @@
"flow.launcher.plugin": {
"type": "Project",
"dependencies": {
- "JetBrains.Annotations": "[2024.3.0, )"
+ "JetBrains.Annotations": "[2025.2.2, )"
}
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj
index 901dc2a37..9cb2469d9 100644
--- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj
+++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Flow.Launcher.Plugin.BrowserBookmark.csproj
@@ -34,6 +34,7 @@
prompt
4
false
+ $(NoWarn);FLSG0007
@@ -103,9 +104,9 @@
-
-
-
+
+
+
diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Helper/FaviconHelper.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Helper/FaviconHelper.cs
index 1820a7836..82b089033 100644
--- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Helper/FaviconHelper.cs
+++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Helper/FaviconHelper.cs
@@ -106,12 +106,13 @@ public static class FaviconHelper
{
try
{
- using (var image = SKImage.FromBitmap(bitmap))
- using (var webp = image.Encode(SKEncodedImageFormat.Webp, 65))
- {
- if (webp != null)
- return webp.ToArray();
- }
+ using var image = SKImage.FromBitmap(bitmap);
+ if (image is null)
+ return null;
+
+ using var webp = image.Encode(SKEncodedImageFormat.Webp, 65);
+ if (webp != null)
+ return webp.ToArray();
}
finally
{
diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/ja.xaml
index 6700bce19..d60739468 100644
--- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/ja.xaml
@@ -6,15 +6,15 @@
ブラウザのブックマークを検索します
- Failed to set url in clipboard
+ クリップボードにURLをコピーできませんでした
- Bookmark Data
- Open bookmarks in:
- New window
- New tab
- Set browser from path:
- Choose
+ ブックマークのデータ
+ ブックマークを開く場所:
+ 新しいウインドウ
+ 新しいタブ
+ 以下のパスからブラウザーを設定:
+ 選択
URLをコピー
ブックマークのURLをクリップボードにコピー
次のブラウザから読み込む:
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj b/Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj
index 43a2c2f3c..b3cee425d 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Flow.Launcher.Plugin.Calculator.csproj
@@ -33,6 +33,7 @@
prompt
4
false
+ $(NoWarn);FLSG0007
@@ -62,7 +63,7 @@
-
+
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ar.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ar.xaml
index 759ba99de..324c91972 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ar.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ar.xaml
@@ -1,8 +1,8 @@
-
+
آلة حاسبة
- تمكنك من إجراء العمليات الحسابية. (جرب 5*3-2 في Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
ليست رقمًا (NaN)
التعبير خاطئ أو غير مكتمل (هل نسيت بعض الأقواس؟)
نسخ هذا الرقم إلى الحافظة
@@ -13,4 +13,5 @@
نقطة (.)
أقصى عدد من المنازل العشرية
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/cs.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/cs.xaml
index f5dbe8e20..844c2dc30 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/cs.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/cs.xaml
@@ -1,8 +1,8 @@
-
+
Kalkulačka
- Umožňuje provádět matematické výpočty.(Try 5*3-2 v průtokovém spouštěči)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Není číslo (NaN)
Nesprávný nebo neúplný výraz (Nezapomněli jste na závorky?)
Kopírování výsledku do schránky
@@ -13,4 +13,5 @@
Tečka (.)
Desetinná místa
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/da.xaml
index 2f2777aa1..405a39e92 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/da.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/da.xaml
@@ -1,8 +1,8 @@
-
+
Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Not a number (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
Copy this number to the clipboard
@@ -13,4 +13,5 @@
Dot (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/de.xaml
index 46f5efe23..4dc634db2 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/de.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/de.xaml
@@ -1,8 +1,8 @@
-
+
Rechner
- Ermöglicht mathematische Berechnungen. (Versuchen Sie 5*3-2 in Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Nicht eine Zahl (NaN)
Ausdruck falsch oder unvollständig (Haben Sie einige Klammern vergessen?)
Diese Zahl in die Zwischenablage kopieren
@@ -13,4 +13,5 @@
Punkt (.)
Max. Dezimalstellen
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/en.xaml
index b71e5d8a0..b12972b1b 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/en.xaml
@@ -4,7 +4,7 @@
xmlns:system="clr-namespace:System;assembly=mscorlib">
Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Not a number (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
Copy this number to the clipboard
@@ -15,4 +15,5 @@
Dot (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
\ No newline at end of file
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es-419.xaml
index dce29cba5..12b4fdb0a 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es-419.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es-419.xaml
@@ -1,8 +1,8 @@
-
+
Calculadora
- Permite hacer cálculos matemáticos. (Pruebe con 5*3-2 en Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
No es un número (NaN)
Expresión incorrecta o incompleta (¿Olvidó algún paréntesis?)
Copiar este número al portapapeles
@@ -13,4 +13,5 @@
Punto (.)
Número máximo de decimales
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es.xaml
index 7f1775e2e..05a862d78 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/es.xaml
@@ -1,8 +1,8 @@
-
+
Calculadora
- Realiza cálculos matemáticos (incluyendo valores hexadecimales). Utilizar ',' o '.' como separador de miles o decimal.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
No es un número (NaN)
Expresión incorrecta o incompleta (¿Ha olvidado algunos paréntesis?)
Copiar este número al portapapeles
@@ -13,4 +13,5 @@
Punto (.)
Número máximo de decimales
Ha fallado la copia, inténtelo más tarde
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/fr.xaml
index a6db34811..3219e517a 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/fr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/fr.xaml
@@ -1,8 +1,8 @@
-
+
Calculatrice
- Effectuer des calculs mathématiques (y compris les valeurs hexadécimales). Utilisez ',' ou '.' comme séparateur de milliers ou décimaux.
+ Effectuez des calculs mathématiques, y compris les valeurs hexadécimales et les fonctions avancées telles que 'min(1,2,3)', 'sqrt(123)' et 'cos(123)'.
Pas un nombre (NaN)
Expression incorrecte ou incomplète (avez-vous oublié certaines parenthèses ?)
Copier ce chiffre dans le presse-papiers
@@ -13,4 +13,5 @@
Point (.)
Décimales max.
Échec de la copie, réessayer plus tard
+ Afficher le message d'erreur lorsque le calcul échoue
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/he.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/he.xaml
index b053c8905..7ee027743 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/he.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/he.xaml
@@ -1,8 +1,8 @@
-
+
מחשבו
- מאפשר לבצע חישובים מתמטיים. (נסה 5*3-2 ב-Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
לא מספר (NaN)
הביטוי שגוי או לא שלם (האם שכחת סוגריים?)
העתק מספר זה ללוח
@@ -13,4 +13,5 @@
נקודה (.)
מספר מקסימלי של מקומות עשרוניים
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/it.xaml
index 5b724e82e..a0e61ff32 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/it.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/it.xaml
@@ -1,8 +1,8 @@
-
+
Calcolatrice
- Consente di eseguire calcoli matematici (provare 5*3-2 in Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Non è un numero (NaN)
Espressione sbagliata o incompleta (avete dimenticato delle parentesi?)
Copiare questo numero negli appunti
@@ -13,4 +13,5 @@
Punto (.)
Max. cifre decimali
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ja.xaml
index bbd06006f..da0b64bdb 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ja.xaml
@@ -1,16 +1,17 @@
- Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
- Not a number (NaN)
- Expression wrong or incomplete (Did you forget some parentheses?)
+ 電卓
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
+ 数値で表せません (NaN)
+ 式が間違っているか不完全です(括弧を忘れていませんか?)
この数字をクリップボードにコピーします
小数点の区切り記号
- The decimal separator to be used in the output.
+ 出力で使用される小数点の区切り文字。
システムのロケールを使用
コンマ(,)
ドット (.)
小数点以下の最大桁数
- Copy failed, please try later
+ コピーに失敗しました。後でやり直してください
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ko.xaml
index e4ca16d41..a595f4839 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ko.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ko.xaml
@@ -1,8 +1,8 @@
-
+
계산기
- 수학 계산을 할 수 있습니다. Flow Launcher에서 5*3-2를 입력해보세요.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
숫자가 아님 (NaN)
표현식이 잘못되었거나 불완전합니다. (괄호를 깜빡하셨나요?)
해당 숫자를 클립보드에 복사
@@ -13,4 +13,5 @@
마침표 (.)
최대 소수점 아래 자릿 수
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nb.xaml
index 9ae31e976..9b6b1f808 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nb.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nb.xaml
@@ -1,8 +1,8 @@
-
+
Kalkulator
- Lar deg gjøre matematiske beregninger. (Prøv 5*3-2 i Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Ikke et tall (NaN)
Uttrykk feil eller ufullstendig (glem noen parenteser?)
Kopier dette nummeret til utklippstavlen
@@ -13,4 +13,5 @@
Prikk (.)
Maks. desimaler
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nl.xaml
index 2f2777aa1..405a39e92 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nl.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/nl.xaml
@@ -1,8 +1,8 @@
-
+
Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Not a number (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
Copy this number to the clipboard
@@ -13,4 +13,5 @@
Dot (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pl.xaml
index e73298dca..03f50ca23 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pl.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pl.xaml
@@ -1,8 +1,8 @@
-
+
Kalkulator
- Szybkie wykonywanie obliczeń matematycznych. (Spróbuj wpisać 5*3-2 w oknie Flow Launchera)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Nie liczba (NaN)
Wyrażenie niepoprawne lub niekompletne (Czy zapomniałeś o nawiasach?)
Skopiuj ten numer do schowka
@@ -13,4 +13,5 @@
Kropka (.)
Maks. liczba miejsc po przecinku
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-br.xaml
index 73a60d42f..9afc3b784 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-br.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-br.xaml
@@ -1,8 +1,8 @@
-
+
Calculadora
- Permite fazer cálculos matemáticos.(Tente 5*3-2 no Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Não é um número (NaN)
Expressão errada ou incompleta (Você esqueceu de adicionar parênteses?)
Copiar este numero para a área de transferência
@@ -13,4 +13,5 @@
Ponto (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-pt.xaml
index 7ec52be8c..1201e2555 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-pt.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/pt-pt.xaml
@@ -1,8 +1,8 @@
-
+
Calculadora
- Execução de cálculos matemáticos (incluindo valores hexadecimais). Utilize ',' ou '.' como separador de milhares ou de casas decimais.
+ Execute cálculos matemáticos, incluindo valores hexadecimais e funções avançadas como 'min(1,2,3)', 'sqrt(123)' e 'cos(123)'.
Não é número (NN)
Expressão errada ou incompleta (esqueceu-se de algum parêntese?)
Copiar número para a área de transferência
@@ -13,4 +13,5 @@
Ponto (.)
Número máximo de casas decimais
Falha ao copiar. Por favor tente mais tarde.
+ Mostrar mensagem de erro se o cálculo falhar
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ru.xaml
index 43a7d44c7..7b40770cd 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/ru.xaml
@@ -1,8 +1,8 @@
-
+
Калькулятор
- Позволяет выполнять математические вычисления. (Попробуйте 5*3-2 в Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Не является числом (NaN)
Выражение неправильное или неполное (Вы забыли скобки?)
Скопировать этот номер в буфер обмена
@@ -13,4 +13,5 @@
Точка (.)
Макс. число знаков после запятой
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml
index 498b6eb50..f398ab3e2 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sk.xaml
@@ -1,8 +1,8 @@
-
+
Kalkulačka
- Vykonávanie matematických výpočtov (vrátane hexadecimálnych hodnôt). Ako oddeľovač tisícov alebo desatinného miesta použite ',' alebo '.'.
+ Vykonávajte matematické výpočty vrátane hexadecimálnych hodnôt a pokročilých funkcií, ako napríklad "min(1,2,3)", "sqrt(123)" a "cos(123)".
Nie je číslo (NaN)
Nesprávny alebo neúplný výraz (Nezabudli ste na zátvorky?)
Kopírovať výsledok do schránky
@@ -13,4 +13,5 @@
Bodka (.)
Desatinné miesta
Kopírovanie zlyhalo, skúste to neskôr
+ Zobraziť chybovú správu, keď výpočet zlyhá
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr-Cyrl-RS.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr-Cyrl-RS.xaml
index 98e3aebb5..405a39e92 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr-Cyrl-RS.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr-Cyrl-RS.xaml
@@ -2,7 +2,7 @@
Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Not a number (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
Copy this number to the clipboard
@@ -13,4 +13,5 @@
Dot (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr.xaml
index 2f2777aa1..405a39e92 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/sr.xaml
@@ -1,8 +1,8 @@
-
+
Calculator
- Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Not a number (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
Copy this number to the clipboard
@@ -13,4 +13,5 @@
Dot (.)
Max. decimal places
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/tr.xaml
index b41fc0656..aec5bec43 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/tr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/tr.xaml
@@ -1,8 +1,8 @@
-
+
Hesap Makinesi
- Matematiksel hesaplamalar yapmaya yarar. (5*3-2 yazmayı deneyin)
+ Onaltılık değerler ve 'min(1,2,3)', 'sqrt(123)' ve 'cos(123)' gibi gelişmiş fonksiyonlar dahil olmak üzere matematiksel hesaplamalar gerçekleştirin.
Sayı değil (NaN)
İfade hatalı ya da eksik. (Parantez koymayı mı unuttunuz?)
Bu sayıyı panoya kopyala
@@ -13,4 +13,5 @@
Nokta (.)
Maks. ondalık basamak
Kopyalama başarısız oldu, lütfen daha sonra deneyin
+ Hesaplama başarısız olduğunda hata mesajı göster
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/uk-UA.xaml
index 14042dffd..c2af4bbe3 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/uk-UA.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/uk-UA.xaml
@@ -1,8 +1,8 @@
-
+
Калькулятор
- Виконуйте математичні обчислення (включаючи шістнадцяткові значення). Використовуйте «,» або «.» як роздільник тисяч або десяткових знаків.
+ Виконуйте математичні розрахунки, включаючи шістнадцяткові значення та розширені функції, такі як «min(1,2,3)», «sqrt(123)» та «cos(123)».
Не є числом (NaN)
Вираз неправильний або неповний (Ви забули якісь дужки?)
Скопіюйте це число в буфер обміну
@@ -13,4 +13,5 @@
Крапка (.)
Макс. кількість знаків після коми
Копіювання не вдалося, спробуйте пізніше
+ Показувати повідомлення про помилку, якщо обчислення не вдалося
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/vi.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/vi.xaml
index 20717d1db..6efbda3e4 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/vi.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/vi.xaml
@@ -1,8 +1,8 @@
-
+
Máy tính
- Cho phép thực hiện các phép tính toán học. (Thử 5*3-2 trong Flow Launcher)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
Không phải là số (NaN)
Biểu thức sai hoặc không đầy đủ (Bạn có quên một số dấu ngoặc đơn không?)
Sao chép số này vào clipboard
@@ -13,4 +13,5 @@
dấu chấm (.)
Tối đa. chữ số thập phân
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-cn.xaml
index 445ed394f..234c613c6 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-cn.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-cn.xaml
@@ -1,8 +1,8 @@
-
+
计算器
- 执行数学计算(包括十六进制值)。使用 , 或 . 作为分隔符或小数点。
+ 进行数学计算,包括十六进制值和高级函数,如“最小(1,2,3)”、“sqrt(123)”和“cos123”等。
请输入数字
表达错误或不完整(您是否忘记了一些括号?)
将结果复制到剪贴板
@@ -13,4 +13,5 @@
点(.)
小数点后最大位数
复制失败,请稍后再试
+ 计算错误时显示错误消息
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-tw.xaml
index 7c8acf40b..b56e4660f 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-tw.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Languages/zh-tw.xaml
@@ -1,8 +1,8 @@
-
+
計算機
- 為 Flow Launcher 提供數學計算功能。(試著在 Flow Launcher 輸入 5*3-2)
+ Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.
不是一個數 (NaN)
Expression wrong or incomplete (Did you forget some parentheses?)
複製此數至剪貼簿
@@ -13,4 +13,5 @@
點 (.)
小數點後最大位數
Copy failed, please try later
+ Show error message when calculation fails
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Main.cs b/Plugins/Flow.Launcher.Plugin.Calculator/Main.cs
index 6878c54b4..9d5e4700f 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Main.cs
@@ -13,30 +13,24 @@ namespace Flow.Launcher.Plugin.Calculator
{
public class Main : IPlugin, IPluginI18n, ISettingProvider
{
- private static readonly Regex RegValidExpressChar = MainRegexHelper.GetRegValidExpressChar();
- private static readonly Regex RegBrackets = MainRegexHelper.GetRegBrackets();
private static readonly Regex ThousandGroupRegex = MainRegexHelper.GetThousandGroupRegex();
private static readonly Regex NumberRegex = MainRegexHelper.GetNumberRegex();
+ private static readonly Regex PowRegex = MainRegexHelper.GetPowRegex();
+ private static readonly Regex LogRegex = MainRegexHelper.GetLogRegex();
+ private static readonly Regex LnRegex = MainRegexHelper.GetLnRegex();
+ private static readonly Regex FunctionRegex = MainRegexHelper.GetFunctionRegex();
private static Engine MagesEngine;
private const string Comma = ",";
private const string Dot = ".";
+ private const string IcoPath = "Images/calculator.png";
+ private static readonly List EmptyResults = [];
internal static PluginInitContext Context { get; set; } = null!;
private Settings _settings;
private SettingsViewModel _viewModel;
- ///
- /// Holds the formatting information for a single query.
- /// This is used to ensure thread safety by keeping query state local.
- ///
- private class ParsingContext
- {
- public string InputDecimalSeparator { get; set; }
- public bool InputUsesGroupSeparators { get; set; }
- }
-
public void Init(PluginInitContext context)
{
Context = context;
@@ -54,38 +48,98 @@ namespace Flow.Launcher.Plugin.Calculator
public List Query(Query query)
{
- if (!CanCalculate(query))
+ if (string.IsNullOrWhiteSpace(query.Search))
{
- return new List();
+ return EmptyResults;
}
- var context = new ParsingContext();
-
try
{
- var expression = NumberRegex.Replace(query.Search, m => NormalizeNumber(m.Value, context));
+ var search = query.Search;
+ bool isFunctionPresent = FunctionRegex.IsMatch(search);
+
+ // Mages is case sensitive, so we need to convert all function names to lower case.
+ search = FunctionRegex.Replace(search, m => m.Value.ToLowerInvariant());
+
+ var decimalSep = GetDecimalSeparator();
+ var groupSep = GetGroupSeparator(decimalSep);
+ var expression = NumberRegex.Replace(search, m => NormalizeNumber(m.Value, isFunctionPresent, decimalSep, groupSep));
+
+ // WORKAROUND START: The 'pow' function in Mages v3.0.0 is broken.
+ // https://github.com/FlorianRappl/Mages/issues/132
+ // We bypass it by rewriting any pow(x,y) expression to the equivalent (x^y) expression
+ // before the engine sees it. This loop handles nested calls.
+ {
+ string previous;
+ do
+ {
+ previous = expression;
+ expression = PowRegex.Replace(previous, PowMatchEvaluator);
+ } while (previous != expression);
+ }
+ // WORKAROUND END
+
+ // WORKAROUND START: The 'log' & 'ln' function in Mages v3.0.0 are broken.
+ // https://github.com/FlorianRappl/Mages/issues/137
+ // We bypass it by rewriting any log & ln expression to the equivalent (log10 & log) expression
+ // before the engine sees it. This loop handles nested calls.
+ {
+ string previous;
+ do
+ {
+ previous = expression;
+ expression = LogRegex.Replace(previous, LogMatchEvaluator);
+ } while (previous != expression);
+ }
+ {
+ string previous;
+ do
+ {
+ previous = expression;
+ expression = LnRegex.Replace(previous, LnMatchEvaluator);
+ } while (previous != expression);
+ }
+ // WORKAROUND END
var result = MagesEngine.Interpret(expression);
- if (result?.ToString() == "NaN")
+ if (result == null || string.IsNullOrEmpty(result.ToString()))
+ {
+ if (!_settings.ShowErrorMessage) return EmptyResults;
+ return
+ [
+ new Result
+ {
+ Title = Localize.flowlauncher_plugin_calculator_expression_not_complete(),
+ IcoPath = IcoPath
+ }
+ ];
+ }
+
+ if (result.ToString() == "NaN")
+ {
result = Localize.flowlauncher_plugin_calculator_not_a_number();
+ }
if (result is Function)
+ {
result = Localize.flowlauncher_plugin_calculator_expression_not_complete();
+ }
- if (!string.IsNullOrEmpty(result?.ToString()))
+ if (!string.IsNullOrEmpty(result.ToString()))
{
decimal roundedResult = Math.Round(Convert.ToDecimal(result), _settings.MaxDecimalPlaces, MidpointRounding.AwayFromZero);
- string newResult = FormatResult(roundedResult, context);
+ string newResult = FormatResult(roundedResult);
- return new List
- {
+ return
+ [
new Result
{
Title = newResult,
- IcoPath = "Images/calculator.png",
+ IcoPath = IcoPath,
Score = 300,
- SubTitle = Localize.flowlauncher_plugin_calculator_copy_number_to_clipboard(),
+ // Check context nullability for unit testing
+ SubTitle = Context == null ? string.Empty : Localize.flowlauncher_plugin_calculator_copy_number_to_clipboard(),
CopyText = newResult,
Action = c =>
{
@@ -101,118 +155,206 @@ namespace Flow.Launcher.Plugin.Calculator
}
}
}
- };
+ ];
}
}
catch (Exception)
{
- // ignored
+ // Mages engine can throw various exceptions, for simplicity we catch them all and show a generic message.
+ if (!_settings.ShowErrorMessage) return EmptyResults;
+ return
+ [
+ new Result
+ {
+ Title = Localize.flowlauncher_plugin_calculator_expression_not_complete(),
+ IcoPath = IcoPath
+ }
+ ];
}
- return new List();
+ return EmptyResults;
}
- ///
- /// Parses a string representation of a number, detecting its format. It uses structural analysis
- /// and falls back to system culture for truly ambiguous cases (e.g., "1,234").
- /// It populates the provided ParsingContext with the detected format for later use.
- ///
- /// A normalized number string with '.' as the decimal separator for the Mages engine.
- private string NormalizeNumber(string numberStr, ParsingContext context)
+ private static string PowMatchEvaluator(Match m)
{
- var systemGroupSep = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator;
- int dotCount = numberStr.Count(f => f == '.');
- int commaCount = numberStr.Count(f => f == ',');
+ // m.Groups[1].Value will be `(...)` with parens
+ var contentWithParen = m.Groups[1].Value;
+ // remove outer parens. `(min(2,3), 4)` becomes `min(2,3), 4`
+ var argsContent = contentWithParen[1..^1];
- // Case 1: Unambiguous mixed separators (e.g., "1.234,56")
- if (dotCount > 0 && commaCount > 0)
+ var bracketCount = 0;
+ var splitIndex = -1;
+
+ // Find the top-level comma that separates the two arguments of pow.
+ for (var i = 0; i < argsContent.Length; i++)
{
- context.InputUsesGroupSeparators = true;
- if (numberStr.LastIndexOf('.') > numberStr.LastIndexOf(','))
+ switch (argsContent[i])
{
- context.InputDecimalSeparator = Dot;
- return numberStr.Replace(Comma, string.Empty);
+ case '(':
+ case '[':
+ bracketCount++;
+ break;
+ case ')':
+ case ']':
+ bracketCount--;
+ break;
+ case ',' when bracketCount == 0:
+ splitIndex = i;
+ break;
+ }
+
+ if (splitIndex != -1)
+ break;
+ }
+
+ if (splitIndex == -1)
+ {
+ // This indicates malformed arguments for pow, e.g., pow(5) or pow().
+ // Return original string to let Mages handle the error.
+ return m.Value;
+ }
+
+ var arg1 = argsContent[..splitIndex].Trim();
+ var arg2 = argsContent[(splitIndex + 1)..].Trim();
+
+ // Check for empty arguments which can happen with stray commas, e.g., pow(,5)
+ if (string.IsNullOrEmpty(arg1) || string.IsNullOrEmpty(arg2))
+ {
+ return m.Value;
+ }
+
+ return $"({arg1}^{arg2})";
+ }
+
+ private static string LogMatchEvaluator(Match m)
+ {
+ // m.Groups[1].Value will be `(...)` with parens
+ var contentWithParen = m.Groups[1].Value;
+ var argsContent = contentWithParen[1..^1];
+
+ // log is unary — if malformed, return original to let Mages handle it
+ var arg = argsContent.Trim();
+ if (string.IsNullOrEmpty(arg)) return m.Value;
+
+ // log(x) -> log10(x) (natural log)
+ return $"(log10({arg}))";
+ }
+
+ private static string LnMatchEvaluator(Match m)
+ {
+ // m.Groups[1].Value will be `(...)` with parens
+ var contentWithParen = m.Groups[1].Value;
+ var argsContent = contentWithParen[1..^1];
+
+ // ln is unary — if malformed, return original to let Mages handle it
+ var arg = argsContent.Trim();
+ if (string.IsNullOrEmpty(arg)) return m.Value;
+
+ // ln(x) -> log(x) (natural log)
+ return $"(log({arg}))";
+ }
+ private static string NormalizeNumber(string numberStr, bool isFunctionPresent, string decimalSep, string groupSep)
+ {
+ if (isFunctionPresent)
+ {
+ // STRICT MODE: When functions are present, ',' is ALWAYS an argument separator.
+ if (numberStr.Contains(','))
+ {
+ return numberStr;
+ }
+
+ string processedStr = numberStr;
+
+ // Handle group separator, with special care for ambiguous dot.
+ if (!string.IsNullOrEmpty(groupSep))
+ {
+ if (groupSep == ".")
+ {
+ var parts = processedStr.Split('.');
+ if (parts.Length > 1)
+ {
+ var culture = CultureInfo.CurrentCulture;
+ if (IsValidGrouping(parts, culture.NumberFormat.NumberGroupSizes))
+ {
+ processedStr = processedStr.Replace(groupSep, "");
+ }
+ // If not grouped, it's likely a decimal number, so we don't strip dots.
+ }
+ }
+ else
+ {
+ processedStr = processedStr.Replace(groupSep, "");
+ }
+ }
+
+ // Handle decimal separator.
+ if (decimalSep != ".")
+ {
+ processedStr = processedStr.Replace(decimalSep, ".");
+ }
+
+ return processedStr;
+ }
+ else
+ {
+ // LENIENT MODE: No functions are present, so we can be flexible.
+ string processedStr = numberStr;
+ if (!string.IsNullOrEmpty(groupSep))
+ {
+ processedStr = processedStr.Replace(groupSep, "");
+ }
+ if (decimalSep != ".")
+ {
+ processedStr = processedStr.Replace(decimalSep, ".");
+ }
+ return processedStr;
+ }
+ }
+
+ private static bool IsValidGrouping(string[] parts, int[] groupSizes)
+ {
+ if (parts.Length <= 1) return true;
+
+ if (groupSizes is null || groupSizes.Length == 0 || groupSizes[0] == 0)
+ return false; // has groups, but culture defines none.
+
+ var firstPart = parts[0];
+ if (firstPart.StartsWith('-')) firstPart = firstPart[1..];
+ if (firstPart.Length == 0) return false; // e.g. ",123"
+
+ if (firstPart.Length > groupSizes[0]) return false;
+
+ var lastGroupSize = groupSizes.Last();
+ var canRepeatLastGroup = lastGroupSize != 0;
+
+ int groupIndex = 0;
+ for (int i = parts.Length - 1; i > 0; i--)
+ {
+ int expectedSize;
+ if (groupIndex < groupSizes.Length)
+ {
+ expectedSize = groupSizes[groupIndex];
+ }
+ else if(canRepeatLastGroup)
+ {
+ expectedSize = lastGroupSize;
}
else
{
- context.InputDecimalSeparator = Comma;
- return numberStr.Replace(Dot, string.Empty).Replace(Comma, Dot);
+ return false;
}
+
+ if (parts[i].Length != expectedSize) return false;
+
+ groupIndex++;
}
- // Case 2: Only dots
- if (dotCount > 0)
- {
- if (dotCount > 1)
- {
- context.InputUsesGroupSeparators = true;
- return numberStr.Replace(Dot, string.Empty);
- }
- // A number is ambiguous if it has a single Dot in the thousands position,
- // and does not start with a "0." or "."
- bool isAmbiguous = numberStr.Length - numberStr.LastIndexOf('.') == 4
- && !numberStr.StartsWith("0.")
- && !numberStr.StartsWith(".");
- if (isAmbiguous)
- {
- if (systemGroupSep == Dot)
- {
- context.InputUsesGroupSeparators = true;
- return numberStr.Replace(Dot, string.Empty);
- }
- else
- {
- context.InputDecimalSeparator = Dot;
- return numberStr;
- }
- }
- else // Unambiguous decimal (e.g., "12.34" or "0.123" or ".123")
- {
- context.InputDecimalSeparator = Dot;
- return numberStr;
- }
- }
-
- // Case 3: Only commas
- if (commaCount > 0)
- {
- if (commaCount > 1)
- {
- context.InputUsesGroupSeparators = true;
- return numberStr.Replace(Comma, string.Empty);
- }
- // A number is ambiguous if it has a single Comma in the thousands position,
- // and does not start with a "0," or ","
- bool isAmbiguous = numberStr.Length - numberStr.LastIndexOf(',') == 4
- && !numberStr.StartsWith("0,")
- && !numberStr.StartsWith(",");
- if (isAmbiguous)
- {
- if (systemGroupSep == Comma)
- {
- context.InputUsesGroupSeparators = true;
- return numberStr.Replace(Comma, string.Empty);
- }
- else
- {
- context.InputDecimalSeparator = Comma;
- return numberStr.Replace(Comma, Dot);
- }
- }
- else // Unambiguous decimal (e.g., "12,34" or "0,123" or ",123")
- {
- context.InputDecimalSeparator = Comma;
- return numberStr.Replace(Comma, Dot);
- }
- }
-
- // Case 4: No separators
- return numberStr;
+ return true;
}
- private string FormatResult(decimal roundedResult, ParsingContext context)
+ private string FormatResult(decimal roundedResult)
{
- string decimalSeparator = context.InputDecimalSeparator ?? GetDecimalSeparator();
+ string decimalSeparator = GetDecimalSeparator();
string groupSeparator = GetGroupSeparator(decimalSeparator);
string resultStr = roundedResult.ToString(CultureInfo.InvariantCulture);
@@ -221,7 +363,7 @@ namespace Flow.Launcher.Plugin.Calculator
string integerPart = parts[0];
string fractionalPart = parts.Length > 1 ? parts[1] : string.Empty;
- if (context.InputUsesGroupSeparators && integerPart.Length > 3)
+ if (integerPart.Length > 3)
{
integerPart = ThousandGroupRegex.Replace(integerPart, groupSeparator);
}
@@ -236,29 +378,23 @@ namespace Flow.Launcher.Plugin.Calculator
private string GetGroupSeparator(string decimalSeparator)
{
- // This logic is now independent of the system's group separator
- // to ensure consistent output for unit testing.
- return decimalSeparator == Dot ? Comma : Dot;
- }
+ var culture = CultureInfo.CurrentCulture;
+ var systemGroupSeparator = culture.NumberFormat.NumberGroupSeparator;
- private bool CanCalculate(Query query)
- {
- if (query.Search.Length < 2)
+ if (_settings.DecimalSeparator == DecimalSeparator.UseSystemLocale)
{
- return false;
+ return systemGroupSeparator;
}
- if (!RegValidExpressChar.IsMatch(query.Search))
+ // When a custom decimal separator is used,
+ // use the system's group separator unless it conflicts with the custom decimal separator.
+ if (decimalSeparator == systemGroupSeparator)
{
- return false;
+ // Conflict: use the opposite of the decimal separator as a fallback.
+ return decimalSeparator == Dot ? Comma : Dot;
}
- if (!IsBracketComplete(query.Search))
- {
- return false;
- }
-
- return true;
+ return systemGroupSeparator;
}
private string GetDecimalSeparator()
@@ -273,25 +409,6 @@ namespace Flow.Launcher.Plugin.Calculator
};
}
- private static bool IsBracketComplete(string query)
- {
- var matchs = RegBrackets.Matches(query);
- var leftBracketCount = 0;
- foreach (Match match in matchs)
- {
- if (match.Value == "(" || match.Value == "[")
- {
- leftBracketCount++;
- }
- else
- {
- leftBracketCount--;
- }
- }
-
- return leftBracketCount == 0;
- }
-
public string GetTranslatedPluginTitle()
{
return Localize.flowlauncher_plugin_calculator_plugin_name();
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/MainRegexHelper.cs b/Plugins/Flow.Launcher.Plugin.Calculator/MainRegexHelper.cs
index f4e2090e7..a8b582ccc 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/MainRegexHelper.cs
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/MainRegexHelper.cs
@@ -4,16 +4,21 @@ namespace Flow.Launcher.Plugin.Calculator;
internal static partial class MainRegexHelper
{
-
- [GeneratedRegex(@"[\(\)\[\]]", RegexOptions.Compiled)]
- public static partial Regex GetRegBrackets();
-
- [GeneratedRegex(@"^(ceil|floor|exp|pi|e|max|min|det|abs|log|ln|sqrt|sin|cos|tan|arcsin|arccos|arctan|eigval|eigvec|eig|sum|polar|plot|round|sort|real|zeta|bin2dec|hex2dec|oct2dec|factorial|sign|isprime|isinfty|==|~=|&&|\|\||(?:\<|\>)=?|[ei]|[0-9]|0x[\da-fA-F]+|[\+\%\-\*\/\^\., ""]|[\(\)\|\!\[\]])+$", RegexOptions.Compiled)]
- public static partial Regex GetRegValidExpressChar();
-
- [GeneratedRegex(@"[\d\.,]+", RegexOptions.Compiled)]
+ [GeneratedRegex(@"-?[\d\.,'\u00A0\u202F]+", RegexOptions.Compiled | RegexOptions.CultureInvariant)]
public static partial Regex GetNumberRegex();
[GeneratedRegex(@"\B(?=(\d{3})+(?!\d))", RegexOptions.Compiled)]
public static partial Regex GetThousandGroupRegex();
+
+ [GeneratedRegex(@"\bpow(\((?:[^()\[\]]|\((?)|\)(?<-Depth>)|\[(?)|\](?<-Depth>))*(?(Depth)(?!))\))", RegexOptions.Compiled | RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
+ public static partial Regex GetPowRegex();
+
+ [GeneratedRegex(@"\blog(\((?:[^()\[\]]|\((?)|\)(?<-Depth>)|\[(?)|\](?<-Depth>))*(?(Depth)(?!))\))", RegexOptions.Compiled | RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
+ public static partial Regex GetLogRegex();
+
+ [GeneratedRegex(@"\bln(\((?:[^()\[\]]|\((?)|\)(?<-Depth>)|\[(?)|\](?<-Depth>))*(?(Depth)(?!))\))", RegexOptions.Compiled | RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
+ public static partial Regex GetLnRegex();
+
+ [GeneratedRegex(@"\b(sqrt|pow|factorial|abs|sign|ceil|floor|round|exp|log|log2|log10|min|max|lt|eq|gt|sin|cos|tan|arcsin|arccos|arctan|isnan|isint|isprime|isinfty|rand|randi|type|is|as|length|throw|catch|eval|map|clamp|lerp|regex|shuffle)\s*\(", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
+ public static partial Regex GetFunctionRegex();
}
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Settings.cs b/Plugins/Flow.Launcher.Plugin.Calculator/Settings.cs
index 8354863b8..cac0f3080 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Settings.cs
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Settings.cs
@@ -1,9 +1,11 @@
-namespace Flow.Launcher.Plugin.Calculator
+namespace Flow.Launcher.Plugin.Calculator;
+
+public class Settings
{
- public class Settings
- {
- public DecimalSeparator DecimalSeparator { get; set; } = DecimalSeparator.UseSystemLocale;
- public int MaxDecimalPlaces { get; set; } = 10;
- }
+ public DecimalSeparator DecimalSeparator { get; set; } = DecimalSeparator.UseSystemLocale;
+
+ public int MaxDecimalPlaces { get; set; } = 10;
+
+ public bool ShowErrorMessage { get; set; } = false;
}
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Calculator/ViewModels/SettingsViewModel.cs
index 87ae72fb6..79236bdf8 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/ViewModels/SettingsViewModel.cs
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/ViewModels/SettingsViewModel.cs
@@ -1,31 +1,25 @@
using System.Collections.Generic;
using System.Linq;
-namespace Flow.Launcher.Plugin.Calculator.ViewModels
+namespace Flow.Launcher.Plugin.Calculator.ViewModels;
+
+public class SettingsViewModel(Settings settings) : BaseModel
{
- public class SettingsViewModel : BaseModel
+ public Settings Settings { get; } = settings;
+
+ public static IEnumerable MaxDecimalPlacesRange => Enumerable.Range(1, 20);
+
+ public List AllDecimalSeparator { get; } = DecimalSeparatorLocalized.GetValues();
+
+ public DecimalSeparator SelectedDecimalSeparator
{
- public SettingsViewModel(Settings settings)
+ get => Settings.DecimalSeparator;
+ set
{
- Settings = settings;
- }
-
- public Settings Settings { get; init; }
-
- public static IEnumerable MaxDecimalPlacesRange => Enumerable.Range(1, 20);
-
- public List AllDecimalSeparator { get; } = DecimalSeparatorLocalized.GetValues();
-
- public DecimalSeparator SelectedDecimalSeparator
- {
- get => Settings.DecimalSeparator;
- set
+ if (Settings.DecimalSeparator != value)
{
- if (Settings.DecimalSeparator != value)
- {
- Settings.DecimalSeparator = value;
- OnPropertyChanged();
- }
+ Settings.DecimalSeparator = value;
+ OnPropertyChanged();
}
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml b/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml
index 8d240ef39..9e7549b2d 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml
@@ -15,6 +15,7 @@
+
@@ -58,5 +59,14 @@
ItemsSource="{Binding MaxDecimalPlacesRange}"
SelectedItem="{Binding Settings.MaxDecimalPlaces}" />
+
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml.cs
index 7bc307d11..9e75e7bfb 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml.cs
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml.cs
@@ -1,22 +1,16 @@
using System.Windows.Controls;
using Flow.Launcher.Plugin.Calculator.ViewModels;
-namespace Flow.Launcher.Plugin.Calculator.Views
-{
- ///
- /// Interaction logic for CalculatorSettings.xaml
- ///
- public partial class CalculatorSettings : UserControl
- {
- private readonly SettingsViewModel _viewModel;
- private readonly Settings _settings;
+namespace Flow.Launcher.Plugin.Calculator.Views;
- public CalculatorSettings(Settings settings)
- {
- _viewModel = new SettingsViewModel(settings);
- _settings = _viewModel.Settings;
- DataContext = _viewModel;
- InitializeComponent();
- }
+public partial class CalculatorSettings : UserControl
+{
+ private readonly SettingsViewModel _viewModel;
+
+ public CalculatorSettings(Settings settings)
+ {
+ _viewModel = new SettingsViewModel(settings);
+ DataContext = _viewModel;
+ InitializeComponent();
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Calculator/plugin.json b/Plugins/Flow.Launcher.Plugin.Calculator/plugin.json
index c9435e043..93df9ec72 100644
--- a/Plugins/Flow.Launcher.Plugin.Calculator/plugin.json
+++ b/Plugins/Flow.Launcher.Plugin.Calculator/plugin.json
@@ -2,7 +2,7 @@
"ID": "CEA0FDFC6D3B4085823D60DC76F28855",
"ActionKeyword": "*",
"Name": "Calculator",
- "Description": "Perform mathematical calculations (including hexadecimal values). Use ',' or '.' as thousand separator or decimal place.",
+ "Description": "Perform mathematical calculations, including hex values and advanced functions such as 'min(1,2,3)', 'sqrt(123)' and 'cos(123)'.",
"Author": "cxfksword, dcog989",
"Version": "1.0.0",
"Language": "csharp",
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj b/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj
index af33f4da2..b7c54e578 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Flow.Launcher.Plugin.Explorer.csproj
@@ -19,6 +19,7 @@
..\..\Output\Release\Plugins\Flow.Launcher.Plugin.Explorer
+ $(NoWarn);FLSG0007
@@ -47,8 +48,8 @@
-
-
+
+
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ar.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ar.xaml
index b2bf99515..608fe88a1 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ar.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ar.xaml
@@ -22,6 +22,7 @@
حدث خطأ أثناء البحث: {0}
تعذر فتح المجلد
تعذر فتح الملف
+ This new action keyword is already assigned to another plugin, please choose a different one
حذف
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/cs.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/cs.xaml
index 0acdb5ca1..2381d501b 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/cs.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/cs.xaml
@@ -22,6 +22,7 @@
Při vyhledávání došlo k chybě: {0}
Adresář nelze otevřít
Nelze otevřít soubor
+ This new action keyword is already assigned to another plugin, please choose a different one
Smazat
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/da.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/da.xaml
index 66816de93..f5f13e5a3 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/da.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/da.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Slet
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/de.xaml
index 8ddb958ad..8e352e614 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/de.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/de.xaml
@@ -22,6 +22,7 @@
Fehler aufgetreten während Suche: {0}
Ordner konnte nicht geöffnet werden
Datei konnte nicht geöffnet werden
+ This new action keyword is already assigned to another plugin, please choose a different one
Löschen
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es-419.xaml
index f80a55965..7379571a7 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es-419.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es-419.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Eliminar
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml
index 474ba9a4c..0a1d73c28 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/es.xaml
@@ -22,6 +22,7 @@
Se ha producido un error durante la búsqueda: {0}
No se ha podido abrir la carpeta
No se ha podido abrir el archivo
+ This new action keyword is already assigned to another plugin, please choose a different one
Eliminar
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/fr.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/fr.xaml
index 096cd4a0d..d9b767b9c 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/fr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/fr.xaml
@@ -22,6 +22,7 @@
Une erreur s'est produite pendant la recherche : {0}
Impossible d'ouvrir le dossier
Impossible d'ouvrir le fichier
+ This new action keyword is already assigned to another plugin, please choose a different one
Supprimer
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/he.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/he.xaml
index a4e4445ae..a84d7707d 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/he.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/he.xaml
@@ -22,6 +22,7 @@
אירעה שגיאה במהלך החיפוש: {0}
לא ניתן היה לפתוח את התיקייה
לא ניתן היה לפתוח את הקובץ
+ This new action keyword is already assigned to another plugin, please choose a different one
מחק
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/it.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/it.xaml
index f3fa1e1e6..a88ad2da1 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/it.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/it.xaml
@@ -22,6 +22,7 @@
Errore durante la ricerca: {0}
Impossibile aprire la cartella
Impossibile aprire il file
+ This new action keyword is already assigned to another plugin, please choose a different one
Cancella
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ja.xaml
index d0b045175..8a701ebc6 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ja.xaml
@@ -2,17 +2,17 @@
- Please make a selection first
- Please select a folder path.
- Please choose a different name or folder path.
- Are you sure you want to delete this quick access link?
- Are you sure you want to delete this index search excluded path?
- Please select a folder link
- Are you sure you want to delete {0}?
- Are you sure you want to permanently delete this file?
- Are you sure you want to permanently delete this file/folder?
- Deletion successful
- Successfully deleted {0}
+ 項目を選択してください
+ フォルダのパスを選択してください。
+ 別の名前またはフォルダのパスを選択してください。
+ このクイックアクセスリンクを削除してもよろしいですか?
+ このインデックス検索の除外パスを削除してもよろしいですか?
+ フォルダーのリンクを選択してください
+ {0} を削除してもよろしいですか?
+ このファイルを完全に削除してもよろしいですか?
+ このファイルやフォルダーを完全に削除してもよろしいですか?
+ 削除に成功
+ {0} は正常に削除されました
Assigning the global action keyword could bring up too many results during search. Please choose a specific action keyword
Quick Access can not be set to the global action keyword when enabled. Please choose a specific action keyword
The required service for Windows Index Search does not appear to be running
@@ -20,8 +20,9 @@
The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return
Explorer Alternative
Error occurred during search: {0}
- Could not open folder
- Could not open file
+ フォルダーを開けませんでした
+ ファイルを開けませんでした
+ This new action keyword is already assigned to another plugin, please choose a different one
削除
@@ -31,7 +32,7 @@
アクションキーワードのカスタマイズ
Customise Quick Access
Quick Access Links
- Everything Setting
+ Everything の設定
プレビューパネル
サイズ
作成日時
@@ -39,8 +40,8 @@
File Age
ファイル情報の表示
日付と時刻の形式
- Sort Option:
- Everything Path:
+ 並べ替え方法:
+ Everything のパス:
Launch Hidden
Editor Path
Shell Path
@@ -64,16 +65,16 @@
Direct Enumeration
ファイル エディターのパス
フォルダー エディターのパス
- Enabled
- Disabled
+ 有効
+ 無効
Content Search Engine
Directory Recursive Search Engine
Index Search Engine
Windowsのインデックスオプションを開く
Excluded File Types (comma seperated)
- For example: exe,jpg,png
- Maximum results
+ 例: exe,jpg,png
+ 結果の最大表示件数
The maximum number of results requested from active search engine
@@ -81,17 +82,17 @@
Windows SearchまたはEverythingを使って、ファイルやフォルダーを検索・管理します
- Ctrl + Enter to open the directory
+ Ctrl + Enter でフォルダーを開く
Ctrl + Enter to open the containing folder
{0}{4}Size: {1}{4}Date created: {2}{4}Date modified: {3}
- Unknown
+ 不明
{0}{3}Space free: {1}{3}Total size: {2}
パスをコピー
現在の項目のパスをコピー
- Copy name
- Copy name of current item to clipboard
+ 名前をコピー
+ 現在の項目の名前をクリップボードにコピーする
コピー
現在のファイルをコピー
現在のフォルダーをコピー
@@ -99,13 +100,13 @@
現在のファイルを完全に削除
現在のフォルダーを完全に削除
名前
- Type
- Path
+ 種類
+ パス
ファイル
フォルダー
- Delete the selected
- Run as different user
- Run the selected using a different user account
+ 選択したものを削除する
+ 別のユーザーとして実行
+ 別のユーザーアカウントを使用して選択したものを実行する
フォルダーを開く
現在の項目が含まれている場所を開きます
エディターで開く:
@@ -119,9 +120,9 @@
Windowsインデックスオプションを開けませんでした
クイックアクセスに追加
現在の項目をクイックアクセスに追加
- Successfully Added
+ 正常に追加されました
クイックアクセスに追加しました
- Successfully Removed
+ 削除に成功しました
Successfully removed from Quick Access
エクスプローラーの検索アクティベーション用アクションキーワードで開けるように、クイックアクセスに追加します
クイックアクセスから削除
@@ -130,81 +131,81 @@
Windowsの右クリックメニューを表示
アプリで開く
開くためのプログラムを選択します
- Fail to delete {0}
+ {0} の削除に失敗しました
File not found: {0}
- Fail to open {0}
- Fail to set text in clipboard
- Fail to set files/folders in clipboard
+ {0} の削除に失敗しました
+ クリップボードにテキストをコピーできませんでした
+ ファイル/フォルダのコピーに失敗しました
- {0} free of {1}
- Open in Default File Manager
+ 空き領域 {1} 中の {0}
+ デフォルトのファイルマネージャーで開く
Use '>' to search in this directory, '*' to search for file extensions or '>*' to combine both searches.
- Failed to load Everything SDK
- Warning: Everything service is not running
- Error while querying Everything
- Sort By
- Name ↑
- Name ↓
- Path ↑
- Path ↓
- Size ↑
- Size ↓
- Extension ↑
- Extension ↓
- Type Name ↑
- Type Name ↓
- Date Created ↑
- Date Created ↓
- Date Modified ↑
- Date Modified ↓
+ Everything SDK の読み込みに失敗しました
+ 警告: Everythingのサービスが実行されていません
+ Everything へのクエリ中にエラーが発生しました
+ 並べ替え順
+ 名前 ↑
+ 名前 ↓
+ パス ↑
+ パス ↓
+ サイズ ↑
+ サイズ ↓
+ 拡張子 ↑
+ 拡張子 ↓
+ 種類名 ↑
+ 種類名 ↓
+ 作成日時 ↑
+ 作成日時 ↓
+ 更新日時 ↑
+ 更新日時 ↓
Attributes ↑
Attributes ↓
File List FileName ↑
File List FileName ↓
- Run Count ↑
- Run Count ↓
+ 実行回数 ↑
+ 実行回数 ↓
Date Recently Changed ↑
Date Recently Changed ↓
- Date Accessed ↑
- Date Accessed ↓
- Date Run ↑
- Date Run ↓
+ アクセス日時 ↑
+ アクセス日時 ↓
+ 実行日時 ↑
+ 実行日時 ↓
↑
↓
- Warning: This is not a Fast Sort option, searches may be slow
+ 警告:これは高速な並べ替えオプションではありません。検索が遅くなる場合があります
Search Full Path
- Enable File/Folder Run Count
+ ファイル/フォルダの実行カウントを有効にする
- Click to launch or install Everything
- Everything Installation
- Installing Everything service. Please wait...
- Successfully installed Everything service
- Failed to automatically install Everything service. Please manually install it from https://www.voidtools.com
+ クリックして Everything を起動またはインストール
+ Everything のインストール
+ Everything サービスをインストールしています。お待ちください…
+ Everything サービスを正常にインストールしました
+ Everything サービスを自動的にインストールできませんでした。https://www.voidtools.com から手動でインストールしてください
Click here to start it
Everythingのインストールが見つかりませんでした。手動で場所を指定しますか?{0}{0}「いいえ」をクリックすると、Everythingが自動的にインストールされます。
- Do you want to enable content search for Everything?
- It can be very slow without index (which is only supported in Everything v1.5+)
+ Everything でのコンテンツ検索を有効にしますか?
+ インデックスなしでは非常に遅くなることがあります(Everything v1.5以降でのみサポートされています)
- Unable to find Everything.exe
- Failed to install Everything, please install it manually
+ Everything.exe が見つかりません
+ Everything のインストールに失敗しました。手動でインストールしてください
- Native Context Menu
- Display native context menu (experimental)
- Below you can specify items you want to include in the context menu, they can be partial (e.g. 'pen wit') or complete ('Open with').
- Below you can specify items you want to exclude from context menu, they can be partial (e.g. 'pen wit') or complete ('Open with').
+ Windowsのコンテキストメニュー
+ Windowsのコンテキストメニューを表示(実験的)
+ 以下では、コンテキストメニューに表示する項目を指定することができます。部分的 (例: 「開」)、または完全な項目名を指定することができます (「開く」)。
+ 以下では、コンテキストメニューから除外する項目を指定することができます。部分的 (例: 「開」)、または完全な項目名を指定することができます (「開く」)。
- Today
- {0} days ago
- 1 month ago
- {0} months ago
- 1 year ago
- {0} years ago
+ 今日
+ {0} 日前
+ 1 か月前
+ {0} か月前
+ 1 年前
+ {0} 年前
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ko.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ko.xaml
index 3195ff6e5..e437926c8 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ko.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ko.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
삭제
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nb.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nb.xaml
index 5efdead0c..b0672d3ad 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nb.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nb.xaml
@@ -22,6 +22,7 @@
Feil oppstod under søk: {0}
Kunne ikke åpne mappe
Kunne ikke åpne fil
+ This new action keyword is already assigned to another plugin, please choose a different one
Slett
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nl.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nl.xaml
index cc6d350c9..3de4ce5e5 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nl.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/nl.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Verwijder
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pl.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pl.xaml
index c981c2832..1a01e8b90 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pl.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pl.xaml
@@ -22,6 +22,7 @@
Wystąpił błąd podczas wyszukiwania: {0}
Nie można otworzyć folderu
Nie można otworzyć pliku
+ This new action keyword is already assigned to another plugin, please choose a different one
Usuń
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-br.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-br.xaml
index fe4fa320a..9a3a4ffeb 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-br.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-br.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Apagar
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-pt.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-pt.xaml
index d0651cc53..2d33768f9 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-pt.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/pt-pt.xaml
@@ -22,6 +22,7 @@
Ocorreu um erro ao pesquisar: {0}
Não foi possível abrir a pasta
Não foi possível abrir o ficheiro
+ This new action keyword is already assigned to another plugin, please choose a different one
Eliminar
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ru.xaml
index 1644745ae..cb28fcfd5 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/ru.xaml
@@ -22,6 +22,7 @@
При поиске произошла ошибка: {0}
Не удалось открыть папку
Не удалось открыть файл
+ This new action keyword is already assigned to another plugin, please choose a different one
Удалить
@@ -57,14 +58,14 @@
Quick Access:
Current Action Keyword
Подтвердить
- Enabled
+ Включено
When disabled Flow will not execute this search option, and will additionally revert back to '*' to free up the action keyword
Everything
Windows Index
Direct Enumeration
Путь к редактору файлов
Путь к редактору папки
- Enabled
+ Включено
Отключён
Content Search Engine
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
index 3ca738b69..1350969b6 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
@@ -22,6 +22,7 @@
Počas vyhľadávania došlo k chybe: {0}
Nepodarilo sa otvoriť priečinok
Nepodarilo sa otvoriť súbor
+ Nový aktivačný príkaz už bol priradený inému pluginu, prosím, zvoľte iný aktivačný príkaz
Odstrániť
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr-Cyrl-RS.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr-Cyrl-RS.xaml
index 19fe6dc64..e7979f6dd 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr-Cyrl-RS.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr-Cyrl-RS.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Delete
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr.xaml
index f8effbd7c..ef7e6a5c3 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sr.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
Obriši
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/tr.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/tr.xaml
index aefe8af30..3e491ea22 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/tr.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/tr.xaml
@@ -22,6 +22,7 @@
Arama sırasında hata oluştu: {0}
Klasör açılamadı
Dosya açılamadı
+ This new action keyword is already assigned to another plugin, please choose a different one
Sil
@@ -123,7 +124,7 @@
Hızlı Erişim'e başarıyla eklendi
Başarıyla Kaldırıldı
Hızlı Erişim'den başarıyla kaldırıldı
- Add to Quick Access so it can be opened with Explorer's Search Activation action keyword
+ Dosya Gezgini'nin Arama Etkinleştirme anahtar sözcüğü ile açılabilmesi için Hızlı Erişim'e ekleyin
Hızlı Erişimden Kaldır
Hızlı Erişimden Kaldır
Geçerli öğeyi Hızlı Erişim'den kaldır
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/uk-UA.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/uk-UA.xaml
index 823c33193..60a08a82f 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/uk-UA.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/uk-UA.xaml
@@ -22,6 +22,7 @@
Виникла помилка під час пошуку: {0}
Не вдалося відкрити папку
Не вдалося відкрити файл
+ This new action keyword is already assigned to another plugin, please choose a different one
Видалити
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/vi.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/vi.xaml
index 7b64af3d8..6416fc447 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/vi.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/vi.xaml
@@ -22,6 +22,7 @@
Đã xảy ra lỗi trong quá trình tìm kiếm: {0}
Không thể mở thư mục
Không thể mở file
+ This new action keyword is already assigned to another plugin, please choose a different one
Xóa
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-cn.xaml
index 8ad979ac8..1cab71d8d 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-cn.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-cn.xaml
@@ -22,6 +22,7 @@
搜索时发生错误:{0}
无法打开文件夹
无法打开文件
+ This new action keyword is already assigned to another plugin, please choose a different one
删除
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
index 39f260499..d64cd7698 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
@@ -22,6 +22,7 @@
Error occurred during search: {0}
Could not open folder
Could not open file
+ This new action keyword is already assigned to another plugin, please choose a different one
刪除
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs
index 7292697ce..ae2235c5c 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/ViewModels/SettingsViewModel.cs
@@ -577,8 +577,8 @@ namespace Flow.Launcher.Plugin.Explorer.ViewModels
}
}
- public int MaxResultLowerLimit => 1;
- public int MaxResultUpperLimit => 100000;
+ public int MaxResultLowerLimit { get; } = 1;
+ public int MaxResultUpperLimit { get; } = 100000;
public int MaxResult
{
@@ -592,7 +592,7 @@ namespace Flow.Launcher.Plugin.Explorer.ViewModels
#region Everything FastSortWarning
- public List AllEverythingSortOptions = EverythingSortOptionLocalized.GetValues();
+ public List AllEverythingSortOptions { get; } = EverythingSortOptionLocalized.GetValues();
public EverythingSortOption SelectedEverythingSortOption
{
diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml
index 893948d3d..85188e622 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml
@@ -1,9 +1,9 @@
- Activate {0} plugin action keyword
+ {0} プラグインのアクションキーワード
- Plugin Indicator
- Provides plugins action words suggestions
+ プラグインインジケーター
+ プラグインのアクションキーワードの一覧を検索します
diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ja.xaml
index d62f0f61b..f51b692e6 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ja.xaml
@@ -2,69 +2,69 @@
- Downloading plugin
- Successfully downloaded
- Error: Unable to download the plugin
- {0} by {1} {2}{3}Would you like to uninstall this plugin? After the uninstallation Flow will automatically restart.
- {0} by {1} {2}{2}Would you like to uninstall this plugin?
- {0} by {1} {2}{3}Would you like to install this plugin? After the installation Flow will automatically restart.
- {0} by {1} {2}{2}Would you like to install this plugin?
- Plugin Install
- Installing Plugin
- Download and install {0}
- Plugin Uninstall
- Keep plugin settings
- Do you want to keep the settings of the plugin for the next usage?
+ プラグインをダウンロード中
+ {0} のダウンロードに成功
+ エラー: プラグインをダウンロードできません
+ {0} by {1} {2}{3}このプラグインをアンインストールしますか?アンインストール後、Flow Launcherは自動的に再起動されます。
+ {0} by {1} {2}{2}このプラグインをアンインストールしますか?
+ {0} by {1} {2}{3}このプラグインをインストールしますか?インストール後、Flow Launcherは自動的に再起動されます。
+ {0} by {1} {2}{2}このプラグインをインストールしますか?
+ プラグインのインストール
+ プラグインをインストール中
+ {0} をダウンロードしてインストール中
+ プラグインのアンインストール
+ プラグインの設定を保持
+ 再びインストールして使用するときのためにプラグインの設定を維持しますか?
Plugin successfully installed. Restarting Flow, please wait...
- Unable to find the plugin.json metadata file from the extracted zip file.
- Error: A plugin which has the same or greater version with {0} already exists.
- Error installing plugin
- Error occurred while trying to install {0}
- Error uninstalling plugin
- No update available
- All plugins are up to date
- {0} by {1} {2}{3}Would you like to update this plugin? After the update Flow will automatically restart.
- {0} by {1} {2}{2}Would you like to update this plugin?
- Plugin Update
- This plugin is already installed
- Plugin Manifest Download Failed
- Please check if you can connect to github.com. This error means you may not be able to install or update plugins.
- Update all plugins
- Would you like to update all plugins?
- Would you like to update {0} plugins?{1}Flow Launcher will restart after updating all plugins.
- Would you like to update {0} plugins?
- {0} plugins successfully updated. Restarting Flow, please wait...
- Plugin {0} successfully updated. Restarting Flow, please wait...
- Installing from an unknown source
- You are installing this plugin from an unknown source and it may contain potential risks!{0}{0}Please ensure you understand where this plugin is from and that it is safe.{0}{0}Would you like to continue still?{0}{0}(You can switch off this warning via settings)
+ 展開されたzipファイルからplugin.jsonメタデータファイルが見つかりません。
+ エラー: {0} と同じまたはそれ以上のバージョンを持つプラグインが既に存在します。
+ プラグインのインストール失敗
+ {0} のインストール中にエラーが発生しました
+ プラグインのアンインストール失敗
+ 利用可能な更新はありません
+ すべてのプラグインが最新です
+ {0} by {1} {2}{3}このプラグインを更新しますか?更新後、Flow Launcherは自動的に再起動されます。
+ {0} by {1} {2}{2}このプラグインを更新しますか?
+ プラグインの更新
+ このプラグインは既にインストールされています
+ プラグインマニフェストのダウンロードに失敗
+ github.com に接続できるかどうかを確認してください。このエラーはプラグインをインストールまたは更新できないことを意味します。
+ すべてのプラグインを更新
+ すべてのプラグインを更新しますか?
+ {0} 個のプラグインを更新してもよいですか?{1}すべてのプラグインを更新した後、Flow Launcher が再起動します。
+ {0} 個のプラグインを更新してもよいですか?
+ {0} 個のプラグインが正常に更新されました。Flow を再起動しています。お待ちください…
+ プラグイン {0} が正常に更新されました。Flow を再起動しています。お待ちください…
+ 不明なソースからインストール中
+ あなたは不明なソースから提供されたプラグインをインストールしようとしており、潜在的なリスクを含んでいる可能性があります!{0}{0}このプラグインの開発元をよく調べ、安全であることをご自身で確かめてください。{0}{0}それでもあなたはこのプラグインをインストールしますか?{0}{0}(この警告は設定で無効にすることができます)
- Plugin {0} successfully installed. Please restart Flow.
- Plugin {0} successfully uninstalled. Please restart Flow.
- Plugin {0} successfully updated. Please restart Flow.
- {0} plugins successfully updated. Please restart Flow.
- Plugin {0} has already been modified. Please restart Flow before making any further changes.
- {0} modified already
- Please restart Flow before making any further changes
+ プラグイン {0} のインストールに成功しました。Flow を再起動してください。
+ プラグイン {0} のアンインストールに成功しました。Flow を再起動してください。
+ プラグイン {0} が正常に更新されました。Flow を再起動してください。
+ {0} 個のプラグインが正常に更新されました。Flow を再起動してください。
+ プラグイン {0} は既に変更されています。Flow Launcher を再起動してからもう一度お試しください。
+ {0} は既に変更されています
+ これ以上変更を加える前に Flow Launcher を再起動してください
- Invalid zip installer file
- Please check if there is a plugin.json in {0}
+ 無効な zip インストーラーファイル
+ {0} に plugin.json があるか確認してください
- Plugins Manager
- Install, uninstall or update Flow Launcher plugins via the search window
- Unknown Author
+ プラグインマネージャー
+ 検索ウィンドウから Flow Launcher のプラグインをインストール、アンインストール、または更新する
+ 不明な作者
- Open website
- Visit the plugin's website
- See source code
- See the plugin's source code
- Suggest an enhancement or submit an issue
- Suggest an enhancement or submit an issue to the plugin developer
- Go to Flow's plugins repository
- Visit the PluginsManifest repository to see community-made plugin submissions
+ ウェブサイトを開く
+ プラグインのウェブサイトを開く
+ ソースコードを参照
+ プラグインのソースコードを見る
+ 改善を提案するか、問題を報告してください
+ プラグイン開発者に機能改善を提案するか問題を報告してください
+ Flow のプラグインリポジトリに移動
+ PluginsManifest リポジトリにアクセスして、コミュニティで作られたプラグインを表示する
不明な提供元からインストールするとき警告する
- Restart Flow Launcher automatically after installing/uninstalling/updating plugin via Plugins Manager
+ プラグインマネージャー経由でプラグインをインストール、アンインストール、または更新した後、Flow Lancher を自動的に再起動します
diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ru.xaml
index 18913c7c6..5ecd203f8 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/ru.xaml
@@ -56,8 +56,8 @@
Перейти на сайт
- Visit the plugin's website
- See source code
+ Перейти на сайт плагина
+ Посмотреть исходный код
See the plugin's source code
Suggest an enhancement or submit an issue
Suggest an enhancement or submit an issue to the plugin developer
diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml
index f788c9ce3..22d8aee6e 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/sk.xaml
@@ -66,5 +66,5 @@
Upozornenie na inštaláciu z neznámeho zdroja
- Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizáciu pluginu cez Správcu pluginov
+ Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizácii pluginu cez Správcu pluginov
diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj
index 2da97ebbd..0a7a02a45 100644
--- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj
+++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Flow.Launcher.Plugin.ProcessKiller.csproj
@@ -52,7 +52,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ja.xaml
index 0a7176d2c..bda1ec5f5 100644
--- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ja.xaml
@@ -1,14 +1,14 @@
- Process Killer
- Kill running processes from Flow Launcher
+ プロセスキラー
+ Flow Launcherから実行中のプロセスを終了します
- kill all instances of "{0}"
- kill {0} processes
- kill all instances
+ "{0}" のすべてのインスタンスを終了する
+ {0} プロセスを終了する
+ すべてのインスタンスを終了する
- Show title for processes with visible windows
- Put processes with visible windows on the top
+ ウィンドウが表示されているプロセスのタイトルを表示する
+ ウィンドウが表示されているプロセスを上に表示する
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj b/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj
index da2b19d7c..e9515fab4 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj
+++ b/Plugins/Flow.Launcher.Plugin.Program/Flow.Launcher.Plugin.Program.csproj
@@ -64,12 +64,12 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
\ No newline at end of file
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml
index 0134627c5..38879713d 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/ja.xaml
@@ -2,98 +2,98 @@
- Reset Default
+ デフォルトにリセット
削除
編集
追加
名前
- 有効
- Enabled
- 無効
- Status
- Enabled
- Disabled
+ 有効化
+ 有効
+ 無効化
+ 状態
+ 有効
+ 無効
場所
- All Programs
- File Type
- Reindex
- Indexing
- Index Sources
- Options
- UWP Apps
- When enabled, Flow will load UWP Applications
- Start Menu
- When enabled, Flow will load programs from the start menu
- Registry
- When enabled, Flow will load programs from the registry
- PATH
- When enabled, Flow will load programs from the PATH environment variable
+ すべてのプログラム
+ ファイルの種類
+ 再読み込み
+ インデックス作成中
+ インデックスのソース
+ オプション
+ UWP アプリ
+ 有効にすると、Flow は UWP アプリケーションを読み込みます
+ スタートメニュー
+ 有効にすると、Flowはスタートメニューからプログラムを読み込みます
+ レジストリー
+ 有効にすると、Flowはレジストリーからプログラムを読み込みます
+ PATH変数
+ 有効にすると、Flow は環境変数のPATHに登録されたフォルダーからプログラムを読み込みます
アプリのパスを非表示
UWPやlnkなどの実行可能ファイルについて、サブタイトル領域にファイルパスが表示されないようにします。
- Hide uninstallers
- Hides programs with common uninstaller names, such as unins000.exe
+ アンインストーラーを非表示
+ unins000.exe のような一般的な名前のアンインストーラのプログラムを非表示にします
プログラムの説明で検索
- Flow will search program's description
- Hide duplicated apps
- Hide duplicated Win32 programs that are already in the UWP list
- Suffixes
- Max Depth
+ Flow はプログラムの説明を検索します
+ 重複したアプリを非表示
+ UWPリストに既に存在するアプリと同じ名前の、Win32プログラムを非表示にする
+ 接尾辞
+ 最大の深さ
- Directory:
- Browse
- File Suffixes:
- Maximum Search Depth (-1 is unlimited):
+ フォルダー
+ 選択
+ ファイル名の末尾:
+ 最大の検索の深さ (-1に設定すると無制限):
- Please select a program source
- Are your sure to delete {0}?
- Please select program sources that are not added by you
- Please select program sources that are added by you
- Another program source with the same location already exists.
+ プログラムのソースを選択してください
+ 選択したプログラムソースを削除してもよろしいですか?
+ あなたが追加していないプログラムのソースを選択してください
+ あなたが追加したプログラムのソースを選択してください
+ 同じ場所を持つ別のプログラムのソースが既に存在します。
- Program Source
- Edit directory and status of this program source.
+ プログラムのソース
+ このプログラムのソースのフォルダーとステータスを編集します。
更新
- Program Plugin will only index files with selected suffixes and .url files with selected protocols.
+ プログラムプラグインは、選択されたファイル名の末尾と .url ファイルのみをインデックス化します。
Sucessfully update file suffixes
- File suffixes can't be empty
- Protocols can't be empty
+ ファイル名の末尾は空にできません
+ プロトコルは空にできません
Index file suffixes
- URL Protocols
- Steam Games
- Epic Games
+ ショートカット(URL)
+ Steam ゲーム
+ Epic ゲーム
Http/Https
- Custom URL Protocols
- Custom File Suffixes
+ カスタムURLプロトコルを指定
+ カスタムファイル名の末尾を指定
- Insert file suffixes you want to index. Suffixes should be separated by ';'. (ex>bat;py)
+ インデックスするファイル名の末尾を入力してください。サフィックスは';'で区切る必要があります。(例>bat;py)
- Insert protocols of .url files you want to index. Protocols should be separated by ';', and should end with "://". (ex>ftp://;mailto://)
+ インデックスしたい.urlファイルのプロトコルを入力してください。プロトコルは';'で区切られ、"://"で終了する必要があります。(例>ftp://;mailto://)
別のユーザーとして実行
管理者として実行
- Open containing folder
- Hide
- Open target folder
+ 保存先のフォルダーを開く
+ 非表示にする
+ ターゲットフォルダーを開く
プログラム
Flow Launcherでプログラムを検索
- Invalid Path
+ 不正なパス
- Customized Explorer
- Args
- You can customize the explorer used for opening the container folder by inputing the Environmental Variable of the explorer you want to use. It will be useful to use CMD to test whether the Environmental Variable is available.
- Enter the customized args you want to add for your customized explorer. %s for parent directory, %f for full path (which only works for win32). Check the explorer's website for details.
+ カスタムされたエクスプローラー
+ 引数
+ エクスプローラーで使用したい環境変数を入力することで、コンテナフォルダを開く際に使用するエクスプローラをカスタマイズできます。 環境変数が利用可能かどうかをテストするために、コマンドプロンプトを使用すると便利です。
+ カスタマイズされたエクスプローラに追加したいカスタムの引数を入力します。 %s は親ディレクトリ、 %f はフルパス (win32でのみ動作します)です。 詳細についてはエクスプローラのウェブサイトをご覧ください。
- 成功しまし
- Error
- Successfully disabled this program from displaying in your query
- This app is not intended to be run as administrator
- Unable to run {0}
+ 成功しました
+ エラー
+ このプログラムは検索結果に表示されなくなりました
+ このアプリは管理者として実行されることを想定されていません
+ {0} を実行できません
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Main.cs b/Plugins/Flow.Launcher.Plugin.Program/Main.cs
index 7c30c0c96..0258a10d2 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Main.cs
@@ -31,7 +31,7 @@ namespace Flow.Launcher.Plugin.Program
internal static PluginInitContext Context { get; private set; }
- private static readonly List emptyResults = new();
+ private static readonly List emptyResults = [];
private static readonly MemoryCacheOptions cacheOptions = new() { SizeLimit = 1560 };
private static MemoryCache cache = new(cacheOptions);
@@ -84,7 +84,6 @@ namespace Flow.Launcher.Plugin.Program
{
await _win32sLock.WaitAsync(token);
await _uwpsLock.WaitAsync(token);
-
try
{
// Collect all UWP Windows app directories
@@ -117,7 +116,7 @@ namespace Flow.Launcher.Plugin.Program
}
}, token);
- resultList = resultList.Any() ? resultList : emptyResults;
+ resultList = resultList.Count != 0 ? resultList : emptyResults;
entry.SetSize(resultList.Count);
entry.SetSlidingExpiration(TimeSpan.FromHours(8));
@@ -250,14 +249,26 @@ namespace Flow.Launcher.Plugin.Program
}
await _win32sLock.WaitAsync();
- _win32s = await context.API.LoadCacheBinaryStorageAsync(Win32CacheName, pluginCacheDirectory, new List());
- _win32sCount = _win32s.Count;
- _win32sLock.Release();
+ try
+ {
+ _win32s = await context.API.LoadCacheBinaryStorageAsync(Win32CacheName, pluginCacheDirectory, new List());
+ _win32sCount = _win32s.Count;
+ }
+ finally
+ {
+ _win32sLock.Release();
+ }
await _uwpsLock.WaitAsync();
- _uwps = await context.API.LoadCacheBinaryStorageAsync(UwpCacheName, pluginCacheDirectory, new List());
- _uwpsCount = _uwps.Count;
- _uwpsLock.Release();
+ try
+ {
+ _uwps = await context.API.LoadCacheBinaryStorageAsync(UwpCacheName, pluginCacheDirectory, new List());
+ _uwpsCount = _uwps.Count;
+ }
+ finally
+ {
+ _uwpsLock.Release();
+ }
});
Context.API.LogInfo(ClassName, $"Number of preload win32 programs <{_win32sCount}>");
Context.API.LogInfo(ClassName, $"Number of preload uwps <{_uwpsCount}>");
@@ -408,38 +419,46 @@ namespace Flow.Launcher.Plugin.Program
return;
await _uwpsLock.WaitAsync();
- if (_uwps.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier))
+ var reindexUwps = true;
+ try
{
+ reindexUwps = _uwps.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier);
var program = _uwps.First(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier);
program.Enabled = false;
_settings.DisabledProgramSources.Add(new ProgramSource(program));
+ }
+ finally
+ {
_uwpsLock.Release();
+ }
- // Reindex UWP programs
+ // Reindex UWP programs
+ if (reindexUwps)
+ {
_ = Task.Run(IndexUwpProgramsAsync);
return;
}
- else
- {
- _uwpsLock.Release();
- }
await _win32sLock.WaitAsync();
- if (_win32s.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier))
+ var reindexWin32s = true;
+ try
{
+ reindexWin32s = _win32s.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier);
var program = _win32s.First(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier);
program.Enabled = false;
_settings.DisabledProgramSources.Add(new ProgramSource(program));
- _win32sLock.Release();
-
- // Reindex Win32 programs
- _ = Task.Run(IndexWin32ProgramsAsync);
- return;
}
- else
+ finally
{
_win32sLock.Release();
}
+
+ // Reindex Win32 programs
+ if (reindexWin32s)
+ {
+ _ = Task.Run(IndexWin32ProgramsAsync);
+ return;
+ }
}
public static void StartProcess(Func runProcess, ProcessStartInfo info)
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs b/Plugins/Flow.Launcher.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs
index b89a2a6ba..2a6a3e987 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs
@@ -19,18 +19,30 @@ namespace Flow.Launcher.Plugin.Program.Views.Commands
internal static async Task DisplayAllProgramsAsync()
{
await Main._win32sLock.WaitAsync();
- var win32 = Main._win32s
+ try
+ {
+ var win32 = Main._win32s
.Where(t1 => !ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier))
.Select(x => new ProgramSource(x));
- ProgramSetting.ProgramSettingDisplayList.AddRange(win32);
- Main._win32sLock.Release();
+ ProgramSetting.ProgramSettingDisplayList.AddRange(win32);
+ }
+ finally
+ {
+ Main._win32sLock.Release();
+ }
await Main._uwpsLock.WaitAsync();
- var uwp = Main._uwps
+ try
+ {
+ var uwp = Main._uwps
.Where(t1 => !ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier))
.Select(x => new ProgramSource(x));
- ProgramSetting.ProgramSettingDisplayList.AddRange(uwp);
- Main._uwpsLock.Release();
+ ProgramSetting.ProgramSettingDisplayList.AddRange(uwp);
+ }
+ finally
+ {
+ Main._uwpsLock.Release();
+ }
}
internal static async Task SetProgramSourcesStatusAsync(List selectedProgramSourcesToDisable, bool status)
@@ -44,24 +56,36 @@ namespace Flow.Launcher.Plugin.Program.Views.Commands
}
await Main._win32sLock.WaitAsync();
- foreach (var program in Main._win32s)
+ try
{
- if (selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == program.UniqueIdentifier && program.Enabled != status))
+ foreach (var program in Main._win32s)
{
- program.Enabled = status;
+ if (selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == program.UniqueIdentifier && program.Enabled != status))
+ {
+ program.Enabled = status;
+ }
}
}
- Main._win32sLock.Release();
+ finally
+ {
+ Main._win32sLock.Release();
+ }
await Main._uwpsLock.WaitAsync();
- foreach (var program in Main._uwps)
+ try
{
- if (selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == program.UniqueIdentifier && program.Enabled != status))
+ foreach (var program in Main._uwps)
{
- program.Enabled = status;
+ if (selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == program.UniqueIdentifier && program.Enabled != status))
+ {
+ program.Enabled = status;
+ }
}
}
- Main._uwpsLock.Release();
+ finally
+ {
+ Main._uwpsLock.Release();
+ }
}
internal static void StoreDisabledInSettings()
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/ja.xaml
index 440d33697..475a6b4fb 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/ja.xaml
@@ -1,20 +1,20 @@
- Replace Win+R
- Close Command Prompt after pressing any key
- Press any key to close this window...
- Do not close Command Prompt after command execution
- Always run as administrator
- Use Windows Terminal
- Run as different user
- Shell
- Allows to execute system commands from Flow Launcher
- this command has been executed {0} times
- execute command through command shell
+ Win+Rを置き換え
+ 任意のキーを押して、実行後のコマンドプロンプトを閉じる
+ このウィンドウを閉じるには、任意のキーを押してください…
+ コマンド実行後にコマンドプロンプトを閉じない
+ 常に管理者として実行
+ Windows ターミナルを使用する
+ 別のユーザーとして実行
+ シェル
+ Flow Launcherからシステムコマンドを実行できます
+ このコマンドは {0} 回実行されました
+ コマンドシェル経由でコマンドを実行する
管理者として実行
- Copy the command
- Only show number of most used commands:
- Command not found: {0}
- Error running the command: {0}
+ コマンドをコピー
+ コマンド履歴に表示されるコマンドの最大数:
+ コマンドが見つかりません: {0}
+ コマンド実行中にエラーが発生しました: {0}
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 8e54e1894..44fc9a8cf 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Flow.Launcher.Plugin.Sys.csproj
@@ -58,7 +58,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml
index 398c39c9f..00aa91fb9 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ja.xaml
@@ -8,12 +8,12 @@
シャットダウン
再起動
- Restart With Advanced Boot Options
- Log Off/Sign Out
- Lock
- Sleep
- Hibernate
- Index Option
+ 詳細ブートオプションで再起動
+ ログオフ / サインアウト
+ ロック
+ スリープ
+ 休止状態
+ 検索のオプション
ごみ箱を空にする
ごみ箱を開く
終了
@@ -21,19 +21,19 @@
Flow Launcherを再起動する
設定
プラグインデータのリロード
- Check For Update
- Open Log Location
- Flow Launcher Tips
- Flow Launcher UserData Folder
- Toggle Game Mode
- Set the Flow Launcher Theme
+ 更新を確認
+ ログの場所を開く
+ Flow Launcher のヒント
+ Flow Launcher のユーザーデータフォルダー
+ ゲームモードの切り替え
+ Flow Launcher のテーマを設定
編集
コンピュータをシャットダウンする
コンピュータを再起動する
- Restart the computer with Advanced Boot Options for Safe and Debugging modes, as well as other options
+ セーフモードおよびデバッグモードやその他のオプションを使用するため、コンピュータを再起動して詳細ブートオプションを表示します
ログオフ
このコンピュータをロックする
Flow Launcherを終了する
@@ -42,36 +42,36 @@
スリープ
ゴミ箱を空にする
ごみ箱を開く
- Indexing Options
- Hibernate computer
- Save all Flow Launcher settings
- Refreshes plugin data with new content
- Open Flow Launcher's log location
- Check for new Flow Launcher update
- Visit Flow Launcher's documentation for more help and how to use tips
- Open the location where Flow Launcher's settings are stored
- Toggle Game Mode
- Quickly change the Flow Launcher theme
+ インデックスのオプション
+ コンピューターを休止状態にする
+ Flow Launcher の全ての設定を保存
+ プラグインのデータを再読み込みし、新しいコンテンツを適用する
+ Flow Launcher のログがある場所を開く
+ 新しい Flow Launcher の更新を確認する
+ Flow Launcher のドキュメントを開いて、ヘルプと使い方のヒントを確認する
+ Flow Launcher の設定が保存されている場所を開く
+ ゲームモードの切り替え
+ Flow Launcher のテーマを素早く変更する
- 成功しまし
- All Flow Launcher settings saved
- Reloaded all applicable plugin data
- Are you sure you want to shut the computer down?
+ 成功
+ Flow Launcher のすべての設定が保存されました
+ 該当するすべてのプラグインデータを再読み込みしました
+ 本当にコンピューターをシャットダウンしますか?
本当にコンピューターを再起動しますか?
高度な起動オプションでコンピューターを再起動しますか?
本当にログオフしますか?
- Error
- Failed to empty the recycle bin. This might happen if:{0}- Some items are currently in use{0}- Some items can't be deleted due to permissions{0}Please close any applications that might be using these files and try again.
+ エラー
+ ゴミ箱を空にできませんでした。以下の原因が考えられます:{0}ー 現在使用中のアイテムがある{0}- 権限が原因で削除できないアイテムがある{0}ファイルを使用しているアプリケーションを終了してから、再度お試しください。
- Command Keyword Setting
- Custom Command Keyword
- Enter a keyword to search for command: {0}. This keyword is used to match your query.
- Command Keyword
+ コマンドキーワードの設定
+ カスタムのコマンドキーワード
+ コマンド: {0}を検索するキーワードを入力してください。このキーワードはクエリに一致するために使用されます。
+ コマンドキーワード
リセット
確認
キャンセル
- Please enter a non-empty command keyword
+ 空でないコマンドキーワードを入力してください
システムコマンド
システム関連のコマンドを提供します。例:シャットダウン、ロック、設定など
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml
index 69746e836..0313a7918 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/ru.xaml
@@ -69,11 +69,11 @@
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.Url/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml
index 532ff793d..4275713a1 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/ja.xaml
@@ -1,9 +1,9 @@
- Open search in:
- New Window
- New Tab
+ 検索を開く:
+ 新しいウィンドウ
+ 新しいタブ
次のURLを開く:{0}
次のURLを開くことができません:{0}
@@ -11,7 +11,7 @@
URL
入力したURLをFlow Launcherから開くプラグインです。
- Please set your browser path:
- Choose
+ ブラウザのパスを設定してください:
+ 選択
Application(*.exe)|*.exe|All files|*.*
diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml
index 5110f65ef..15c1eeadb 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/ru.xaml
@@ -2,8 +2,8 @@
Open search in:
- New Window
- New Tab
+ Новое окно
+ Новая вкладка
Open url:{0}
Can't open url:{0}
diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml
index 16c5fb3e9..ebc7d6196 100644
--- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml
+++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ja.xaml
@@ -1,37 +1,38 @@
- Search Source Setting
- Open search in:
- New Window
- New Tab
- Set browser from path:
- Choose
+ 検索ソース設定
+ 検索を開く:
+ 新しいウィンドウ
+ 新しいタブ
+ 以下のパスからブラウザーを設定:
+ 選択
削除
編集
追加
- Enabled
- Private Mode
- Enabled
- Disabled
- Confirm
+ 有効化
+ プライベートモード
+ 有効
+ 無効
+ 確認
キーワード
URL
検索
- Use Search Query Autocomplete
- Autocomplete Data from:
+ 検索クエリのサジェストを有効にする
+ サジェストデータの情報源:
web検索を選択してください
- Are you sure you want to delete {0}?
- If you want to add a search for a particular website to Flow, first enter a dummy text string in the search bar of that website, and launch the search. Now copy the contents of the browser's address bar, and paste it in the URL field below. Replace your test string with {q}. For example, if you search for casino on Netflix, its address bar reads
- https://www.netflix.com/search?q=Casino
+ {0} を削除してもよろしいですか?
+ 特定のウェブサイトでの検索をFlowに追加したい場合、まず、 ウェブサイトの検索バーにダミーの文字列を入力して検索を開始します。 次に、ブラウザのアドレスバーの内容をコピーし、下のURLフィールドに貼り付けます。 テスト文字列を {q}に置き換えます。例えば、Netflixでカジノを検索すると、アドレスバーは以下のようになります
+ https://www.netflix.com/search?q=Casino
- Now copy this entire string and paste it in the URL field below.
- Then replace casino with {q}.
- Thus, the generic formula for a search on Netflix is https://www.netflix.com/search?q={q}
+ コピーしたURLを下のURL欄に貼り付けてください。
+ 次に、casinoという文字列を{q}に置き換えます。
+ すると、Netflixで検索を行うためのURLは以下のようになります
+https://www.netflix.com/search?q={q}
- Copy URL
- Copy search URL to clipboard
+ URL をコピー
+ 検索URLをクリップボードにコピーする
タイトル
@@ -44,7 +45,7 @@
キーワードを入力してください
URLを入力してください
キーワードはすでに存在します。違うキーワードを入力してください
- 成功しまし
+ 成功しました
Hint: You do not need to place custom images in this directory, if Flow's version is updated they will be lost. Flow will automatically copy any images outside of this directory across to WebSearch's custom image location.
Web検索
diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml
index 67435b5b9..6539f9617 100644
--- a/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml
+++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Languages/ru.xaml
@@ -3,25 +3,25 @@
Search Source Setting
Open search in:
- New Window
- New Tab
+ Новое окно
+ Новая вкладка
Установить браузер по пути:
Выберите
Удалить
Редактировать
Добавить
- Enabled
+ Включено
Приватный режим
- Enabled
+ Включено
Отключён
- Confirm
+ Подтвердить
Action Keyword
URL
- Search
+ Поиск
Use Search Query Autocomplete
Autocomplete Data from:
Please select a web search
- Are you sure you want to delete {0}?
+ Вы уверены, что хотите удалить {0}?
If you want to add a search for a particular website to Flow, first enter a dummy text string in the search bar of that website, and launch the search. Now copy the contents of the browser's address bar, and paste it in the URL field below. Replace your test string with {q}. For example, if you search for casino on Netflix, its address bar reads
https://www.netflix.com/search?q=Casino
@@ -34,13 +34,13 @@
Copy search URL to clipboard
- Title
+ Название
Состояние
- Select Icon
- Icon
+ Выбрать иконку
+ Иконка
Отменить
Invalid web search
- Please enter a title
+ Пожалуйста, укажите название
Please enter an action keyword
Please enter a URL
Action keyword already exists, please enter a different one
diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ja-JP.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ja-JP.resx
index 6625a42dd..3a2f991a1 100644
--- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ja-JP.resx
+++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.ja-JP.resx
@@ -251,10 +251,10 @@
アプリ
- クロックとリージョン
+ 時計とリージョン
- Control Panel
+ コントロールパネル
Cortana
@@ -456,7 +456,7 @@
Area Personalization
-
+ コマンド
The command to direct start a setting
@@ -468,7 +468,7 @@
Area Privacy
- Control Panel
+ コントロールパネル
Type of the setting is a "(legacy) Control Panel setting"
@@ -1117,7 +1117,7 @@
Area Control Panel (legacy settings)
-
+ パスワード
password.cpl
@@ -1667,7 +1667,7 @@
Area UserAccounts
- Windows Insider Program
+ Windows Insider プログラム
Area UpdateAndSecurity
@@ -2314,7 +2314,7 @@
View all problem reports
- 16-Bit Application Support
+ 16 ビットアプリケーションのサポート
Set up dialling rules
@@ -2326,10 +2326,10 @@
Give administrative rights to a domain user
- Choose when to turn off display
+ 表示をオフにするタイミングを選択
- Move the pointer with the keypad using MouseKeys
+ マウスキーを使用してキーパッドでポインタを移動する
Change Windows SideShow-compatible device settings
@@ -2338,16 +2338,16 @@
Adjust commonly used mobility settings
- Change text-to-speech settings
+ テキスト読み上げの設定を変更
- Set the time and date
+ 時刻と日付を設定
- Change location settings
+ 位置情報の設定を変更
- Change mouse settings
+ マウスの設定を変更
Manage Storage Spaces
@@ -2362,46 +2362,46 @@
Change system sounds
- Adjust ClearType text
+ ClearTypeテキストを調整
- Turn screen saver on or off
+ スクリーンセーバーのオン/オフを切り替え
- Find and fix windows update problems
+ Windows Update の問題を見つけて修正
- Change Bluetooth settings
+ Bluetooth 設定の変更
- Connect to a network
+ ネットワークに接続
- Change the search provider in Internet Explorer
+ Internet Explorer の検索プロバイダを変更する
Join a domain
- Add a device
+ 端末を追加
- Find and fix problems with Windows Search
+ Windows検索の問題を見つけて解決
- Choose a power plan
+ 電源プランを選択
Change how the mouse pointer looks when it’s moving
- Uninstall a program
+ プログラムのアンインストール
Create and format hard disk partitions
- Change date, time or number formats
+ 日付、時刻、数の書式を変更
Change PC wake-up settings
@@ -2416,10 +2416,10 @@
Manage advanced sharing settings
- Change battery settings
+ バッテリー設定の変更
- Rename this computer
+ このコンピューターの名前を変更
Lock or unlock the taskbar
@@ -2431,7 +2431,7 @@
Change the time zone
- Start speech recognition
+ 音声認識を開始
View installed updates
@@ -2458,34 +2458,34 @@
Restore data, files or computer from backup (Windows 7)
- Set your default programs
+ 既定のプログラムを設定
Set up a broadband connection
- Calibrate the screen for pen or touch input
+ ペンまたはタッチ入力の画面をキャリブレーション
Manage user certificates
- Schedule tasks
+ タスクのスケジュール
- Ignore repeated keystrokes using FilterKeys
+ フィルタキーを使用して繰り返しのキー入力を無視
- Find and fix bluescreen problems
+ ブルースクリーンの問題を見つけて修正
Hear a tone when keys are pressed
- Delete browsing history
+ 閲覧履歴を削除
- Change what the power buttons do
+ 電源ボタンの動作を変更
Create standard user account
@@ -2494,21 +2494,21 @@
Take speech tutorials
- View system resource usage in Task Manager
+ タスク マネージャーでシステム リソースの使用状況を表示
- Create an account
+ アカウントを新規作成
- Get more features with a new edition of Windows
+ Windowsの新しいエディションでより多くの機能を入手
- Control Panel
+ コントロールパネル
TaskLink
- Unknown
+ 不明
\ No newline at end of file
diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx
index d920e7550..746499a42 100644
--- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx
+++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.tr-TR.resx
@@ -1773,13 +1773,13 @@
Sorunları bul ve düzelt
- Change settings for content received using Tap and send
+ Dokun ve gönder kullanılarak alınan içerik için ayarları değiştir
Medya veya cihazlar için varsayılan ayarları değiştir
- Print the speech reference card
+ Konuşma referans kartını yazdır
Ekran rengini kalibre et
@@ -1815,13 +1815,13 @@
Fare düğmelerini özelleştir
- Set tablet buttons to perform certain tasks
+ Belirli görevleri gerçekleştirmek için tablet düğmelerini ayarla
Yüklü yazı tiplerini görüntüle
- Change the way currency is displayed
+ Para biriminin görüntülenme şeklini değiştirme
Grup ilkesini düzenle
@@ -1908,7 +1908,7 @@
Güvenilirlik geçmişini görüntüle
- Access RemoteApp and desktops
+ RemoteApp ve masaüstlerine eriş
ODBC veri kaynaklarını ayarla
@@ -1926,7 +1926,7 @@
Microsoft Pinyin SimpleFast Seçenekleri
- Change what closing the lid does
+ Güç düğmesiyle kapatmanın ne yapacağını değiştirin
Gereksiz animasyonları kapat
@@ -1935,16 +1935,16 @@
Geri yükleme noktası oluştur
- Turn off automatic window arrangement
+ Otomatik pencere düzenlemesini kapatın
Sorun Giderme Geçmişi
- Diagnose your computer's memory problems
+ Bilgisayarınızın bellek sorunlarını teşhis edin
- View recommended actions to keep Windows running smoothly
+ Windows'un sorunsuz çalışmasını sağlamak için önerilen eylemleri görüntüleyin
İmleç yanıp sönme hızını değiştir
@@ -1956,22 +1956,22 @@
Parola sıfırlama diski oluştur
- Configure advanced user profile properties
+ Gelişmiş kullanıcı profili özelliklerini yapılandır
- Start or stop using AutoPlay for all media and devices
+ Tüm medya ve aygıtlar için Otomatik Kullan'ı etkinleştir veya devre dışı bırak
- Change Automatic Maintenance settings
+ Otomatik Bakım ayarlarını değiştir
Açmak için tek veya çift tıkla
- Select users who can use remote desktop
+ Uzak masaüstünü kullanabilecek kullanıcıları seç
- Show which programs are installed on your computer
+ Bilgisayarımda hangi programların yüklü olduğunu göster
Bilgisayarınıza uzaktan erişime izin ver
@@ -1986,22 +1986,22 @@
Klavyenin çalışma şeklini değiştir
- Automatically adjust for daylight saving time
+ Gün ışığından yararlanma saatine göre otomatik ayarla
- Change the order of Windows SideShow gadgets
+ Windows SideShow araçlarının sırasını değiştir
Klavye durumunu kontrol et
- Control the computer without the mouse or keyboard
+ Bilgisayarı fare veya klavye olmadan kontrol et
Bir programı değiştir veya kaldır
- Change multi-touch gesture settings
+ Çoklu dokunma hareketi ayarlarını değiştir
ODBC veri kaynaklarını ayarla (64-bit)
@@ -2016,7 +2016,7 @@
Görev çubuğunda benzer pencereleri gruplama
- Change Windows SideShow settings
+ Windows SideShow ayarlarını değiştir
Video için sesli açıklama kullan
@@ -2058,13 +2058,13 @@
Çevrim dışı dosyaları yönet
- Review your computer's status and resolve issues
+ Bilgisayarınızın durumunu gözden geçirin ve sorunları çözün
Microsoft ChangJie Ayarları
- Replace sounds with visual cues
+ Sesleri görsel ipuçlarıyla değiştirin
Geçici İnternet dosyası ayarlarını değiştir
@@ -2082,7 +2082,7 @@
Kurtarma anahtarınızı yedekleyin
- Save backup copies of your files with File History
+ Dosya Geçmişi ile dosyalarınızın yedek kopyalarını kaydedin
Geçerli erişilebilirlik ayarlarını görüntüle
@@ -2103,7 +2103,7 @@
Sistem ses seviyesini ayarla
- Defragment and optimise your drives
+ Sürücülerinizi birleştirin ve optimize edin
ODBC veri kaynaklarını ayarla (32-bit)
@@ -2112,16 +2112,16 @@
Yazı Tipi Ayarlarını Değiştir
- Magnify portions of the screen using Magnifier
+ Büyüteç kullanarak ekranın bazı bölümlerini büyütme
- Change the file type associated with a file extension
+ Bir dosya uzantısı ile ilişkili dosya türünü değiştir
Olay günlüklerini görüntüle
- Manage Windows Credentials
+ Windows Kimlik Bilgilerini Yönet
Bir mikrofon ayarla
@@ -2173,10 +2173,10 @@
Fare tıklama ayarlarını değiştir
- Change advanced colour management settings for displays, scanners and printers
+ Ekranlar, tarayıcılar ve yazıcılar için gelişmiş renk yönetimi ayarlarını değiştirme
- Let Windows suggest Ease of Access settings
+ Windows'un Erişim Kolaylığı ayarlarını önermesine izin verin
Gereksiz dosyaları silerek disk alanını temizle
@@ -2188,7 +2188,7 @@
Özel Karakter Düzenleyici
- Record steps to reproduce a problem
+ Bir sorunu yeniden üretmek için adımları kaydedin
Windows'un görünümünü ve performansını ayarla
@@ -2209,7 +2209,7 @@
Windows'un arama şeklini değiştir
- Set flicks to perform certain tasks
+ Belirli görevleri gerçekleştirmek için fiskeleri ayarla
Hesap türünü değiştir
@@ -2239,13 +2239,13 @@
Bağlantıları nasıl açacağınızı seçin
- Allow Remote Assistance invitations to be sent from this computer
+ Bu bilgisayara Uzaktan Yardım bağlantılarına izin ver
Görev Yöneticisi
- Turn flicks on or off
+ Fiskeleri açın veya kapatın
Bir dil ekleyin
@@ -2254,7 +2254,7 @@
Ağ durumunu ve görevlerini görüntüle
- Turn Magnifier on or off
+ Büyüteci aç veya kapat
Bu bilgisayarın adına bakın
@@ -2320,22 +2320,22 @@
Arama kurallarını ayarla
- Enable or disable session cookies
+ Oturum çerezlerini etkinleştir veya devre dışı bırak
- Give administrative rights to a domain user
+ Bir etki alanı kullanıcısına yönetici hakları verme
- Choose when to turn off display
+ Ekranın ne zaman kapatılacağını seçin
- Move the pointer with the keypad using MouseKeys
+ MouseKeys kullanarak imleci tuş takımıyla hareket ettirme
- Change Windows SideShow-compatible device settings
+ Windows SideShow uyumlu cihaz ayarlarını değiştir
- Adjust commonly used mobility settings
+ Sık kullanılan mobilite ayarlarını yapın
Metinden sese ayarlarını değiştir
@@ -2362,7 +2362,7 @@
Sistem seslerini değiştir
- Adjust ClearType text
+ ClearType metnini ayarla
Ekran koruyucuyu aç/kapat
@@ -2392,7 +2392,7 @@
Bir güç planı seç
- Change how the mouse pointer looks when it’s moving
+ Fare işaretçisinin hareket ederken nasıl görüneceğini değiştir
Bir program kaldır
@@ -2443,7 +2443,7 @@
Dosya ve klasörler için arama seçeneklerini değiştir
- Adjust settings before giving a presentation
+ Sunum yapmadan önce ayarları yapın
Bir belgeyi veya resmi tara
@@ -2464,7 +2464,7 @@
Geniş bant bağlantısı kur
- Calibrate the screen for pen or touch input
+ Kalem veya dokunmatik giriş için ekranı kalibre edin
Kullanıcı sertifikalarını yönet
@@ -2473,7 +2473,7 @@
Görevleri planla
- Ignore repeated keystrokes using FilterKeys
+ Filtre Tuşları kullanarak tekrarlanan tuş vuruşlarını yok say
Mavi ekran sorunlarını bul ve düzelt
diff --git a/appveyor.yml b/appveyor.yml
index 911e30423..f95b8dc08 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,4 +1,4 @@
-version: '2.0.0.{build}'
+version: '2.0.1.{build}'
# Do not build on tags because we create a release on merge to master. Otherwise will upload artifacts twice changing the hash, as well as triggering duplicate GitHub release action & NuGet deployments.
skip_tags: true