Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
d2f8663
feat(search): add unicode character removal for fuzzy matching
4yinn Mar 15, 2026
03164fb
Fix typos
Jack251970 Mar 15, 2026
f905530
Check query nullability
Jack251970 Mar 15, 2026
17b2970
feat: add accent normalization with optimized memory usage and toggle…
4yinn Mar 27, 2026
0588fa6
Merge branch 'feature/4149-diacritics-insensitive-search' of https://…
4yinn Mar 27, 2026
c270c9d
feat: add restart button when toggling Sensitive Accents
4yinn Mar 28, 2026
6dfb208
feat: add translations for more languages
4yinn Mar 28, 2026
0059f3e
remove empty space
4yinn Mar 28, 2026
352fdc7
Revert "feat: add translations for more languages"
4yinn Mar 28, 2026
bb10b1f
refactor: remove translations
4yinn Mar 28, 2026
99e7810
refactor: rename to IgnoreAccents for better clarity
4yinn Mar 28, 2026
56973ed
fix: update tests
4yinn Mar 28, 2026
b6028dc
fix: remove emptyspace
4yinn Mar 28, 2026
a52a6af
feat: optimize and stabilize string normalization in StringMatcher
4yinn Mar 28, 2026
839b978
Revert "feat: optimize and stabilize string normalization in StringMa…
4yinn Mar 28, 2026
c2df52e
feat: optimize and stabilize string normalization in StringMatcher
4yinn Mar 28, 2026
99f2b3b
Merge branch 'dev' into feature/4149-diacritics-insensitive-search
4yinn Mar 28, 2026
54a458d
test: provide Settings via constructor for StringMatcher in tests
4yinn Mar 28, 2026
2c53648
refactor: adjust IgnoreAccents handling logic in StringMatcher
4yinn Mar 30, 2026
52bb34f
feat: translate text to English
4yinn Mar 30, 2026
0559145
refactor: replace IPublicApi instance calls with App.API
4yinn Mar 30, 2026
7732442
Refactor: Improved code readability and clarity
4yinn Mar 31, 2026
b7bd1cc
Improve code quality
Jack251970 Mar 31, 2026
2228633
Reorder "Ignore Accents" settings card and InfoBar
Jack251970 Mar 31, 2026
4cbe223
Update ignoreAccents text to refer to all results
Jack251970 Mar 31, 2026
c945d08
Update StringMatcher to react to QuerySearchPrecision changes
Jack251970 Apr 3, 2026
e0f7722
Add StringMatcherBehaviorChanged event to Settings
Jack251970 Apr 3, 2026
459a369
feat: remove btn restart
4yinn Apr 3, 2026
0228f7a
Update ignoreAccents tooltip and add UpdateApp method
Jack251970 Apr 3, 2026
7607844
Add icon to "Ignore Accents" SettingsCard
Jack251970 Apr 4, 2026
2ab6405
feat: add more characters to support additional languages
4yinn Apr 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 54 additions & 15 deletions Flow.Launcher.Infrastructure/StringMatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@
using Flow.Launcher.Plugin.SharedModels;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using Flow.Launcher.Infrastructure.UserSettings;

namespace Flow.Launcher.Infrastructure
{
public class StringMatcher
{
private readonly MatchOption _defaultMatchOption = new();

private readonly Settings _settings;
public SearchPrecisionScore UserSettingSearchPrecision { get; set; }

private readonly IAlphabet _alphabet;
Expand All @@ -19,6 +21,7 @@
{
_alphabet = alphabet;
UserSettingSearchPrecision = settings.QuerySearchPrecision;
_settings = settings;
}

// This is a workaround to allow unit tests to set the instance
Expand All @@ -41,7 +44,7 @@
/// Current method has two parts, Acronym Match and Fuzzy Search:
///
/// Acronym Match:
/// Charater listed below will be considered as acronym

Check warning on line 47 in Flow.Launcher.Infrastructure/StringMatcher.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`Charater` is not a recognized word. (unrecognized-spelling)
/// 1. Character on index 0
/// 2. Character appears after a space
/// 3. Character that is UpperCase
Expand Down Expand Up @@ -80,10 +83,16 @@
int acronymsTotalCount = 0;
int acronymsMatched = 0;

var fullStringToCompareAndNormalize = opt.IgnoreCase ? Normalize(stringToCompare) : stringToCompare;
Comment thread
Jack251970 marked this conversation as resolved.
Outdated
var queryWithoutCaseAndNormalize = opt.IgnoreCase ? Normalize(query) : query;

var fullStringToCompareWithoutCase = opt.IgnoreCase ? stringToCompare.ToLower() : stringToCompare;
var queryWithoutCase = opt.IgnoreCase ? query.ToLower() : query;

var querySubstrings = queryWithoutCase.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var fullStringToCompare = _settings.SensitiveAccents ? fullStringToCompareAndNormalize : fullStringToCompareWithoutCase;
var queryToCompare = _settings.SensitiveAccents ? queryWithoutCaseAndNormalize : queryWithoutCase;
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated

var querySubstrings = queryToCompare.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int currentQuerySubstringIndex = 0;
var currentQuerySubstring = querySubstrings[currentQuerySubstringIndex];
var currentQuerySubstringCharacterIndex = 0;
Expand All @@ -98,7 +107,9 @@
var indexList = new List<int>();
List<int> spaceIndices = new List<int>();

for (var compareStringIndex = 0; compareStringIndex < fullStringToCompareWithoutCase.Length; compareStringIndex++)
for (var compareStringIndex = 0;
compareStringIndex < fullStringToCompare.Length;
compareStringIndex++)
{
// If acronyms matching successfully finished, this gets the remaining not matched acronyms for score calculation
if (currentAcronymQueryIndex >= query.Length && acronymsMatched == query.Length)
Expand All @@ -114,14 +125,14 @@

// To maintain a list of indices which correspond to spaces in the string to compare
// To populate the list only for the first query substring
if (fullStringToCompareWithoutCase[compareStringIndex] == ' ' && currentQuerySubstringIndex == 0)
if (fullStringToCompare[compareStringIndex] == ' ' && currentQuerySubstringIndex == 0)
spaceIndices.Add(compareStringIndex);

// Acronym Match
if (IsAcronym(stringToCompare, compareStringIndex))
{
if (fullStringToCompareWithoutCase[compareStringIndex] ==
queryWithoutCase[currentAcronymQueryIndex])
if (fullStringToCompare[compareStringIndex] ==
queryToCompare[currentAcronymQueryIndex])
{
acronymMatchData.Add(compareStringIndex);
acronymsMatched++;
Expand All @@ -133,7 +144,7 @@
if (IsAcronymCount(stringToCompare, compareStringIndex))
acronymsTotalCount++;

if (allQuerySubstringsMatched || fullStringToCompareWithoutCase[compareStringIndex] !=
if (allQuerySubstringsMatched || fullStringToCompare[compareStringIndex] !=
currentQuerySubstring[currentQuerySubstringCharacterIndex])
{
matchFoundInPreviousLoop = false;
Expand All @@ -160,7 +171,7 @@
var startIndexToVerify = compareStringIndex - currentQuerySubstringCharacterIndex;

if (AllPreviousCharsMatched(startIndexToVerify, currentQuerySubstringCharacterIndex,
fullStringToCompareWithoutCase, currentQuerySubstring))
fullStringToCompare, currentQuerySubstring))
{
matchFoundInPreviousLoop = true;

Expand Down Expand Up @@ -205,7 +216,8 @@

if (acronymScore >= (int)UserSettingSearchPrecision)
{
acronymMatchData = acronymMatchData.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct().ToList();
acronymMatchData = acronymMatchData.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x)
.Distinct().ToList();
return new MatchResult(true, UserSettingSearchPrecision, acronymMatchData, acronymScore);
}
}
Expand All @@ -218,19 +230,45 @@
// firstMatchIndex - nearestSpaceIndex - 1 is to set the firstIndex as the index of the first matched char
// preceded by a space e.g. 'world' matching 'hello world' firstIndex would be 0 not 6
// giving more weight than 'we or donald' by allowing the distance calculation to treat the starting position at after the space.
var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, spaceIndices,
var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1,
spaceIndices,
lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString);

var resultList = indexList.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct().ToList();
var resultList = indexList.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct()
.ToList();
return new MatchResult(true, UserSettingSearchPrecision, resultList, score);
}

return new MatchResult(false, UserSettingSearchPrecision);
}


private static readonly Dictionary<char, char> AccentMap = new()
{
['á'] = 'a', ['à'] = 'a', ['ã'] = 'a', ['â'] = 'a', ['ä'] = 'a', ['å'] = 'a',
['é'] = 'e', ['è'] = 'e', ['ê'] = 'e', ['ë'] = 'e',
['í'] = 'i', ['ì'] = 'i', ['î'] = 'i', ['ï'] = 'i',
['ó'] = 'o', ['ò'] = 'o', ['õ'] = 'o', ['ô'] = 'o', ['ö'] = 'o',
['ú'] = 'u', ['ù'] = 'u', ['û'] = 'u', ['ü'] = 'u',
['ç'] = 'c',
['ñ'] = 'n',
['ý'] = 'y', ['ÿ'] = 'y'
};
public static string Normalize(string value)
{
Span<char> buffer = stackalloc char[value.Length];
for (int i = 0; i < value.Length; i++)
{
var c = char.ToLowerInvariant(value[i]);
buffer[i] = AccentMap.TryGetValue(c, out var mapped) ? mapped : c;
}

return new string(buffer);
}
private static bool IsAcronym(string stringToCompare, int compareStringIndex)
{
if (IsAcronymChar(stringToCompare, compareStringIndex) || IsAcronymNumber(stringToCompare, compareStringIndex))
if (IsAcronymChar(stringToCompare, compareStringIndex) ||
IsAcronymNumber(stringToCompare, compareStringIndex))
return true;

return false;
Expand All @@ -256,7 +294,7 @@
private static bool IsAcronymNumber(string stringToCompare, int compareStringIndex)
=> stringToCompare[compareStringIndex] >= 0 && stringToCompare[compareStringIndex] <= 9;

// To get the index of the closest space which preceeds the first matching index

Check warning on line 297 in Flow.Launcher.Infrastructure/StringMatcher.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`preceeds` is not a recognized word. (unrecognized-spelling)
private static int CalculateClosestSpaceIndex(List<int> spaceIndices, int firstMatchIndex)
{
var closestSpaceIndex = -1;
Expand All @@ -274,12 +312,12 @@
}

private static bool AllPreviousCharsMatched(int startIndexToVerify, int currentQuerySubstringCharacterIndex,
string fullStringToCompareWithoutCase, string currentQuerySubstring)
string fullStringToCompare, string currentQuerySubstring)
{
var allMatch = true;
for (int indexToCheck = 0; indexToCheck < currentQuerySubstringCharacterIndex; indexToCheck++)
{
if (fullStringToCompareWithoutCase[startIndexToVerify + indexToCheck] !=
if (fullStringToCompare[startIndexToVerify + indexToCheck] !=
currentQuerySubstring[indexToCheck])
{
allMatch = false;
Expand Down Expand Up @@ -312,7 +350,8 @@
return currentQuerySubstringIndex >= querySubstringsLength;
}

private static int CalculateSearchScore(string query, string stringToCompare, int firstIndex, List<int> spaceIndices, int matchLen,
private static int CalculateSearchScore(string query, string stringToCompare, int firstIndex,
List<int> spaceIndices, int matchLen,
bool allSubstringsContainedInCompareString)
{
// A match found near the beginning of a string is scored more than a match found near the end
Expand Down Expand Up @@ -341,7 +380,7 @@
if (allSubstringsContainedInCompareString)
{
int count = query.Count(c => !char.IsWhiteSpace(c));
//10 per char is too much for long query strings, this threshhold is to avoid where long strings will override the other results too much

Check warning on line 383 in Flow.Launcher.Infrastructure/StringMatcher.cs

View workflow job for this annotation

GitHub Actions / Check Spelling

`threshhold` is not a recognized word. (unrecognized-spelling)
int threshold = 4;
if (count <= threshold)
{
Expand Down
14 changes: 14 additions & 0 deletions Flow.Launcher.Infrastructure/UserSettings/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,20 @@ public bool ShouldUsePinyin
}
}

private bool _sensitiveAccents = false;
public bool SensitiveAccents
{
get => _sensitiveAccents;
set
{
if (_sensitiveAccents != value)
{
_sensitiveAccents = value;
OnPropertyChanged();
}
}
}

private bool _useDoublePinyin = false;
public bool UseDoublePinyin
{
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/ar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">اختر</system:String>
<system:String x:Key="hideOnStartup">إخفاء Flow Launcher عند بدء التشغيل</system:String>
<system:String x:Key="hideOnStartupToolTip">يتم إخفاء نافذة بحث Flow Launcher في العلبة بعد بدء التشغيل.</system:String>
<system:String x:Key="sensitiveAccent">تمكين حساسية التشكيل عند البحث عن البرامج.</system:String>
<system:String x:Key="sensitiveAccentToolTip">عند تغيير هذا الخيار، يلزم إعادة التشغيل. عند التمكين، ستتمكن من العثور على البرامج التي تحتوي على أحرف مشكلة بسهولة أكبر.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">إعادة التشغيل مطلوبة</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">تغيير حساسية التشكيل يتطلب إعادة تشغيل Flow Launcher ليصبح ساري المفعول.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">إعادة التشغيل الآن</system:String>
<system:String x:Key="hideNotifyIcon">إخفاء أيقونة العلبة</system:String>
<system:String x:Key="hideNotifyIconToolTip">عندما تكون الأيقونة مخفية من العلبة، يمكن فتح قائمة الإعدادات عن طريق النقر بزر الماوس الأيمن على نافذة البحث.</system:String>
<system:String x:Key="querySearchPrecision">دقة البحث في الاستعلام</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/cs.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">Vybrat</system:String>
<system:String x:Key="hideOnStartup">Skrýt Flow Launcher při spuštění</system:String>
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
<system:String x:Key="sensitiveAccent">Povolit citlivost na diakritiku při vyhledávání programů.</system:String>
<system:String x:Key="sensitiveAccentToolTip">Při změně této volby je vyžadován restart. Pokud je povolena, budete moci snáze najít programy, které obsahují znaky s diakritikou.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Vyžadován restart</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Změna citlivosti na diakritiku vyžaduje pro projevení změn restartování Flow Launcheru.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Restartovat nyní</system:String>
<system:String x:Key="hideNotifyIcon">Skrýt ikonu v systémové liště</system:String>
<system:String x:Key="hideNotifyIconToolTip">Pokud je ikona v oznamovací oblasti skrytá, nastavení lze otevřít kliknutím pravým tlačítkem myši na okno vyhledávání.</system:String>
<system:String x:Key="querySearchPrecision">Přesnost vyhledávání</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/da.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">Vælg</system:String>
<system:String x:Key="hideOnStartup">Skjul Flow Launcher ved opstart</system:String>
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
<system:String x:Key="sensitiveAccent">Aktiver følsomhed over for accenter, når der søges efter programmer.</system:String>
<system:String x:Key="sensitiveAccentToolTip">Når denne indstilling ændres, er en genstart påkrævet. Når den er aktiveret, vil du nemmere kunne finde programmer, der indeholder accenttegn.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Genstart påkrævet</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Ændring af følsomhed over for accenter kræver en genstart af Flow Launcher for at træde i kraft.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Genstart nu</system:String>
<system:String x:Key="hideNotifyIcon"></system:String>
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/de.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">Auswählen</system:String>
<system:String x:Key="hideOnStartup">Flow Launcher beim Start ausblenden</system:String>
<system:String x:Key="hideOnStartupToolTip">Flow Launcher-Suchfenster wird nach dem Start in der Taskleiste ausgeblendet.</system:String>
<system:String x:Key="sensitiveAccent">Akzentuierung beim Suchen nach Programmen berücksichtigen.</system:String>
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
Outdated
<system:String x:Key="sensitiveAccentToolTip">Wenn diese Option geändert wird, ist ein Neustart erforderlich. Wenn sie aktiviert ist, können Sie Programme, die Akzentzeichen enthalten, leichter finden.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Neustart erforderlich</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Das Ändern der Akzentempfindlichkeit erfordert einen Neustart von Flow Launcher, um wirksam zu werden.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Jetzt neu starten</system:String>
<system:String x:Key="hideNotifyIcon">Tray-Icon ausblenden</system:String>
<system:String x:Key="hideNotifyIconToolTip">Wenn das Icon in der Taskleiste ausgeblendet ist, kann das Menü Einstellungen durch einen Rechtsklick auf das Suchfenster geöffnet werden.</system:String>
<system:String x:Key="querySearchPrecision">Suchgenauigkeit abfragen</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/en.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<system:String x:Key="restartToDisablePortableMode">Flow Launcher needs to restart to finish disabling portable mode, after the restart your portable data profile will be deleted and roaming data profile kept</system:String>
<system:String x:Key="restartToEnablePortableMode">Flow Launcher needs to restart to finish enabling portable mode, after the restart your roaming data profile will be deleted and portable data profile kept</system:String>
<system:String x:Key="moveToDifferentLocation">Flow Launcher has detected you enabled portable mode, would you like to move it to a different location?</system:String>
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcher has detected you disabled portable mode, the relevant shortcuts and uninstaller entry have been created</system:String>

Check warning on line 25 in Flow.Launcher/Languages/en.xaml

View workflow job for this annotation

GitHub Actions / Check Spelling

`uninstaller` is not a recognized word. (unrecognized-spelling)
<system:String x:Key="userDataDuplicated">Flow Launcher detected your user data exists both in {0} and {1}. {2}{2}Please delete {1} in order to proceed. No changes have occurred.</system:String>

<!-- Plugin Loader -->
Expand Down Expand Up @@ -81,8 +81,8 @@
<system:String x:Key="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>

Check warning on line 84 in Flow.Launcher/Languages/en.xaml

View workflow job for this annotation

GitHub Actions / Check Spelling

`taskbar` is not a recognized word. (unrecognized-spelling)
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>

Check warning on line 85 in Flow.Launcher/Languages/en.xaml

View workflow job for this annotation

GitHub Actions / Check Spelling

`taskbars` is not a recognized word. (unrecognized-spelling)

Check warning on line 85 in Flow.Launcher/Languages/en.xaml

View workflow job for this annotation

GitHub Actions / Check Spelling

`taskbar` is not a recognized word. (unrecognized-spelling)
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
Expand Down Expand Up @@ -123,6 +123,11 @@
<system:String x:Key="select">Select</system:String>
<system:String x:Key="hideOnStartup">Hide Flow Launcher on startup</system:String>
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
<system:String x:Key="sensitiveAccent">Enable accent sensitivity when searching for programs.</system:String>
<system:String x:Key="sensitiveAccentToolTip">When this option is changed, a restart is required. When enabled, you will be able to find programs that contain accented characters more easily.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Restart Required</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Changing accent sensitivity requires a restart of Flow Launcher to take effect.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Restart Now</system:String>
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/es-419.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">Seleccionar</system:String>
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher al arrancar el sistema</system:String>
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
<system:String x:Key="sensitiveAccent">Activar la distinción de acentos al buscar programas.</system:String>
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
Outdated
<system:String x:Key="sensitiveAccentToolTip">Cuando se cambia esta opción, se requiere un reinicio. Cuando está activada, podrá encontrar programas que contengan caracteres acentuados más fácilmente.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Reinicio requerido</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Cambiar la sensibilidad de los acentos requiere un reinicio de Flow Launcher para que surta efecto.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Reiniciar ahora</system:String>
<system:String x:Key="hideNotifyIcon">Ocultar icono de la bandeja</system:String>
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
<system:String x:Key="querySearchPrecision">Precisión de la búsqueda</system:String>
Expand Down
5 changes: 5 additions & 0 deletions Flow.Launcher/Languages/es.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@
<system:String x:Key="select">Seleccionar</system:String>
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher al inicio</system:String>
<system:String x:Key="hideOnStartupToolTip">La ventana de búsqueda de Flow Launcher se oculta en la bandeja del sistema tras el arranque.</system:String>
<system:String x:Key="sensitiveAccent">Activar la distinción de acentos al buscar programas.</system:String>
<system:String x:Key="sensitiveAccentToolTip">Cuando se cambia esta opción, se requiere un reinicio. Cuando está activada, podrá encontrar programas que contengan caracteres acentuados más fácilmente.</system:String>
<system:String x:Key="sensitiveAccentRestartTitle">Reinicio requerido</system:String>
<system:String x:Key="sensitiveAccentRestartMessage">Cambiar la sensibilidad de los acentos requiere un reinicio de Flow Launcher para que surta efecto.</system:String>
<system:String x:Key="sensitiveAccentRestartButton">Reiniciar ahora</system:String>
<system:String x:Key="hideNotifyIcon">Ocultar icono en la bandeja del sistema</system:String>
<system:String x:Key="hideNotifyIconToolTip">Cuando el icono está oculto en la bandeja del sistema, se puede abrir el menú de configuración haciendo clic con el botón derecho en la ventana de búsqueda.</system:String>
<system:String x:Key="querySearchPrecision">Precisión de búsqueda en consultas</system:String>
Expand Down
Loading
Loading