Merge branch 'wip/finaw/search-prefer-early-tokens' into 'main'

gdesktopappinfo: Prefer matches that occur earlier in the match string

See merge request GNOME/glib!4369
This commit is contained in:
Michael Catanzaro 2025-05-19 10:51:28 -05:00
commit 7c7d7c6c78
6 changed files with 415 additions and 37 deletions

View File

@ -536,6 +536,7 @@ struct search_result
const gchar *app_name;
gint category;
gint match_type;
gint token_pos;
};
static struct search_result *static_token_results;
@ -589,13 +590,20 @@ compare_categories (gconstpointer a,
if (ra->match_type != rb->match_type)
return ra->match_type - rb->match_type;
return ra->category - rb->category;
if (ra->category != rb->category)
return ra->category - rb->category;
/* We prefer matches that occur earlier in the string. Eg. this will match 'Calculator'
* before 'LibreOffice Calc' when searching for 'calc'.
*/
return ra->token_pos - rb->token_pos;
}
static void
add_token_result (const gchar *app_name,
guint16 category,
guint16 match_type)
guint16 match_type,
guint16 token_pos)
{
if G_UNLIKELY (static_token_results_size == static_token_results_allocated)
{
@ -606,6 +614,7 @@ add_token_result (const gchar *app_name,
static_token_results[static_token_results_size].app_name = app_name;
static_token_results[static_token_results_size].category = category;
static_token_results[static_token_results_size].match_type = match_type;
static_token_results[static_token_results_size].token_pos = token_pos;
static_token_results_size++;
}
@ -696,6 +705,9 @@ merge_token_results (gboolean first)
* Writer should be higher priority than LibreOffice Draw with
* `lib w`.
*
* We prioritize tokens that occur near the start of the string
* over tokens that appear near the end.
*
* (This ignores the difference between partly prefix matches and
* all substring matches, however most time we just focus on exact
* prefix matches, who cares the 10th-20th search results?)
@ -705,6 +717,8 @@ merge_token_results (gboolean first)
static_token_results[i].category);
static_search_results[j].match_type = MAX (static_search_results[k].match_type,
static_token_results[i].match_type);
static_search_results[j].token_pos = MAX (static_search_results[k].token_pos,
static_token_results[i].token_pos);
j++;
}
}
@ -1091,7 +1105,8 @@ typedef GHashTable MemoryIndex;
struct _MemoryIndexEntry
{
const gchar *app_name; /* pointer to the hashtable key */
gint match_category;
gint match_category; /* the entry key (Name, Exec, ...) */
gint token_pos; /* the position of the token in the field */
MemoryIndexEntry *next;
};
@ -1113,6 +1128,7 @@ static void
memory_index_add_token (MemoryIndex *mi,
const gchar *token,
gint match_category,
gint token_pos,
const gchar *app_name)
{
MemoryIndexEntry *mie, *first;
@ -1120,6 +1136,7 @@ memory_index_add_token (MemoryIndex *mi,
mie = g_slice_new (MemoryIndexEntry);
mie->app_name = app_name;
mie->match_category = match_category;
mie->token_pos = token_pos;
first = g_hash_table_lookup (mi, token);
@ -1142,15 +1159,16 @@ memory_index_add_string (MemoryIndex *mi,
const gchar *app_name)
{
gchar **tokens, **alternates;
gint i;
gint i, n;
tokens = g_str_tokenize_and_fold (string, NULL, &alternates);
for (i = 0; tokens[i]; i++)
memory_index_add_token (mi, tokens[i], match_category, app_name);
memory_index_add_token (mi, tokens[i], match_category, i, app_name);
n = i;
for (i = 0; alternates[i]; i++)
memory_index_add_token (mi, alternates[i], match_category, app_name);
memory_index_add_token (mi, alternates[i], match_category, n + i, app_name);
g_strfreev (alternates);
g_strfreev (tokens);
@ -1231,7 +1249,7 @@ desktop_file_dir_unindexed_setup_search (DesktopFileDir *dir)
/* Make note of the Implements= line */
implements = g_key_file_get_string_list (key_file, "Desktop Entry", "Implements", NULL, NULL);
for (i = 0; implements && implements[i]; i++)
memory_index_add_token (dir->memory_implementations, implements[i], 0, app);
memory_index_add_token (dir->memory_implementations, implements[i], i, 0, app);
g_strfreev (implements);
}
@ -1272,7 +1290,7 @@ desktop_file_dir_unindexed_search (DesktopFileDir *dir,
while (mie)
{
add_token_result (mie->app_name, mie->match_category, match_type);
add_token_result (mie->app_name, mie->match_category, match_type, mie->token_pos);
mie = mie->next;
}
}
@ -4740,6 +4758,7 @@ g_desktop_app_info_search (const gchar *search_string)
gchar **search_tokens;
gint last_category = -1;
gint last_match_type = -1;
gint last_token_pos = -1;
gchar ***results;
gint n_groups = 0;
gint start_of_group;
@ -4767,10 +4786,12 @@ g_desktop_app_info_search (const gchar *search_string)
/* Count the total number of unique categories and match types */
for (i = 0; i < static_total_results_size; i++)
if (static_total_results[i].category != last_category ||
static_total_results[i].match_type != last_match_type)
static_total_results[i].match_type != last_match_type ||
static_total_results[i].token_pos != last_token_pos)
{
last_category = static_total_results[i].category;
last_match_type = static_total_results[i].match_type;
last_token_pos = static_total_results[i].token_pos;
n_groups++;
}
@ -4783,14 +4804,17 @@ g_desktop_app_info_search (const gchar *search_string)
gint n_items_in_group = 0;
gint this_category;
gint this_match_type;
gint this_token_pos;
gint j;
this_category = static_total_results[start_of_group].category;
this_match_type = static_total_results[start_of_group].match_type;
this_token_pos = static_total_results[start_of_group].token_pos;
while (start_of_group + n_items_in_group < static_total_results_size &&
static_total_results[start_of_group + n_items_in_group].category == this_category &&
static_total_results[start_of_group + n_items_in_group].match_type == this_match_type)
static_total_results[start_of_group + n_items_in_group].match_type == this_match_type &&
static_total_results[start_of_group + n_items_in_group].token_pos == this_token_pos)
n_items_in_group++;
results[i] = g_new (gchar *, n_items_in_group + 1);

View File

@ -876,15 +876,15 @@ assert_implementations (const gchar *interface,
g_free (result);
}
#define ALL_USR_APPS "evince-previewer.desktop nautilus-classic.desktop gnome-font-viewer.desktop " \
"baobab.desktop yelp.desktop eog.desktop cheese.desktop org.gnome.clocks.desktop " \
"gnome-contacts.desktop kde4-kate.desktop gcr-prompter.desktop totem.desktop " \
"gnome-terminal.desktop nautilus-autorun-software.desktop gcr-viewer.desktop " \
"nautilus-connect-server.desktop kde4-dolphin.desktop gnome-music.desktop " \
"kde4-konqbrowser.desktop gucharmap.desktop kde4-okular.desktop nautilus.desktop " \
"gedit.desktop evince.desktop file-roller.desktop dconf-editor.desktop glade.desktop " \
"invalid-desktop.desktop"
#define HOME_APPS "epiphany-weather-for-toronto-island-9c6a4e022b17686306243dada811d550d25eb1fb.desktop"
#define ALL_USR_APPS "evince-previewer.desktop nautilus-classic.desktop gnome-font-viewer.desktop " \
"baobab.desktop yelp.desktop eog.desktop cheese.desktop org.gnome.clocks.desktop " \
"gnome-contacts.desktop kde4-kate.desktop gcr-prompter.desktop totem.desktop " \
"gnome-terminal.desktop nautilus-autorun-software.desktop gcr-viewer.desktop " \
"nautilus-connect-server.desktop kde4-dolphin.desktop gnome-music.desktop " \
"kde4-konqbrowser.desktop gucharmap.desktop kde4-okular.desktop nautilus.desktop " \
"gedit.desktop evince.desktop file-roller.desktop dconf-editor.desktop glade.desktop " \
"invalid-desktop.desktop org.gnome.Calculator.desktop libreoffice-calc.desktop"
#define HOME_APPS "epiphany-weather-for-toronto-island-9c6a4e022b17686306243dada811d550d25eb1fb.desktop"
#define ALL_HOME_APPS HOME_APPS " eog.desktop"
static void
@ -923,9 +923,14 @@ test_search (void)
* match the prefix command ("/bin/sh") in the Exec= line though. Then with
* substring matching, Image Viewer (eog) should be in next group because it
* contains "Slideshow" in its keywords.
*
* Finally we have LibreOffice Calc, which contains "OpenDocument Spreadsheet".
* It is sorted last because its match ("sh" in "Spreadsheet") occurs in a
* later token.
*/
assert_search ("sh", "gnome-terminal.desktop\n"
"eog.desktop\n", TRUE, FALSE, NULL, NULL);
"eog.desktop\n"
"libreoffice-calc.desktop\n", TRUE, FALSE, NULL, NULL);
/* "frobnicator.desktop" is ignored by get_all() because the binary is
* missing, but search should still find it (to avoid either stale results
@ -947,6 +952,18 @@ test_search (void)
"dconf-editor.desktop\n"
"nautilus-classic.desktop\n", TRUE, TRUE, NULL, NULL);
/* We prefer matches of tokens that come earlier in a string. In this case
* "LibreOffice Calc" and "Calculator" both have a name that contains a prefix
* match "cal", but the one in Calculator occurs in the first token.
*/
assert_search ("cal", "org.gnome.Calculator.desktop\nlibreoffice-calc.desktop\n", TRUE, TRUE, NULL, NULL);
/* Same as above, but ensure that substring matches are sorted after prefix matches */
assert_search ("ca", "org.gnome.Calculator.desktop\n"
"libreoffice-calc.desktop\n"
"frobnicator.desktop\n"
"cheese.desktop\n", TRUE, TRUE, NULL, NULL);
/* "gnome" will match "eye of gnome" from the user's directory, plus
* matching "GNOME Clocks" X-GNOME-FullName.
*/

View File

@ -0,0 +1,40 @@
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed
# with this work for additional information regarding copyright
# ownership. The ASF licenses this file to you under the Apache
# License, Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
#
[Desktop Entry]
Version=1.0
Terminal=false
Icon=libreoffice-calc
Type=Application
Categories=Office;Spreadsheet;X-Red-Hat-Base;
Exec=true %U
MimeType=application/clarisworks;application/csv;application/excel;application/msexcel;application/tab-separated-values;application/vnd.apache.parquet;application/vnd.apple.numbers;application/vnd.lotus-1-2-3;application/vnd.ms-excel;application/vnd.ms-excel.sheet.binary.macroEnabled.12;application/vnd.ms-excel.sheet.macroEnabled.12;application/vnd.ms-excel.template.macroEnabled.12;application/vnd.ms-works;application/vnd.oasis.opendocument.chart;application/vnd.oasis.opendocument.chart-template;application/vnd.oasis.opendocument.spreadsheet;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/vnd.oasis.opendocument.spreadsheet-template;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.stardivision.calc;application/vnd.stardivision.chart;application/vnd.sun.xml.calc;application/vnd.sun.xml.calc.template;application/x-123;application/x-dbase;application/x-dbf;application/x-dos_ms_excel;application/x-excel;application/x-gnumeric;application/x-iwork-numbers-sffnumbers;application/x-ms-excel;application/x-msexcel;application/x-quattropro;application/x-starcalc;application/x-starchart;text/comma-separated-values;text/csv;text/spreadsheet;text/tab-separated-values;text/x-comma-separated-values;text/x-csv;
Name=LibreOffice Calc
GenericName=Spreadsheet
Comment=Perform calculations, analyze information and manage lists in spreadsheets.
StartupNotify=true
X-GIO-NoFuse=true
Keywords=Accounting;Stats;OpenDocument Spreadsheet;Chart;Microsoft Excel;Microsoft Works;OpenOffice Calc;ods;xls;xlsx;
InitialPreference=5
StartupWMClass=libreoffice-calc
X-KDE-Protocols=file,http,webdav,webdavs
Actions=NewDocument;
[Desktop Action NewDocument]
Name=New Spreadsheet
Icon=document-new
Exec=true %U

View File

@ -1,8 +1,12 @@
[MIME Cache]
application/clarisworks=libreoffice-calc.desktop;
application/csv=libreoffice-calc.desktop;
application/excel=libreoffice-calc.desktop;
application/msexcel=libreoffice-calc.desktop;
application/mxf=totem.desktop;
application/ogg=totem.desktop;
application/oxps=evince.desktop;evince-previewer.desktop;
application/pdf=evince.desktop;evince-previewer.desktop;
application/oxps=evince-previewer.desktop;evince.desktop;
application/pdf=evince-previewer.desktop;evince.desktop;
application/pkcs10=gcr-viewer.desktop;
application/pkcs10+pem=gcr-viewer.desktop;
application/pkcs12=gcr-viewer.desktop;
@ -19,12 +23,33 @@ application/ram=totem.desktop;
application/sdp=totem.desktop;
application/smil=totem.desktop;
application/smil+xml=totem.desktop;
application/tab-separated-values=libreoffice-calc.desktop;
application/vnd.apache.parquet=libreoffice-calc.desktop;
application/vnd.apple.mpegurl=totem.desktop;
application/vnd.apple.numbers=libreoffice-calc.desktop;
application/vnd.kde.okular-archive=kde4-okular.desktop;
application/vnd.lotus-1-2-3=libreoffice-calc.desktop;
application/vnd.ms-cab-compressed=file-roller.desktop;
application/vnd.ms-excel=libreoffice-calc.desktop;
application/vnd.ms-excel.sheet.binary.macroEnabled.12=libreoffice-calc.desktop;
application/vnd.ms-excel.sheet.macroEnabled.12=libreoffice-calc.desktop;
application/vnd.ms-excel.template.macroEnabled.12=libreoffice-calc.desktop;
application/vnd.ms-works=libreoffice-calc.desktop;
application/vnd.ms-wpl=totem.desktop;
application/vnd.ms-xpsdocument=evince.desktop;evince-previewer.desktop;
application/vnd.ms-xpsdocument=evince-previewer.desktop;evince.desktop;
application/vnd.oasis.opendocument.chart=libreoffice-calc.desktop;
application/vnd.oasis.opendocument.chart-template=libreoffice-calc.desktop;
application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop;
application/vnd.oasis.opendocument.spreadsheet-flat-xml=libreoffice-calc.desktop;
application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;
application/vnd.openxmlformats-officedocument.spreadsheetml.template=libreoffice-calc.desktop;
application/vnd.rn-realmedia=totem.desktop;
application/vnd.stardivision.calc=libreoffice-calc.desktop;
application/vnd.stardivision.chart=libreoffice-calc.desktop;
application/vnd.sun.xml.calc=libreoffice-calc.desktop;
application/vnd.sun.xml.calc.template=libreoffice-calc.desktop;
application/x-123=libreoffice-calc.desktop;
application/x-7z-compressed=file-roller.desktop;
application/x-7z-compressed-tar=file-roller.desktop;
application/x-ace=file-roller.desktop;
@ -36,18 +61,22 @@ application/x-bzip=file-roller.desktop;
application/x-bzip-compressed-tar=file-roller.desktop;
application/x-bzip1=file-roller.desktop;
application/x-bzip1-compressed-tar=file-roller.desktop;
application/x-bzpdf=evince.desktop;evince-previewer.desktop;
application/x-bzpdf=evince-previewer.desktop;evince.desktop;
application/x-cabinet=file-roller.desktop;
application/x-cb7=evince.desktop;evince-previewer.desktop;
application/x-cbr=evince.desktop;evince-previewer.desktop;file-roller.desktop;
application/x-cbt=evince.desktop;evince-previewer.desktop;
application/x-cbz=evince.desktop;evince-previewer.desktop;file-roller.desktop;
application/x-cb7=evince-previewer.desktop;evince.desktop;
application/x-cbr=evince-previewer.desktop;evince.desktop;file-roller.desktop;
application/x-cbt=evince-previewer.desktop;evince.desktop;
application/x-cbz=evince-previewer.desktop;evince.desktop;file-roller.desktop;
application/x-cd-image=file-roller.desktop;
application/x-compress=file-roller.desktop;
application/x-compressed-tar=file-roller.desktop;
application/x-cpio=file-roller.desktop;
application/x-dbase=libreoffice-calc.desktop;
application/x-dbf=libreoffice-calc.desktop;
application/x-deb=file-roller.desktop;
application/x-dos_ms_excel=libreoffice-calc.desktop;
application/x-ear=file-roller.desktop;
application/x-excel=libreoffice-calc.desktop;
application/x-extension-m4a=totem.desktop;
application/x-extension-mp4=totem.desktop;
application/x-flac=totem.desktop;
@ -58,10 +87,12 @@ application/x-font-ttf=gnome-font-viewer.desktop;
application/x-font-type1=gnome-font-viewer.desktop;
application/x-glade=glade.desktop;
application/x-gnome-saved-search=nautilus.desktop;
application/x-gnumeric=libreoffice-calc.desktop;
application/x-gtar=file-roller.desktop;
application/x-gzip=file-roller.desktop;
application/x-gzpdf=evince.desktop;evince-previewer.desktop;
application/x-gzpdf=evince-previewer.desktop;evince.desktop;
application/x-gzpostscript=file-roller.desktop;
application/x-iwork-numbers-sffnumbers=libreoffice-calc.desktop;
application/x-java-archive=file-roller.desktop;
application/x-lha=file-roller.desktop;
application/x-lhz=file-roller.desktop;
@ -75,13 +106,16 @@ application/x-lzop=file-roller.desktop;
application/x-lzop-compressed-tar=file-roller.desktop;
application/x-matroska=totem.desktop;
application/x-ms-dos-executable=file-roller.desktop;
application/x-ms-excel=libreoffice-calc.desktop;
application/x-ms-wim=file-roller.desktop;
application/x-msexcel=libreoffice-calc.desktop;
application/x-netshow-channel=totem.desktop;
application/x-ogg=totem.desktop;
application/x-pem-file=gcr-viewer.desktop;
application/x-pem-key=gcr-viewer.desktop;
application/x-pkcs12=gcr-viewer.desktop;
application/x-pkcs7-certificates=gcr-viewer.desktop;
application/x-quattropro=libreoffice-calc.desktop;
application/x-quicktime-media-link=totem.desktop;
application/x-quicktimeplayer=totem.desktop;
application/x-rar=file-roller.desktop;
@ -93,6 +127,8 @@ application/x-shorten=totem.desktop;
application/x-smil=totem.desktop;
application/x-spkac=gcr-viewer.desktop;
application/x-spkac+base64=gcr-viewer.desktop;
application/x-starcalc=libreoffice-calc.desktop;
application/x-starchart=libreoffice-calc.desktop;
application/x-stuffit=file-roller.desktop;
application/x-tar=file-roller.desktop;
application/x-tarz=file-roller.desktop;
@ -101,7 +137,7 @@ application/x-x509-ca-cert=gcr-viewer.desktop;
application/x-x509-user-cert=gcr-viewer.desktop;
application/x-xz=file-roller.desktop;
application/x-xz-compressed-tar=file-roller.desktop;
application/x-xzpdf=evince.desktop;evince-previewer.desktop;
application/x-xzpdf=evince-previewer.desktop;evince.desktop;
application/x-zip=file-roller.desktop;
application/x-zip-compressed=file-roller.desktop;
application/x-zoo=file-roller.desktop;
@ -164,7 +200,7 @@ image/pjpeg=eog.desktop;
image/png=eog.desktop;
image/svg+xml=eog.desktop;
image/svg+xml-compressed=eog.desktop;
image/tiff=eog.desktop;evince.desktop;evince-previewer.desktop;
image/tiff=eog.desktop;evince-previewer.desktop;evince.desktop;
image/vnd.rn-realpix=totem.desktop;
image/vnd.wap.wbmp=eog.desktop;
image/x-bmp=eog.desktop;
@ -180,10 +216,16 @@ image/x-portable-graymap=eog.desktop;
image/x-portable-pixmap=eog.desktop;
image/x-xbitmap=eog.desktop;
image/x-xpixmap=eog.desktop;
inode/directory=kde4-dolphin.desktop;baobab.desktop;nautilus.desktop;
inode/directory=baobab.desktop;kde4-dolphin.desktop;nautilus.desktop;
misc/ultravox=totem.desktop;
text/comma-separated-values=libreoffice-calc.desktop;
text/csv=libreoffice-calc.desktop;
text/google-video-pointer=totem.desktop;
text/plain=kde4-kate.desktop;gedit.desktop;
text/plain=gedit.desktop;kde4-kate.desktop;
text/spreadsheet=libreoffice-calc.desktop;
text/tab-separated-values=libreoffice-calc.desktop;
text/x-comma-separated-values=libreoffice-calc.desktop;
text/x-csv=libreoffice-calc.desktop;
text/x-google-video-pointer=totem.desktop;
video/3gp=totem.desktop;
video/3gpp=totem.desktop;

View File

@ -0,0 +1,255 @@
[Desktop Entry]
Name[af]=Sakrekenaar
Name[ar]=آلة حاسبة
Name[as]=
Name[ast]=Calculadora
Name[az]=Hesaplayıcı
Name[be@latin]=Kalkulatar
Name[be]=Калькулятар
Name[bg]=Калкулатор
Name[bn_IN]=
Name[bn]=
Name[bs]=Računalo
Name[ca]=Calculadora
Name[ca@valencia]=Calculadora
Name[cs]=Kalkulačka
Name[cy]=Cyfrifiannell
Name[da]=Lommeregner
Name[de]=Taschenrechner
Name[dz]=
Name[el]=Αριθμομηχανή
Name[en_CA]=Calculator
Name[en_GB]=Calculator
Name[en@shaw]=𐑒𐑨𐑤𐑒𐑿𐑤𐑱𐑑𐑼
Name[eo]=Kalkulilo
Name[es]=Calculadora
Name[et]=Kalkulaator
Name[eu]=Kalkulagailua
Name[fa]=ماشینحساب
Name[fi]=Laskin
Name[fo]=Roknimaskina
Name[fr]=Calculatrice
Name[fur]=Calcoladorie
Name[ga]=Áireamhán
Name[gd]=Àireamhair
Name[gl]=Calculadora
Name[gu]=
Name[he]=מחשבון
Name[hi]=
Name[hr]=Kalkulator
Name[hu]=Számológép
Name[hy]=Հաշվիչ
Name[id]=Kalkulator
Name[it]=Calcolatrice
Name[ja]=
Name[ka]=
Name[kab]=Tamsient
Name[kk]=Калькулятор
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Skaičiuotuvas
Name[lv]=Kalkulators
Name[mai]=
Name[mg]=Milina mpikajy
Name[mjw]=Calculator
Name[mk]=Калкулатор
Name[ml]=ി
Name[mn]=Тооны машин
Name[mr]=
Name[ms]=Kalkulator
Name[my]=ကက
Name[nb]=Kalkulator
Name[ne]=
Name[nl]=Rekenmachine
Name[nn]=Kalkulator
Name[oc]=Calculadoira
Name[or]=
Name[pa]=
Name[pl]=Kalkulator
Name[pt_BR]=Calculadora
Name[pt]=Calculadora
Name[ro]=Calculator
Name[ru]=Калькулятор
Name[si]=
Name[sk]=Kalkulačka
Name[sl]=Računalo
Name[sq]=Makinë llogaritëse
Name[sr@latin]=Kalkulator
Name[sr]=Калкулатор
Name[sv]=Kalkylator
Name[ta]=ி
Name[te]= ి
Name[tg]=Калкулатор
Name[th]=
Name[tk]=Çot
Name[tr]=Hesap Makinesi
Name[ug]=ھېسابلىغۇچ
Name[uk]=Калькулятор
Name[vi]=Máy tính b túi
Name[xh]=Ikhaltyuleyitha
Name[zh_CN]=
Name[zh_HK]=
Name[zh_TW]=
Name=Calculator
Comment[af]=Voer rekenkundige, wetenskaplike of finansiële berekeninge uit
Comment[ar]=قم بحسابات رياضيّة وعلميّة وماليّة
Comment[as]=িি, িিি ি
Comment[ast]=Fai cálculos aritméticos, científicos o financieros
Comment[be]=Арыфметычныя, навуковыя і фінансавыя разлікі
Comment[bg]=Извършване на аритметични, научни или финансови изчисления
Comment[bn_IN]=ি, ি ি
Comment[bn]=িি, ি ি
Comment[bs]=Obavi aritmetičke, naučne ili finansijske proračune
Comment[ca]=Realitzeu càlculs aritmètics, científics o financers
Comment[ca@valencia]=Realitza càlculs aritmètics, científics o financers
Comment[cs]=Provádějte aritmetické, vědecké i finanční výpočty
Comment[da]=Udfør aritmetiske, videnskabelige eller finansielle udregninger
Comment[de]=Arithmetische, wissenschaftliche und finanztechnische Berechnungen durchführen
Comment[dz]=
Comment[el]=Εκτελεί αριθμητικούς, επιστημονικούς ή εμπορικούς υπολογισμούς
Comment[en_CA]=Perform arithmetic, scientific or financial calculations
Comment[en_GB]=Perform arithmetic, scientific or financial calculations
Comment[en@shaw]=𐑐𐑼𐑓𐑹𐑥 𐑼𐑦𐑔𐑥𐑩𐑑𐑦𐑒, 𐑕𐑲𐑩𐑯𐑑𐑦𐑓𐑦𐑒 𐑹 𐑓𐑲𐑯𐑨𐑯𐑖𐑩𐑤 𐑒𐑨𐑤𐑒𐑿𐑤𐑱𐑖𐑩𐑯𐑟
Comment[eo]=Fari aritmetikajn, sciencajn aŭ financajn kalkulojn
Comment[es]=Realice cálculos aritméticos, científicos o financieros
Comment[et]=Aritmeetilised, teaduslikud ja finantsarvutused
Comment[eu]=Egin kalkulu aritmetikoak, zientifikoak edo finantzarioak
Comment[fa]=انجام محاسبات ریاضی، علمی و مالی
Comment[fi]=Suorita aritmeettisia, tieteellisiä tai talouslaskutoimituksia
Comment[fo]=Avrika talfrøðiskar, vísindaligar ella fíggjarligar útrokningar
Comment[fr]=Effectue des calculs arithmétiques, scientifiques ou financiers
Comment[fur]=Eseguìs calcui aritmetics, sientifics o finanziaris
Comment[gd]=Dèan cunntadh àireamhachd, saidheansail no ionmhais
Comment[gl]=Realice cálculos aritméticos, científicos ou financeiros
Comment[gu]=િ, િ િ
Comment[he]=ביצוע חישובים פשוטים, מדעיים או כלכליים
Comment[hi]=ि, ि ि
Comment[hr]=Izvodite aritmetičke, znanstvene ili financijske izračune
Comment[hu]=Aritmetikai, tudományos vagy pénzügyi számítások végrehajtása
Comment[hy]=Կատարել թվաբանական, գիտական կամ ֆինանսական հաշվարկներ
Comment[id]=Lakukan perhitungan aritmetik, ilmiah, atau keuangan
Comment[it]=Esegue calcoli aritmetici, scientifici e finanziari
Comment[ja]=//
Comment[ka]=,
Comment[kk]=Қарапайым, ғылыми не қаржылық есептеулерді жүргізу
Comment[km]=
Comment[kn]=ಿ, ಿ ಿ ಿ
Comment[ko]= , ,
Comment[lt]=Atlikti aritmetinius, mokslinius ar finansinius skaičiavimus
Comment[lv]=Veikt aritmētiskus, zinātniskus vai finansiālus aprēķinus
Comment[mjw]=Perform arithmetic, scientific or financial calculations
Comment[mk]=Извршете аритметички, научни или финансиски пресметки
Comment[ml]=ിി, ി
Comment[mr]=ि, ि ि
Comment[ms]=Buat pengiraan aritmatik, saintifik dan kewangan
Comment[nb]=Utfør aritmetiske, vitenskapelige eller finansielle utregninger
Comment[ne]=ि, ि ि
Comment[nl]=Voer rekenkundige, wetenschappelijke of financiële berekeningen uit
Comment[nn]=Utfør aritmetiske, vitskaplege eller finansielle utregningar
Comment[oc]=Efectua de calculs aritmetics, scientifics o financièrs
Comment[or]=ିି,ି ି ି ି
Comment[pa]=ਿ, ਿਿ ਿ
Comment[pl]=Wykonanie obliczeń arytmetycznych, naukowych lub finansowych
Comment[pt_BR]=Efetue cálculos aritméticos, científicos ou financeiros
Comment[pt]=Realize cálculos aritméticos, científicos ou financeiros
Comment[ro]=Efectuează calcule aritmetice, științifice și financiare
Comment[ru]=Вычисления: арифметические, научные и финансовые
Comment[sk]=Vykonáva aritmetické, vedecké alebo finančné výpočty
Comment[sl]=Izvajanje aritmetičnih, znanstvenih ali finančnih izračunov
Comment[sq]=Kryen llogari aritmetikore, shkencore ose financiare
Comment[sr@latin]=Izvršavajte aritmetičke, naučne ili finansijske proračune
Comment[sr]=Извршавајте аритметичке, научне или финансијске прорачуне
Comment[sv]=Utför aritmetiska, vetenskapliga eller finansiella beräkningar
Comment[ta]=ி, ிி ி.
Comment[te]=, ి ి
Comment[tg]=Иҷрои ҳисобҳои арифметикӣ, илмӣ ё молиявӣ
Comment[th]=
Comment[tr]=Aritmetik, bilimsel ve finansal hesaplamalar gerçekleştirir
Comment[ug]=ئارىفمېتىكىلىق، ئىلمىي ياكى ئىقتىسادىي ھېساباتلارنى ئېلىپ بېرىش پروگراممىسى
Comment[uk]=Виконання арифметичних, наукових або фінансових розрахунків
Comment[vi]=Chy phép tính kiu s hc, khoa hc hay tài chính
Comment[zh_CN]=
Comment[zh_HK]=
Comment[zh_TW]=
Comment=Perform arithmetic, scientific or financial calculations
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords[ar]=calculation;arithmetic;scientific;financial;الحسابية;الرياضية;العلمية;المالية;
Keywords[as]=;িি;িিি;ি;
Keywords[be]=calculation;arithmetic;scientific;financial;вылічэнне;разлікі;арыфметыка;навука;фінансы;
Keywords[bg]=калкулатор;аритметични;научни;финансови;изчисления;calculation;arithmetic;scientific;financial;
Keywords[bn_IN]=;িি;ি;ি;
Keywords[bs]=raču;aritmetika;naučni;finansijski;
Keywords[ca]=càlcul;aritmètic;científic;financer;
Keywords[ca@valencia]=càlcul;aritmètic;científic;financer;
Keywords[cs]=kalkulace;výpočty;vědecká;finanční;
Keywords[da]=udregning;aritmetik;videnskabelig;finansiel;regning;lommeregner;matematik;
Keywords[de]=Taschenrechner;Rechner;Arithmetisch;Wissenschaftlich;Finanztechnisch;
Keywords[el]=υπολογισμός;αριθμητικός;επιστημονικός;οικονομικός;calculation;arithmetic;scientific;financial;
Keywords[en_GB]=calculation;arithmetic;scientific;financial;
Keywords[eo]=kalkulilo;kalkuli;aritmetiko;scienca;financa;
Keywords[es]=cálculo;aritmética;científica;financiera;
Keywords[et]=arvutamine;arvutused;kalkuleerimine;kalkulaator;aritmeetika;teaduslik;finants;
Keywords[eu]=kalkulua;aritmetikoa;zientifikoa;finantzarioa;
Keywords[fa]=محاسبه;ریاضی;علمی;مالی;
Keywords[fi]=calculation;arithmetic;scientific;financial;laskenta;laskut;laskutoimitus;aritmetiikka;aritmeettinen;tieteellinen;tiede;talous;talouslaskut;
Keywords[fo]=útrokning;talfrøði;vísindaligur;fíggjarligur;rokning;lummaroknari;støddfrøði;
Keywords[fr]=calcul;arithmétique;scientifique;finances;financier;
Keywords[fur]=calcui;calcoladorie;aritmetic;sientific;finanziari;
Keywords[gd]=cunntadh;àireamhachadh;àireamhachd;saidheans;saidheansail;ionmhas;ionmhais;
Keywords[gl]=calculo;aritmético;científico;financeiro;
Keywords[gu]=;િ;િ;િ;
Keywords[he]=חישוב;חשבון;מחשבון;מדעי;פיננסי;
Keywords[hi]=;ि;ि;ि;
Keywords[hr]=izračuni;aritmetika;znanost;financije;
Keywords[hu]=számítás;aritmetikai;tudományos;pénzügyi;
Keywords[id]=kalkulasi;aritmetik;ilmiah;keuangan;
Keywords[it]=calcolo;calcolatrice;aritmetica;scientifica;finanziaria;
Keywords[ja]=calculation;arithmetic;scientific;financial;;;;calculator;;
Keywords[ka]=;;;;
Keywords[kk]=calculation;arithmetic;scientific;financial;есептеу;калькулятор;арифметика;ғылыми;қаржылық;
Keywords[km]=; ; ; ;
Keywords[kn]=;ಿಿ;ಿ;;
Keywords[ko]=calculation;;;arithmetic;;scientific;;;financial;;
Keywords[lt]=skaičiavimai;aritmetika;moksliniai;finansiniai;
Keywords[lv]=aprēķins;aritmētika;zinātnisks;finansiāls;
Keywords[mjw]=calculation;arithmetic;scientific;financial;
Keywords[ml]=calculation;arithmetic;scientific;financial;
Keywords[mr]=;िि;िि;ि;
Keywords[ms]=pengiraan;aritmatik;saintifik;kewangan;
Keywords[nb]=regning;aritmetikk,vitenskapelig;finans;
Keywords[ne]=ि;ि;ि;;
Keywords[nl]=calculation;arithmetic;scientific;financial;rekenkundig;wetenschappelijk;financieel;
Keywords[oc]=calcul;aritmetic;scientific;finances;financièr;
Keywords[or]=ି;ିି;ି;ି;
Keywords[pa]=;ਿ;ਿ;ਿਿ;ਿ;ਿ;
Keywords[pl]=obliczenia;liczenie;arytmetyczne;naukowe;finansowe;
Keywords[pt_BR]=cálculo;cálculos;aritmético;científico;científica;financeiro;financeira;aritmética;
Keywords[pt]=calcular;aritmética;científica;financeira;
Keywords[ro]=calculation;arithmetic;scientific;financial;calculare;aritmetic;științific;financiar;calculator;
Keywords[ru]=вычисление;арифметические;научные;финансовые;
Keywords[sk]=výpočty;aritmetické;vedecké;finančné;
Keywords[sl]=računanje;izračunavanje;aritmetika;znanstveni izračuni;finančni izračuni;računalo;kalkulator;abakus;
Keywords[sr@latin]=računanje;aritmetika;nauka;finansije;proračun;
Keywords[sr]=рачунање;аритметика;наука;финансије;прорачун;
Keywords[sv]=uträkning;aritmetik;vetenskaplig;finansiell;
Keywords[ta]=ி;ி; ிி;;
Keywords[te]=calculation;arithmetic;scientific;financial;
Keywords[tg]=ҳисобкунӣ;арифметикӣ;илмӣ;молиявӣ;
Keywords[th]=;;;;;
Keywords[tr]=calculator;calculation;arithmetic;scientific;financial;hesaplama;aritmetik;bilimsel;finansal;
Keywords[ug]=calculation;arithmetic;scientific;financial;ھېسابلاش;
Keywords[uk]=калькулятор;арифметика;науковий;фінансовий;
Keywords[vi]=calculation;arithmetic;scientific;financial;bàn;tính;ban;tinh;toán;tài;chính;tai;chinh;khoa;hc;hoc;
Keywords[zh_CN]=calculation;arithmetic;scientific;financial;;;;;
Keywords[zh_HK]=calculation;arithmetic;scientific;financial;;;;
Keywords[zh_TW]=calculation;arithmetic;scientific;financial;;;;;;;;;;;;;
Keywords=calculation;arithmetic;scientific;financial;
Exec=true %U
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Calculator
Terminal=false
Type=Application
StartupNotify=true
Categories=GNOME;GTK;Utility;Calculator;
X-Purism-FormFactor=Workstation;Mobile;

View File

@ -2746,9 +2746,9 @@ test_measure (void)
g_assert_true (ok);
g_assert_no_error (error);
g_assert_cmpuint (num_bytes, ==, 74469);
g_assert_cmpuint (num_bytes, ==, 96702);
g_assert_cmpuint (num_dirs, ==, 6);
g_assert_cmpuint (num_files, ==, 32);
g_assert_cmpuint (num_files, ==, 34);
g_object_unref (file);
g_free (path);
@ -2829,9 +2829,9 @@ test_measure_async (void)
file = g_file_new_for_path (path);
g_free (path);
data->expected_bytes = 74469;
data->expected_bytes = 96702;
data->expected_dirs = 6;
data->expected_files = 32;
data->expected_files = 34;
g_file_measure_disk_usage_async (file,
G_FILE_MEASURE_APPARENT_SIZE,