mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Compare commits
591 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8353f7648 | ||
|
|
8d042d2134 | ||
|
|
a406eb83e1 | ||
|
|
531b45210a | ||
|
|
319db64393 | ||
|
|
24f6c90f72 | ||
|
|
3e493263c3 | ||
|
|
916b4ff091 | ||
|
|
dad8f3e695 | ||
|
|
7a46fac41a | ||
|
|
79f3bfab96 | ||
|
|
0d9cc7ef83 | ||
|
|
0ddcc5c1c6 | ||
|
|
5ef6a2b688 | ||
|
|
7766d7053d | ||
|
|
36e15d3809 | ||
|
|
ed14c45fd2 | ||
|
|
12c4b4d711 | ||
|
|
1bdc1164f8 | ||
|
|
71944ab6cd | ||
|
|
984b3dabdc | ||
|
|
9abf136ea2 | ||
|
|
a2f224225e | ||
|
|
6566871b15 | ||
|
|
dda900041a | ||
|
|
cce80ac5aa | ||
|
|
036a3761ea | ||
|
|
48878d2d8c | ||
|
|
dca90916fe | ||
|
|
ba1908d605 | ||
|
|
590bf20204 | ||
|
|
b02a5a265d | ||
|
|
b1b18ee215 | ||
|
|
8e4f7258ff | ||
|
|
2e0db3b90f | ||
|
|
54dc790cb6 | ||
|
|
ed6fe34192 | ||
|
|
10fcbb9990 | ||
|
|
980c1a1060 | ||
|
|
cd9825380d | ||
|
|
3b3a59fd62 | ||
|
|
73f657f84e | ||
|
|
c9baab7ac9 | ||
|
|
72269db8e6 | ||
|
|
ffa974b4e5 | ||
|
|
727aac4b82 | ||
|
|
9e66f71774 | ||
|
|
d511872c00 | ||
|
|
c46a52d1ca | ||
|
|
c04da3ab83 | ||
|
|
cb60492657 | ||
|
|
118d6e2a73 | ||
|
|
918eb0f4a9 | ||
|
|
11e0f8c3a4 | ||
|
|
a99b8399fe | ||
|
|
7e9a626891 | ||
|
|
cecd90e675 | ||
|
|
2d7d025682 | ||
|
|
12fc597b56 | ||
|
|
886cd75ad2 | ||
|
|
2b50c4faae | ||
|
|
9c3dfcd09f | ||
|
|
cb52fa6ab7 | ||
|
|
faeba8119a | ||
|
|
89b338fb86 | ||
|
|
60ef8e648c | ||
|
|
498913e71d | ||
|
|
6c1f7fade8 | ||
|
|
0f829d0b91 | ||
|
|
0717933459 | ||
|
|
516059e390 | ||
|
|
d4f472a64e | ||
|
|
97d7eab1a7 | ||
|
|
6c8add051f | ||
|
|
248da93d05 | ||
|
|
e9dcd8b7ba | ||
|
|
935d41dc26 | ||
|
|
0f0ee9ffde | ||
|
|
b703bcdd52 | ||
|
|
8e127d0339 | ||
|
|
add111fe3f | ||
|
|
bf44637400 | ||
|
|
657e6ae7d3 | ||
|
|
4ddb164bbd | ||
|
|
5c241d7491 | ||
|
|
90360022a4 | ||
|
|
ca5f5cf0e3 | ||
|
|
befcc9b37c | ||
|
|
a46350c76a | ||
|
|
d72a15937d | ||
|
|
56c1b92316 | ||
|
|
91cd27298d | ||
|
|
98bb98c265 | ||
|
|
e970bb4d4e | ||
|
|
ed83da5669 | ||
|
|
7e7f85352b | ||
|
|
013622a2a7 | ||
|
|
fb4da697a2 | ||
|
|
4e56cb4e74 | ||
|
|
649b142b46 | ||
|
|
34257cad60 | ||
|
|
382a77d2c5 | ||
|
|
3745c44455 | ||
|
|
9d9ab1ffd2 | ||
|
|
938a87ceca | ||
|
|
583bf74724 | ||
|
|
26e4529f27 | ||
|
|
e404d02965 | ||
|
|
c610100c13 | ||
|
|
8d4e03bdb8 | ||
|
|
77b631be87 | ||
|
|
e403c41530 | ||
|
|
5b2fb1fb38 | ||
|
|
cf4268d1c3 | ||
|
|
e6a91a9959 | ||
|
|
f22b6449d4 | ||
|
|
58d910dc57 | ||
|
|
11645fdc9a | ||
|
|
177e60739c | ||
|
|
5f992352ee | ||
|
|
216b6f536f | ||
|
|
1e176151a0 | ||
|
|
604fd2be44 | ||
|
|
27c4d35a9b | ||
|
|
a9e6a68369 | ||
|
|
6c1c9fe600 | ||
|
|
af9050c34b | ||
|
|
4c46e16160 | ||
|
|
590b4c82d2 | ||
|
|
19fa107fea | ||
|
|
ea7a2d271d | ||
|
|
55673cdb4b | ||
|
|
25037e3f5f | ||
|
|
94ebbab68a | ||
|
|
4174b5e1e4 | ||
|
|
101e5e6ff1 | ||
|
|
669f3ef404 | ||
|
|
4c7cbadc2f | ||
|
|
2176553b26 | ||
|
|
024eeaf6bf | ||
|
|
83883c4b05 | ||
|
|
b062fc056f | ||
|
|
3e32fca356 | ||
|
|
9c2f2398f1 | ||
|
|
6d6003fd80 | ||
|
|
f9df44a2cd | ||
|
|
7c670de7c2 | ||
|
|
20854ba5d7 | ||
|
|
2e8bb357fc | ||
|
|
810725cc6b | ||
|
|
8d7fa1d397 | ||
|
|
6b6a9a9935 | ||
|
|
8e80c3bde6 | ||
|
|
de0d022268 | ||
|
|
8092a440f4 | ||
|
|
d78d313372 | ||
|
|
1a7957bee6 | ||
|
|
23caeb477c | ||
|
|
2856803371 | ||
|
|
ffb37d3e12 | ||
|
|
bb1dfcde9b | ||
|
|
1594683191 | ||
|
|
0d4775bb7d | ||
|
|
a08a45640d | ||
|
|
d1518a490f | ||
|
|
f95d41e093 | ||
|
|
a07af87cb1 | ||
|
|
e634e2cbff | ||
|
|
c8cebc2b18 | ||
|
|
e01869afda | ||
|
|
b4ec480405 | ||
|
|
12ab11a4e4 | ||
|
|
bb3c8fbe0c | ||
|
|
20930617bb | ||
|
|
0f34829dab | ||
|
|
4221797569 | ||
|
|
437b7da0f7 | ||
|
|
31f5698437 | ||
|
|
666d525243 | ||
|
|
9066913710 | ||
|
|
ebc1a85190 | ||
|
|
4c44877af4 | ||
|
|
c03c778efb | ||
|
|
b6339d38fa | ||
|
|
42e04d459b | ||
|
|
769179d04b | ||
|
|
a7c67bbb35 | ||
|
|
b869eb8d1d | ||
|
|
7d9de4b0d2 | ||
|
|
a49eb464c8 | ||
|
|
48f67b1886 | ||
|
|
ce4a37b292 | ||
|
|
5623bf253b | ||
|
|
38c0fae064 | ||
|
|
28065f7231 | ||
|
|
bb841fcc3b | ||
|
|
1c29fb2db3 | ||
|
|
229987ee90 | ||
|
|
533a58d083 | ||
|
|
7958b17968 | ||
|
|
a773b51ada | ||
|
|
05f15d9831 | ||
|
|
c6c413202c | ||
|
|
f1b80ab90f | ||
|
|
558240279f | ||
|
|
3492aac2c0 | ||
|
|
fc93d0904e | ||
|
|
2adbc334a2 | ||
|
|
05c8dd2fe1 | ||
|
|
88fd1e56d0 | ||
|
|
49f89e33b5 | ||
|
|
d0a47c84b9 | ||
|
|
bfaff5cca5 | ||
|
|
30d7f67d42 | ||
|
|
7e332fa615 | ||
|
|
3d8fd1d352 | ||
|
|
db0c86d50c | ||
|
|
6e17d5d756 | ||
|
|
e2ac32139c | ||
|
|
348a83a1d9 | ||
|
|
4cf942ac3a | ||
|
|
f632a4b773 | ||
|
|
e2fa122362 | ||
|
|
6a65f8090f | ||
|
|
637d926f7a | ||
|
|
7f5efc5ca1 | ||
|
|
1885a48241 | ||
|
|
f0584ac853 | ||
|
|
0f269455b1 | ||
|
|
25aa5bf2af | ||
|
|
92551c58a5 | ||
|
|
1bfd147421 | ||
|
|
26ad473592 | ||
|
|
10d3ba268d | ||
|
|
7883e7a0a9 | ||
|
|
da4b961686 | ||
|
|
fb84cb03f3 | ||
|
|
c9e3c628e8 | ||
|
|
fbeaafa8d3 | ||
|
|
68454a8a6e | ||
|
|
bd880d304e | ||
|
|
386737acac | ||
|
|
3690042d2c | ||
|
|
c00d804073 | ||
|
|
e2abc1b265 | ||
|
|
3d9ef2c63f | ||
|
|
b13c29ab91 | ||
|
|
df4f08b071 | ||
|
|
83cab764a1 | ||
|
|
b784a14aee | ||
|
|
629c2eb4c6 | ||
|
|
c73689fbc3 | ||
|
|
1298b76b77 | ||
|
|
4b6ee4ea98 | ||
|
|
10d353defe | ||
|
|
9ca7c8431b | ||
|
|
a8d3cdf62c | ||
|
|
764c674350 | ||
|
|
f31abe83b0 | ||
|
|
4fe3b55720 | ||
|
|
8e96d1a461 | ||
|
|
9f652c33b4 | ||
|
|
d5a2695766 | ||
|
|
ced824d791 | ||
|
|
0131b92c7a | ||
|
|
a3d1c43580 | ||
|
|
66fe0b8245 | ||
|
|
adfd5425f0 | ||
|
|
8fde82a0eb | ||
|
|
787ccad384 | ||
|
|
693bae7631 | ||
|
|
f6d5a27e0b | ||
|
|
592440f2b1 | ||
|
|
b84ca9b283 | ||
|
|
7445d54d22 | ||
|
|
f37d4c47cc | ||
|
|
02a29c6af4 | ||
|
|
7fa78f0304 | ||
|
|
e3527f47ea | ||
|
|
e6c4cc25e5 | ||
|
|
1e3306ef28 | ||
|
|
6f17aa21c2 | ||
|
|
b8acead444 | ||
|
|
eb261f503b | ||
|
|
cc397d45a9 | ||
|
|
01bbb54054 | ||
|
|
2b7c2048ef | ||
|
|
b297f3d3a3 | ||
|
|
a3b7c6808b | ||
|
|
a1f82e1652 | ||
|
|
690d33ece3 | ||
|
|
d7579cce9e | ||
|
|
e468c48da4 | ||
|
|
e6cae1a79b | ||
|
|
95122e91f5 | ||
|
|
bf2acfec38 | ||
|
|
9e1b8c1a72 | ||
|
|
d7dd89d719 | ||
|
|
20a865f012 | ||
|
|
87676d2994 | ||
|
|
001dad9a79 | ||
|
|
a412c7978a | ||
|
|
8e8e9d35ac | ||
|
|
545c4208d9 | ||
|
|
50f5e850dd | ||
|
|
b9a43147dc | ||
|
|
ae3559ca74 | ||
|
|
1a373e1c40 | ||
|
|
d122276e71 | ||
|
|
156cb3055c | ||
|
|
6aa35d592e | ||
|
|
b290055e83 | ||
|
|
c051c5cd50 | ||
|
|
06711d3b8b | ||
|
|
4f2db28196 | ||
|
|
3681340587 | ||
|
|
9e182a2e47 | ||
|
|
e5736567f6 | ||
|
|
a2d12eb225 | ||
|
|
5ae159de5b | ||
|
|
8c98aedac2 | ||
|
|
7ba4f8de4a | ||
|
|
6f6292494c | ||
|
|
793476432b | ||
|
|
9d7ac851bd | ||
|
|
54e693d0e2 | ||
|
|
969b3ccbcd | ||
|
|
8a2edf274a | ||
|
|
171eb2dd8b | ||
|
|
76cc22d5af | ||
|
|
2be10eb4ca | ||
|
|
297cb5c3ef | ||
|
|
9a20b0e0de | ||
|
|
66fb1d7c60 | ||
|
|
5ed94c8abc | ||
|
|
6213193cda | ||
|
|
5b0a30774e | ||
|
|
d08ee30a7a | ||
|
|
167570559f | ||
|
|
e376da4482 | ||
|
|
1b7a475631 | ||
|
|
5fcd01224c | ||
|
|
bc1f9d3734 | ||
|
|
c0369e6e76 | ||
|
|
3cc4f13f4d | ||
|
|
c27817eaf0 | ||
|
|
f239866c68 | ||
|
|
7f0851bcb1 | ||
|
|
652ec40d82 | ||
|
|
d56d85b702 | ||
|
|
9be546d6c7 | ||
|
|
aab213a6b9 | ||
|
|
89505fce30 | ||
|
|
d106c5144b | ||
|
|
175571a130 | ||
|
|
d363cf8137 | ||
|
|
ec41ec2377 | ||
|
|
64e9150f11 | ||
|
|
08bf147559 | ||
|
|
ca94ef58e8 | ||
|
|
b34851bd12 | ||
|
|
5b6ea73513 | ||
|
|
2d00ab1d3e | ||
|
|
e068104253 | ||
|
|
5e2536c129 | ||
|
|
f72e4692e4 | ||
|
|
a76e2fea7f | ||
|
|
09425e1c43 | ||
|
|
ba7de5d33d | ||
|
|
2770dfde56 | ||
|
|
9b2d36b78a | ||
|
|
3bd6906c80 | ||
|
|
ac62ebadf0 | ||
|
|
54622d6759 | ||
|
|
0a7ed3b52f | ||
|
|
0e366a6269 | ||
|
|
7350c1d4d5 | ||
|
|
d87650de08 | ||
|
|
4865224458 | ||
|
|
49d5cd36df | ||
|
|
130033cf4b | ||
|
|
c293a273ca | ||
|
|
90c73e5e3d | ||
|
|
fbc88bb4cd | ||
|
|
1e8819af0c | ||
|
|
763fee0c14 | ||
|
|
71b8144c3c | ||
|
|
bfd10f6903 | ||
|
|
10c79da35c | ||
|
|
d7d88a9ebb | ||
|
|
a32b9ca8c0 | ||
|
|
7de420e32b | ||
|
|
dc1f0f1095 | ||
|
|
18a3ae7bff | ||
|
|
35867a0a00 | ||
|
|
a05e09908c | ||
|
|
6fca1c919e | ||
|
|
d7e1ad73cc | ||
|
|
7e56c8a011 | ||
|
|
d6bc053950 | ||
|
|
813be4af2b | ||
|
|
df1a272090 | ||
|
|
f1ae421853 | ||
|
|
99b7bdab27 | ||
|
|
fbb9e09237 | ||
|
|
21a6fdd100 | ||
|
|
2f52c1aa1b | ||
|
|
56d6234f1c | ||
|
|
81dcadb959 | ||
|
|
89d726de2a | ||
|
|
9211fe476d | ||
|
|
3116f3d363 | ||
|
|
846cc65d8e | ||
|
|
7a7760c3dd | ||
|
|
78e5bf2a60 | ||
|
|
a2c11af82b | ||
|
|
89fca85ca8 | ||
|
|
536f1a392e | ||
|
|
5d843ecae8 | ||
|
|
bbc12ec041 | ||
|
|
72dae631fe | ||
|
|
245c492906 | ||
|
|
3a8c64b02d | ||
|
|
7a5e55e5f0 | ||
|
|
16895716e9 | ||
|
|
9030bffdbd | ||
|
|
4bea4101a1 | ||
|
|
ec182ade39 | ||
|
|
35a5e27e2d | ||
|
|
9a597f2b4d | ||
|
|
fc2e3fec63 | ||
|
|
0f6245a072 | ||
|
|
86581e6a00 | ||
|
|
330e6c09e7 | ||
|
|
6c695f09e7 | ||
|
|
b05c2c1e1a | ||
|
|
820304ce19 | ||
|
|
1017501153 | ||
|
|
256ae5c4b0 | ||
|
|
a03f62832a | ||
|
|
dd07baff59 | ||
|
|
647c55eaf7 | ||
|
|
1fea8edb74 | ||
|
|
2dd416028d | ||
|
|
3f0f118c8b | ||
|
|
e50a2772f8 | ||
|
|
354b04bea4 | ||
|
|
60ec9b5c49 | ||
|
|
83f02f5c91 | ||
|
|
5c16b86edf | ||
|
|
80c283a370 | ||
|
|
23d0b73e20 | ||
|
|
8bac530504 | ||
|
|
8321e400c1 | ||
|
|
552b6547db | ||
|
|
e10b9254ed | ||
|
|
6841ad5410 | ||
|
|
f7b3a7c812 | ||
|
|
3596f59430 | ||
|
|
43e3376d2e | ||
|
|
18c8a04cbc | ||
|
|
0355993b00 | ||
|
|
e204daa844 | ||
|
|
55f9857dec | ||
|
|
e571204a84 | ||
|
|
988db485a2 | ||
|
|
f3cb85ea59 | ||
|
|
5695200940 | ||
|
|
44ca9c3480 | ||
|
|
b5c860db1d | ||
|
|
ef69e329fc | ||
|
|
9321a7df14 | ||
|
|
684fafdfdd | ||
|
|
c2e797615d | ||
|
|
f9facda521 | ||
|
|
1906d68541 | ||
|
|
cea1402dde | ||
|
|
b07420a193 | ||
|
|
9be8b71f09 | ||
|
|
edc76faeb4 | ||
|
|
e990e0ff5b | ||
|
|
336e51d104 | ||
|
|
c79e4831e1 | ||
|
|
daf35a4972 | ||
|
|
495ace1246 | ||
|
|
51df66e362 | ||
|
|
11f5ea5074 | ||
|
|
c2fcf648e0 | ||
|
|
2ae57ae34c | ||
|
|
0e0ef0e5a2 | ||
|
|
d4a757be49 | ||
|
|
08a571f076 | ||
|
|
f3998a190c | ||
|
|
6eeef62568 | ||
|
|
e63c4f3b6e | ||
|
|
6462023d58 | ||
|
|
110f571b40 | ||
|
|
eaa90b31d8 | ||
|
|
29b675b26a | ||
|
|
889ed58f0c | ||
|
|
7fc30aea93 | ||
|
|
45275f0a2c | ||
|
|
15f31a1698 | ||
|
|
bd186e7fe1 | ||
|
|
190e0e179f | ||
|
|
103d3832a0 | ||
|
|
e1079396c3 | ||
|
|
ca164b37db | ||
|
|
f40255bc8a | ||
|
|
8e837b8e56 | ||
|
|
2d8c7a39ca | ||
|
|
8bc60e55e0 | ||
|
|
45bb6e94fc | ||
|
|
cf8096f276 | ||
|
|
b501e52f5d | ||
|
|
3f6bebd540 | ||
|
|
96d7d18f6d | ||
|
|
4f49077bee | ||
|
|
33aef7eb54 | ||
|
|
cdf3905a51 | ||
|
|
c17db8c9b4 | ||
|
|
34a58bc5da | ||
|
|
7ca37697d4 | ||
|
|
978b18570a | ||
|
|
1303ae5682 | ||
|
|
33a9654fe0 | ||
|
|
1dc1643071 | ||
|
|
48e845c0b1 | ||
|
|
5976ddeb72 | ||
|
|
2d5626b0cd | ||
|
|
c9ca9ad4ba | ||
|
|
f848d1b7b2 | ||
|
|
56bdfa72d1 | ||
|
|
6e873abc7b | ||
|
|
528687cf63 | ||
|
|
6b60373886 | ||
|
|
b07763ad05 | ||
|
|
922c3d5611 | ||
|
|
fb8daa4ed9 | ||
|
|
04bd9ddc2c | ||
|
|
9221435bad | ||
|
|
31c8e850cd | ||
|
|
f08466245a | ||
|
|
93af079316 | ||
|
|
97fb8d680f | ||
|
|
3221f930c4 | ||
|
|
e0240784b5 | ||
|
|
0f8553b45d | ||
|
|
269d21a4c0 | ||
|
|
566bd04e3f | ||
|
|
bef1feea0a | ||
|
|
f808469285 | ||
|
|
63f86613c3 | ||
|
|
067a51775e | ||
|
|
d9cc67ce6d | ||
|
|
59e4fb82b9 | ||
|
|
a9a705f118 | ||
|
|
6409c193c4 | ||
|
|
950a4a00a6 | ||
|
|
67c940f3a8 | ||
|
|
324b3eb081 | ||
|
|
d4a1953747 | ||
|
|
b348debc72 | ||
|
|
fc01ddbb1c | ||
|
|
7f797b1039 | ||
|
|
3bd76b2dfd | ||
|
|
8d03fcee2e | ||
|
|
9149e3f201 | ||
|
|
6d99416641 | ||
|
|
6e0f2fc4ce | ||
|
|
fe3339f645 | ||
|
|
11e05f73d9 | ||
|
|
566572b013 | ||
|
|
8b60d26f5e | ||
|
|
50924e4189 | ||
|
|
cc68183940 | ||
|
|
55164ef60f | ||
|
|
de568140d2 | ||
|
|
445a14278b | ||
|
|
1d3ab39dca | ||
|
|
35c8e39beb | ||
|
|
c3a598464f | ||
|
|
0a01d85f40 | ||
|
|
52bb909f0b | ||
|
|
59a7a2c807 | ||
|
|
6beeecb0f7 | ||
|
|
c2157e2df1 | ||
|
|
d4e672d630 | ||
|
|
f5f256809c | ||
|
|
aee46e8640 | ||
|
|
9ce911771e |
407 changed files with 12156 additions and 13108 deletions
2
.github/workflows/default_plugins.yml
vendored
2
.github/workflows/default_plugins.yml
vendored
|
|
@ -10,7 +10,7 @@ jobs:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v5
|
uses: actions/setup-dotnet@v5
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
12
.github/workflows/dotnet.yml
vendored
12
.github/workflows/dotnet.yml
vendored
|
|
@ -20,7 +20,7 @@ jobs:
|
||||||
NUGET_CERT_REVOCATION_MODE: offline
|
NUGET_CERT_REVOCATION_MODE: offline
|
||||||
BUILD_NUMBER: ${{ github.run_number }}
|
BUILD_NUMBER: ${{ github.run_number }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
- name: Set Flow.Launcher.csproj version
|
- name: Set Flow.Launcher.csproj version
|
||||||
id: update
|
id: update
|
||||||
uses: vers-one/dotnet-project-version-updater@v1.7
|
uses: vers-one/dotnet-project-version-updater@v1.7
|
||||||
|
|
@ -54,28 +54,28 @@ jobs:
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: .\Scripts\post_build.ps1
|
run: .\Scripts\post_build.ps1
|
||||||
- name: Upload Plugin Nupkg
|
- name: Upload Plugin Nupkg
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: Plugin nupkg
|
name: Plugin nupkg
|
||||||
path: |
|
path: |
|
||||||
Output\Release\Flow.Launcher.Plugin.*.nupkg
|
Output\Release\Flow.Launcher.Plugin.*.nupkg
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
- name: Upload Setup
|
- name: Upload Setup
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: Flow Installer
|
name: Flow Installer
|
||||||
path: |
|
path: |
|
||||||
Output\Packages\Flow-Launcher-*.exe
|
Output\Packages\Flow-Launcher-*.exe
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
- name: Upload Portable Version
|
- name: Upload Portable Version
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: Portable Version
|
name: Portable Version
|
||||||
path: |
|
path: |
|
||||||
Output\Packages\Flow-Launcher-Portable.zip
|
Output\Packages\Flow-Launcher-Portable.zip
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
- name: Upload Full Nupkg
|
- name: Upload Full Nupkg
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: Full nupkg
|
name: Full nupkg
|
||||||
path: |
|
path: |
|
||||||
|
|
@ -83,7 +83,7 @@ jobs:
|
||||||
|
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
- name: Upload Release Information
|
- name: Upload Release Information
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: RELEASES
|
name: RELEASES
|
||||||
path: |
|
path: |
|
||||||
|
|
|
||||||
2
.github/workflows/pr_assignee.yml
vendored
2
.github/workflows/pr_assignee.yml
vendored
|
|
@ -14,4 +14,4 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Assign PR to creator
|
- name: Assign PR to creator
|
||||||
uses: toshimaru/auto-author-assign@v2.1.1
|
uses: toshimaru/auto-author-assign@v3.0.1
|
||||||
|
|
|
||||||
2
.github/workflows/release_pr.yml
vendored
2
.github/workflows/release_pr.yml
vendored
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
update-pr:
|
update-pr:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- uses: actions/setup-python@v6
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
|
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
|
||||||
<!-- Work around https://github.com/dotnet/runtime/issues/109682 -->
|
<!-- Workaround https://github.com/dotnet/runtime/issues/109682 -->
|
||||||
<CETCompat>false</CETCompat>
|
<CETCompat>false</CETCompat>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -3,10 +3,8 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Infrastructure;
|
||||||
using Flow.Launcher.Infrastructure.UserSettings;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
using Flow.Launcher.Plugin;
|
|
||||||
using Flow.Launcher.Plugin.SharedCommands;
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using Squirrel;
|
using Squirrel;
|
||||||
|
|
@ -17,8 +15,6 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(Portable);
|
private static readonly string ClassName = nameof(Portable);
|
||||||
|
|
||||||
private readonly IPublicAPI API = Ioc.Default.GetRequiredService<IPublicAPI>();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// As at Squirrel.Windows version 1.5.2, UpdateManager needs to be disposed after finish
|
/// As at Squirrel.Windows version 1.5.2, UpdateManager needs to be disposed after finish
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -45,13 +41,13 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
#endif
|
#endif
|
||||||
IndicateDeletion(DataLocation.PortableDataPath);
|
IndicateDeletion(DataLocation.PortableDataPath);
|
||||||
|
|
||||||
API.ShowMsgBox(API.GetTranslation("restartToDisablePortableMode"));
|
PublicApi.Instance.ShowMsgBox(Localize.restartToDisablePortableMode());
|
||||||
|
|
||||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Error occurred while disabling portable mode", e);
|
PublicApi.Instance.LogException(ClassName, "Error occurred while disabling portable mode", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,13 +64,13 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
#endif
|
#endif
|
||||||
IndicateDeletion(DataLocation.RoamingDataPath);
|
IndicateDeletion(DataLocation.RoamingDataPath);
|
||||||
|
|
||||||
API.ShowMsgBox(API.GetTranslation("restartToEnablePortableMode"));
|
PublicApi.Instance.ShowMsgBox(Localize.restartToEnablePortableMode());
|
||||||
|
|
||||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Error occurred while enabling portable mode", e);
|
PublicApi.Instance.LogException(ClassName, "Error occurred while enabling portable mode", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -94,13 +90,13 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
|
|
||||||
public void MoveUserDataFolder(string fromLocation, string toLocation)
|
public void MoveUserDataFolder(string fromLocation, string toLocation)
|
||||||
{
|
{
|
||||||
FilesFolders.CopyAll(fromLocation, toLocation, (s) => API.ShowMsgBox(s));
|
FilesFolders.CopyAll(fromLocation, toLocation, (s) => PublicApi.Instance.ShowMsgBox(s));
|
||||||
VerifyUserDataAfterMove(fromLocation, toLocation);
|
VerifyUserDataAfterMove(fromLocation, toLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VerifyUserDataAfterMove(string fromLocation, string toLocation)
|
public void VerifyUserDataAfterMove(string fromLocation, string toLocation)
|
||||||
{
|
{
|
||||||
FilesFolders.VerifyBothFolderFilesEqual(fromLocation, toLocation, (s) => API.ShowMsgBox(s));
|
FilesFolders.VerifyBothFolderFilesEqual(fromLocation, toLocation, (s) => PublicApi.Instance.ShowMsgBox(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CreateShortcuts()
|
public void CreateShortcuts()
|
||||||
|
|
@ -139,8 +135,8 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
public void PreStartCleanUpAfterPortabilityUpdate()
|
public void PreStartCleanUpAfterPortabilityUpdate()
|
||||||
{
|
{
|
||||||
// Specify here so this method does not rely on other environment variables to initialise
|
// Specify here so this method does not rely on other environment variables to initialise
|
||||||
var portableDataDir = Path.Combine(Directory.GetParent(Assembly.GetExecutingAssembly().Location.NonNull()).ToString(), "UserData");
|
var portableDataDir = DataLocation.PortableDataPath;
|
||||||
var roamingDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher");
|
var roamingDataDir = DataLocation.RoamingDataPath;
|
||||||
|
|
||||||
// Get full path to the .dead files for each case
|
// Get full path to the .dead files for each case
|
||||||
var portableDataDeleteFilePath = Path.Combine(portableDataDir, DataLocation.DeletionIndicatorFile);
|
var portableDataDeleteFilePath = Path.Combine(portableDataDir, DataLocation.DeletionIndicatorFile);
|
||||||
|
|
@ -150,12 +146,12 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
// delete it and prompt the user to pick the portable data location
|
// delete it and prompt the user to pick the portable data location
|
||||||
if (File.Exists(roamingDataDeleteFilePath))
|
if (File.Exists(roamingDataDeleteFilePath))
|
||||||
{
|
{
|
||||||
FilesFolders.RemoveFolderIfExists(roamingDataDir, (s) => API.ShowMsgBox(s));
|
FilesFolders.RemoveFolderIfExists(roamingDataDir, (s) => PublicApi.Instance.ShowMsgBox(s));
|
||||||
|
|
||||||
if (API.ShowMsgBox(API.GetTranslation("moveToDifferentLocation"),
|
if (PublicApi.Instance.ShowMsgBox(Localize.moveToDifferentLocation(),
|
||||||
string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
FilesFolders.OpenPath(Constant.RootDirectory, (s) => API.ShowMsgBox(s));
|
FilesFolders.OpenPath(Constant.RootDirectory, (s) => PublicApi.Instance.ShowMsgBox(s));
|
||||||
|
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
@ -164,9 +160,9 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
// delete it and notify the user about it.
|
// delete it and notify the user about it.
|
||||||
else if (File.Exists(portableDataDeleteFilePath))
|
else if (File.Exists(portableDataDeleteFilePath))
|
||||||
{
|
{
|
||||||
FilesFolders.RemoveFolderIfExists(portableDataDir, (s) => API.ShowMsgBox(s));
|
FilesFolders.RemoveFolderIfExists(portableDataDir, (s) => PublicApi.Instance.ShowMsgBox(s));
|
||||||
|
|
||||||
API.ShowMsgBox(API.GetTranslation("shortcutsUninstallerCreated"));
|
PublicApi.Instance.ShowMsgBox(Localize.shortcutsUninstallerCreated());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,8 +173,7 @@ namespace Flow.Launcher.Core.Configuration
|
||||||
|
|
||||||
if (roamingLocationExists && portableLocationExists)
|
if (roamingLocationExists && portableLocationExists)
|
||||||
{
|
{
|
||||||
API.ShowMsgBox(string.Format(API.GetTranslation("userDataDuplicated"),
|
PublicApi.Instance.ShowMsgBox(Localize.userDataDuplicated(DataLocation.PortableDataPath, DataLocation.RoamingDataPath, Environment.NewLine));
|
||||||
DataLocation.PortableDataPath, DataLocation.RoamingDataPath, Environment.NewLine));
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Infrastructure.Http;
|
using Flow.Launcher.Infrastructure.Http;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
|
|
||||||
|
|
@ -18,13 +17,9 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(CommunityPluginSource);
|
private static readonly string ClassName = nameof(CommunityPluginSource);
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
private string latestEtag = "";
|
private string latestEtag = "";
|
||||||
|
|
||||||
private List<UserPlugin> plugins = new();
|
private List<UserPlugin> plugins = [];
|
||||||
|
|
||||||
private static readonly JsonSerializerOptions PluginStoreItemSerializationOption = new()
|
private static readonly JsonSerializerOptions PluginStoreItemSerializationOption = new()
|
||||||
{
|
{
|
||||||
|
|
@ -41,7 +36,7 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public async Task<List<UserPlugin>> FetchAsync(CancellationToken token)
|
public async Task<List<UserPlugin>> FetchAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
API.LogInfo(ClassName, $"Loading plugins from {ManifestFileUrl}");
|
PublicApi.Instance.LogInfo(ClassName, $"Loading plugins from {ManifestFileUrl}");
|
||||||
|
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get, ManifestFileUrl);
|
var request = new HttpRequestMessage(HttpMethod.Get, ManifestFileUrl);
|
||||||
|
|
||||||
|
|
@ -59,29 +54,40 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
latestEtag = response.Headers.ETag?.Tag;
|
latestEtag = response.Headers.ETag?.Tag;
|
||||||
|
|
||||||
API.LogInfo(ClassName, $"Loaded {plugins.Count} plugins from {ManifestFileUrl}");
|
PublicApi.Instance.LogInfo(ClassName, $"Loaded {plugins.Count} plugins from {ManifestFileUrl}");
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
else if (response.StatusCode == HttpStatusCode.NotModified)
|
else if (response.StatusCode == HttpStatusCode.NotModified)
|
||||||
{
|
{
|
||||||
API.LogInfo(ClassName, $"Resource {ManifestFileUrl} has not been modified.");
|
PublicApi.Instance.LogInfo(ClassName, $"Resource {ManifestFileUrl} has not been modified.");
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.LogWarn(ClassName, $"Failed to load resource {ManifestFileUrl} with response {response.StatusCode}");
|
PublicApi.Instance.LogWarn(ClassName, $"Failed to load resource {ManifestFileUrl} with response {response.StatusCode}");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (OperationCanceledException) when (token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
PublicApi.Instance.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
|
||||||
|
PublicApi.Instance.LogWarn(ClassName, $"Fetching from {ManifestFileUrl} timed out.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
if (e is HttpRequestException or WebException or SocketException || e.InnerException is TimeoutException)
|
if (e is HttpRequestException or WebException or SocketException || e.InnerException is TimeoutException)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, $"Check your connection and proxy settings to {ManifestFileUrl}.", e);
|
PublicApi.Instance.LogException(ClassName, $"Check your connection and proxy settings to {ManifestFileUrl}.", e);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Error Occurred", e);
|
PublicApi.Instance.LogException(ClassName, "Error Occurred", e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Infrastructure.UserSettings;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using Flow.Launcher.Plugin.SharedCommands;
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
|
|
@ -15,7 +14,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(AbstractPluginEnvironment);
|
private static readonly string ClassName = nameof(AbstractPluginEnvironment);
|
||||||
|
|
||||||
protected readonly IPublicAPI API = Ioc.Default.GetRequiredService<IPublicAPI>();
|
protected readonly IPublicAPI API = PublicApi.Instance;
|
||||||
|
|
||||||
internal abstract string Language { get; }
|
internal abstract string Language { get; }
|
||||||
|
|
||||||
|
|
@ -58,15 +57,10 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
return SetPathForPluginPairs(PluginsSettingsFilePath, Language);
|
return SetPathForPluginPairs(PluginsSettingsFilePath, Language);
|
||||||
}
|
}
|
||||||
|
|
||||||
var noRuntimeMessage = string.Format(
|
var noRuntimeMessage = Localize.runtimePluginInstalledChooseRuntimePrompt(Language, EnvName, Environment.NewLine);
|
||||||
API.GetTranslation("runtimePluginInstalledChooseRuntimePrompt"),
|
|
||||||
Language,
|
|
||||||
EnvName,
|
|
||||||
Environment.NewLine
|
|
||||||
);
|
|
||||||
if (API.ShowMsgBox(noRuntimeMessage, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
if (API.ShowMsgBox(noRuntimeMessage, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
||||||
{
|
{
|
||||||
var msg = string.Format(API.GetTranslation("runtimePluginChooseRuntimeExecutable"), EnvName);
|
var msg = Localize.runtimePluginChooseRuntimeExecutable(EnvName);
|
||||||
|
|
||||||
var selectedFile = GetFileFromDialog(msg, FileDialogFilter);
|
var selectedFile = GetFileFromDialog(msg, FileDialogFilter);
|
||||||
|
|
||||||
|
|
@ -77,12 +71,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
// Nothing selected because user pressed cancel from the file dialog window
|
// Nothing selected because user pressed cancel from the file dialog window
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var forceDownloadMessage = string.Format(
|
var forceDownloadMessage = Localize.runtimeExecutableInvalidChooseDownload(Language, EnvName, Environment.NewLine);
|
||||||
API.GetTranslation("runtimeExecutableInvalidChooseDownload"),
|
|
||||||
Language,
|
|
||||||
EnvName,
|
|
||||||
Environment.NewLine
|
|
||||||
);
|
|
||||||
|
|
||||||
// Let users select valid path or choose to download
|
// Let users select valid path or choose to download
|
||||||
while (string.IsNullOrEmpty(selectedFile))
|
while (string.IsNullOrEmpty(selectedFile))
|
||||||
|
|
@ -120,7 +109,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.ShowMsgBox(string.Format(API.GetTranslation("runtimePluginUnableToSetExecutablePath"), Language));
|
API.ShowMsgBox(Localize.runtimePluginUnableToSetExecutablePath(Language));
|
||||||
API.LogError(ClassName,
|
API.LogError(ClassName,
|
||||||
$"Not able to successfully set {EnvName} path, setting's plugin executable path variable is still an empty string.",
|
$"Not able to successfully set {EnvName} path, setting's plugin executable path variable is still an empty string.",
|
||||||
$"{Language}Environment");
|
$"{Language}Environment");
|
||||||
|
|
@ -248,7 +237,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
private static string GetUpdatedEnvironmentPath(string filePath)
|
private static string GetUpdatedEnvironmentPath(string filePath)
|
||||||
{
|
{
|
||||||
var index = filePath.IndexOf(DataLocation.PluginEnvironments);
|
var index = filePath.IndexOf(DataLocation.PluginEnvironments);
|
||||||
|
|
||||||
// get the substring after "Environments" because we can not determine it dynamically
|
// get the substring after "Environments" because we can not determine it dynamically
|
||||||
var executablePathSubstring = filePath[(index + DataLocation.PluginEnvironments.Length)..];
|
var executablePathSubstring = filePath[(index + DataLocation.PluginEnvironments.Length)..];
|
||||||
return $"{DataLocation.PluginEnvironmentsPath}{executablePathSubstring}";
|
return $"{DataLocation.PluginEnvironmentsPath}{executablePathSubstring}";
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
}
|
}
|
||||||
catch (System.Exception e)
|
catch (System.Exception e)
|
||||||
{
|
{
|
||||||
API.ShowMsgError(API.GetTranslation("failToInstallPythonEnv"));
|
API.ShowMsgError(Localize.failToInstallPythonEnv());
|
||||||
API.LogException(ClassName, "Failed to install Python environment", e);
|
API.LogException(ClassName, "Failed to install Python environment", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
}
|
}
|
||||||
catch (System.Exception e)
|
catch (System.Exception e)
|
||||||
{
|
{
|
||||||
API.ShowMsgError(API.GetTranslation("failToInstallTypeScriptEnv"));
|
API.ShowMsgError(Localize.failToInstallTypeScriptEnv());
|
||||||
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ namespace Flow.Launcher.Core.ExternalPlugins.Environments
|
||||||
}
|
}
|
||||||
catch (System.Exception e)
|
catch (System.Exception e)
|
||||||
{
|
{
|
||||||
API.ShowMsgError(API.GetTranslation("failToInstallTypeScriptEnv"));
|
API.ShowMsgError(Localize.failToInstallTypeScriptEnv());
|
||||||
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
API.LogException(ClassName, "Failed to install TypeScript environment", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,8 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Core.Plugin;
|
||||||
|
|
||||||
namespace Flow.Launcher.Core.ExternalPlugins
|
namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
{
|
{
|
||||||
|
|
@ -23,17 +22,15 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
private static DateTime lastFetchedAt = DateTime.MinValue;
|
private static DateTime lastFetchedAt = DateTime.MinValue;
|
||||||
private static readonly TimeSpan fetchTimeout = TimeSpan.FromMinutes(2);
|
private static readonly TimeSpan fetchTimeout = TimeSpan.FromMinutes(2);
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
public static List<UserPlugin> UserPlugins { get; private set; }
|
public static List<UserPlugin> UserPlugins { get; private set; }
|
||||||
|
|
||||||
public static async Task<bool> UpdateManifestAsync(bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
public static async Task<bool> UpdateManifestAsync(bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
bool lockAcquired = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await manifestUpdateLock.WaitAsync(token).ConfigureAwait(false);
|
await manifestUpdateLock.WaitAsync(token).ConfigureAwait(false);
|
||||||
|
lockAcquired = true;
|
||||||
|
|
||||||
if (UserPlugins == null || usePrimaryUrlOnly || DateTime.Now.Subtract(lastFetchedAt) >= fetchTimeout)
|
if (UserPlugins == null || usePrimaryUrlOnly || DateTime.Now.Subtract(lastFetchedAt) >= fetchTimeout)
|
||||||
{
|
{
|
||||||
|
|
@ -44,11 +41,10 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var updatedPluginResults = new List<UserPlugin>();
|
var updatedPluginResults = new List<UserPlugin>();
|
||||||
var appVersion = SemanticVersioning.Version.Parse(Constant.Version);
|
|
||||||
|
|
||||||
for (int i = 0; i < results.Count; i++)
|
for (int i = 0; i < results.Count; i++)
|
||||||
{
|
{
|
||||||
if (IsMinimumAppVersionSatisfied(results[i], appVersion))
|
if (PluginManager.IsMinimumAppVersionSatisfied(results[i].Name, results[i].MinimumAppVersion))
|
||||||
updatedPluginResults.Add(results[i]);
|
updatedPluginResults.Add(results[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -59,39 +55,21 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (OperationCanceledException)
|
||||||
|
{
|
||||||
|
// Ignored
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Http request failed", e);
|
PublicApi.Instance.LogException(ClassName, "Http request failed", e);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
manifestUpdateLock.Release();
|
// Only release the lock if it was acquired
|
||||||
|
if (lockAcquired) manifestUpdateLock.Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsMinimumAppVersionSatisfied(UserPlugin plugin, SemanticVersioning.Version appVersion)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(plugin.MinimumAppVersion))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (appVersion >= SemanticVersioning.Version.Parse(plugin.MinimumAppVersion))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
API.LogException(ClassName, $"Failed to parse the minimum app version {plugin.MinimumAppVersion} for plugin {plugin.Name}. "
|
|
||||||
+ "Plugin excluded from manifest", e);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
API.LogInfo(ClassName, $"Plugin {plugin.Name} requires minimum Flow Launcher version {plugin.MinimumAppVersion}, "
|
|
||||||
+ $"but current version is {Constant.Version}. Plugin excluded from manifest.");
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net9.0-windows</TargetFramework>
|
<TargetFramework>net9.0-windows</TargetFramework>
|
||||||
|
|
@ -34,6 +34,7 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<NoWarn>$(NoWarn);FLSG0007</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -55,13 +56,26 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Droplex" Version="1.7.0" />
|
<PackageReference Include="Droplex" Version="1.7.0" />
|
||||||
<PackageReference Include="FSharp.Core" Version="9.0.300" />
|
<PackageReference Include="Flow.Launcher.Localization" Version="0.0.6" />
|
||||||
<PackageReference Include="Meziantou.Framework.Win32.Jobs" Version="3.4.3" />
|
<PackageReference Include="FSharp.Core" Version="9.0.303" />
|
||||||
|
<PackageReference Include="Meziantou.Framework.Win32.Jobs" Version="3.4.5" />
|
||||||
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
|
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
|
||||||
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
||||||
<PackageReference Include="squirrel.windows" Version="1.5.2" NoWarn="NU1701" />
|
<!-- Do not upgrade this to higher version since higher version removes UpdateManager instance -->
|
||||||
|
<PackageReference Include="squirrel.windows" Version="1.9.0" NoWarn="NU1701" />
|
||||||
<PackageReference Include="StreamJsonRpc" Version="2.22.11" />
|
<PackageReference Include="StreamJsonRpc" Version="2.22.11" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<FLLUseDependencyInjection>true</FLLUseDependencyInjection>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<AdditionalFiles Remove="Languages\en.xaml" />
|
||||||
|
<AdditionalFiles Include="..\Flow.Launcher\Languages\en.xaml">
|
||||||
|
<Link>Languages\en.xaml</Link>
|
||||||
|
</AdditionalFiles>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Flow.Launcher.Infrastructure\Flow.Launcher.Infrastructure.csproj" />
|
<ProjectReference Include="..\Flow.Launcher.Infrastructure\Flow.Launcher.Infrastructure.csproj" />
|
||||||
|
|
|
||||||
12
Flow.Launcher.Core/Plugin/IResultUpdateRegister.cs
Normal file
12
Flow.Launcher.Core/Plugin/IResultUpdateRegister.cs
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
using Flow.Launcher.Plugin;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Core.Plugin;
|
||||||
|
|
||||||
|
public interface IResultUpdateRegister
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Register a plugin to receive results updated event.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pair"></param>
|
||||||
|
void RegisterResultsUpdatedEvent(PluginPair pair);
|
||||||
|
}
|
||||||
|
|
@ -27,6 +27,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
|
|
||||||
private JsonStorage<ConcurrentDictionary<string, object?>> _storage = null!;
|
private JsonStorage<ConcurrentDictionary<string, object?>> _storage = null!;
|
||||||
|
|
||||||
|
private static readonly double MainGridColumn0MaxWidthRatio = 0.6;
|
||||||
private static readonly Thickness SettingPanelMargin = (Thickness)Application.Current.FindResource("SettingPanelMargin");
|
private static readonly Thickness SettingPanelMargin = (Thickness)Application.Current.FindResource("SettingPanelMargin");
|
||||||
private static readonly Thickness SettingPanelItemLeftMargin = (Thickness)Application.Current.FindResource("SettingPanelItemLeftMargin");
|
private static readonly Thickness SettingPanelItemLeftMargin = (Thickness)Application.Current.FindResource("SettingPanelItemLeftMargin");
|
||||||
private static readonly Thickness SettingPanelItemTopBottomMargin = (Thickness)Application.Current.FindResource("SettingPanelItemTopBottomMargin");
|
private static readonly Thickness SettingPanelItemTopBottomMargin = (Thickness)Application.Current.FindResource("SettingPanelItemTopBottomMargin");
|
||||||
|
|
@ -156,7 +157,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
if (!NeedCreateSettingPanel()) return null!;
|
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 };
|
var mainPanel = new Grid { Margin = SettingPanelMargin, VerticalAlignment = VerticalAlignment.Center };
|
||||||
mainPanel.ColumnDefinitions.Add(new ColumnDefinition()
|
mainPanel.ColumnDefinitions.Add(new ColumnDefinition()
|
||||||
{
|
{
|
||||||
|
|
@ -200,7 +201,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
Text = attributes.Label,
|
Text = attributes.Label,
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
TextWrapping = TextWrapping.WrapWithOverflow
|
TextWrapping = TextWrapping.Wrap
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create a text block for description
|
// Create a text block for description
|
||||||
|
|
@ -211,7 +212,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
Text = attributes.Description,
|
Text = attributes.Description,
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
TextWrapping = TextWrapping.WrapWithOverflow
|
TextWrapping = TextWrapping.Wrap
|
||||||
};
|
};
|
||||||
|
|
||||||
desc.SetResourceReference(TextBlock.StyleProperty, "SettingPanelTextBlockDescriptionStyle"); // for theme change
|
desc.SetResourceReference(TextBlock.StyleProperty, "SettingPanelTextBlockDescriptionStyle"); // for theme change
|
||||||
|
|
@ -247,7 +248,8 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
Margin = SettingPanelItemLeftTopBottomMargin,
|
Margin = SettingPanelItemLeftTopBottomMargin,
|
||||||
Text = Settings[attributes.Name] as string ?? string.Empty,
|
Text = Settings[attributes.Name] as string ?? string.Empty,
|
||||||
ToolTip = attributes.Description
|
ToolTip = attributes.Description,
|
||||||
|
TextWrapping = TextWrapping.Wrap
|
||||||
};
|
};
|
||||||
|
|
||||||
textBox.TextChanged += (_, _) =>
|
textBox.TextChanged += (_, _) =>
|
||||||
|
|
@ -269,7 +271,8 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
Margin = SettingPanelItemLeftMargin,
|
Margin = SettingPanelItemLeftMargin,
|
||||||
Text = Settings[attributes.Name] as string ?? string.Empty,
|
Text = Settings[attributes.Name] as string ?? string.Empty,
|
||||||
ToolTip = attributes.Description
|
ToolTip = attributes.Description,
|
||||||
|
TextWrapping = TextWrapping.Wrap
|
||||||
};
|
};
|
||||||
|
|
||||||
textBox.TextChanged += (_, _) =>
|
textBox.TextChanged += (_, _) =>
|
||||||
|
|
@ -282,7 +285,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
HorizontalAlignment = HorizontalAlignment.Left,
|
HorizontalAlignment = HorizontalAlignment.Left,
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
Margin = SettingPanelItemLeftMargin,
|
Margin = SettingPanelItemLeftMargin,
|
||||||
Content = API.GetTranslation("select")
|
Content = Localize.select()
|
||||||
};
|
};
|
||||||
|
|
||||||
Btn.Click += (_, _) =>
|
Btn.Click += (_, _) =>
|
||||||
|
|
@ -333,7 +336,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
HorizontalAlignment = HorizontalAlignment.Stretch,
|
HorizontalAlignment = HorizontalAlignment.Stretch,
|
||||||
VerticalAlignment = VerticalAlignment.Center,
|
VerticalAlignment = VerticalAlignment.Center,
|
||||||
Margin = SettingPanelItemLeftTopBottomMargin,
|
Margin = SettingPanelItemLeftTopBottomMargin,
|
||||||
TextWrapping = TextWrapping.WrapWithOverflow,
|
TextWrapping = TextWrapping.Wrap,
|
||||||
AcceptsReturn = true,
|
AcceptsReturn = true,
|
||||||
Text = Settings[attributes.Name] as string ?? string.Empty,
|
Text = Settings[attributes.Name] as string ?? string.Empty,
|
||||||
ToolTip = attributes.Description
|
ToolTip = attributes.Description
|
||||||
|
|
@ -488,6 +491,8 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
rowCount++;
|
rowCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mainPanel.SizeChanged += MainPanel_SizeChanged;
|
||||||
|
|
||||||
// Wrap the main grid in a user control
|
// Wrap the main grid in a user control
|
||||||
return new UserControl()
|
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)
|
private static bool NeedSaveInSettings(string type)
|
||||||
{
|
{
|
||||||
return type != "textBlock" && type != "separator" && type != "hyperlink";
|
return type != "textBlock" && type != "separator" && type != "hyperlink";
|
||||||
|
|
|
||||||
|
|
@ -100,11 +100,11 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
|
|
||||||
RPC = new JsonRpc(handler, new JsonRPCPublicAPI(Context.API));
|
RPC = new JsonRpc(handler, new JsonRPCPublicAPI(Context.API));
|
||||||
|
|
||||||
RPC.AddLocalRpcMethod("UpdateResults", new Action<string, JsonRPCQueryResponseModel>((rawQuery, response) =>
|
RPC.AddLocalRpcMethod("UpdateResults", new Action<string, JsonRPCQueryResponseModel>((trimmedQuery, response) =>
|
||||||
{
|
{
|
||||||
var results = ParseResults(response);
|
var results = ParseResults(response);
|
||||||
ResultsUpdated?.Invoke(this,
|
ResultsUpdated?.Invoke(this,
|
||||||
new ResultUpdatedEventArgs { Query = new Query() { RawQuery = rawQuery }, Results = results });
|
new ResultUpdatedEventArgs { Query = new Query() { TrimmedQuery = trimmedQuery }, Results = results });
|
||||||
}));
|
}));
|
||||||
RPC.SynchronizationContext = null;
|
RPC.SynchronizationContext = null;
|
||||||
RPC.StartListening();
|
RPC.StartListening();
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@ using System.IO;
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Infrastructure;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
|
|
||||||
namespace Flow.Launcher.Core.Plugin
|
namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
|
|
@ -13,10 +14,6 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(PluginConfig);
|
private static readonly string ClassName = nameof(PluginConfig);
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parse plugin metadata in the given directories
|
/// Parse plugin metadata in the given directories
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -30,15 +27,26 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
// todo use linq when diable plugin is implmented since parallel.foreach + list is not thread saft
|
// todo use linq when diable plugin is implmented since parallel.foreach + list is not thread saft
|
||||||
foreach (var directory in directories)
|
foreach (var directory in directories)
|
||||||
{
|
{
|
||||||
if (File.Exists(Path.Combine(directory, "NeedDelete.txt")))
|
if (File.Exists(Path.Combine(directory, DataLocation.PluginDeleteFile)))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Directory.Delete(directory, true);
|
var fullyDeleted = FilesFolders.TryDeleteDirectoryRobust(directory, maxRetries: 3, retryDelayMs: 200);
|
||||||
|
if (!fullyDeleted)
|
||||||
|
{
|
||||||
|
PublicApi.Instance.LogWarn(ClassName, $"Directory <{directory}> was not fully deleted.");
|
||||||
|
|
||||||
|
// Directory was not fully deleted, recreate the marker file so deletion will be retried on next startup
|
||||||
|
var markerFilePath = Path.Combine(directory, DataLocation.PluginDeleteFile);
|
||||||
|
if (!File.Exists(markerFilePath))
|
||||||
|
{
|
||||||
|
File.WriteAllText(markerFilePath, string.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, $"Can't delete <{directory}>", e);
|
PublicApi.Instance.LogException(ClassName, $"Can't delete <{directory}>", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -55,7 +63,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
|
|
||||||
duplicateList
|
duplicateList
|
||||||
.ForEach(
|
.ForEach(
|
||||||
x => API.LogWarn(ClassName,
|
x => PublicApi.Instance.LogWarn(ClassName,
|
||||||
string.Format("Duplicate plugin name: {0}, id: {1}, version: {2} " +
|
string.Format("Duplicate plugin name: {0}, id: {1}, version: {2} " +
|
||||||
"not loaded due to version not the highest of the duplicates",
|
"not loaded due to version not the highest of the duplicates",
|
||||||
x.Name, x.ID, x.Version),
|
x.Name, x.ID, x.Version),
|
||||||
|
|
@ -107,7 +115,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
string configPath = Path.Combine(pluginDirectory, Constant.PluginMetadataFileName);
|
string configPath = Path.Combine(pluginDirectory, Constant.PluginMetadataFileName);
|
||||||
if (!File.Exists(configPath))
|
if (!File.Exists(configPath))
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Didn't find config file <{configPath}>");
|
PublicApi.Instance.LogError(ClassName, $"Didn't find config file <{configPath}>");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -123,19 +131,19 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, $"Invalid json for config <{configPath}>", e);
|
PublicApi.Instance.LogException(ClassName, $"Invalid json for config <{configPath}>", e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!AllowedLanguage.IsAllowed(metadata.Language))
|
if (!AllowedLanguage.IsAllowed(metadata.Language))
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Invalid language <{metadata.Language}> for config <{configPath}>");
|
PublicApi.Instance.LogError(ClassName, $"Invalid language <{metadata.Language}> for config <{configPath}>");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!File.Exists(metadata.ExecuteFilePath))
|
if (!File.Exists(metadata.ExecuteFilePath))
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Execute file path didn't exist <{metadata.ExecuteFilePath}> for conifg <{configPath}");
|
PublicApi.Instance.LogError(ClassName, $"Execute file path didn't exist <{metadata.ExecuteFilePath}> for conifg <{configPath}");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
|
@ -22,10 +22,6 @@ public static class PluginInstaller
|
||||||
|
|
||||||
private static readonly Settings Settings = Ioc.Default.GetRequiredService<Settings>();
|
private static readonly Settings Settings = Ioc.Default.GetRequiredService<Settings>();
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Installs a plugin and restarts the application if required by settings. Prompts user for confirmation and handles download if needed.
|
/// Installs a plugin and restarts the application if required by settings. Prompts user for confirmation and handles download if needed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -33,18 +29,16 @@ public static class PluginInstaller
|
||||||
/// <returns>A Task representing the asynchronous install operation.</returns>
|
/// <returns>A Task representing the asynchronous install operation.</returns>
|
||||||
public static async Task InstallPluginAndCheckRestartAsync(UserPlugin newPlugin)
|
public static async Task InstallPluginAndCheckRestartAsync(UserPlugin newPlugin)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(newPlugin.ID))
|
if (PublicApi.Instance.PluginModified(newPlugin.ID))
|
||||||
{
|
{
|
||||||
API.ShowMsgError(string.Format(API.GetTranslation("pluginModifiedAlreadyTitle"), newPlugin.Name),
|
PublicApi.Instance.ShowMsgError(Localize.pluginModifiedAlreadyTitle(newPlugin.Name),
|
||||||
API.GetTranslation("pluginModifiedAlreadyMessage"));
|
Localize.pluginModifiedAlreadyMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (API.ShowMsgBox(
|
if (PublicApi.Instance.ShowMsgBox(
|
||||||
string.Format(
|
Localize.InstallPromptSubtitle(newPlugin.Name, newPlugin.Author, Environment.NewLine),
|
||||||
API.GetTranslation("InstallPromptSubtitle"),
|
Localize.InstallPromptTitle(),
|
||||||
newPlugin.Name, newPlugin.Author, Environment.NewLine),
|
|
||||||
API.GetTranslation("InstallPromptTitle"),
|
|
||||||
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
@ -61,7 +55,7 @@ public static class PluginInstaller
|
||||||
if (!newPlugin.IsFromLocalInstallPath)
|
if (!newPlugin.IsFromLocalInstallPath)
|
||||||
{
|
{
|
||||||
await DownloadFileAsync(
|
await DownloadFileAsync(
|
||||||
$"{API.GetTranslation("DownloadingPlugin")} {newPlugin.Name}",
|
$"{Localize.DownloadingPlugin()} {newPlugin.Name}",
|
||||||
newPlugin.UrlDownload, filePath, cts);
|
newPlugin.UrlDownload, filePath, cts);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -80,7 +74,7 @@ public static class PluginInstaller
|
||||||
throw new FileNotFoundException($"Plugin {newPlugin.ID} zip file not found at {filePath}", filePath);
|
throw new FileNotFoundException($"Plugin {newPlugin.ID} zip file not found at {filePath}", filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!API.InstallPlugin(newPlugin, filePath))
|
if (!PublicApi.Instance.InstallPlugin(newPlugin, filePath))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -92,23 +86,20 @@ public static class PluginInstaller
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Failed to install plugin", e);
|
PublicApi.Instance.LogException(ClassName, "Failed to install plugin", e);
|
||||||
API.ShowMsgError(API.GetTranslation("ErrorInstallingPlugin"));
|
PublicApi.Instance.ShowMsgError(Localize.ErrorInstallingPlugin());
|
||||||
return; // do not restart on failure
|
return; // do not restart on failure
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.AutoRestartAfterChanging)
|
if (Settings.AutoRestartAfterChanging)
|
||||||
{
|
{
|
||||||
API.RestartApp();
|
PublicApi.Instance.RestartApp();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.ShowMsg(
|
PublicApi.Instance.ShowMsg(
|
||||||
API.GetTranslation("installbtn"),
|
Localize.installbtn(),
|
||||||
string.Format(
|
Localize.InstallSuccessNoRestart(newPlugin.Name));
|
||||||
API.GetTranslation(
|
|
||||||
"InstallSuccessNoRestart"),
|
|
||||||
newPlugin.Name));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,24 +124,23 @@ public static class PluginInstaller
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Failed to validate zip file", e);
|
PublicApi.Instance.LogException(ClassName, "Failed to validate zip file", e);
|
||||||
API.ShowMsgError(API.GetTranslation("ZipFileNotHavePluginJson"));
|
PublicApi.Instance.ShowMsgError(Localize.ZipFileNotHavePluginJson());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (API.PluginModified(plugin.ID))
|
if (PublicApi.Instance.PluginModified(plugin.ID))
|
||||||
{
|
{
|
||||||
API.ShowMsgError(string.Format(API.GetTranslation("pluginModifiedAlreadyTitle"), plugin.Name),
|
PublicApi.Instance.ShowMsgError(Localize.pluginModifiedAlreadyTitle(plugin.Name),
|
||||||
API.GetTranslation("pluginModifiedAlreadyMessage"));
|
Localize.pluginModifiedAlreadyMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.ShowUnknownSourceWarning)
|
if (Settings.ShowUnknownSourceWarning)
|
||||||
{
|
{
|
||||||
if (!InstallSourceKnown(plugin.Website)
|
if (!InstallSourceKnown(plugin.Website)
|
||||||
&& API.ShowMsgBox(string.Format(
|
&& PublicApi.Instance.ShowMsgBox(Localize.InstallFromUnknownSourceSubtitle(Environment.NewLine),
|
||||||
API.GetTranslation("InstallFromUnknownSourceSubtitle"), Environment.NewLine),
|
Localize.InstallFromUnknownSourceTitle(),
|
||||||
API.GetTranslation("InstallFromUnknownSourceTitle"),
|
|
||||||
MessageBoxButton.YesNo) == MessageBoxResult.No)
|
MessageBoxButton.YesNo) == MessageBoxResult.No)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -165,51 +155,46 @@ public static class PluginInstaller
|
||||||
/// <returns>A Task representing the asynchronous uninstall operation.</returns>
|
/// <returns>A Task representing the asynchronous uninstall operation.</returns>
|
||||||
public static async Task UninstallPluginAndCheckRestartAsync(PluginMetadata oldPlugin)
|
public static async Task UninstallPluginAndCheckRestartAsync(PluginMetadata oldPlugin)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(oldPlugin.ID))
|
if (PublicApi.Instance.PluginModified(oldPlugin.ID))
|
||||||
{
|
{
|
||||||
API.ShowMsgError(string.Format(API.GetTranslation("pluginModifiedAlreadyTitle"), oldPlugin.Name),
|
PublicApi.Instance.ShowMsgError(Localize.pluginModifiedAlreadyTitle(oldPlugin.Name),
|
||||||
API.GetTranslation("pluginModifiedAlreadyMessage"));
|
Localize.pluginModifiedAlreadyMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (API.ShowMsgBox(
|
if (PublicApi.Instance.ShowMsgBox(
|
||||||
string.Format(
|
Localize.UninstallPromptSubtitle(oldPlugin.Name, oldPlugin.Author, Environment.NewLine),
|
||||||
API.GetTranslation("UninstallPromptSubtitle"),
|
Localize.UninstallPromptTitle(),
|
||||||
oldPlugin.Name, oldPlugin.Author, Environment.NewLine),
|
|
||||||
API.GetTranslation("UninstallPromptTitle"),
|
|
||||||
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
||||||
|
|
||||||
var removePluginSettings = API.ShowMsgBox(
|
var removePluginSettings = PublicApi.Instance.ShowMsgBox(
|
||||||
API.GetTranslation("KeepPluginSettingsSubtitle"),
|
Localize.KeepPluginSettingsSubtitle(),
|
||||||
API.GetTranslation("KeepPluginSettingsTitle"),
|
Localize.KeepPluginSettingsTitle(),
|
||||||
button: MessageBoxButton.YesNo) == MessageBoxResult.No;
|
button: MessageBoxButton.YesNo) == MessageBoxResult.No;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!await API.UninstallPluginAsync(oldPlugin, removePluginSettings))
|
if (!await PublicApi.Instance.UninstallPluginAsync(oldPlugin, removePluginSettings))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Failed to uninstall plugin", e);
|
PublicApi.Instance.LogException(ClassName, "Failed to uninstall plugin", e);
|
||||||
API.ShowMsgError(API.GetTranslation("ErrorUninstallingPlugin"));
|
PublicApi.Instance.ShowMsgError(Localize.ErrorUninstallingPlugin());
|
||||||
return; // don not restart on failure
|
return; // don not restart on failure
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.AutoRestartAfterChanging)
|
if (Settings.AutoRestartAfterChanging)
|
||||||
{
|
{
|
||||||
API.RestartApp();
|
PublicApi.Instance.RestartApp();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.ShowMsg(
|
PublicApi.Instance.ShowMsg(
|
||||||
API.GetTranslation("uninstallbtn"),
|
Localize.uninstallbtn(),
|
||||||
string.Format(
|
Localize.UninstallSuccessNoRestart(oldPlugin.Name));
|
||||||
API.GetTranslation(
|
|
||||||
"UninstallSuccessNoRestart"),
|
|
||||||
oldPlugin.Name));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -221,11 +206,9 @@ public static class PluginInstaller
|
||||||
/// <returns>A Task representing the asynchronous update operation.</returns>
|
/// <returns>A Task representing the asynchronous update operation.</returns>
|
||||||
public static async Task UpdatePluginAndCheckRestartAsync(UserPlugin newPlugin, PluginMetadata oldPlugin)
|
public static async Task UpdatePluginAndCheckRestartAsync(UserPlugin newPlugin, PluginMetadata oldPlugin)
|
||||||
{
|
{
|
||||||
if (API.ShowMsgBox(
|
if (PublicApi.Instance.ShowMsgBox(
|
||||||
string.Format(
|
Localize.UpdatePromptSubtitle(oldPlugin.Name, oldPlugin.Author, Environment.NewLine),
|
||||||
API.GetTranslation("UpdatePromptSubtitle"),
|
Localize.UpdatePromptTitle(),
|
||||||
oldPlugin.Name, oldPlugin.Author, Environment.NewLine),
|
|
||||||
API.GetTranslation("UpdatePromptTitle"),
|
|
||||||
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
button: MessageBoxButton.YesNo) != MessageBoxResult.Yes) return;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
@ -237,7 +220,7 @@ public static class PluginInstaller
|
||||||
if (!newPlugin.IsFromLocalInstallPath)
|
if (!newPlugin.IsFromLocalInstallPath)
|
||||||
{
|
{
|
||||||
await DownloadFileAsync(
|
await DownloadFileAsync(
|
||||||
$"{API.GetTranslation("DownloadingPlugin")} {newPlugin.Name}",
|
$"{Localize.DownloadingPlugin()} {newPlugin.Name}",
|
||||||
newPlugin.UrlDownload, filePath, cts);
|
newPlugin.UrlDownload, filePath, cts);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -251,30 +234,27 @@ public static class PluginInstaller
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!await API.UpdatePluginAsync(oldPlugin, newPlugin, filePath))
|
if (!await PublicApi.Instance.UpdatePluginAsync(oldPlugin, newPlugin, filePath))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Failed to update plugin", e);
|
PublicApi.Instance.LogException(ClassName, "Failed to update plugin", e);
|
||||||
API.ShowMsgError(API.GetTranslation("ErrorUpdatingPlugin"));
|
PublicApi.Instance.ShowMsgError(Localize.ErrorUpdatingPlugin());
|
||||||
return; // do not restart on failure
|
return; // do not restart on failure
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.AutoRestartAfterChanging)
|
if (Settings.AutoRestartAfterChanging)
|
||||||
{
|
{
|
||||||
API.RestartApp();
|
PublicApi.Instance.RestartApp();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.ShowMsg(
|
PublicApi.Instance.ShowMsg(
|
||||||
API.GetTranslation("updatebtn"),
|
Localize.updatebtn(),
|
||||||
string.Format(
|
Localize.UpdateSuccessNoRestart(newPlugin.Name));
|
||||||
API.GetTranslation(
|
|
||||||
"UpdateSuccessNoRestart"),
|
|
||||||
newPlugin.Name));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -289,17 +269,17 @@ public static class PluginInstaller
|
||||||
public static async Task CheckForPluginUpdatesAsync(Action<List<PluginUpdateInfo>> updateAllPlugins, bool silentUpdate = true, bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
public static async Task CheckForPluginUpdatesAsync(Action<List<PluginUpdateInfo>> updateAllPlugins, bool silentUpdate = true, bool usePrimaryUrlOnly = false, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
// Update the plugin manifest
|
// Update the plugin manifest
|
||||||
await API.UpdatePluginManifestAsync(usePrimaryUrlOnly, token);
|
await PublicApi.Instance.UpdatePluginManifestAsync(usePrimaryUrlOnly, token);
|
||||||
|
|
||||||
// Get all plugins that can be updated
|
// Get all plugins that can be updated
|
||||||
var resultsForUpdate = (
|
var resultsForUpdate = (
|
||||||
from existingPlugin in API.GetAllPlugins()
|
from existingPlugin in PublicApi.Instance.GetAllPlugins()
|
||||||
join pluginUpdateSource in API.GetPluginManifest()
|
join pluginUpdateSource in PublicApi.Instance.GetPluginManifest()
|
||||||
on existingPlugin.Metadata.ID equals pluginUpdateSource.ID
|
on existingPlugin.Metadata.ID equals pluginUpdateSource.ID
|
||||||
where string.Compare(existingPlugin.Metadata.Version, pluginUpdateSource.Version,
|
where string.Compare(existingPlugin.Metadata.Version, pluginUpdateSource.Version,
|
||||||
StringComparison.InvariantCulture) <
|
StringComparison.InvariantCulture) <
|
||||||
0 // if current version precedes version of the plugin from update source (e.g. PluginsManifest)
|
0 // if current version precedes version of the plugin from update source (e.g. PluginsManifest)
|
||||||
&& !API.PluginModified(existingPlugin.Metadata.ID)
|
&& !PublicApi.Instance.PluginModified(existingPlugin.Metadata.ID)
|
||||||
select
|
select
|
||||||
new PluginUpdateInfo()
|
new PluginUpdateInfo()
|
||||||
{
|
{
|
||||||
|
|
@ -314,25 +294,25 @@ public static class PluginInstaller
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
// No updates
|
// No updates
|
||||||
if (!resultsForUpdate.Any())
|
if (resultsForUpdate.Count == 0)
|
||||||
{
|
{
|
||||||
if (!silentUpdate)
|
if (!silentUpdate)
|
||||||
{
|
{
|
||||||
API.ShowMsg(API.GetTranslation("updateNoResultTitle"), API.GetTranslation("updateNoResultSubtitle"));
|
PublicApi.Instance.ShowMsg(Localize.updateNoResultTitle(), Localize.updateNoResultSubtitle());
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If all plugins are modified, just return
|
// If all plugins are modified, just return
|
||||||
if (resultsForUpdate.All(x => API.PluginModified(x.ID)))
|
if (resultsForUpdate.All(x => PublicApi.Instance.PluginModified(x.ID)))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show message box with button to update all plugins
|
// Show message box with button to update all plugins
|
||||||
API.ShowMsgWithButton(
|
PublicApi.Instance.ShowMsgWithButton(
|
||||||
API.GetTranslation("updateAllPluginsTitle"),
|
Localize.updateAllPluginsTitle(),
|
||||||
API.GetTranslation("updateAllPluginsButtonContent"),
|
Localize.updateAllPluginsButtonContent(),
|
||||||
() =>
|
() =>
|
||||||
{
|
{
|
||||||
updateAllPlugins(resultsForUpdate);
|
updateAllPlugins(resultsForUpdate);
|
||||||
|
|
@ -357,7 +337,7 @@ public static class PluginInstaller
|
||||||
using var cts = new CancellationTokenSource();
|
using var cts = new CancellationTokenSource();
|
||||||
|
|
||||||
await DownloadFileAsync(
|
await DownloadFileAsync(
|
||||||
$"{API.GetTranslation("DownloadingPlugin")} {plugin.PluginNewUserPlugin.Name}",
|
$"{Localize.DownloadingPlugin()} {plugin.PluginNewUserPlugin.Name}",
|
||||||
plugin.PluginNewUserPlugin.UrlDownload, downloadToFilePath, cts);
|
plugin.PluginNewUserPlugin.UrlDownload, downloadToFilePath, cts);
|
||||||
|
|
||||||
// check if user cancelled download before installing plugin
|
// check if user cancelled download before installing plugin
|
||||||
|
|
@ -366,7 +346,7 @@ public static class PluginInstaller
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!await API.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.PluginNewUserPlugin, downloadToFilePath))
|
if (!await PublicApi.Instance.UpdatePluginAsync(plugin.PluginExistingMetadata, plugin.PluginNewUserPlugin, downloadToFilePath))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -375,8 +355,8 @@ public static class PluginInstaller
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, "Failed to update plugin", e);
|
PublicApi.Instance.LogException(ClassName, "Failed to update plugin", e);
|
||||||
API.ShowMsgError(API.GetTranslation("ErrorUpdatingPlugin"));
|
PublicApi.Instance.ShowMsgError(Localize.ErrorUpdatingPlugin());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
@ -384,13 +364,13 @@ public static class PluginInstaller
|
||||||
|
|
||||||
if (restart)
|
if (restart)
|
||||||
{
|
{
|
||||||
API.RestartApp();
|
PublicApi.Instance.RestartApp();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.ShowMsg(
|
PublicApi.Instance.ShowMsg(
|
||||||
API.GetTranslation("updatebtn"),
|
Localize.updatebtn(),
|
||||||
API.GetTranslation("PluginsUpdateSuccessNoRestart"));
|
Localize.PluginsUpdateSuccessNoRestart());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -412,7 +392,7 @@ public static class PluginInstaller
|
||||||
if (showProgress)
|
if (showProgress)
|
||||||
{
|
{
|
||||||
var exceptionHappened = false;
|
var exceptionHappened = false;
|
||||||
await API.ShowProgressBoxAsync(progressBoxTitle,
|
await PublicApi.Instance.ShowProgressBoxAsync(progressBoxTitle,
|
||||||
async (reportProgress) =>
|
async (reportProgress) =>
|
||||||
{
|
{
|
||||||
if (reportProgress == null)
|
if (reportProgress == null)
|
||||||
|
|
@ -424,18 +404,18 @@ public static class PluginInstaller
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await API.HttpDownloadAsync(downloadUrl, filePath, reportProgress, cts.Token).ConfigureAwait(false);
|
await PublicApi.Instance.HttpDownloadAsync(downloadUrl, filePath, reportProgress, cts.Token).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}, cts.Cancel);
|
}, cts.Cancel);
|
||||||
|
|
||||||
// if exception happened while downloading and user does not cancel downloading,
|
// if exception happened while downloading and user does not cancel downloading,
|
||||||
// we need to redownload the plugin
|
// we need to redownload the plugin
|
||||||
if (exceptionHappened && (!cts.IsCancellationRequested))
|
if (exceptionHappened && (!cts.IsCancellationRequested))
|
||||||
await API.HttpDownloadAsync(downloadUrl, filePath, token: cts.Token).ConfigureAwait(false);
|
await PublicApi.Instance.HttpDownloadAsync(downloadUrl, filePath, token: cts.Token).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await API.HttpDownloadAsync(downloadUrl, filePath, token: cts.Token).ConfigureAwait(false);
|
await PublicApi.Instance.HttpDownloadAsync(downloadUrl, filePath, token: cts.Token).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -462,7 +442,7 @@ public static class PluginInstaller
|
||||||
if (!Uri.TryCreate(url, UriKind.Absolute, out var uri) || uri.Host != acceptedHost)
|
if (!Uri.TryCreate(url, UriKind.Absolute, out var uri) || uri.Host != acceptedHost)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return API.GetAllPlugins().Any(x =>
|
return PublicApi.Instance.GetAllPlugins().Any(x =>
|
||||||
!string.IsNullOrEmpty(x.Metadata.Website) &&
|
!string.IsNullOrEmpty(x.Metadata.Website) &&
|
||||||
x.Metadata.Website.StartsWith(constructedUrlPart)
|
x.Metadata.Website.StartsWith(constructedUrlPart)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -2,9 +2,6 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Core.ExternalPlugins.Environments;
|
using Flow.Launcher.Core.ExternalPlugins.Environments;
|
||||||
#pragma warning disable IDE0005
|
#pragma warning disable IDE0005
|
||||||
using Flow.Launcher.Infrastructure.Logger;
|
using Flow.Launcher.Infrastructure.Logger;
|
||||||
|
|
@ -18,10 +15,6 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(PluginsLoader);
|
private static readonly string ClassName = nameof(PluginsLoader);
|
||||||
|
|
||||||
// We should not initialize API in static constructor because it will create another API instance
|
|
||||||
private static IPublicAPI api = null;
|
|
||||||
private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService<IPublicAPI>();
|
|
||||||
|
|
||||||
public static List<PluginPair> Plugins(List<PluginMetadata> metadatas, PluginsSettings settings)
|
public static List<PluginPair> Plugins(List<PluginMetadata> metadatas, PluginsSettings settings)
|
||||||
{
|
{
|
||||||
var dotnetPlugins = DotNetPlugins(metadatas);
|
var dotnetPlugins = DotNetPlugins(metadatas);
|
||||||
|
|
@ -55,7 +48,7 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<PluginPair> DotNetPlugins(List<PluginMetadata> source)
|
private static List<PluginPair> DotNetPlugins(List<PluginMetadata> source)
|
||||||
{
|
{
|
||||||
var erroredPlugins = new List<string>();
|
var erroredPlugins = new List<string>();
|
||||||
|
|
||||||
|
|
@ -64,56 +57,58 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
|
|
||||||
foreach (var metadata in metadatas)
|
foreach (var metadata in metadatas)
|
||||||
{
|
{
|
||||||
var milliseconds = API.StopwatchLogDebug(ClassName, $"Constructor init cost for {metadata.Name}", () =>
|
var milliseconds = PublicApi.Instance.StopwatchLogDebug(ClassName, $"Constructor init cost for {metadata.Name}", () =>
|
||||||
|
{
|
||||||
|
Assembly assembly = null;
|
||||||
|
IAsyncPlugin plugin = null;
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Assembly assembly = null;
|
var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath);
|
||||||
IAsyncPlugin plugin = null;
|
assembly = assemblyLoader.LoadAssemblyAndDependencies();
|
||||||
|
|
||||||
try
|
var type = assemblyLoader.FromAssemblyGetTypeOfInterface(assembly,
|
||||||
{
|
typeof(IAsyncPlugin));
|
||||||
var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath);
|
|
||||||
assembly = assemblyLoader.LoadAssemblyAndDependencies();
|
|
||||||
|
|
||||||
var type = assemblyLoader.FromAssemblyGetTypeOfInterface(assembly,
|
plugin = Activator.CreateInstance(type) as IAsyncPlugin;
|
||||||
typeof(IAsyncPlugin));
|
|
||||||
|
|
||||||
plugin = Activator.CreateInstance(type) as IAsyncPlugin;
|
metadata.AssemblyName = assembly.GetName().Name;
|
||||||
|
}
|
||||||
metadata.AssemblyName = assembly.GetName().Name;
|
|
||||||
}
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
catch (Exception e) when (assembly == null)
|
catch (Exception e) when (assembly == null)
|
||||||
{
|
{
|
||||||
Log.Exception(ClassName, $"Couldn't load assembly for the plugin: {metadata.Name}", e);
|
PublicApi.Instance.LogException(ClassName, $"Couldn't load assembly for the plugin: {metadata.Name}", e);
|
||||||
}
|
}
|
||||||
catch (InvalidOperationException e)
|
catch (InvalidOperationException e)
|
||||||
{
|
{
|
||||||
Log.Exception(ClassName, $"Can't find the required IPlugin interface for the plugin: <{metadata.Name}>", e);
|
PublicApi.Instance.LogException(ClassName, $"Can't find the required IPlugin interface for the plugin: <{metadata.Name}>", e);
|
||||||
}
|
}
|
||||||
catch (ReflectionTypeLoadException e)
|
catch (ReflectionTypeLoadException e)
|
||||||
{
|
{
|
||||||
Log.Exception(ClassName, $"The GetTypes method was unable to load assembly types for the plugin: <{metadata.Name}>", e);
|
PublicApi.Instance.LogException(ClassName, $"The GetTypes method was unable to load assembly types for the plugin: <{metadata.Name}>", e);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.Exception(ClassName, $"The following plugin has errored and can not be loaded: <{metadata.Name}>", e);
|
PublicApi.Instance.LogException(ClassName, $"The following plugin has errored and can not be loaded: <{metadata.Name}>", e);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (plugin == null)
|
if (plugin == null)
|
||||||
{
|
{
|
||||||
erroredPlugins.Add(metadata.Name);
|
erroredPlugins.Add(metadata.Name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
plugins.Add(new PluginPair { Plugin = plugin, Metadata = metadata });
|
||||||
|
});
|
||||||
|
|
||||||
plugins.Add(new PluginPair { Plugin = plugin, Metadata = metadata });
|
|
||||||
});
|
|
||||||
metadata.InitTime += milliseconds;
|
metadata.InitTime += milliseconds;
|
||||||
|
PublicApi.Instance.LogDebug(ClassName, $"Constructor cost for <{metadata.Name}> is <{metadata.InitTime}ms>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (erroredPlugins.Count > 0)
|
if (erroredPlugins.Count > 0)
|
||||||
|
|
@ -121,12 +116,12 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
var errorPluginString = string.Join(Environment.NewLine, erroredPlugins);
|
var errorPluginString = string.Join(Environment.NewLine, erroredPlugins);
|
||||||
|
|
||||||
var errorMessage = erroredPlugins.Count > 1 ?
|
var errorMessage = erroredPlugins.Count > 1 ?
|
||||||
API.GetTranslation("pluginsHaveErrored") :
|
Localize.pluginsHaveErrored():
|
||||||
API.GetTranslation("pluginHasErrored");
|
Localize.pluginHasErrored();
|
||||||
|
|
||||||
API.ShowMsgError($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
|
PublicApi.Instance.ShowMsgError($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
|
||||||
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
|
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +
|
||||||
API.GetTranslation("referToLogs"));
|
Localize.referToLogs());
|
||||||
}
|
}
|
||||||
|
|
||||||
return plugins;
|
return plugins;
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,16 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
public static class QueryBuilder
|
public static class QueryBuilder
|
||||||
{
|
{
|
||||||
public static Query Build(string text, Dictionary<string, PluginPair> nonGlobalPlugins)
|
public static Query Build(string originalQuery, string trimmedQuery, Dictionary<string, PluginPair> nonGlobalPlugins)
|
||||||
{
|
{
|
||||||
// home query
|
// home query
|
||||||
if (string.IsNullOrEmpty(text))
|
if (string.IsNullOrEmpty(trimmedQuery))
|
||||||
{
|
{
|
||||||
return new Query()
|
return new Query()
|
||||||
{
|
{
|
||||||
Search = string.Empty,
|
Search = string.Empty,
|
||||||
RawQuery = string.Empty,
|
OriginalQuery = string.Empty,
|
||||||
|
TrimmedQuery = string.Empty,
|
||||||
SearchTerms = Array.Empty<string>(),
|
SearchTerms = Array.Empty<string>(),
|
||||||
ActionKeyword = string.Empty,
|
ActionKeyword = string.Empty,
|
||||||
IsHomeQuery = true
|
IsHomeQuery = true
|
||||||
|
|
@ -22,14 +23,13 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
// replace multiple white spaces with one white space
|
// replace multiple white spaces with one white space
|
||||||
var terms = text.Split(Query.TermSeparator, StringSplitOptions.RemoveEmptyEntries);
|
var terms = trimmedQuery.Split(Query.TermSeparator, StringSplitOptions.RemoveEmptyEntries);
|
||||||
if (terms.Length == 0)
|
if (terms.Length == 0)
|
||||||
{
|
{
|
||||||
// nothing was typed
|
// nothing was typed
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var rawQuery = text;
|
|
||||||
string actionKeyword, search;
|
string actionKeyword, search;
|
||||||
string possibleActionKeyword = terms[0];
|
string possibleActionKeyword = terms[0];
|
||||||
string[] searchTerms;
|
string[] searchTerms;
|
||||||
|
|
@ -38,21 +38,22 @@ namespace Flow.Launcher.Core.Plugin
|
||||||
{
|
{
|
||||||
// use non global plugin for query
|
// use non global plugin for query
|
||||||
actionKeyword = possibleActionKeyword;
|
actionKeyword = possibleActionKeyword;
|
||||||
search = terms.Length > 1 ? rawQuery[(actionKeyword.Length + 1)..].TrimStart() : string.Empty;
|
search = terms.Length > 1 ? trimmedQuery[(actionKeyword.Length + 1)..].TrimStart() : string.Empty;
|
||||||
searchTerms = terms[1..];
|
searchTerms = terms[1..];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// non action keyword
|
// non action keyword
|
||||||
actionKeyword = string.Empty;
|
actionKeyword = string.Empty;
|
||||||
search = rawQuery.TrimStart();
|
search = trimmedQuery.TrimStart();
|
||||||
searchTerms = terms;
|
searchTerms = terms;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Query()
|
return new Query()
|
||||||
{
|
{
|
||||||
Search = search,
|
Search = search,
|
||||||
RawQuery = rawQuery,
|
OriginalQuery = originalQuery,
|
||||||
|
TrimmedQuery = trimmedQuery,
|
||||||
SearchTerms = searchTerms,
|
SearchTerms = searchTerms,
|
||||||
ActionKeyword = actionKeyword,
|
ActionKeyword = actionKeyword,
|
||||||
IsHomeQuery = false
|
IsHomeQuery = false
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
@ -6,7 +6,6 @@ using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Core.Plugin;
|
using Flow.Launcher.Core.Plugin;
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Infrastructure;
|
||||||
using Flow.Launcher.Infrastructure.UserSettings;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
|
|
@ -14,14 +13,10 @@ using Flow.Launcher.Plugin;
|
||||||
|
|
||||||
namespace Flow.Launcher.Core.Resource
|
namespace Flow.Launcher.Core.Resource
|
||||||
{
|
{
|
||||||
public class Internationalization
|
public class Internationalization : IDisposable
|
||||||
{
|
{
|
||||||
private static readonly string ClassName = nameof(Internationalization);
|
private static readonly string ClassName = nameof(Internationalization);
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
private const string Folder = "Languages";
|
private const string Folder = "Languages";
|
||||||
private const string DefaultLanguageCode = "en";
|
private const string DefaultLanguageCode = "en";
|
||||||
private const string DefaultFile = "en.xaml";
|
private const string DefaultFile = "en.xaml";
|
||||||
|
|
@ -30,6 +25,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
private readonly List<string> _languageDirectories = [];
|
private readonly List<string> _languageDirectories = [];
|
||||||
private readonly List<ResourceDictionary> _oldResources = [];
|
private readonly List<ResourceDictionary> _oldResources = [];
|
||||||
private static string SystemLanguageCode;
|
private static string SystemLanguageCode;
|
||||||
|
private readonly SemaphoreSlim _langChangeLock = new(1, 1);
|
||||||
|
|
||||||
public Internationalization(Settings settings)
|
public Internationalization(Settings settings)
|
||||||
{
|
{
|
||||||
|
|
@ -103,7 +99,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Flow Launcher language directory can't be found <{directory}>");
|
PublicApi.Instance.LogError(ClassName, $"Flow Launcher language directory can't be found <{directory}>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,7 +170,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
FirstOrDefault(o => o.LanguageCode.Equals(languageCode, StringComparison.OrdinalIgnoreCase));
|
FirstOrDefault(o => o.LanguageCode.Equals(languageCode, StringComparison.OrdinalIgnoreCase));
|
||||||
if (language == null)
|
if (language == null)
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Language code can't be found <{languageCode}>");
|
PublicApi.Instance.LogError(ClassName, $"Language code can't be found <{languageCode}>");
|
||||||
return AvailableLanguages.English;
|
return AvailableLanguages.English;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -185,20 +181,33 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
private async Task ChangeLanguageAsync(Language language, bool updateMetadata = true)
|
private async Task ChangeLanguageAsync(Language language, bool updateMetadata = true)
|
||||||
{
|
{
|
||||||
// Remove old language files and load language
|
await _langChangeLock.WaitAsync();
|
||||||
RemoveOldLanguageFiles();
|
|
||||||
if (language != AvailableLanguages.English)
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
// Change culture info
|
|
||||||
ChangeCultureInfo(language.LanguageCode);
|
|
||||||
|
|
||||||
if (updateMetadata)
|
|
||||||
{
|
{
|
||||||
// Raise event for plugins after culture is set
|
PublicApi.Instance.LogException(ClassName, $"Failed to change language to <{language.LanguageCode}>", e);
|
||||||
await Task.Run(UpdatePluginMetadataTranslations);
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_langChangeLock.Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,7 +249,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
// "Do you want to search with pinyin?"
|
// "Do you want to search with pinyin?"
|
||||||
string text = languageToSet == AvailableLanguages.Chinese ? "是否启用拼音搜索?" : "是否啓用拼音搜索?";
|
string text = languageToSet == AvailableLanguages.Chinese ? "是否启用拼音搜索?" : "是否啓用拼音搜索?";
|
||||||
|
|
||||||
if (API.ShowMsgBox(text, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
if (PublicApi.Instance.ShowMsgBox(text, string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -257,6 +266,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
{
|
{
|
||||||
dicts.Remove(r);
|
dicts.Remove(r);
|
||||||
}
|
}
|
||||||
|
_oldResources.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadLanguage(Language language)
|
private void LoadLanguage(Language language)
|
||||||
|
|
@ -296,7 +306,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Language path can't be found <{path}>");
|
PublicApi.Instance.LogError(ClassName, $"Language path can't be found <{path}>");
|
||||||
var english = Path.Combine(folder, DefaultFile);
|
var english = Path.Combine(folder, DefaultFile);
|
||||||
if (File.Exists(english))
|
if (File.Exists(english))
|
||||||
{
|
{
|
||||||
|
|
@ -304,7 +314,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"Default English Language path can't be found <{path}>");
|
PublicApi.Instance.LogError(ClassName, $"Default English Language path can't be found <{path}>");
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -339,7 +349,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
API.LogError(ClassName, $"No Translation for key {key}");
|
PublicApi.Instance.LogError(ClassName, $"No Translation for key {key}");
|
||||||
return $"No Translation for key {key}";
|
return $"No Translation for key {key}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -362,11 +372,37 @@ namespace Flow.Launcher.Core.Resource
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
API.LogException(ClassName, $"Failed for <{p.Metadata.Name}>", e);
|
PublicApi.Instance.LogException(ClassName, $"Failed for <{p.Metadata.Name}>", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void UpdatePluginMetadataTranslation(PluginPair p)
|
||||||
|
{
|
||||||
|
// Update plugin metadata name & description
|
||||||
|
if (p.Plugin is not IPluginI18n pluginI18N) return;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
p.Metadata.Name = pluginI18N.GetTranslatedPluginTitle();
|
||||||
|
p.Metadata.Description = pluginI18N.GetTranslatedPluginDescription();
|
||||||
|
pluginI18N.OnCultureInfoChanged(CultureInfo.CurrentCulture);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
PublicApi.Instance.LogException(ClassName, $"Failed for <{p.Metadata.Name}>", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IDisposable
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
RemoveOldLanguageFiles();
|
||||||
|
_langChangeLock.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Plugin;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Core.Resource
|
|
||||||
{
|
|
||||||
public class LocalizedDescriptionAttribute : DescriptionAttribute
|
|
||||||
{
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
private readonly string _resourceKey;
|
|
||||||
|
|
||||||
public LocalizedDescriptionAttribute(string resourceKey)
|
|
||||||
{
|
|
||||||
_resourceKey = resourceKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string Description
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
string description = API.GetTranslation(_resourceKey);
|
|
||||||
return string.IsNullOrWhiteSpace(description) ?
|
|
||||||
string.Format("[[{0}]]", _resourceKey) : description;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -124,8 +124,8 @@ namespace Flow.Launcher.Core.Resource
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Load a ResourceDictionary for the specified theme.
|
// Load a ResourceDictionary for the specified theme.
|
||||||
var themeName = _settings.Theme;
|
var theme = _settings.Theme;
|
||||||
var dict = GetThemeResourceDictionary(themeName);
|
var dict = GetThemeResourceDictionary(theme);
|
||||||
|
|
||||||
// Apply font settings to the theme resource.
|
// Apply font settings to the theme resource.
|
||||||
ApplyFontSettings(dict);
|
ApplyFontSettings(dict);
|
||||||
|
|
@ -292,10 +292,10 @@ namespace Flow.Launcher.Core.Resource
|
||||||
dict["ItemHotkeyStyle"] is Style resultHotkeyItemStyle &&
|
dict["ItemHotkeyStyle"] is Style resultHotkeyItemStyle &&
|
||||||
dict["ItemHotkeySelectedStyle"] is Style resultHotkeyItemSelectedStyle)
|
dict["ItemHotkeySelectedStyle"] is Style resultHotkeyItemSelectedStyle)
|
||||||
{
|
{
|
||||||
Setter fontFamily = new Setter(TextBlock.FontFamilyProperty, new FontFamily(_settings.ResultFont));
|
var fontFamily = new Setter(TextBlock.FontFamilyProperty, new FontFamily(_settings.ResultFont));
|
||||||
Setter fontStyle = new Setter(TextBlock.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(_settings.ResultFontStyle));
|
var fontStyle = new Setter(TextBlock.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(_settings.ResultFontStyle));
|
||||||
Setter fontWeight = new Setter(TextBlock.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(_settings.ResultFontWeight));
|
var fontWeight = new Setter(TextBlock.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(_settings.ResultFontWeight));
|
||||||
Setter fontStretch = new Setter(TextBlock.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(_settings.ResultFontStretch));
|
var fontStretch = new Setter(TextBlock.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(_settings.ResultFontStretch));
|
||||||
|
|
||||||
Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch };
|
Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch };
|
||||||
Array.ForEach(
|
Array.ForEach(
|
||||||
|
|
@ -307,10 +307,10 @@ namespace Flow.Launcher.Core.Resource
|
||||||
dict["ItemSubTitleStyle"] is Style resultSubItemStyle &&
|
dict["ItemSubTitleStyle"] is Style resultSubItemStyle &&
|
||||||
dict["ItemSubTitleSelectedStyle"] is Style resultSubItemSelectedStyle)
|
dict["ItemSubTitleSelectedStyle"] is Style resultSubItemSelectedStyle)
|
||||||
{
|
{
|
||||||
Setter fontFamily = new Setter(TextBlock.FontFamilyProperty, new FontFamily(_settings.ResultSubFont));
|
var fontFamily = new Setter(TextBlock.FontFamilyProperty, new FontFamily(_settings.ResultSubFont));
|
||||||
Setter fontStyle = new Setter(TextBlock.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(_settings.ResultSubFontStyle));
|
var fontStyle = new Setter(TextBlock.FontStyleProperty, FontHelper.GetFontStyleFromInvariantStringOrNormal(_settings.ResultSubFontStyle));
|
||||||
Setter fontWeight = new Setter(TextBlock.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(_settings.ResultSubFontWeight));
|
var fontWeight = new Setter(TextBlock.FontWeightProperty, FontHelper.GetFontWeightFromInvariantStringOrNormal(_settings.ResultSubFontWeight));
|
||||||
Setter fontStretch = new Setter(TextBlock.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(_settings.ResultSubFontStretch));
|
var fontStretch = new Setter(TextBlock.FontStretchProperty, FontHelper.GetFontStretchFromInvariantStringOrNormal(_settings.ResultSubFontStretch));
|
||||||
|
|
||||||
Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch };
|
Setter[] setters = { fontFamily, fontStyle, fontWeight, fontStretch };
|
||||||
Array.ForEach(
|
Array.ForEach(
|
||||||
|
|
@ -395,7 +395,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
public List<ThemeData> GetAvailableThemes()
|
public List<ThemeData> GetAvailableThemes()
|
||||||
{
|
{
|
||||||
List<ThemeData> themes = new List<ThemeData>();
|
var themes = new List<ThemeData>();
|
||||||
foreach (var themeDirectory in _themeDirectories)
|
foreach (var themeDirectory in _themeDirectories)
|
||||||
{
|
{
|
||||||
var filePaths = Directory
|
var filePaths = Directory
|
||||||
|
|
@ -410,8 +410,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
public bool ChangeTheme(string theme = null)
|
public bool ChangeTheme(string theme = null)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(theme))
|
if (string.IsNullOrEmpty(theme)) theme = _settings.Theme;
|
||||||
theme = _settings.Theme;
|
|
||||||
|
|
||||||
string path = GetThemePath(theme);
|
string path = GetThemePath(theme);
|
||||||
try
|
try
|
||||||
|
|
@ -426,13 +425,14 @@ namespace Flow.Launcher.Core.Resource
|
||||||
|
|
||||||
_settings.Theme = theme;
|
_settings.Theme = theme;
|
||||||
|
|
||||||
//always allow re-loading default theme, in case of failure of switching to a new theme from default theme
|
// Always allow re-loading default theme, in case of failure of switching to a new theme from default theme
|
||||||
if (_oldTheme != theme || theme == Constant.DefaultTheme)
|
if (_oldTheme != theme || theme == Constant.DefaultTheme)
|
||||||
{
|
{
|
||||||
_oldTheme = Path.GetFileNameWithoutExtension(_oldResource.Source.AbsolutePath);
|
_oldTheme = Path.GetFileNameWithoutExtension(_oldResource.Source.AbsolutePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
BlurEnabled = IsBlurTheme();
|
// Check if blur is enabled
|
||||||
|
BlurEnabled = Win32Helper.IsBackdropSupported() && IsThemeBlurEnabled(resourceDict);
|
||||||
|
|
||||||
// Apply blur and drop shadow effect so that we do not need to call it again
|
// Apply blur and drop shadow effect so that we do not need to call it again
|
||||||
_ = RefreshFrameAsync();
|
_ = RefreshFrameAsync();
|
||||||
|
|
@ -444,17 +444,27 @@ namespace Flow.Launcher.Core.Resource
|
||||||
_api.LogError(ClassName, $"Theme <{theme}> path can't be found");
|
_api.LogError(ClassName, $"Theme <{theme}> path can't be found");
|
||||||
if (theme != Constant.DefaultTheme)
|
if (theme != Constant.DefaultTheme)
|
||||||
{
|
{
|
||||||
_api.ShowMsgBox(string.Format(_api.GetTranslation("theme_load_failure_path_not_exists"), theme));
|
_api.ShowMsgBox(Localize.theme_load_failure_path_not_exists(theme));
|
||||||
ChangeTheme(Constant.DefaultTheme);
|
ChangeTheme(Constant.DefaultTheme);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch (XamlParseException)
|
catch (XamlParseException e)
|
||||||
{
|
{
|
||||||
_api.LogError(ClassName, $"Theme <{theme}> fail to parse");
|
_api.LogException(ClassName, $"Theme <{theme}> fail to parse xaml", e);
|
||||||
if (theme != Constant.DefaultTheme)
|
if (theme != Constant.DefaultTheme)
|
||||||
{
|
{
|
||||||
_api.ShowMsgBox(string.Format(_api.GetTranslation("theme_load_failure_parse_error"), theme));
|
_api.ShowMsgBox(Localize.theme_load_failure_parse_error(theme));
|
||||||
|
ChangeTheme(Constant.DefaultTheme);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_api.LogException(ClassName, $"Theme <{theme}> fail to load", e);
|
||||||
|
if (theme != Constant.DefaultTheme)
|
||||||
|
{
|
||||||
|
_api.ShowMsgBox(Localize.theme_load_failure_parse_error(theme));
|
||||||
ChangeTheme(Constant.DefaultTheme);
|
ChangeTheme(Constant.DefaultTheme);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -657,21 +667,21 @@ namespace Flow.Launcher.Core.Resource
|
||||||
if (mainWindow == null) return;
|
if (mainWindow == null) return;
|
||||||
|
|
||||||
// Check if the theme supports blur
|
// Check if the theme supports blur
|
||||||
bool hasBlur = dict.Contains("ThemeBlurEnabled") && dict["ThemeBlurEnabled"] is bool b && b;
|
var hasBlur = IsThemeBlurEnabled(dict);
|
||||||
if (BlurEnabled && hasBlur && Win32Helper.IsBackdropSupported())
|
if (BlurEnabled && hasBlur && Win32Helper.IsBackdropSupported())
|
||||||
{
|
{
|
||||||
// If the BackdropType is Mica or MicaAlt, set the windowborderstyle's background to transparent
|
// If the BackdropType is Mica or MicaAlt, set the windowborderstyle's background to transparent
|
||||||
if (backdropType == BackdropTypes.Mica || backdropType == BackdropTypes.MicaAlt)
|
if (backdropType is BackdropTypes.Mica or BackdropTypes.MicaAlt)
|
||||||
{
|
{
|
||||||
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property.Name == "Background"));
|
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Control.BackgroundProperty));
|
||||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, new SolidColorBrush(Color.FromArgb(1, 0, 0, 0))));
|
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, ThemeHelper.GetFrozenSolidColorBrush(Color.FromArgb(1, 0, 0, 0))));
|
||||||
}
|
}
|
||||||
else if (backdropType == BackdropTypes.Acrylic)
|
else if (backdropType == BackdropTypes.Acrylic)
|
||||||
{
|
{
|
||||||
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property.Name == "Background"));
|
windowBorderStyle.Setters.Remove(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Control.BackgroundProperty));
|
||||||
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, new SolidColorBrush(Colors.Transparent)));
|
windowBorderStyle.Setters.Add(new Setter(Border.BackgroundProperty, Brushes.Transparent));
|
||||||
}
|
}
|
||||||
|
|
||||||
// For themes with blur enabled, the window border is rendered by the system, so it's treated as a simple rectangle regardless of thickness.
|
// For themes with blur enabled, the window border is rendered by the system, so it's treated as a simple rectangle regardless of thickness.
|
||||||
//(This is to avoid issues when the window is forcibly changed to a rectangular shape during snap scenarios.)
|
//(This is to avoid issues when the window is forcibly changed to a rectangular shape during snap scenarios.)
|
||||||
var cornerRadiusSetter = windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Border.CornerRadiusProperty);
|
var cornerRadiusSetter = windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property == Border.CornerRadiusProperty);
|
||||||
|
|
@ -679,7 +689,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
cornerRadiusSetter.Value = new CornerRadius(0);
|
cornerRadiusSetter.Value = new CornerRadius(0);
|
||||||
else
|
else
|
||||||
windowBorderStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(0)));
|
windowBorderStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(0)));
|
||||||
|
|
||||||
// Apply the blur effect
|
// Apply the blur effect
|
||||||
Win32Helper.DWMSetBackdropForWindow(mainWindow, backdropType);
|
Win32Helper.DWMSetBackdropForWindow(mainWindow, backdropType);
|
||||||
ColorizeWindow(theme, backdropType);
|
ColorizeWindow(theme, backdropType);
|
||||||
|
|
@ -788,12 +798,12 @@ namespace Flow.Launcher.Core.Resource
|
||||||
Application.Current.Resources["WindowBorderStyle"] is Style originalStyle)
|
Application.Current.Resources["WindowBorderStyle"] is Style originalStyle)
|
||||||
{
|
{
|
||||||
// Copy the original style, including the base style if it exists
|
// Copy the original style, including the base style if it exists
|
||||||
CopyStyle(originalStyle, previewStyle);
|
ThemeHelper.CopyStyle(originalStyle, previewStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply background color (remove transparency in color)
|
// Apply background color (remove transparency in color)
|
||||||
Color backgroundColor = Color.FromRgb(bgColor.Value.R, bgColor.Value.G, bgColor.Value.B);
|
var backgroundColor = Color.FromRgb(bgColor.Value.R, bgColor.Value.G, bgColor.Value.B);
|
||||||
previewStyle.Setters.Add(new Setter(Border.BackgroundProperty, new SolidColorBrush(backgroundColor)));
|
previewStyle.Setters.Add(new Setter(Border.BackgroundProperty, ThemeHelper.GetFrozenSolidColorBrush(backgroundColor)));
|
||||||
|
|
||||||
// The blur theme keeps the corner round fixed (applying DWM code to modify it causes rendering issues).
|
// The blur theme keeps the corner round fixed (applying DWM code to modify it causes rendering issues).
|
||||||
// The non-blur theme retains the previously set WindowBorderStyle.
|
// The non-blur theme retains the previously set WindowBorderStyle.
|
||||||
|
|
@ -807,21 +817,6 @@ namespace Flow.Launcher.Core.Resource
|
||||||
Application.Current.Resources["PreviewWindowBorderStyle"] = previewStyle;
|
Application.Current.Resources["PreviewWindowBorderStyle"] = previewStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CopyStyle(Style originalStyle, Style targetStyle)
|
|
||||||
{
|
|
||||||
// If the style is based on another style, copy the base style first
|
|
||||||
if (originalStyle.BasedOn != null)
|
|
||||||
{
|
|
||||||
CopyStyle(originalStyle.BasedOn, targetStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy the setters from the original style
|
|
||||||
foreach (var setter in originalStyle.Setters.OfType<Setter>())
|
|
||||||
{
|
|
||||||
targetStyle.Setters.Add(new Setter(setter.Property, setter.Value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ColorizeWindow(string theme, BackdropTypes backdropType)
|
private void ColorizeWindow(string theme, BackdropTypes backdropType)
|
||||||
{
|
{
|
||||||
var dict = GetThemeResourceDictionary(theme);
|
var dict = GetThemeResourceDictionary(theme);
|
||||||
|
|
@ -831,20 +826,16 @@ namespace Flow.Launcher.Core.Resource
|
||||||
if (mainWindow == null) return;
|
if (mainWindow == null) return;
|
||||||
|
|
||||||
// Check if the theme supports blur
|
// Check if the theme supports blur
|
||||||
bool hasBlur = dict.Contains("ThemeBlurEnabled") && dict["ThemeBlurEnabled"] is bool b && b;
|
var hasBlur = IsThemeBlurEnabled(dict);
|
||||||
|
|
||||||
// SystemBG value check (Auto, Light, Dark)
|
// SystemBG value check (Auto, Light, Dark)
|
||||||
string systemBG = dict.Contains("SystemBG") ? dict["SystemBG"] as string : "Auto"; // 기본값 Auto
|
var systemBG = dict.Contains("SystemBG") ? dict["SystemBG"] as string : "Auto"; // 기본값 Auto
|
||||||
|
|
||||||
// Check the user's ColorScheme setting
|
// Check the user's ColorScheme setting
|
||||||
string colorScheme = _settings.ColorScheme;
|
var colorScheme = _settings.ColorScheme;
|
||||||
|
|
||||||
// Check system dark mode setting (read AppsUseLightTheme value)
|
|
||||||
int themeValue = (int)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme", 1);
|
|
||||||
bool isSystemDark = themeValue == 0;
|
|
||||||
|
|
||||||
// Final decision on whether to use dark mode
|
// Final decision on whether to use dark mode
|
||||||
bool useDarkMode = false;
|
var useDarkMode = false;
|
||||||
|
|
||||||
// If systemBG is not "Auto", prioritize it over ColorScheme and set the mode based on systemBG value
|
// If systemBG is not "Auto", prioritize it over ColorScheme and set the mode based on systemBG value
|
||||||
if (systemBG == "Dark")
|
if (systemBG == "Dark")
|
||||||
|
|
@ -859,11 +850,20 @@ namespace Flow.Launcher.Core.Resource
|
||||||
{
|
{
|
||||||
// If systemBG is "Auto", decide based on ColorScheme
|
// If systemBG is "Auto", decide based on ColorScheme
|
||||||
if (colorScheme == "Dark")
|
if (colorScheme == "Dark")
|
||||||
|
{
|
||||||
useDarkMode = true;
|
useDarkMode = true;
|
||||||
|
}
|
||||||
else if (colorScheme == "Light")
|
else if (colorScheme == "Light")
|
||||||
|
{
|
||||||
useDarkMode = false;
|
useDarkMode = false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
// Check system dark mode setting (read AppsUseLightTheme value)
|
||||||
|
var themeValue = (int)Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", "AppsUseLightTheme", 1);
|
||||||
|
var isSystemDark = themeValue == 0;
|
||||||
useDarkMode = isSystemDark; // Auto (based on system setting)
|
useDarkMode = isSystemDark; // Auto (based on system setting)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply DWM Dark Mode
|
// Apply DWM Dark Mode
|
||||||
|
|
@ -905,25 +905,20 @@ namespace Flow.Launcher.Core.Resource
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Only set the background to transparent if the theme supports blur
|
// Only set the background to transparent if the theme supports blur
|
||||||
if (backdropType == BackdropTypes.Mica || backdropType == BackdropTypes.MicaAlt)
|
if (backdropType is BackdropTypes.Mica or BackdropTypes.MicaAlt)
|
||||||
{
|
{
|
||||||
mainWindow.Background = new SolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
mainWindow.Background = ThemeHelper.GetFrozenSolidColorBrush(Color.FromArgb(1, 0, 0, 0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mainWindow.Background = new SolidColorBrush(selectedBG);
|
mainWindow.Background = ThemeHelper.GetFrozenSolidColorBrush(selectedBG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsBlurTheme()
|
private static bool IsThemeBlurEnabled(ResourceDictionary dict)
|
||||||
{
|
{
|
||||||
if (!Win32Helper.IsBackdropSupported()) // Windows 11 미만이면 무조건 false
|
return dict.Contains("ThemeBlurEnabled") && dict["ThemeBlurEnabled"] is bool enabled && enabled;
|
||||||
return false;
|
|
||||||
|
|
||||||
var resource = Application.Current.TryFindResource("ThemeBlurEnabled");
|
|
||||||
|
|
||||||
return resource is bool b && b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
30
Flow.Launcher.Core/Resource/ThemeHelper.cs
Normal file
30
Flow.Launcher.Core/Resource/ThemeHelper.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Core.Resource;
|
||||||
|
|
||||||
|
public static class ThemeHelper
|
||||||
|
{
|
||||||
|
public static void CopyStyle(Style originalStyle, Style targetStyle)
|
||||||
|
{
|
||||||
|
// If the style is based on another style, copy the base style first
|
||||||
|
if (originalStyle.BasedOn != null)
|
||||||
|
{
|
||||||
|
CopyStyle(originalStyle.BasedOn, targetStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy the setters from the original style
|
||||||
|
foreach (var setter in originalStyle.Setters.OfType<Setter>())
|
||||||
|
{
|
||||||
|
targetStyle.Setters.Add(new Setter(setter.Property, setter.Value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SolidColorBrush GetFrozenSolidColorBrush(Color color)
|
||||||
|
{
|
||||||
|
var brush = new SolidColorBrush(color);
|
||||||
|
brush.Freeze();
|
||||||
|
return brush;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -41,8 +41,8 @@ namespace Flow.Launcher.Core
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!silentUpdate)
|
if (!silentUpdate)
|
||||||
_api.ShowMsg(_api.GetTranslation("pleaseWait"),
|
_api.ShowMsg(Localize.pleaseWait(),
|
||||||
_api.GetTranslation("update_flowlauncher_update_check"));
|
Localize.update_flowlauncher_update_check());
|
||||||
|
|
||||||
using var updateManager = await GitHubUpdateManagerAsync(GitHubRepository).ConfigureAwait(false);
|
using var updateManager = await GitHubUpdateManagerAsync(GitHubRepository).ConfigureAwait(false);
|
||||||
|
|
||||||
|
|
@ -58,13 +58,13 @@ namespace Flow.Launcher.Core
|
||||||
if (newReleaseVersion <= currentVersion)
|
if (newReleaseVersion <= currentVersion)
|
||||||
{
|
{
|
||||||
if (!silentUpdate)
|
if (!silentUpdate)
|
||||||
_api.ShowMsgBox(_api.GetTranslation("update_flowlauncher_already_on_latest"));
|
_api.ShowMsgBox(Localize.update_flowlauncher_already_on_latest());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!silentUpdate)
|
if (!silentUpdate)
|
||||||
_api.ShowMsg(_api.GetTranslation("update_flowlauncher_update_found"),
|
_api.ShowMsg(Localize.update_flowlauncher_update_found(),
|
||||||
_api.GetTranslation("update_flowlauncher_updating"));
|
Localize.update_flowlauncher_updating());
|
||||||
|
|
||||||
await updateManager.DownloadReleases(newUpdateInfo.ReleasesToApply).ConfigureAwait(false);
|
await updateManager.DownloadReleases(newUpdateInfo.ReleasesToApply).ConfigureAwait(false);
|
||||||
|
|
||||||
|
|
@ -77,10 +77,7 @@ namespace Flow.Launcher.Core
|
||||||
FilesFolders.CopyAll(DataLocation.PortableDataPath, targetDestination, (s) => _api.ShowMsgBox(s));
|
FilesFolders.CopyAll(DataLocation.PortableDataPath, targetDestination, (s) => _api.ShowMsgBox(s));
|
||||||
if (!FilesFolders.VerifyBothFolderFilesEqual(DataLocation.PortableDataPath, targetDestination,
|
if (!FilesFolders.VerifyBothFolderFilesEqual(DataLocation.PortableDataPath, targetDestination,
|
||||||
(s) => _api.ShowMsgBox(s)))
|
(s) => _api.ShowMsgBox(s)))
|
||||||
_api.ShowMsgBox(string.Format(
|
_api.ShowMsgBox(Localize.update_flowlauncher_fail_moving_portable_user_profile_data(DataLocation.PortableDataPath, targetDestination));
|
||||||
_api.GetTranslation("update_flowlauncher_fail_moving_portable_user_profile_data"),
|
|
||||||
DataLocation.PortableDataPath,
|
|
||||||
targetDestination));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -91,7 +88,7 @@ namespace Flow.Launcher.Core
|
||||||
|
|
||||||
_api.LogInfo(ClassName, $"Update success:{newVersionTips}");
|
_api.LogInfo(ClassName, $"Update success:{newVersionTips}");
|
||||||
|
|
||||||
if (_api.ShowMsgBox(newVersionTips, _api.GetTranslation("update_flowlauncher_new_update"),
|
if (_api.ShowMsgBox(newVersionTips, Localize.update_flowlauncher_new_update(),
|
||||||
MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
UpdateManager.RestartApp(Constant.ApplicationFileName);
|
||||||
|
|
@ -111,8 +108,8 @@ namespace Flow.Launcher.Core
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!silentUpdate)
|
if (!silentUpdate)
|
||||||
_api.ShowMsgError(_api.GetTranslation("update_flowlauncher_fail"),
|
_api.ShowMsgError(Localize.update_flowlauncher_fail(),
|
||||||
_api.GetTranslation("update_flowlauncher_check_connection"));
|
Localize.update_flowlauncher_check_connection());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
@ -150,9 +147,9 @@ namespace Flow.Launcher.Core
|
||||||
return manager;
|
return manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string NewVersionTips(string version)
|
private static string NewVersionTips(string version)
|
||||||
{
|
{
|
||||||
var tips = string.Format(_api.GetTranslation("newVersionTips"), version);
|
var tips = Localize.newVersionTips(version);
|
||||||
|
|
||||||
return tips;
|
return tips;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -13,6 +13,7 @@ using NHotkey;
|
||||||
using Windows.Win32;
|
using Windows.Win32;
|
||||||
using Windows.Win32.Foundation;
|
using Windows.Win32.Foundation;
|
||||||
using Windows.Win32.UI.Accessibility;
|
using Windows.Win32.UI.Accessibility;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.DialogJump
|
namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
{
|
{
|
||||||
|
|
@ -58,21 +59,17 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
|
|
||||||
private static readonly Settings _settings = Ioc.Default.GetRequiredService<Settings>();
|
private static readonly Settings _settings = Ioc.Default.GetRequiredService<Settings>();
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
private static HWND _mainWindowHandle = HWND.Null;
|
private static HWND _mainWindowHandle = HWND.Null;
|
||||||
|
|
||||||
private static readonly Dictionary<DialogJumpExplorerPair, IDialogJumpExplorerWindow> _dialogJumpExplorers = new();
|
private static readonly ConcurrentDictionary<DialogJumpExplorerPair, IDialogJumpExplorerWindow> _dialogJumpExplorers = new();
|
||||||
|
|
||||||
private static DialogJumpExplorerPair _lastExplorer = null;
|
private static DialogJumpExplorerPair _lastExplorer = null;
|
||||||
private static readonly object _lastExplorerLock = new();
|
private static readonly Lock _lastExplorerLock = new();
|
||||||
|
|
||||||
private static readonly Dictionary<DialogJumpDialogPair, IDialogJumpDialogWindow> _dialogJumpDialogs = new();
|
private static readonly ConcurrentDictionary<DialogJumpDialogPair, IDialogJumpDialogWindow> _dialogJumpDialogs = new();
|
||||||
|
|
||||||
private static IDialogJumpDialogWindow _dialogWindow = null;
|
private static IDialogJumpDialogWindow _dialogWindow = null;
|
||||||
private static readonly object _dialogWindowLock = new();
|
private static readonly Lock _dialogWindowLock = new();
|
||||||
|
|
||||||
private static HWINEVENTHOOK _foregroundChangeHook = HWINEVENTHOOK.Null;
|
private static HWINEVENTHOOK _foregroundChangeHook = HWINEVENTHOOK.Null;
|
||||||
private static HWINEVENTHOOK _locationChangeHook = HWINEVENTHOOK.Null;
|
private static HWINEVENTHOOK _locationChangeHook = HWINEVENTHOOK.Null;
|
||||||
|
|
@ -89,8 +86,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
private static DispatcherTimer _dragMoveTimer = null;
|
private static DispatcherTimer _dragMoveTimer = null;
|
||||||
|
|
||||||
// A list of all file dialog windows that are auto switched already
|
// A list of all file dialog windows that are auto switched already
|
||||||
private static readonly List<HWND> _autoSwitchedDialogs = new();
|
private static readonly List<HWND> _autoSwitchedDialogs = [];
|
||||||
private static readonly object _autoSwitchedDialogsLock = new();
|
private static readonly Lock _autoSwitchedDialogsLock = new();
|
||||||
|
|
||||||
private static HWINEVENTHOOK _moveSizeHook = HWINEVENTHOOK.Null;
|
private static HWINEVENTHOOK _moveSizeHook = HWINEVENTHOOK.Null;
|
||||||
private static readonly WINEVENTPROC _moveProc = MoveSizeCallBack;
|
private static readonly WINEVENTPROC _moveProc = MoveSizeCallBack;
|
||||||
|
|
@ -105,22 +102,13 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
|
|
||||||
#region Initialize & Setup
|
#region Initialize & Setup
|
||||||
|
|
||||||
public static void InitializeDialogJump(IList<DialogJumpExplorerPair> dialogJumpExplorers,
|
public static void InitializeDialogJump()
|
||||||
IList<DialogJumpDialogPair> dialogJumpDialogs)
|
|
||||||
{
|
{
|
||||||
if (_initialized) return;
|
if (_initialized) return;
|
||||||
|
|
||||||
// Initialize Dialog Jump explorers & dialogs
|
// Initialize preinstalled Dialog Jump explorers & dialogs
|
||||||
_dialogJumpExplorers.Add(WindowsDialogJumpExplorer, null);
|
_dialogJumpExplorers.TryAdd(WindowsDialogJumpExplorer, null);
|
||||||
foreach (var explorer in dialogJumpExplorers)
|
_dialogJumpDialogs.TryAdd(WindowsDialogJumpDialog, null);
|
||||||
{
|
|
||||||
_dialogJumpExplorers.Add(explorer, null);
|
|
||||||
}
|
|
||||||
_dialogJumpDialogs.Add(WindowsDialogJumpDialog, null);
|
|
||||||
foreach (var dialog in dialogJumpDialogs)
|
|
||||||
{
|
|
||||||
_dialogJumpDialogs.Add(dialog, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize main window handle
|
// Initialize main window handle
|
||||||
_mainWindowHandle = Win32Helper.GetMainWindowHandle();
|
_mainWindowHandle = Win32Helper.GetMainWindowHandle();
|
||||||
|
|
@ -135,6 +123,29 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
_initialized = true;
|
_initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void InitializeDialogJumpPlugin(PluginPair pair)
|
||||||
|
{
|
||||||
|
// Add Dialog Jump explorers & dialogs
|
||||||
|
if (pair.Plugin is IDialogJumpExplorer explorer)
|
||||||
|
{
|
||||||
|
var dialogJumpExplorer = new DialogJumpExplorerPair
|
||||||
|
{
|
||||||
|
Plugin = explorer,
|
||||||
|
Metadata = pair.Metadata
|
||||||
|
};
|
||||||
|
_dialogJumpExplorers.TryAdd(dialogJumpExplorer, null);
|
||||||
|
}
|
||||||
|
if (pair.Plugin is IDialogJumpDialog dialog)
|
||||||
|
{
|
||||||
|
var dialogJumpDialog = new DialogJumpDialogPair
|
||||||
|
{
|
||||||
|
Plugin = dialog,
|
||||||
|
Metadata = pair.Metadata
|
||||||
|
};
|
||||||
|
_dialogJumpDialogs.TryAdd(dialogJumpDialog, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void SetupDialogJump(bool enabled)
|
public static void SetupDialogJump(bool enabled)
|
||||||
{
|
{
|
||||||
if (enabled == _enabled) return;
|
if (enabled == _enabled) return;
|
||||||
|
|
@ -315,7 +326,7 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
{
|
{
|
||||||
foreach (var explorer in _dialogJumpExplorers.Keys)
|
foreach (var explorer in _dialogJumpExplorers.Keys)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(explorer.Metadata.ID) || // Plugin is modified
|
if (PublicApi.Instance.PluginModified(explorer.Metadata.ID) || // Plugin is modified
|
||||||
explorer.Metadata.Disabled) continue; // Plugin is disabled
|
explorer.Metadata.Disabled) continue; // Plugin is disabled
|
||||||
|
|
||||||
var explorerWindow = explorer.Plugin.CheckExplorerWindow(hWnd);
|
var explorerWindow = explorer.Plugin.CheckExplorerWindow(hWnd);
|
||||||
|
|
@ -485,6 +496,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
await _foregroundChangeLock.WaitAsync();
|
await _foregroundChangeLock.WaitAsync();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -493,7 +506,7 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
var dialogWindowChanged = false;
|
var dialogWindowChanged = false;
|
||||||
foreach (var dialog in _dialogJumpDialogs.Keys)
|
foreach (var dialog in _dialogJumpDialogs.Keys)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
if (PublicApi.Instance.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
||||||
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
||||||
|
|
||||||
IDialogJumpDialogWindow dialogWindow;
|
IDialogJumpDialogWindow dialogWindow;
|
||||||
|
|
@ -596,7 +609,7 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
{
|
{
|
||||||
foreach (var explorer in _dialogJumpExplorers.Keys)
|
foreach (var explorer in _dialogJumpExplorers.Keys)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(explorer.Metadata.ID) || // Plugin is modified
|
if (PublicApi.Instance.PluginModified(explorer.Metadata.ID) || // Plugin is modified
|
||||||
explorer.Metadata.Disabled) continue; // Plugin is disabled
|
explorer.Metadata.Disabled) continue; // Plugin is disabled
|
||||||
|
|
||||||
var explorerWindow = explorer.Plugin.CheckExplorerWindow(hwnd);
|
var explorerWindow = explorer.Plugin.CheckExplorerWindow(hwnd);
|
||||||
|
|
@ -636,6 +649,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
// If the dialog window is moved, update the Dialog Jump window position
|
// If the dialog window is moved, update the Dialog Jump window position
|
||||||
var dialogWindowExist = false;
|
var dialogWindowExist = false;
|
||||||
lock (_dialogWindowLock)
|
lock (_dialogWindowLock)
|
||||||
|
|
@ -661,6 +676,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
// If the dialog window is moved or resized, update the Dialog Jump window position
|
// If the dialog window is moved or resized, update the Dialog Jump window position
|
||||||
if (_dragMoveTimer != null)
|
if (_dragMoveTimer != null)
|
||||||
{
|
{
|
||||||
|
|
@ -686,6 +703,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
// If the dialog window is destroyed, set _dialogWindowHandle to null
|
// If the dialog window is destroyed, set _dialogWindowHandle to null
|
||||||
var dialogWindowExist = false;
|
var dialogWindowExist = false;
|
||||||
lock (_dialogWindowLock)
|
lock (_dialogWindowLock)
|
||||||
|
|
@ -717,6 +736,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
// If the dialog window is hidden, set _dialogWindowHandle to null
|
// If the dialog window is hidden, set _dialogWindowHandle to null
|
||||||
var dialogWindowExist = false;
|
var dialogWindowExist = false;
|
||||||
lock (_dialogWindowLock)
|
lock (_dialogWindowLock)
|
||||||
|
|
@ -748,6 +769,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
uint dwmsEventTime
|
uint dwmsEventTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (hwnd.IsNull) return;
|
||||||
|
|
||||||
// If the dialog window is ended, set _dialogWindowHandle to null
|
// If the dialog window is ended, set _dialogWindowHandle to null
|
||||||
var dialogWindowExist = false;
|
var dialogWindowExist = false;
|
||||||
lock (_dialogWindowLock)
|
lock (_dialogWindowLock)
|
||||||
|
|
@ -832,9 +855,25 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// file: URI paths
|
// file: URI paths
|
||||||
var localPath = path.StartsWith("file:", StringComparison.OrdinalIgnoreCase)
|
string localPath;
|
||||||
? new Uri(path).LocalPath
|
if (path.StartsWith("file:", StringComparison.OrdinalIgnoreCase))
|
||||||
: path;
|
{
|
||||||
|
// Try to create a URI from the path
|
||||||
|
if (Uri.TryCreate(path, UriKind.Absolute, out var uri))
|
||||||
|
{
|
||||||
|
localPath = uri.LocalPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If URI creation fails, treat it as a regular path
|
||||||
|
// by removing the "file:" prefix
|
||||||
|
localPath = path.Substring(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
localPath = path;
|
||||||
|
}
|
||||||
// Is folder?
|
// Is folder?
|
||||||
var isFolder = Directory.Exists(localPath);
|
var isFolder = Directory.Exists(localPath);
|
||||||
// Is file?
|
// Is file?
|
||||||
|
|
@ -871,7 +910,7 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
// Then check all dialog windows
|
// Then check all dialog windows
|
||||||
foreach (var dialog in _dialogJumpDialogs.Keys)
|
foreach (var dialog in _dialogJumpDialogs.Keys)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
if (PublicApi.Instance.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
||||||
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
||||||
|
|
||||||
var dialogWindow = _dialogJumpDialogs[dialog];
|
var dialogWindow = _dialogJumpDialogs[dialog];
|
||||||
|
|
@ -884,7 +923,7 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
// Finally search for the dialog window again
|
// Finally search for the dialog window again
|
||||||
foreach (var dialog in _dialogJumpDialogs.Keys)
|
foreach (var dialog in _dialogJumpDialogs.Keys)
|
||||||
{
|
{
|
||||||
if (API.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
if (PublicApi.Instance.PluginModified(dialog.Metadata.ID) || // Plugin is modified
|
||||||
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
dialog.Metadata.Disabled) continue; // Plugin is disabled
|
||||||
|
|
||||||
IDialogJumpDialogWindow dialogWindow;
|
IDialogJumpDialogWindow dialogWindow;
|
||||||
|
|
@ -1067,11 +1106,8 @@ namespace Flow.Launcher.Infrastructure.DialogJump
|
||||||
_navigationLock.Dispose();
|
_navigationLock.Dispose();
|
||||||
|
|
||||||
// Stop drag move timer
|
// Stop drag move timer
|
||||||
if (_dragMoveTimer != null)
|
_dragMoveTimer?.Stop();
|
||||||
{
|
_dragMoveTimer = null;
|
||||||
_dragMoveTimer.Stop();
|
|
||||||
_dragMoveTimer = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Windows.Win32;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure
|
namespace Flow.Launcher.Infrastructure
|
||||||
{
|
{
|
||||||
|
|
@ -13,9 +9,10 @@ namespace Flow.Launcher.Infrastructure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string GetActiveExplorerPath()
|
public static string GetActiveExplorerPath()
|
||||||
{
|
{
|
||||||
var explorerWindow = GetActiveExplorer();
|
var explorerPath = DialogJump.DialogJump.GetActiveExplorerPath();
|
||||||
string locationUrl = explorerWindow?.LocationURL;
|
return !string.IsNullOrEmpty(explorerPath) ?
|
||||||
return !string.IsNullOrEmpty(locationUrl) ? GetDirectoryPath(new Uri(locationUrl).LocalPath) : null;
|
GetDirectoryPath(new Uri(explorerPath).LocalPath) :
|
||||||
|
null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -23,74 +20,12 @@ namespace Flow.Launcher.Infrastructure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static string GetDirectoryPath(string path)
|
private static string GetDirectoryPath(string path)
|
||||||
{
|
{
|
||||||
if (!path.EndsWith("\\"))
|
if (!path.EndsWith('\\'))
|
||||||
{
|
{
|
||||||
return path + "\\";
|
return path + "\\";
|
||||||
}
|
}
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the file explorer that is currently in the foreground
|
|
||||||
/// </summary>
|
|
||||||
private static dynamic GetActiveExplorer()
|
|
||||||
{
|
|
||||||
Type type = Type.GetTypeFromProgID("Shell.Application");
|
|
||||||
if (type == null) return null;
|
|
||||||
dynamic shell = Activator.CreateInstance(type);
|
|
||||||
if (shell == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var explorerWindows = new List<dynamic>();
|
|
||||||
var openWindows = shell.Windows();
|
|
||||||
for (int i = 0; i < openWindows.Count; i++)
|
|
||||||
{
|
|
||||||
var window = openWindows.Item(i);
|
|
||||||
if (window == null) continue;
|
|
||||||
|
|
||||||
// find the desired window and make sure that it is indeed a file explorer
|
|
||||||
// we don't want the Internet Explorer or the classic control panel
|
|
||||||
// ToLower() is needed, because Windows can report the path as "C:\\Windows\\Explorer.EXE"
|
|
||||||
if (Path.GetFileName((string)window.FullName)?.ToLower() == "explorer.exe")
|
|
||||||
{
|
|
||||||
explorerWindows.Add(window);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (explorerWindows.Count == 0) return null;
|
|
||||||
|
|
||||||
var zOrders = GetZOrder(explorerWindows);
|
|
||||||
|
|
||||||
return explorerWindows.Zip(zOrders).MinBy(x => x.Second).First;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the z-order for one or more windows atomically with respect to each other. In Windows, smaller z-order is higher. If the window is not top level, the z order is returned as -1.
|
|
||||||
/// </summary>
|
|
||||||
private static IEnumerable<int> GetZOrder(List<dynamic> hWnds)
|
|
||||||
{
|
|
||||||
var z = new int[hWnds.Count];
|
|
||||||
for (var i = 0; i < hWnds.Count; i++) z[i] = -1;
|
|
||||||
|
|
||||||
var index = 0;
|
|
||||||
var numRemaining = hWnds.Count;
|
|
||||||
PInvoke.EnumWindows((wnd, _) =>
|
|
||||||
{
|
|
||||||
var searchIndex = hWnds.FindIndex(x => new IntPtr(x.HWND) == wnd);
|
|
||||||
if (searchIndex != -1)
|
|
||||||
{
|
|
||||||
z[searchIndex] = index;
|
|
||||||
numRemaining--;
|
|
||||||
if (numRemaining == 0) return false;
|
|
||||||
}
|
|
||||||
index++;
|
|
||||||
return true;
|
|
||||||
}, IntPtr.Zero);
|
|
||||||
|
|
||||||
return z;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<NoWarn>$(NoWarn);FLSG0007</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -56,28 +57,41 @@
|
||||||
<PackageReference Include="Ben.Demystifier" Version="0.4.1" />
|
<PackageReference Include="Ben.Demystifier" Version="0.4.1" />
|
||||||
<PackageReference Include="BitFaster.Caching" Version="2.5.4" />
|
<PackageReference Include="BitFaster.Caching" Version="2.5.4" />
|
||||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||||
<PackageReference Include="Fody" Version="6.9.2">
|
<PackageReference Include="Flow.Launcher.Localization" Version="0.0.6" />
|
||||||
|
<PackageReference Include="Fody" Version="6.9.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="ini-parser" Version="2.5.2" />
|
||||||
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
||||||
<PackageReference Include="MemoryPack" Version="1.21.4" />
|
<PackageReference Include="MemoryPack" Version="1.21.4" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.14.15" />
|
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.14.15" />
|
||||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.183">
|
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.205">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="NHotkey.Wpf" Version="3.0.0" />
|
<PackageReference Include="NHotkey.Wpf" Version="3.0.0" />
|
||||||
<PackageReference Include="NLog" Version="6.0.1" />
|
<PackageReference Include="NLog" Version="6.0.4" />
|
||||||
<PackageReference Include="NLog.OutputDebugString" Version="6.0.1" />
|
<PackageReference Include="NLog.OutputDebugString" Version="6.0.4" />
|
||||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="SharpVectors.Wpf" Version="1.8.4.2" />
|
<PackageReference Include="SharpVectors.Wpf" Version="1.8.5" />
|
||||||
<!-- Do not upgrade this to higher version since it can cause this issue on WinForm platform: -->
|
<!-- Do not upgrade this to higher version since it can cause this issue on WinForm platform: -->
|
||||||
<!-- PlatformNotSupportedException: SystemEvents is not supported on this platform. -->
|
<!-- PlatformNotSupportedException: SystemEvents is not supported on this platform. -->
|
||||||
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
|
||||||
<PackageReference Include="ToolGood.Words.Pinyin" Version="3.1.0.3" />
|
<PackageReference Include="ToolGood.Words.Pinyin" Version="3.1.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<FLLUseDependencyInjection>true</FLLUseDependencyInjection>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<AdditionalFiles Remove="Languages\en.xaml" />
|
||||||
|
<AdditionalFiles Include="..\Flow.Launcher\Languages\en.xaml">
|
||||||
|
<Link>Languages\en.xaml</Link>
|
||||||
|
</AdditionalFiles>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -4,10 +4,8 @@ using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Infrastructure.Logger;
|
using Flow.Launcher.Infrastructure.Logger;
|
||||||
using Flow.Launcher.Infrastructure.UserSettings;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
using Flow.Launcher.Plugin;
|
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.Http
|
namespace Flow.Launcher.Infrastructure.Http
|
||||||
|
|
@ -20,10 +18,6 @@ namespace Flow.Launcher.Infrastructure.Http
|
||||||
|
|
||||||
private static readonly HttpClient client = new();
|
private static readonly HttpClient client = new();
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
static Http()
|
static Http()
|
||||||
{
|
{
|
||||||
// need to be added so it would work on a win10 machine
|
// need to be added so it would work on a win10 machine
|
||||||
|
|
@ -82,7 +76,7 @@ namespace Flow.Launcher.Infrastructure.Http
|
||||||
}
|
}
|
||||||
catch (UriFormatException e)
|
catch (UriFormatException e)
|
||||||
{
|
{
|
||||||
API.ShowMsgError(API.GetTranslation("pleaseTryAgain"), API.GetTranslation("parseProxyFailed"));
|
PublicApi.Instance.ShowMsgError(Localize.pleaseTryAgain(), Localize.parseProxyFailed());
|
||||||
Log.Exception(ClassName, "Unable to parse Uri", e);
|
Log.Exception(ClassName, "Unable to parse Uri", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
private static Lock storageLock { get; } = new();
|
private static Lock storageLock { get; } = new();
|
||||||
private static BinaryStorage<List<(string, bool)>> _storage;
|
private static BinaryStorage<List<(string, bool)>> _storage;
|
||||||
private static readonly ConcurrentDictionary<string, string> GuidToKey = new();
|
private static readonly ConcurrentDictionary<string, string> GuidToKey = new();
|
||||||
private static IImageHashGenerator _hashGenerator;
|
private static ImageHashGenerator _hashGenerator;
|
||||||
private static readonly bool EnableImageHash = true;
|
private static readonly bool EnableImageHash = true;
|
||||||
public static ImageSource Image => ImageCache[Constant.ImageIcon, false];
|
public static ImageSource Image => ImageCache[Constant.ImageIcon, false];
|
||||||
public static ImageSource MissingImage => ImageCache[Constant.MissingImgIcon, 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 FullIconSize = 256;
|
||||||
public const int FullImageSize = 320;
|
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";
|
private static readonly string SvgExtension = ".svg";
|
||||||
|
|
||||||
public static async Task InitializeAsync()
|
public static async Task InitializeAsync()
|
||||||
|
|
@ -327,7 +327,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
return img;
|
return img;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ImageSource LoadFullImage(string path)
|
private static BitmapImage LoadFullImage(string path)
|
||||||
{
|
{
|
||||||
BitmapImage image = new BitmapImage();
|
BitmapImage image = new BitmapImage();
|
||||||
image.BeginInit();
|
image.BeginInit();
|
||||||
|
|
@ -364,7 +364,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
return 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
|
// Set up drawing settings
|
||||||
var desiredHeight = loadFullImage ? FullImageSize : SmallIconSize;
|
var desiredHeight = loadFullImage ? FullImageSize : SmallIconSize;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Interop;
|
using System.Windows.Interop;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
using IniParser;
|
||||||
using Windows.Win32;
|
using Windows.Win32;
|
||||||
using Windows.Win32.Foundation;
|
using Windows.Win32.Foundation;
|
||||||
using Windows.Win32.UI.Shell;
|
|
||||||
using Windows.Win32.Graphics.Gdi;
|
using Windows.Win32.Graphics.Gdi;
|
||||||
|
using Windows.Win32.UI.Shell;
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.Image
|
namespace Flow.Launcher.Infrastructure.Image
|
||||||
{
|
{
|
||||||
|
|
@ -35,9 +36,32 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
|
|
||||||
private static readonly HRESULT S_PATHNOTFOUND = (HRESULT)0x8004B205;
|
private static readonly HRESULT S_PATHNOTFOUND = (HRESULT)0x8004B205;
|
||||||
|
|
||||||
|
private const string UrlExtension = ".url";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains a BitmapSource thumbnail for the specified file.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// If the file is a Windows URL shortcut (".url"), the method attempts to resolve the shortcut's icon and use that for the thumbnail; otherwise it requests a thumbnail for the file path. The native HBITMAP used to create the BitmapSource is always released to avoid native memory leaks.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="fileName">Path to the file (can be a regular file or a ".url" shortcut).</param>
|
||||||
|
/// <param name="width">Requested thumbnail width in pixels.</param>
|
||||||
|
/// <param name="height">Requested thumbnail height in pixels.</param>
|
||||||
|
/// <param name="options">Thumbnail extraction options (flags) controlling fallback and caching behavior.</param>
|
||||||
|
/// <returns>A BitmapSource representing the requested thumbnail.</returns>
|
||||||
public static BitmapSource GetThumbnail(string fileName, int width, int height, ThumbnailOptions options)
|
public static BitmapSource GetThumbnail(string fileName, int width, int height, ThumbnailOptions options)
|
||||||
{
|
{
|
||||||
HBITMAP hBitmap = GetHBitmap(Path.GetFullPath(fileName), width, height, options);
|
HBITMAP hBitmap;
|
||||||
|
|
||||||
|
var extension = Path.GetExtension(fileName);
|
||||||
|
if (string.Equals(extension, UrlExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
hBitmap = GetHBitmapForUrlFile(fileName, width, height, options);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hBitmap = GetHBitmap(Path.GetFullPath(fileName), width, height, options);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -50,6 +74,21 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains a native HBITMAP for the specified file at the requested size using the Windows Shell image factory.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// If <paramref name="options"/> is <see cref="ThumbnailOptions.ThumbnailOnly"/> and thumbnail extraction fails
|
||||||
|
/// due to extraction errors or a missing path, the method falls back to requesting an icon (<see cref="ThumbnailOptions.IconOnly"/>).
|
||||||
|
/// The returned HBITMAP is a raw GDI handle; the caller is responsible for releasing it (e.g., via DeleteObject) to avoid native memory leaks.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="fileName">Path to the file to thumbnail.</param>
|
||||||
|
/// <param name="width">Requested thumbnail width in pixels.</param>
|
||||||
|
/// <param name="height">Requested thumbnail height in pixels.</param>
|
||||||
|
/// <param name="options">Thumbnail request flags that control behavior (e.g., ThumbnailOnly, IconOnly).</param>
|
||||||
|
/// <returns>An HBITMAP handle containing the image. Caller must free the handle when finished.</returns>
|
||||||
|
/// <exception cref="COMException">If creating the shell item fails (HRESULT returned by SHCreateItemFromParsingName).</exception>
|
||||||
|
/// <exception cref="InvalidOperationException">If the shell item does not expose IShellItemImageFactory or if an unexpected error occurs while obtaining the image.</exception>
|
||||||
private static unsafe HBITMAP GetHBitmap(string fileName, int width, int height, ThumbnailOptions options)
|
private static unsafe HBITMAP GetHBitmap(string fileName, int width, int height, ThumbnailOptions options)
|
||||||
{
|
{
|
||||||
var retCode = PInvoke.SHCreateItemFromParsingName(
|
var retCode = PInvoke.SHCreateItemFromParsingName(
|
||||||
|
|
@ -108,5 +147,44 @@ namespace Flow.Launcher.Infrastructure.Image
|
||||||
|
|
||||||
return hBitmap;
|
return hBitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains an HBITMAP for a Windows .url shortcut by resolving its IconFile entry and delegating to GetHBitmap.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The method parses the .url file as an INI, looks in the "InternetShortcut" section for the "IconFile" entry,
|
||||||
|
/// and requests a bitmap for that icon path. If no IconFile is present or any error occurs while reading or
|
||||||
|
/// resolving the icon, it falls back to requesting a thumbnail for the .url file itself.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="fileName">Path to the .url shortcut file.</param>
|
||||||
|
/// <param name="width">Requested thumbnail width (pixels).</param>
|
||||||
|
/// <param name="height">Requested thumbnail height (pixels).</param>
|
||||||
|
/// <param name="options">ThumbnailOptions flags controlling extraction behavior.</param>
|
||||||
|
/// <returns>An HBITMAP containing the requested image; callers are responsible for freeing the native handle.</returns>
|
||||||
|
private static unsafe HBITMAP GetHBitmapForUrlFile(string fileName, int width, int height, ThumbnailOptions options)
|
||||||
|
{
|
||||||
|
HBITMAP hBitmap;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var parser = new FileIniDataParser();
|
||||||
|
var data = parser.ReadFile(fileName);
|
||||||
|
var urlSection = data["InternetShortcut"];
|
||||||
|
|
||||||
|
var iconPath = urlSection?["IconFile"];
|
||||||
|
if (!File.Exists(iconPath))
|
||||||
|
{
|
||||||
|
// If the IconFile is missing, throw exception to fallback to the default icon
|
||||||
|
throw new FileNotFoundException("Icon file not specified in Internet shortcut (.url) file.");
|
||||||
|
}
|
||||||
|
hBitmap = GetHBitmap(Path.GetFullPath(iconPath), width, height, options);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
hBitmap = GetHBitmap(Path.GetFullPath(fileName), width, height, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
return hBitmap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ namespace Flow.Launcher.Infrastructure.Logger
|
||||||
|
|
||||||
var fileTarget = new FileTarget
|
var fileTarget = new FileTarget
|
||||||
{
|
{
|
||||||
FileName = CurrentLogDirectory.Replace(@"\", "/") + "/${shortdate}.txt",
|
FileName = CurrentLogDirectory.Replace(@"\", "/") + "/Flow.Launcher.${date:format=yyyy-MM-dd}.log",
|
||||||
Layout = layout
|
Layout = layout
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -65,26 +65,22 @@ namespace Flow.Launcher.Infrastructure.Logger
|
||||||
|
|
||||||
public static void SetLogLevel(LOGLEVEL level)
|
public static void SetLogLevel(LOGLEVEL level)
|
||||||
{
|
{
|
||||||
switch (level)
|
var rule = LogManager.Configuration.FindRuleByName("file");
|
||||||
|
|
||||||
|
var nlogLevel = level switch
|
||||||
{
|
{
|
||||||
case LOGLEVEL.DEBUG:
|
LOGLEVEL.NONE => LogLevel.Off,
|
||||||
UseDebugLogLevel();
|
LOGLEVEL.ERROR => LogLevel.Error,
|
||||||
break;
|
LOGLEVEL.DEBUG => LogLevel.Debug,
|
||||||
default:
|
_ => LogLevel.Info
|
||||||
UseInfoLogLevel();
|
};
|
||||||
break;
|
|
||||||
}
|
|
||||||
Info(nameof(Logger), $"Using log level: {level}.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void UseDebugLogLevel()
|
rule.SetLoggingLevels(nlogLevel, LogLevel.Fatal);
|
||||||
{
|
|
||||||
LogManager.Configuration.FindRuleByName("file").SetLoggingLevels(LogLevel.Debug, LogLevel.Fatal);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void UseInfoLogLevel()
|
LogManager.ReconfigExistingLoggers();
|
||||||
{
|
|
||||||
LogManager.Configuration.FindRuleByName("file").SetLoggingLevels(LogLevel.Info, LogLevel.Fatal);
|
// We can't log Info when level is set to Error or None, so we use Debug
|
||||||
|
Debug(nameof(Logger), $"Using log level: {level}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void LogFaultyFormat(string message)
|
private static void LogFaultyFormat(string message)
|
||||||
|
|
@ -169,7 +165,9 @@ namespace Flow.Launcher.Infrastructure.Logger
|
||||||
|
|
||||||
public enum LOGLEVEL
|
public enum LOGLEVEL
|
||||||
{
|
{
|
||||||
DEBUG,
|
NONE,
|
||||||
INFO
|
ERROR,
|
||||||
|
INFO,
|
||||||
|
DEBUG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,5 +85,12 @@ QueryFullProcessImageName
|
||||||
EVENT_OBJECT_HIDE
|
EVENT_OBJECT_HIDE
|
||||||
EVENT_SYSTEM_DIALOGEND
|
EVENT_SYSTEM_DIALOGEND
|
||||||
|
|
||||||
|
DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS
|
||||||
WM_POWERBROADCAST
|
WM_POWERBROADCAST
|
||||||
PBT_APMRESUMEAUTOMATIC
|
PBT_APMRESUMEAUTOMATIC
|
||||||
|
PBT_APMRESUMESUSPEND
|
||||||
|
PowerRegisterSuspendResumeNotification
|
||||||
|
PowerUnregisterSuspendResumeNotification
|
||||||
|
DeviceNotifyCallbackRoutine
|
||||||
|
|
||||||
|
MonitorFromWindow
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Flow.Launcher.Infrastructure
|
||||||
{
|
{
|
||||||
switch (e.PropertyName)
|
switch (e.PropertyName)
|
||||||
{
|
{
|
||||||
case nameof (Settings.ShouldUsePinyin):
|
case nameof(Settings.ShouldUsePinyin):
|
||||||
if (_settings.ShouldUsePinyin)
|
if (_settings.ShouldUsePinyin)
|
||||||
{
|
{
|
||||||
Reload();
|
Reload();
|
||||||
|
|
@ -52,7 +52,7 @@ namespace Flow.Launcher.Infrastructure
|
||||||
|
|
||||||
private void CreateDoublePinyinTableFromStream(Stream jsonStream)
|
private void CreateDoublePinyinTableFromStream(Stream jsonStream)
|
||||||
{
|
{
|
||||||
var table = JsonSerializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(jsonStream) ??
|
var table = JsonSerializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(jsonStream) ??
|
||||||
throw new InvalidOperationException("Failed to deserialize double pinyin table: result is null");
|
throw new InvalidOperationException("Failed to deserialize double pinyin table: result is null");
|
||||||
|
|
||||||
var schemaKey = _settings.DoublePinyinSchema.ToString();
|
var schemaKey = _settings.DoublePinyinSchema.ToString();
|
||||||
|
|
@ -128,12 +128,12 @@ namespace Flow.Launcher.Infrastructure
|
||||||
if (IsChineseCharacter(content[i]))
|
if (IsChineseCharacter(content[i]))
|
||||||
{
|
{
|
||||||
var translated = _settings.UseDoublePinyin ? ToDoublePinyin(resultList[i]) : resultList[i];
|
var translated = _settings.UseDoublePinyin ? ToDoublePinyin(resultList[i]) : resultList[i];
|
||||||
|
|
||||||
if (i > 0)
|
if (i > 0 && content[i - 1] != ' ')
|
||||||
{
|
{
|
||||||
resultBuilder.Append(' ');
|
resultBuilder.Append(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
map.AddNewIndex(resultBuilder.Length, translated.Length);
|
map.AddNewIndex(resultBuilder.Length, translated.Length);
|
||||||
resultBuilder.Append(translated);
|
resultBuilder.Append(translated);
|
||||||
previousIsChinese = true;
|
previousIsChinese = true;
|
||||||
|
|
@ -144,11 +144,14 @@ namespace Flow.Launcher.Infrastructure
|
||||||
if (previousIsChinese)
|
if (previousIsChinese)
|
||||||
{
|
{
|
||||||
previousIsChinese = false;
|
previousIsChinese = false;
|
||||||
resultBuilder.Append(' ');
|
if (content[i] != ' ')
|
||||||
|
{
|
||||||
|
resultBuilder.Append(' ');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
map.AddNewIndex(resultBuilder.Length, resultList[i].Length);
|
map.AddNewIndex(resultBuilder.Length, 1);
|
||||||
resultBuilder.Append(resultList[i]);
|
resultBuilder.Append(content[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,7 +159,7 @@ namespace Flow.Launcher.Infrastructure
|
||||||
|
|
||||||
var translation = resultBuilder.ToString();
|
var translation = resultBuilder.ToString();
|
||||||
var result = (translation, map);
|
var result = (translation, map);
|
||||||
|
|
||||||
return _pinyinCache[content] = result;
|
return _pinyinCache[content] = result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -185,8 +188,8 @@ namespace Flow.Launcher.Infrastructure
|
||||||
|
|
||||||
private string ToDoublePinyin(string fullPinyin)
|
private string ToDoublePinyin(string fullPinyin)
|
||||||
{
|
{
|
||||||
return currentDoublePinyinTable.TryGetValue(fullPinyin, out var doublePinyinValue)
|
return currentDoublePinyinTable.TryGetValue(fullPinyin, out var doublePinyinValue)
|
||||||
? doublePinyinValue
|
? doublePinyinValue
|
||||||
: fullPinyin;
|
: fullPinyin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ namespace Flow.Launcher.Infrastructure
|
||||||
public int MapToOriginalIndex(int translatedIndex)
|
public int MapToOriginalIndex(int translatedIndex)
|
||||||
{
|
{
|
||||||
var searchResult = _originalToTranslated.BinarySearch(translatedIndex);
|
var searchResult = _originalToTranslated.BinarySearch(translatedIndex);
|
||||||
return searchResult >= 0 ? searchResult : ~searchResult;
|
return searchResult >= 0 ? searchResult + 1 : ~searchResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EndConstruct()
|
public void EndConstruct()
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.UserSettings
|
namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
public class CustomBrowserViewModel : BaseModel
|
public class CustomBrowserViewModel : BaseModel
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public string DisplayName => Name == "Default" ? Localize.defaultBrowser_default() : Name;
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
public string PrivateArg { get; set; }
|
public string PrivateArg { get; set; }
|
||||||
public bool EnablePrivate { get; set; }
|
public bool EnablePrivate { get; set; }
|
||||||
|
|
@ -26,8 +28,10 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
Editable = Editable
|
Editable = Editable
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnDisplayNameChanged()
|
||||||
|
{
|
||||||
|
OnPropertyChanged(nameof(DisplayName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
using Flow.Launcher.Plugin;
|
using System.Text.Json.Serialization;
|
||||||
|
using Flow.Launcher.Plugin;
|
||||||
|
|
||||||
namespace Flow.Launcher.ViewModel
|
namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
public class CustomExplorerViewModel : BaseModel
|
public class CustomExplorerViewModel : BaseModel
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
|
public string DisplayName => Name == "Explorer" ? Localize.fileManagerExplorer() : Name;
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
public string FileArgument { get; set; } = "\"%d\"";
|
public string FileArgument { get; set; } = "\"%d\"";
|
||||||
public string DirectoryArgument { get; set; } = "\"%d\"";
|
public string DirectoryArgument { get; set; } = "\"%d\"";
|
||||||
|
|
@ -21,5 +24,10 @@ namespace Flow.Launcher.ViewModel
|
||||||
Editable = Editable
|
Editable = Editable
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnDisplayNameChanged()
|
||||||
|
{
|
||||||
|
OnPropertyChanged(nameof(DisplayName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
||||||
using Flow.Launcher.Plugin;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.UserSettings
|
namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
|
|
@ -55,11 +53,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
|
||||||
public string LocalizedDescription => API.GetTranslation(Description);
|
public string LocalizedDescription => PublicApi.Instance.GetTranslation(Description);
|
||||||
|
|
||||||
// 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<IPublicAPI>();
|
|
||||||
|
|
||||||
public BaseBuiltinShortcutModel(string key, string description)
|
public BaseBuiltinShortcutModel(string key, string description)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
public const string PortableFolderName = "UserData";
|
public const string PortableFolderName = "UserData";
|
||||||
public const string DeletionIndicatorFile = ".dead";
|
public const string DeletionIndicatorFile = ".dead";
|
||||||
public static string PortableDataPath = Path.Combine(Constant.ProgramDirectory, PortableFolderName);
|
public static readonly string PortableDataPath = Path.Combine(Constant.ProgramDirectory, PortableFolderName);
|
||||||
public static string RoamingDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher");
|
public static readonly string RoamingDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "FlowLauncher");
|
||||||
public static string DataDirectory()
|
public static string DataDirectory()
|
||||||
{
|
{
|
||||||
if (PortableDataLocationInUse())
|
if (PortableDataLocationInUse())
|
||||||
|
|
@ -19,7 +19,8 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
|
|
||||||
public static bool PortableDataLocationInUse()
|
public static bool PortableDataLocationInUse()
|
||||||
{
|
{
|
||||||
if (Directory.Exists(PortableDataPath) && !File.Exists(DeletionIndicatorFile))
|
if (Directory.Exists(PortableDataPath) &&
|
||||||
|
!File.Exists(Path.Combine(PortableDataPath, DeletionIndicatorFile)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -39,6 +40,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
public const string PythonEnvironmentName = "Python";
|
public const string PythonEnvironmentName = "Python";
|
||||||
public const string NodeEnvironmentName = "Node.js";
|
public const string NodeEnvironmentName = "Node.js";
|
||||||
public const string PluginEnvironments = "Environments";
|
public const string PluginEnvironments = "Environments";
|
||||||
|
public const string PluginDeleteFile = "NeedDelete.txt";
|
||||||
public static readonly string PluginEnvironmentsPath = Path.Combine(DataDirectory(), PluginEnvironments);
|
public static readonly string PluginEnvironmentsPath = Path.Combine(DataDirectory(), PluginEnvironments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
@ -7,9 +7,9 @@ using CommunityToolkit.Mvvm.DependencyInjection;
|
||||||
using Flow.Launcher.Infrastructure.Hotkey;
|
using Flow.Launcher.Infrastructure.Hotkey;
|
||||||
using Flow.Launcher.Infrastructure.Logger;
|
using Flow.Launcher.Infrastructure.Logger;
|
||||||
using Flow.Launcher.Infrastructure.Storage;
|
using Flow.Launcher.Infrastructure.Storage;
|
||||||
|
using Flow.Launcher.Localization.Attributes;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using Flow.Launcher.Plugin.SharedModels;
|
using Flow.Launcher.Plugin.SharedModels;
|
||||||
using Flow.Launcher.ViewModel;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Infrastructure.UserSettings
|
namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
|
|
@ -481,6 +481,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
}
|
}
|
||||||
public bool LeaveCmdOpen { get; set; }
|
public bool LeaveCmdOpen { get; set; }
|
||||||
public bool HideWhenDeactivated { get; set; } = true;
|
public bool HideWhenDeactivated { get; set; } = true;
|
||||||
|
public bool ShowTaskbarWhenInvoked { get; set; } = false;
|
||||||
|
|
||||||
private bool _showAtTopmost = false;
|
private bool _showAtTopmost = false;
|
||||||
public bool ShowAtTopmost
|
public bool ShowAtTopmost
|
||||||
|
|
@ -514,6 +515,21 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
public LastQueryMode LastQueryMode { get; set; } = LastQueryMode.Selected;
|
public LastQueryMode LastQueryMode { get; set; } = LastQueryMode.Selected;
|
||||||
|
|
||||||
|
private HistoryStyle _historyStyle = HistoryStyle.Query;
|
||||||
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
|
public HistoryStyle HistoryStyle
|
||||||
|
{
|
||||||
|
get => _historyStyle;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_historyStyle != value)
|
||||||
|
{
|
||||||
|
_historyStyle = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
public AnimationSpeeds AnimationSpeed { get; set; } = AnimationSpeeds.Medium;
|
public AnimationSpeeds AnimationSpeed { get; set; } = AnimationSpeeds.Medium;
|
||||||
public int CustomAnimationLength { get; set; } = 360;
|
public int CustomAnimationLength { get; set; } = 360;
|
||||||
|
|
@ -696,4 +712,14 @@ namespace Flow.Launcher.Infrastructure.UserSettings
|
||||||
FullPathOpen,
|
FullPathOpen,
|
||||||
Directory
|
Directory
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[EnumLocalize]
|
||||||
|
public enum HistoryStyle
|
||||||
|
{
|
||||||
|
[EnumLocalizeKey(nameof(Localize.queryHistory))]
|
||||||
|
Query,
|
||||||
|
|
||||||
|
[EnumLocalizeKey(nameof(Localize.executedHistory))]
|
||||||
|
LastOpened
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
@ -19,6 +19,7 @@ using Microsoft.Win32.SafeHandles;
|
||||||
using Windows.Win32;
|
using Windows.Win32;
|
||||||
using Windows.Win32.Foundation;
|
using Windows.Win32.Foundation;
|
||||||
using Windows.Win32.Graphics.Dwm;
|
using Windows.Win32.Graphics.Dwm;
|
||||||
|
using Windows.Win32.System.Power;
|
||||||
using Windows.Win32.System.Threading;
|
using Windows.Win32.System.Threading;
|
||||||
using Windows.Win32.UI.Input.KeyboardAndMouse;
|
using Windows.Win32.UI.Input.KeyboardAndMouse;
|
||||||
using Windows.Win32.UI.Shell.Common;
|
using Windows.Win32.UI.Shell.Common;
|
||||||
|
|
@ -338,9 +339,6 @@ namespace Flow.Launcher.Infrastructure
|
||||||
public const int SC_MAXIMIZE = (int)PInvoke.SC_MAXIMIZE;
|
public const int SC_MAXIMIZE = (int)PInvoke.SC_MAXIMIZE;
|
||||||
public const int SC_MINIMIZE = (int)PInvoke.SC_MINIMIZE;
|
public const int SC_MINIMIZE = (int)PInvoke.SC_MINIMIZE;
|
||||||
|
|
||||||
public const int WM_POWERBROADCAST = (int)PInvoke.WM_POWERBROADCAST;
|
|
||||||
public const int PBT_APMRESUMEAUTOMATIC = (int)PInvoke.PBT_APMRESUMEAUTOMATIC;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Window Handle
|
#region Window Handle
|
||||||
|
|
@ -904,5 +902,146 @@ namespace Flow.Launcher.Infrastructure
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#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
|
||||||
|
|
||||||
|
#region Sleep Mode Listener
|
||||||
|
|
||||||
|
private static Action _func;
|
||||||
|
private static PDEVICE_NOTIFY_CALLBACK_ROUTINE _callback = null;
|
||||||
|
private static DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS _recipient;
|
||||||
|
private static SafeHandle _recipientHandle;
|
||||||
|
private static HPOWERNOTIFY _handle = HPOWERNOTIFY.Null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Registers a listener for sleep mode events.
|
||||||
|
/// Inspired from: https://github.com/XKaguya/LenovoLegionToolkit
|
||||||
|
/// https://blog.csdn.net/mochounv/article/details/114668594
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="func"></param>
|
||||||
|
/// <exception cref="Win32Exception"></exception>
|
||||||
|
public static unsafe void RegisterSleepModeListener(Action func)
|
||||||
|
{
|
||||||
|
if (_callback != null)
|
||||||
|
{
|
||||||
|
// Only register if not already registered
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_func = func;
|
||||||
|
_callback = new PDEVICE_NOTIFY_CALLBACK_ROUTINE(DeviceNotifyCallback);
|
||||||
|
_recipient = new DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS()
|
||||||
|
{
|
||||||
|
Callback = _callback,
|
||||||
|
Context = null
|
||||||
|
};
|
||||||
|
|
||||||
|
_recipientHandle = new StructSafeHandle<DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS>(_recipient);
|
||||||
|
_handle = PInvoke.PowerRegisterSuspendResumeNotification(
|
||||||
|
REGISTER_NOTIFICATION_FLAGS.DEVICE_NOTIFY_CALLBACK,
|
||||||
|
_recipientHandle,
|
||||||
|
out var handle) == WIN32_ERROR.ERROR_SUCCESS ?
|
||||||
|
new HPOWERNOTIFY(new IntPtr(handle)) :
|
||||||
|
HPOWERNOTIFY.Null;
|
||||||
|
if (_handle.IsNull)
|
||||||
|
{
|
||||||
|
throw new Win32Exception("Error registering for power notifications: " + Marshal.GetLastWin32Error());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unregisters the sleep mode listener.
|
||||||
|
/// </summary>
|
||||||
|
public static void UnregisterSleepModeListener()
|
||||||
|
{
|
||||||
|
if (!_handle.IsNull)
|
||||||
|
{
|
||||||
|
PInvoke.PowerUnregisterSuspendResumeNotification(_handle);
|
||||||
|
_handle = HPOWERNOTIFY.Null;
|
||||||
|
_func = null;
|
||||||
|
_callback = null;
|
||||||
|
_recipientHandle = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static unsafe uint DeviceNotifyCallback(void* context, uint type, void* setting)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case PInvoke.PBT_APMRESUMEAUTOMATIC:
|
||||||
|
// Operation is resuming automatically from a low-power state.This message is sent every time the system resumes
|
||||||
|
_func?.Invoke();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PInvoke.PBT_APMRESUMESUSPEND:
|
||||||
|
// Operation is resuming from a low-power state.This message is sent after PBT_APMRESUMEAUTOMATIC if the resume is triggered by user input, such as pressing a key
|
||||||
|
_func?.Invoke();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private sealed class StructSafeHandle<T> : SafeHandle where T : struct
|
||||||
|
{
|
||||||
|
private readonly nint _ptr = nint.Zero;
|
||||||
|
|
||||||
|
public StructSafeHandle(T recipient) : base(nint.Zero, true)
|
||||||
|
{
|
||||||
|
var pRecipient = Marshal.AllocHGlobal(Marshal.SizeOf<T>());
|
||||||
|
Marshal.StructureToPtr(recipient, pRecipient, false);
|
||||||
|
SetHandle(pRecipient);
|
||||||
|
_ptr = pRecipient;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool IsInvalid => handle == nint.Zero;
|
||||||
|
|
||||||
|
protected override bool ReleaseHandle()
|
||||||
|
{
|
||||||
|
Marshal.FreeHGlobal(_ptr);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Taskbar
|
||||||
|
|
||||||
|
public static unsafe void ShowTaskbar()
|
||||||
|
{
|
||||||
|
// Find the taskbar window
|
||||||
|
var taskbarHwnd = PInvoke.FindWindowEx(HWND.Null, HWND.Null, "Shell_TrayWnd", null);
|
||||||
|
if (taskbarHwnd == HWND.Null) return;
|
||||||
|
|
||||||
|
// Magic from https://github.com/Oliviaophia/SmartTaskbar
|
||||||
|
const uint TrayBarFlag = 0x05D1;
|
||||||
|
var mon = PInvoke.MonitorFromWindow(taskbarHwnd, Windows.Win32.Graphics.Gdi.MONITOR_FROM_FLAGS.MONITOR_DEFAULTTONEAREST);
|
||||||
|
PInvoke.PostMessage(taskbarHwnd, TrayBarFlag, new WPARAM(1), new LPARAM((nint)mon.Value));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void HideTaskbar()
|
||||||
|
{
|
||||||
|
// Find the taskbar window
|
||||||
|
var taskbarHwnd = PInvoke.FindWindowEx(HWND.Null, HWND.Null, "Shell_TrayWnd", null);
|
||||||
|
if (taskbarHwnd == HWND.Null) return;
|
||||||
|
|
||||||
|
// Magic from https://github.com/Oliviaophia/SmartTaskbar
|
||||||
|
const uint TrayBarFlag = 0x05D1;
|
||||||
|
PInvoke.PostMessage(taskbarHwnd, TrayBarFlag, new WPARAM(0), IntPtr.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,23 @@
|
||||||
"resolved": "8.4.0",
|
"resolved": "8.4.0",
|
||||||
"contentHash": "tqVU8yc/ADO9oiTRyTnwhFN68hCwvkliMierptWOudIAvWY1mWCh5VFh+guwHJmpMwfg0J0rY+yyd5Oy7ty9Uw=="
|
"contentHash": "tqVU8yc/ADO9oiTRyTnwhFN68hCwvkliMierptWOudIAvWY1mWCh5VFh+guwHJmpMwfg0J0rY+yyd5Oy7ty9Uw=="
|
||||||
},
|
},
|
||||||
|
"Flow.Launcher.Localization": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[0.0.6, )",
|
||||||
|
"resolved": "0.0.6",
|
||||||
|
"contentHash": "WNI/TLGPDr3XdOW8gaALN0Uyz9h+bzqOaNZev2nHEuA3HW9o7XuqaM6C0PqNi96mNgxiypwWpVazBNzaylJ2Aw=="
|
||||||
|
},
|
||||||
"Fody": {
|
"Fody": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[6.9.2, )",
|
"requested": "[6.9.3, )",
|
||||||
"resolved": "6.9.2",
|
"resolved": "6.9.3",
|
||||||
"contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
|
"contentHash": "1CUGgFdyECDKgi5HaUBhdv6k+VG9Iy4OCforGfHyar3xQXAJypZkzymgKtWj/4SPd6nSG0Qi7NH71qHrDSZLaA=="
|
||||||
|
},
|
||||||
|
"ini-parser": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[2.5.2, )",
|
||||||
|
"resolved": "2.5.2",
|
||||||
|
"contentHash": "hp3gKmC/14+6eKLgv7Jd1Z7OV86lO+tNfOXr/stQbwmRhdQuXVSvrRAuAe7G5+lwhkov0XkqZ8/bn1PYWMx6eg=="
|
||||||
},
|
},
|
||||||
"InputSimulator": {
|
"InputSimulator": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|
@ -58,9 +70,9 @@
|
||||||
},
|
},
|
||||||
"Microsoft.Windows.CsWin32": {
|
"Microsoft.Windows.CsWin32": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.3.183, )",
|
"requested": "[0.3.205, )",
|
||||||
"resolved": "0.3.183",
|
"resolved": "0.3.205",
|
||||||
"contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
|
"contentHash": "U5wGAnyKd7/I2YMd43nogm81VMtjiKzZ9dsLMVI4eAB7jtv5IEj0gprj0q/F3iRmAIaGv5omOf8iSYx2+nE6BQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
||||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
|
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
|
||||||
|
|
@ -78,17 +90,17 @@
|
||||||
},
|
},
|
||||||
"NLog": {
|
"NLog": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[6.0.1, )",
|
"requested": "[6.0.4, )",
|
||||||
"resolved": "6.0.1",
|
"resolved": "6.0.4",
|
||||||
"contentHash": "qDWiqy8/xdpZKtHna/645KbalwP86N2NFJEzfqhcv+Si4V2iNaEfR/dCneuF/4+Dcwl3f7jHMXj3ndWYftV3Ug=="
|
"contentHash": "Xr+lIk1ZlTTFXEqnxQVLxrDqZlt2tm5X+/AhJbaY2emb/dVtGDiU5QuEtj3gHtwV/SWlP/rJ922I/BPuOJXlRw=="
|
||||||
},
|
},
|
||||||
"NLog.OutputDebugString": {
|
"NLog.OutputDebugString": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[6.0.1, )",
|
"requested": "[6.0.4, )",
|
||||||
"resolved": "6.0.1",
|
"resolved": "6.0.4",
|
||||||
"contentHash": "wwJCQLaHVzuRf8TsXB+EEdrzVvE3dnzCSMQMDgwkw3AXp8VSp3JSVF/Q/H0oEqggKgKhPs13hh3a7svyQr4s3A==",
|
"contentHash": "TOP2Ap9BbE98B/l/TglnguowOD0rXo8B/20xAgvj9shO/kf6IJ5M4QMhVxq72mrneJ/ANhHY7Jcd+xJbzuI5PA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"NLog": "6.0.1"
|
"NLog": "6.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"PropertyChanged.Fody": {
|
"PropertyChanged.Fody": {
|
||||||
|
|
@ -102,9 +114,9 @@
|
||||||
},
|
},
|
||||||
"SharpVectors.Wpf": {
|
"SharpVectors.Wpf": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[1.8.4.2, )",
|
"requested": "[1.8.5, )",
|
||||||
"resolved": "1.8.4.2",
|
"resolved": "1.8.5",
|
||||||
"contentHash": "PNxLkMBJnV8A+6yH9OqOlhLJegvWP/dvh0rAJp2l0kcrR+rB4R2tQ9vhUqka+UilH4atN8T6zvjDOizVyfz2Ng=="
|
"contentHash": "WURdBDq5AE8RjKV9pFS7lNkJe81gxja9SaMGE4URq9GJUZ6M+5DGUL0Lm3B0iYW2/Meyowaz4ffGsyW+RBSTtg=="
|
||||||
},
|
},
|
||||||
"System.Drawing.Common": {
|
"System.Drawing.Common": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
|
|
@ -123,8 +135,8 @@
|
||||||
},
|
},
|
||||||
"JetBrains.Annotations": {
|
"JetBrains.Annotations": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "2024.3.0",
|
"resolved": "2025.2.2",
|
||||||
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
"contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
|
||||||
},
|
},
|
||||||
"MemoryPack.Core": {
|
"MemoryPack.Core": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
|
|
@ -190,7 +202,7 @@
|
||||||
"flow.launcher.plugin": {
|
"flow.launcher.plugin": {
|
||||||
"type": "Project",
|
"type": "Project",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"JetBrains.Annotations": "[2024.3.0, )"
|
"JetBrains.Annotations": "[2025.2.2, )"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net9.0-windows</TargetFramework>
|
<TargetFramework>net9.0-windows</TargetFramework>
|
||||||
|
|
@ -15,10 +15,10 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>5.0.0</Version>
|
<Version>5.2.0</Version>
|
||||||
<PackageVersion>5.0.0</PackageVersion>
|
<PackageVersion>5.2.0</PackageVersion>
|
||||||
<AssemblyVersion>5.0.0</AssemblyVersion>
|
<AssemblyVersion>5.2.0</AssemblyVersion>
|
||||||
<FileVersion>5.0.0</FileVersion>
|
<FileVersion>5.2.0</FileVersion>
|
||||||
<PackageId>Flow.Launcher.Plugin</PackageId>
|
<PackageId>Flow.Launcher.Plugin</PackageId>
|
||||||
<Authors>Flow-Launcher</Authors>
|
<Authors>Flow-Launcher</Authors>
|
||||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
|
|
@ -68,13 +68,13 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Fody" Version="6.9.2">
|
<PackageReference Include="Fody" Version="6.9.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="10.0.103" PrivateAssets="All" />
|
||||||
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" />
|
<PackageReference Include="JetBrains.Annotations" Version="2025.2.2" />
|
||||||
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.183">
|
<PackageReference Include="Microsoft.Windows.CsWin32" Version="0.3.269">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
@ -173,9 +173,21 @@ namespace Flow.Launcher.Plugin
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get all loaded plugins
|
/// Get all loaded plugins
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Will also return any plugins not fully initialized yet
|
||||||
|
/// </remarks>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
List<PluginPair> GetAllPlugins();
|
List<PluginPair> GetAllPlugins();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get all initialized plugins
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="includeFailed">
|
||||||
|
/// Whether to include plugins that failed to initialize
|
||||||
|
/// </param>
|
||||||
|
/// <returns></returns>
|
||||||
|
List<PluginPair> GetAllInitializedPlugins(bool includeFailed);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers a callback function for global keyboard events.
|
/// Registers a callback function for global keyboard events.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,11 @@ namespace Flow.Launcher.Plugin
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public int QueryCount { get; set; }
|
public int QueryCount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The minimum Flow Launcher version required for this plugin. Default is "".
|
||||||
|
/// </summary>
|
||||||
|
public string MinimumAppVersion { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The path to the plugin settings directory which is not validated.
|
/// The path to the plugin settings directory which is not validated.
|
||||||
/// It is used to store plugin settings files and data files.
|
/// It is used to store plugin settings files and data files.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Text.Json.Serialization;
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Flow.Launcher.Plugin
|
namespace Flow.Launcher.Plugin
|
||||||
{
|
{
|
||||||
|
|
@ -8,11 +9,29 @@ namespace Flow.Launcher.Plugin
|
||||||
public class Query
|
public class Query
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw query, this includes action keyword if it has.
|
/// Original query, exactly how the user has typed into the search box.
|
||||||
/// It has handled buildin custom query shortkeys and build-in shortcuts, and it trims the whitespace.
|
/// We don't recommend using this property directly. You should always use Search property.
|
||||||
/// We didn't recommend use this property directly. You should always use Search property.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string RawQuery { get; internal init; }
|
public string OriginalQuery { get; internal init; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw query, this includes action keyword if it has.
|
||||||
|
/// It has handled built-in custom query hotkeys and built-in shortcuts, and it trims the whitespace.
|
||||||
|
/// We don't recommend using this property directly. You should always use Search property.
|
||||||
|
/// </summary>
|
||||||
|
[Obsolete("RawQuery is renamed to TrimmedQuery. This property will be removed. Update the code to use TrimmedQuery instead.")]
|
||||||
|
public string RawQuery {
|
||||||
|
get => TrimmedQuery;
|
||||||
|
internal init { TrimmedQuery = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Original query but with trimmed whitespace. Includes action keyword.
|
||||||
|
/// It has handled built-in custom query hotkeys and build-in shortcuts.
|
||||||
|
/// If you need the exact original query from the search box, use OriginalQuery property instead.
|
||||||
|
/// We don't recommend using this property directly. You should always use Search property.
|
||||||
|
/// </summary>
|
||||||
|
public string TrimmedQuery { get; internal init; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determines whether the query was forced to execute again.
|
/// Determines whether the query was forced to execute again.
|
||||||
|
|
@ -28,7 +47,7 @@ namespace Flow.Launcher.Plugin
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Search part of a query.
|
/// Search part of a query.
|
||||||
/// This will not include action keyword if exclusive plugin gets it, otherwise it should be same as RawQuery.
|
/// This will not include action keyword if exclusive plugin gets it, otherwise it should be same as TrimmedQuery.
|
||||||
/// Since we allow user to switch a exclusive plugin to generic plugin,
|
/// Since we allow user to switch a exclusive plugin to generic plugin,
|
||||||
/// so this property will always give you the "real" query part of the query
|
/// so this property will always give you the "real" query part of the query
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -103,6 +122,6 @@ namespace Flow.Launcher.Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override string ToString() => RawQuery;
|
public override string ToString() => TrimmedQuery;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,13 @@ using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Flow.Launcher.Plugin
|
namespace Flow.Launcher.Plugin
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Describes a result of a <see cref="Query"/> executed by a plugin
|
/// Describes a result of a <see cref="Query"/> executed by a plugin.
|
||||||
|
/// This or its child classes is serializable.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Result
|
public class Result
|
||||||
{
|
{
|
||||||
|
|
@ -21,6 +23,8 @@ namespace Flow.Launcher.Plugin
|
||||||
|
|
||||||
private string _icoPath;
|
private string _icoPath;
|
||||||
|
|
||||||
|
private string _icoPathAbsolute;
|
||||||
|
|
||||||
private string _copyText = string.Empty;
|
private string _copyText = string.Empty;
|
||||||
|
|
||||||
private string _badgeIcoPath;
|
private string _badgeIcoPath;
|
||||||
|
|
@ -64,15 +68,27 @@ namespace Flow.Launcher.Plugin
|
||||||
public string AutoCompleteText { get; set; }
|
public string AutoCompleteText { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The image to be displayed for the result.
|
/// Path or URI to the icon image for this result.
|
||||||
|
/// Updates <see cref="IcoPathAbsolute"/> appropriately when set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>Can be a local file path or a URL.</value>
|
/// <remarks>
|
||||||
/// <remarks>GlyphInfo is prioritized if not null</remarks>
|
/// Preferred usage: provide a path relative to the plugin directory (for example: "Images\icon.png").
|
||||||
|
/// Because <see cref="IcoPath"/> is serialized, using relative paths keeps the icon reference portable
|
||||||
|
/// when Flow is moved.
|
||||||
|
///
|
||||||
|
/// Accepted formats:
|
||||||
|
/// - Relative file paths (resolved against <see cref="PluginDirectory"/> into <see cref="IcoPathAbsolute"/>)
|
||||||
|
/// - Absolute file paths (left as-is)
|
||||||
|
/// - HTTP/HTTPS URLs (left as-is)
|
||||||
|
/// - Data URIs (left as-is)
|
||||||
|
/// </remarks>
|
||||||
public string IcoPath
|
public string IcoPath
|
||||||
{
|
{
|
||||||
get => _icoPath;
|
get => _icoPath;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
_icoPath = value;
|
||||||
|
|
||||||
// As a standard this property will handle prepping and converting to absolute local path for icon image processing
|
// As a standard this property will handle prepping and converting to absolute local path for icon image processing
|
||||||
if (!string.IsNullOrEmpty(value)
|
if (!string.IsNullOrEmpty(value)
|
||||||
&& !string.IsNullOrEmpty(PluginDirectory)
|
&& !string.IsNullOrEmpty(PluginDirectory)
|
||||||
|
|
@ -81,15 +97,23 @@ namespace Flow.Launcher.Plugin
|
||||||
&& !value.StartsWith("https://", StringComparison.OrdinalIgnoreCase)
|
&& !value.StartsWith("https://", StringComparison.OrdinalIgnoreCase)
|
||||||
&& !value.StartsWith("data:image", StringComparison.OrdinalIgnoreCase))
|
&& !value.StartsWith("data:image", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
_icoPath = Path.Combine(PluginDirectory, value);
|
_icoPathAbsolute = Path.Combine(PluginDirectory, value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_icoPath = value;
|
_icoPathAbsolute = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Absolute path or URI which is used to load and display the result icon for Flow.
|
||||||
|
/// This is populated by the <see cref="IcoPath"/> setter.
|
||||||
|
/// If a relative path was provided to <see cref="IcoPath"/>, this property will contain the resolved
|
||||||
|
/// absolute local path after combining with <see cref="PluginDirectory"/>.
|
||||||
|
/// </summary>
|
||||||
|
public string IcoPathAbsolute => _icoPathAbsolute;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The image to be displayed for the badge of the result.
|
/// The image to be displayed for the badge of the result.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -131,17 +155,34 @@ namespace Flow.Launcher.Plugin
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delegate to load an icon for this result.
|
/// Delegate to load an icon for this result.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public IconDelegate Icon = null;
|
public IconDelegate Icon = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delegate to load an icon for the badge of this result.
|
/// Delegate to load an icon for the badge of this result.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public IconDelegate BadgeIcon = null;
|
public IconDelegate BadgeIcon = null;
|
||||||
|
|
||||||
|
private GlyphInfo _glyph;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Information for Glyph Icon (Prioritized than IcoPath/Icon if user enable Glyph Icons)
|
/// Information for Glyph Icon (Prioritized than IcoPath/Icon if user enable Glyph Icons)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GlyphInfo Glyph { get; init; }
|
public GlyphInfo Glyph
|
||||||
|
{
|
||||||
|
get => _glyph;
|
||||||
|
init => _glyph = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the Glyph Icon after initialization
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="glyph"></param>
|
||||||
|
public void SetGlyph(GlyphInfo glyph)
|
||||||
|
{
|
||||||
|
_glyph = glyph;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An action to take in the form of a function call when the result has been selected.
|
/// An action to take in the form of a function call when the result has been selected.
|
||||||
|
|
@ -151,6 +192,7 @@ namespace Flow.Launcher.Plugin
|
||||||
/// Its result determines what happens to Flow Launcher's query form:
|
/// Its result determines what happens to Flow Launcher's query form:
|
||||||
/// when true, the form will be hidden; when false, it will stay in focus.
|
/// when true, the form will be hidden; when false, it will stay in focus.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
[JsonIgnore]
|
||||||
public Func<ActionContext, bool> Action { get; set; }
|
public Func<ActionContext, bool> Action { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -161,6 +203,7 @@ namespace Flow.Launcher.Plugin
|
||||||
/// Its result determines what happens to Flow Launcher's query form:
|
/// Its result determines what happens to Flow Launcher's query form:
|
||||||
/// when true, the form will be hidden; when false, it will stay in focus.
|
/// when true, the form will be hidden; when false, it will stay in focus.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
[JsonIgnore]
|
||||||
public Func<ActionContext, ValueTask<bool>> AsyncAction { get; set; }
|
public Func<ActionContext, ValueTask<bool>> AsyncAction { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -203,11 +246,13 @@ namespace Flow.Launcher.Plugin
|
||||||
/// <example>
|
/// <example>
|
||||||
/// As external information for ContextMenu
|
/// As external information for ContextMenu
|
||||||
/// </example>
|
/// </example>
|
||||||
|
[JsonIgnore]
|
||||||
public object ContextData { get; set; }
|
public object ContextData { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Plugin ID that generated this result
|
/// Plugin ID that generated this result
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonInclude]
|
||||||
public string PluginID { get; internal set; }
|
public string PluginID { get; internal set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -223,6 +268,7 @@ namespace Flow.Launcher.Plugin
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Customized Preview Panel
|
/// Customized Preview Panel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public Lazy<UserControl> PreviewPanel { get; set; }
|
public Lazy<UserControl> PreviewPanel { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -352,6 +398,7 @@ namespace Flow.Launcher.Plugin
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delegate to get the preview panel's image
|
/// Delegate to get the preview panel's image
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public IconDelegate PreviewDelegate { get; set; } = null;
|
public IconDelegate PreviewDelegate { get; set; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,119 @@ namespace Flow.Launcher.Plugin.SharedCommands
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Attempts to delete a directory robustly with retry logic for locked files.
|
||||||
|
/// This method tries to delete files individually with retries, then removes empty directories.
|
||||||
|
/// Returns true if the directory was completely deleted, false if some files/folders remain.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">The directory path to delete</param>
|
||||||
|
/// <param name="maxRetries">Maximum number of retry attempts for locked files (default: 3)</param>
|
||||||
|
/// <param name="retryDelayMs">Delay in milliseconds between retries (default: 100ms)</param>
|
||||||
|
/// <returns>True if directory was fully deleted, false if some items remain</returns>
|
||||||
|
public static bool TryDeleteDirectoryRobust(string path, int maxRetries = 3, int retryDelayMs = 100)
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(path))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
bool fullyDeleted = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// First, try to delete all files in the directory tree
|
||||||
|
var files = Directory.GetFiles(path, "*", SearchOption.AllDirectories);
|
||||||
|
foreach (var file in files)
|
||||||
|
{
|
||||||
|
bool fileDeleted = false;
|
||||||
|
for (int attempt = 0; attempt <= maxRetries; attempt++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Remove read-only attribute if present
|
||||||
|
var fileInfo = new FileInfo(file);
|
||||||
|
if (fileInfo.Exists && fileInfo.IsReadOnly)
|
||||||
|
{
|
||||||
|
fileInfo.IsReadOnly = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(file);
|
||||||
|
fileDeleted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
catch (UnauthorizedAccessException)
|
||||||
|
{
|
||||||
|
// File is in use or access denied, wait and retry
|
||||||
|
if (attempt < maxRetries)
|
||||||
|
{
|
||||||
|
System.Threading.Thread.Sleep(retryDelayMs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException)
|
||||||
|
{
|
||||||
|
// File is in use, wait and retry
|
||||||
|
if (attempt < maxRetries)
|
||||||
|
{
|
||||||
|
System.Threading.Thread.Sleep(retryDelayMs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Other exceptions, don't retry
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fileDeleted)
|
||||||
|
{
|
||||||
|
fullyDeleted = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then, try to delete all empty directories (from deepest to shallowest)
|
||||||
|
var directories = Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
|
||||||
|
.OrderByDescending(d => d.Length) // Delete deeper directories first
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
foreach (var directory in directories)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Directory.Exists(directory) && !Directory.EnumerateFileSystemEntries(directory).Any())
|
||||||
|
{
|
||||||
|
Directory.Delete(directory, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// If we can't delete an empty directory, mark as not fully deleted
|
||||||
|
fullyDeleted = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finally, try to delete the root directory itself
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Directory.Exists(path) && !Directory.EnumerateFileSystemEntries(path).Any())
|
||||||
|
{
|
||||||
|
Directory.Delete(path, false);
|
||||||
|
}
|
||||||
|
else if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
fullyDeleted = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
fullyDeleted = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
fullyDeleted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fullyDeleted;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if a directory exists
|
/// Checks if a directory exists
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -150,6 +263,16 @@ namespace Flow.Launcher.Plugin.SharedCommands
|
||||||
return File.Exists(filePath);
|
return File.Exists(filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if a file or directory exists
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool FileOrLocationExists(this string path)
|
||||||
|
{
|
||||||
|
return LocationExists(path) || FileExists(path);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Open a directory window (using the OS's default handler, usually explorer)
|
/// Open a directory window (using the OS's default handler, usually explorer)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -4,35 +4,35 @@
|
||||||
"net9.0-windows7.0": {
|
"net9.0-windows7.0": {
|
||||||
"Fody": {
|
"Fody": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[6.9.2, )",
|
"requested": "[6.9.3, )",
|
||||||
"resolved": "6.9.2",
|
"resolved": "6.9.3",
|
||||||
"contentHash": "YBHobPGogb0vYhGYIxn/ndWqTjNWZveDi5jdjrcshL2vjwU3gQGyDeI7vGgye+2rAM5fGRvlLgNWLW3DpviS/w=="
|
"contentHash": "1CUGgFdyECDKgi5HaUBhdv6k+VG9Iy4OCforGfHyar3xQXAJypZkzymgKtWj/4SPd6nSG0Qi7NH71qHrDSZLaA=="
|
||||||
},
|
},
|
||||||
"JetBrains.Annotations": {
|
"JetBrains.Annotations": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[2024.3.0, )",
|
"requested": "[2025.2.2, )",
|
||||||
"resolved": "2024.3.0",
|
"resolved": "2025.2.2",
|
||||||
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
"contentHash": "0X56ZRizuHdrnPpgXjWV7f2tQO1FlQg5O1967OGKnI/4ZRNOK642J8L7brM1nYvrxTTU5TP1yRyXLRLaXLPQ8A=="
|
||||||
},
|
},
|
||||||
"Microsoft.SourceLink.GitHub": {
|
"Microsoft.SourceLink.GitHub": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[8.0.0, )",
|
"requested": "[10.0.103, )",
|
||||||
"resolved": "8.0.0",
|
"resolved": "10.0.103",
|
||||||
"contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==",
|
"contentHash": "qZk7r40ftpZY+/sO019sgWAWfNqC2CLSspDdAxNYCJU/bCi/8jVwvOMjzb/d5gjCRNzQ4OCYgBfhdpQyVwLTyw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Build.Tasks.Git": "8.0.0",
|
"Microsoft.Build.Tasks.Git": "10.0.103",
|
||||||
"Microsoft.SourceLink.Common": "8.0.0"
|
"Microsoft.SourceLink.Common": "10.0.103"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Microsoft.Windows.CsWin32": {
|
"Microsoft.Windows.CsWin32": {
|
||||||
"type": "Direct",
|
"type": "Direct",
|
||||||
"requested": "[0.3.183, )",
|
"requested": "[0.3.269, )",
|
||||||
"resolved": "0.3.183",
|
"resolved": "0.3.269",
|
||||||
"contentHash": "Ze3aE2y7xgzKxEWtNb4SH0CExXpCHr3sbmwnvMiWMzJhWDX/G4Rs5wgg2UNs3VN+qVHh/DkDWLCPaVQv/b//Nw==",
|
"contentHash": "O4GVJ0ymxcoFRGS07VcoEClj7A9PIciHIjWDrPymzonhYlOfM7V0ZqGBUK19cUH3BPca9MfSOH0KLK/9JzQ8+Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
"Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha",
|
||||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview",
|
"Microsoft.Windows.SDK.Win32Metadata": "69.0.7-preview",
|
||||||
"Microsoft.Windows.WDK.Win32Metadata": "0.12.8-experimental"
|
"Microsoft.Windows.WDK.Win32Metadata": "0.13.25-experimental"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"PropertyChanged.Fody": {
|
"PropertyChanged.Fody": {
|
||||||
|
|
@ -46,13 +46,13 @@
|
||||||
},
|
},
|
||||||
"Microsoft.Build.Tasks.Git": {
|
"Microsoft.Build.Tasks.Git": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "8.0.0",
|
"resolved": "10.0.103",
|
||||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
"contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag=="
|
||||||
},
|
},
|
||||||
"Microsoft.SourceLink.Common": {
|
"Microsoft.SourceLink.Common": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "8.0.0",
|
"resolved": "10.0.103",
|
||||||
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
|
"contentHash": "cMtGW5/r0ck72Jg2QwZcNTX59z+iB/B1kW84VMa/eX8L19DhHIuIcQjfK0pgLLBxd60Jl0Bj9GUolcM0MnJnZA=="
|
||||||
},
|
},
|
||||||
"Microsoft.Windows.SDK.Win32Docs": {
|
"Microsoft.Windows.SDK.Win32Docs": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
|
|
@ -61,15 +61,15 @@
|
||||||
},
|
},
|
||||||
"Microsoft.Windows.SDK.Win32Metadata": {
|
"Microsoft.Windows.SDK.Win32Metadata": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "61.0.15-preview",
|
"resolved": "69.0.7-preview",
|
||||||
"contentHash": "cysex3dazKtCPALCluC2XX3f5Aedy9H2pw5jb+TW5uas2rkem1Z7FRnbUrg2vKx0pk0Qz+4EJNr37HdYTEcvEQ=="
|
"contentHash": "RJoNjQJVCIDNLPbvYuaygCFknTyAxOUE45of1voj0jjOgJa9MB2m1/G8L8F3IYc+2EFG5aqa/9y8PEx7Tk2tLQ=="
|
||||||
},
|
},
|
||||||
"Microsoft.Windows.WDK.Win32Metadata": {
|
"Microsoft.Windows.WDK.Win32Metadata": {
|
||||||
"type": "Transitive",
|
"type": "Transitive",
|
||||||
"resolved": "0.12.8-experimental",
|
"resolved": "0.13.25-experimental",
|
||||||
"contentHash": "3n8R44/Z96Ly+ty4eYVJfESqbzvpw96lRLs3zOzyDmr1x1Kw7FNn5CyE416q+bZQV3e1HRuMUvyegMeRE/WedA==",
|
"contentHash": "IM50tb/+UIwBr9FMr6ZKcZjCMW+Axo6NjGqKxgjUfyCY8dRnYUfrJEXxAaXoWtYP4X8EmASmC1Jtwh4XucseZg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Windows.SDK.Win32Metadata": "61.0.15-preview"
|
"Microsoft.Windows.SDK.Win32Metadata": "63.0.31-preview"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using Flow.Launcher.Plugin.SharedCommands;
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NUnit.Framework.Legacy;
|
using NUnit.Framework.Legacy;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Flow.Launcher.Test
|
namespace Flow.Launcher.Test
|
||||||
{
|
{
|
||||||
|
|
@ -50,5 +51,89 @@ namespace Flow.Launcher.Test
|
||||||
{
|
{
|
||||||
ClassicAssert.AreEqual(expectedResult, FilesFolders.PathContains(parentPath, path, allowEqual: expectedResult));
|
ClassicAssert.AreEqual(expectedResult, FilesFolders.PathContains(parentPath, path, allowEqual: expectedResult));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TryDeleteDirectoryRobust_WhenDirectoryDoesNotExist_ReturnsTrue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string nonExistentPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
|
||||||
|
|
||||||
|
// Act
|
||||||
|
bool result = FilesFolders.TryDeleteDirectoryRobust(nonExistentPath);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
ClassicAssert.IsTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TryDeleteDirectoryRobust_WhenDirectoryIsEmpty_DeletesSuccessfully()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
|
||||||
|
Directory.CreateDirectory(tempDir);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
bool result = FilesFolders.TryDeleteDirectoryRobust(tempDir);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
ClassicAssert.IsTrue(result);
|
||||||
|
ClassicAssert.IsFalse(Directory.Exists(tempDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TryDeleteDirectoryRobust_WhenDirectoryHasFiles_DeletesSuccessfully()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
|
||||||
|
Directory.CreateDirectory(tempDir);
|
||||||
|
File.WriteAllText(Path.Combine(tempDir, "test.txt"), "test content");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
bool result = FilesFolders.TryDeleteDirectoryRobust(tempDir);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
ClassicAssert.IsTrue(result);
|
||||||
|
ClassicAssert.IsFalse(Directory.Exists(tempDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TryDeleteDirectoryRobust_WhenDirectoryHasNestedStructure_DeletesSuccessfully()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
|
||||||
|
Directory.CreateDirectory(tempDir);
|
||||||
|
string subDir1 = Path.Combine(tempDir, "SubDir1");
|
||||||
|
string subDir2 = Path.Combine(tempDir, "SubDir2");
|
||||||
|
Directory.CreateDirectory(subDir1);
|
||||||
|
Directory.CreateDirectory(subDir2);
|
||||||
|
File.WriteAllText(Path.Combine(subDir1, "file1.txt"), "content1");
|
||||||
|
File.WriteAllText(Path.Combine(subDir2, "file2.txt"), "content2");
|
||||||
|
File.WriteAllText(Path.Combine(tempDir, "root.txt"), "root content");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
bool result = FilesFolders.TryDeleteDirectoryRobust(tempDir);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
ClassicAssert.IsTrue(result);
|
||||||
|
ClassicAssert.IsFalse(Directory.Exists(tempDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TryDeleteDirectoryRobust_WhenFileIsReadOnly_RemovesAttributeAndDeletes()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
|
||||||
|
Directory.CreateDirectory(tempDir);
|
||||||
|
string filePath = Path.Combine(tempDir, "readonly.txt");
|
||||||
|
File.WriteAllText(filePath, "readonly content");
|
||||||
|
File.SetAttributes(filePath, FileAttributes.ReadOnly);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
bool result = FilesFolders.TryDeleteDirectoryRobust(tempDir);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
ClassicAssert.IsTrue(result);
|
||||||
|
ClassicAssert.IsFalse(Directory.Exists(tempDir));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Calculator\Flow.Launcher.Plugin.Calculator.csproj" />
|
||||||
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Explorer\Flow.Launcher.Plugin.Explorer.csproj" />
|
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Explorer\Flow.Launcher.Plugin.Explorer.csproj" />
|
||||||
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Program\Flow.Launcher.Plugin.Program.csproj" />
|
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Program\Flow.Launcher.Plugin.Program.csproj" />
|
||||||
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Url\Flow.Launcher.Plugin.Url.csproj" />
|
<ProjectReference Include="..\Plugins\Flow.Launcher.Plugin.Url\Flow.Launcher.Plugin.Url.csproj" />
|
||||||
|
|
@ -49,8 +50,8 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Moq" Version="4.20.72" />
|
<PackageReference Include="Moq" Version="4.20.72" />
|
||||||
<PackageReference Include="nunit" Version="4.3.2" />
|
<PackageReference Include="nunit" Version="4.4.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0">
|
<PackageReference Include="NUnit3TestAdapter" Version="5.1.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
||||||
134
Flow.Launcher.Test/Plugins/CalculatorTest.cs
Normal file
134
Flow.Launcher.Test/Plugins/CalculatorTest.cs
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
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
|
||||||
|
UseThousandsSeparator = true // Default value
|
||||||
|
};
|
||||||
|
private readonly Engine _engine = new(new Configuration
|
||||||
|
{
|
||||||
|
Scope = new Dictionary<string, object>
|
||||||
|
{
|
||||||
|
{ "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);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ThousandsSeparatorTest_Enabled()
|
||||||
|
{
|
||||||
|
_settings.UseThousandsSeparator = true;
|
||||||
|
|
||||||
|
_settings.DecimalSeparator = DecimalSeparator.Dot;
|
||||||
|
var result = GetCalculationResult("1000+234");
|
||||||
|
// When thousands separator is enabled, the result should contain a separator
|
||||||
|
// Since decimal separator is dot, thousands separator should be comma
|
||||||
|
ClassicAssert.AreEqual("1,234", result);
|
||||||
|
|
||||||
|
_settings.DecimalSeparator = DecimalSeparator.Comma;
|
||||||
|
var result2 = GetCalculationResult("1000+234");
|
||||||
|
// When thousands separator is enabled, the result should contain a separator
|
||||||
|
// Since decimal separator is comma, thousands separator should be dot
|
||||||
|
ClassicAssert.AreEqual("1.234", result2);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ThousandsSeparatorTest_Disabled()
|
||||||
|
{
|
||||||
|
_settings.UseThousandsSeparator = false;
|
||||||
|
_settings.DecimalSeparator = DecimalSeparator.UseSystemLocale;
|
||||||
|
|
||||||
|
var result = GetCalculationResult("1000+234");
|
||||||
|
ClassicAssert.AreEqual("1234", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ThousandsSeparatorTest_LargeNumber()
|
||||||
|
{
|
||||||
|
_settings.UseThousandsSeparator = false;
|
||||||
|
_settings.DecimalSeparator = DecimalSeparator.UseSystemLocale;
|
||||||
|
|
||||||
|
var result = GetCalculationResult("1000000+234567");
|
||||||
|
ClassicAssert.AreEqual("1234567", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
{
|
||||||
|
_settings.UseThousandsSeparator = false;
|
||||||
|
_settings.DecimalSeparator = DecimalSeparator.Dot;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,9 +16,9 @@ namespace Flow.Launcher.Test
|
||||||
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List<string> {">"}}}}
|
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List<string> {">"}}}}
|
||||||
};
|
};
|
||||||
|
|
||||||
Query q = QueryBuilder.Build("> ping google.com -n 20 -6", nonGlobalPlugins);
|
Query q = QueryBuilder.Build("> ping google.com -n 20 -6", "> ping google.com -n 20 -6", nonGlobalPlugins);
|
||||||
|
|
||||||
ClassicAssert.AreEqual("> ping google.com -n 20 -6", q.RawQuery);
|
ClassicAssert.AreEqual("> ping google.com -n 20 -6", q.TrimmedQuery);
|
||||||
ClassicAssert.AreEqual("ping google.com -n 20 -6", q.Search, "Search should not start with the ActionKeyword.");
|
ClassicAssert.AreEqual("ping google.com -n 20 -6", q.Search, "Search should not start with the ActionKeyword.");
|
||||||
ClassicAssert.AreEqual(">", q.ActionKeyword);
|
ClassicAssert.AreEqual(">", q.ActionKeyword);
|
||||||
|
|
||||||
|
|
@ -39,10 +39,10 @@ namespace Flow.Launcher.Test
|
||||||
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List<string> {">"}, Disabled = true}}}
|
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List<string> {">"}, Disabled = true}}}
|
||||||
};
|
};
|
||||||
|
|
||||||
Query q = QueryBuilder.Build("> ping google.com -n 20 -6", nonGlobalPlugins);
|
Query q = QueryBuilder.Build("> ping google.com -n 20 -6", "> ping google.com -n 20 -6", nonGlobalPlugins);
|
||||||
|
|
||||||
ClassicAssert.AreEqual("> ping google.com -n 20 -6", q.Search);
|
ClassicAssert.AreEqual("> ping google.com -n 20 -6", q.Search);
|
||||||
ClassicAssert.AreEqual(q.Search, q.RawQuery, "RawQuery should be equal to Search.");
|
ClassicAssert.AreEqual(q.Search, q.TrimmedQuery, "TrimmedQuery should be equal to Search.");
|
||||||
ClassicAssert.AreEqual(6, q.SearchTerms.Length, "The length of SearchTerms should match.");
|
ClassicAssert.AreEqual(6, q.SearchTerms.Length, "The length of SearchTerms should match.");
|
||||||
ClassicAssert.AreNotEqual(">", q.ActionKeyword, "ActionKeyword should not match that of a disabled plugin.");
|
ClassicAssert.AreNotEqual(">", q.ActionKeyword, "ActionKeyword should not match that of a disabled plugin.");
|
||||||
ClassicAssert.AreEqual("ping google.com -n 20 -6", q.SecondToEndSearch, "SecondToEndSearch should be trimmed of multiple whitespace characters");
|
ClassicAssert.AreEqual("ping google.com -n 20 -6", q.SecondToEndSearch, "SecondToEndSearch should be trimmed of multiple whitespace characters");
|
||||||
|
|
@ -51,7 +51,7 @@ namespace Flow.Launcher.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void GenericPluginQueryTest()
|
public void GenericPluginQueryTest()
|
||||||
{
|
{
|
||||||
Query q = QueryBuilder.Build("file.txt file2 file3", new Dictionary<string, PluginPair>());
|
Query q = QueryBuilder.Build("file.txt file2 file3", "file.txt file2 file3", new Dictionary<string, PluginPair>());
|
||||||
|
|
||||||
ClassicAssert.AreEqual("file.txt file2 file3", q.Search);
|
ClassicAssert.AreEqual("file.txt file2 file3", q.Search);
|
||||||
ClassicAssert.AreEqual("", q.ActionKeyword);
|
ClassicAssert.AreEqual("", q.ActionKeyword);
|
||||||
|
|
|
||||||
|
|
@ -22,19 +22,33 @@ namespace Flow.Launcher.Test
|
||||||
ClassicAssert.AreEqual(10, GetOriginalToTranslatedAt(mapping, 1));
|
ClassicAssert.AreEqual(10, GetOriginalToTranslatedAt(mapping, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(0, 0)]
|
|
||||||
[TestCase(2, 1)]
|
[TestCase(0, 0)] // "F" -> "F"
|
||||||
[TestCase(3, 1)]
|
[TestCase(1, 1)] // "l" -> "l"
|
||||||
[TestCase(5, 2)]
|
[TestCase(2, 2)] // "o" -> "o"
|
||||||
[TestCase(6, 2)]
|
[TestCase(3, 3)] // "w" -> "w"
|
||||||
|
[TestCase(4, 4)] // " " -> " "
|
||||||
|
[TestCase(5, 5)] // "Y" (translated from "用") -> original index 5
|
||||||
|
[TestCase(6, 5)] // "o" (translated from "用") -> original index 5
|
||||||
|
[TestCase(7, 5)] // "n" (translated from "用") -> original index 5
|
||||||
|
[TestCase(8, 5)] // "g" (translated from "用") -> original index 5
|
||||||
|
[TestCase(10, 6)] // "H" (translated from "户") -> original index 6
|
||||||
|
[TestCase(11, 6)] // "u" (translated from "户") -> original index 6
|
||||||
public void MapToOriginalIndex_ShouldReturnExpectedIndex(int translatedIndex, int expectedOriginalIndex)
|
public void MapToOriginalIndex_ShouldReturnExpectedIndex(int translatedIndex, int expectedOriginalIndex)
|
||||||
{
|
{
|
||||||
var mapping = new TranslationMapping();
|
var mapping = new TranslationMapping();
|
||||||
// a测试
|
// Test case :
|
||||||
// a Ce Shi
|
// 0123456
|
||||||
mapping.AddNewIndex(0, 1);
|
// Flow 用户
|
||||||
mapping.AddNewIndex(2, 2);
|
// 012345678901
|
||||||
mapping.AddNewIndex(5, 3);
|
// Flow Yong Hu
|
||||||
|
mapping.AddNewIndex(0, 1); // F
|
||||||
|
mapping.AddNewIndex(1, 1); // l
|
||||||
|
mapping.AddNewIndex(2, 1); // o
|
||||||
|
mapping.AddNewIndex(3, 1); // w
|
||||||
|
mapping.AddNewIndex(4, 1); // ' '
|
||||||
|
mapping.AddNewIndex(5, 4); // 用 -> Yong
|
||||||
|
mapping.AddNewIndex(10, 2); // 户 -> Hu
|
||||||
|
|
||||||
var result = mapping.MapToOriginalIndex(translatedIndex);
|
var result = mapping.MapToOriginalIndex(translatedIndex);
|
||||||
ClassicAssert.AreEqual(expectedOriginalIndex, result);
|
ClassicAssert.AreEqual(expectedOriginalIndex, result);
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ namespace Flow.Launcher
|
||||||
|
|
||||||
if (addedActionKeywords.Any(App.API.ActionKeywordAssigned))
|
if (addedActionKeywords.Any(App.API.ActionKeywordAssigned))
|
||||||
{
|
{
|
||||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsHasBeenAssigned"));
|
App.API.ShowMsgBox(Localize.newActionKeywordsHasBeenAssigned());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -63,7 +63,7 @@ namespace Flow.Launcher
|
||||||
if (sortedOldActionKeywords.SequenceEqual(sortedNewActionKeywords))
|
if (sortedOldActionKeywords.SequenceEqual(sortedNewActionKeywords))
|
||||||
{
|
{
|
||||||
// User just changes the sequence of action keywords
|
// User just changes the sequence of action keywords
|
||||||
App.API.ShowMsgBox(App.API.GetTranslation("newActionKeywordsSameAsOld"));
|
App.API.ShowMsgBox(Localize.newActionKeywordsSameAsOld());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
x:Class="Flow.Launcher.App"
|
x:Class="Flow.Launcher.App"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:ui="http://schemas.modernwpf.com/2019"
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||||
|
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
||||||
ShutdownMode="OnMainWindowClose"
|
ShutdownMode="OnMainWindowClose"
|
||||||
Startup="OnStartup">
|
Startup="OnStartup">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
|
|
@ -10,17 +11,17 @@
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ui:ThemeResources>
|
<ui:ThemeResources>
|
||||||
<ui:ThemeResources.ThemeDictionaries>
|
<ui:ThemeResources.ThemeDictionaries>
|
||||||
<ResourceDictionary x:Key="Light">
|
<ResourceDictionary x:Key="Light" ui:ThemeDictionary.Key="Light">
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceDictionary Source="pack://application:,,,/Resources/Light.xaml" />
|
<ResourceDictionary Source="pack://application:,,,/Resources/Light.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
<ResourceDictionary x:Key="Dark">
|
<ResourceDictionary x:Key="Dark" ui:ThemeDictionary.Key="Dark">
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceDictionary Source="pack://application:,,,/Resources/Dark.xaml" />
|
<ResourceDictionary Source="pack://application:,,,/Resources/Dark.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
<ResourceDictionary x:Key="HighContrast">
|
<ResourceDictionary x:Key="HighContrast" ui:ThemeDictionary.Key="HighContrast">
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceDictionary Source="pack://application:,,,/Resources/Dark.xaml" />
|
<ResourceDictionary Source="pack://application:,,,/Resources/Dark.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
@ -33,6 +34,15 @@
|
||||||
<ResourceDictionary Source="pack://application:,,,/Themes/Win11Light.xaml" />
|
<ResourceDictionary Source="pack://application:,,,/Themes/Win11Light.xaml" />
|
||||||
<ResourceDictionary Source="pack://application:,,,/Languages/en.xaml" />
|
<ResourceDictionary Source="pack://application:,,,/Languages/en.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
||||||
|
<!-- Override styles in UI.Modern.WPF -->
|
||||||
|
<Thickness x:Key="ListViewItemCompactSelectedBorderThemeThickness">2</Thickness>
|
||||||
|
<sys:Double x:Key="CheckBoxMinWidth">0</sys:Double>
|
||||||
|
<sys:Double x:Key="GridViewItemMinWidth">0</sys:Double>
|
||||||
|
<sys:Double x:Key="GridViewItemMinHeight">40</sys:Double>
|
||||||
|
<sys:Double x:Key="ListViewItemMinWidth">0</sys:Double>
|
||||||
|
<sys:Double x:Key="ListViewItemMinHeight">36</sys:Double>
|
||||||
|
<SolidColorBrush x:Key="NavigationViewSelectionIndicatorForeground" Color="#FF0063B1" />
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
</Application>
|
</Application>
|
||||||
|
|
@ -22,6 +22,7 @@ using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using Flow.Launcher.SettingPages.ViewModels;
|
using Flow.Launcher.SettingPages.ViewModels;
|
||||||
using Flow.Launcher.ViewModel;
|
using Flow.Launcher.ViewModel;
|
||||||
|
using iNKORE.UI.WPF.Modern.Common;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.VisualStudio.Threading;
|
using Microsoft.VisualStudio.Threading;
|
||||||
|
|
@ -45,6 +46,7 @@ namespace Flow.Launcher
|
||||||
private static Settings _settings;
|
private static Settings _settings;
|
||||||
private static MainWindow _mainWindow;
|
private static MainWindow _mainWindow;
|
||||||
private readonly MainViewModel _mainVM;
|
private readonly MainViewModel _mainVM;
|
||||||
|
private readonly Internationalization _internationalization;
|
||||||
|
|
||||||
// To prevent two disposals running at the same time.
|
// To prevent two disposals running at the same time.
|
||||||
private static readonly object _disposingLock = new();
|
private static readonly object _disposingLock = new();
|
||||||
|
|
@ -55,6 +57,9 @@ namespace Flow.Launcher
|
||||||
|
|
||||||
public App()
|
public App()
|
||||||
{
|
{
|
||||||
|
// Do not use bitmap cache since it can cause WPF second window freezing issue
|
||||||
|
ShadowAssist.UseBitmapCache = false;
|
||||||
|
|
||||||
// Initialize settings
|
// Initialize settings
|
||||||
_settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled();
|
_settings.WMPInstalled = WindowsMediaPlayerHelper.IsWindowsMediaPlayerInstalled();
|
||||||
|
|
||||||
|
|
@ -107,6 +112,7 @@ namespace Flow.Launcher
|
||||||
API = Ioc.Default.GetRequiredService<IPublicAPI>();
|
API = Ioc.Default.GetRequiredService<IPublicAPI>();
|
||||||
_settings.Initialize();
|
_settings.Initialize();
|
||||||
_mainVM = Ioc.Default.GetRequiredService<MainViewModel>();
|
_mainVM = Ioc.Default.GetRequiredService<MainViewModel>();
|
||||||
|
_internationalization = Ioc.Default.GetRequiredService<Internationalization>();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
@ -181,20 +187,23 @@ namespace Flow.Launcher
|
||||||
// So set to OnExplicitShutdown to prevent the application from shutting down before main window is created
|
// So set to OnExplicitShutdown to prevent the application from shutting down before main window is created
|
||||||
Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
|
Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
|
||||||
|
|
||||||
|
// Setup log level before any logging is done
|
||||||
Log.SetLogLevel(_settings.LogLevel);
|
Log.SetLogLevel(_settings.LogLevel);
|
||||||
|
|
||||||
// Update dynamic resources base on settings
|
// Update dynamic resources base on settings
|
||||||
Current.Resources["SettingWindowFont"] = new FontFamily(_settings.SettingWindowFont);
|
Current.Resources["SettingWindowFont"] = new FontFamily(_settings.SettingWindowFont);
|
||||||
Current.Resources["ContentControlThemeFontFamily"] = new FontFamily(_settings.SettingWindowFont);
|
Current.Resources["ContentControlThemeFontFamily"] = new FontFamily(_settings.SettingWindowFont);
|
||||||
|
|
||||||
|
// Initialize notification system before any notification api is called
|
||||||
Notification.Install();
|
Notification.Install();
|
||||||
|
|
||||||
// Enable Win32 dark mode if the system is in dark mode before creating all windows
|
// Enable Win32 dark mode if the system is in dark mode before creating all windows
|
||||||
Win32Helper.EnableWin32DarkMode(_settings.ColorScheme);
|
Win32Helper.EnableWin32DarkMode(_settings.ColorScheme);
|
||||||
|
|
||||||
// Initialize language before portable clean up since it needs translations
|
// Initialize language before portable clean up since it needs translations
|
||||||
await Ioc.Default.GetRequiredService<Internationalization>().InitializeLanguageAsync();
|
await _internationalization.InitializeLanguageAsync();
|
||||||
|
|
||||||
|
// Clean up after portability update
|
||||||
Ioc.Default.GetRequiredService<Portable>().PreStartCleanUpAfterPortabilityUpdate();
|
Ioc.Default.GetRequiredService<Portable>().PreStartCleanUpAfterPortabilityUpdate();
|
||||||
|
|
||||||
API.LogInfo(ClassName, "Begin Flow Launcher startup ----------------------------------------------------");
|
API.LogInfo(ClassName, "Begin Flow Launcher startup ----------------------------------------------------");
|
||||||
|
|
@ -204,32 +213,25 @@ namespace Flow.Launcher
|
||||||
RegisterDispatcherUnhandledException();
|
RegisterDispatcherUnhandledException();
|
||||||
RegisterTaskSchedulerUnhandledException();
|
RegisterTaskSchedulerUnhandledException();
|
||||||
|
|
||||||
var imageLoadertask = ImageLoader.InitializeAsync();
|
var imageLoaderTask = ImageLoader.InitializeAsync();
|
||||||
|
|
||||||
AbstractPluginEnvironment.PreStartPluginExecutablePathUpdate(_settings);
|
|
||||||
|
|
||||||
PluginManager.LoadPlugins(_settings.PluginSettings);
|
|
||||||
|
|
||||||
// Register ResultsUpdated event after all plugins are loaded
|
|
||||||
Ioc.Default.GetRequiredService<MainViewModel>().RegisterResultsUpdatedEvent();
|
|
||||||
|
|
||||||
Http.Proxy = _settings.Proxy;
|
Http.Proxy = _settings.Proxy;
|
||||||
|
|
||||||
// Initialize plugin manifest before initializing plugins so that they can use the manifest instantly
|
// Initialize plugin manifest before initializing plugins so that they can use the manifest instantly
|
||||||
await API.UpdatePluginManifestAsync();
|
await API.UpdatePluginManifestAsync();
|
||||||
|
|
||||||
await PluginManager.InitializePluginsAsync();
|
await imageLoaderTask;
|
||||||
|
|
||||||
// Update plugin titles after plugins are initialized with their api instances
|
|
||||||
Internationalization.UpdatePluginMetadataTranslations();
|
|
||||||
|
|
||||||
await imageLoadertask;
|
|
||||||
|
|
||||||
_mainWindow = new MainWindow();
|
_mainWindow = new MainWindow();
|
||||||
|
|
||||||
Current.MainWindow = _mainWindow;
|
Current.MainWindow = _mainWindow;
|
||||||
Current.MainWindow.Title = Constant.FlowLauncher;
|
Current.MainWindow.Title = Constant.FlowLauncher;
|
||||||
|
|
||||||
|
// Initialize Dialog Jump before hotkey mapper since hotkey mapper will register its hotkey
|
||||||
|
// Initialize Dialog Jump after main window is created so that it can access main window handle
|
||||||
|
DialogJump.InitializeDialogJump();
|
||||||
|
DialogJump.SetupDialogJump(_settings.EnableDialogJump);
|
||||||
|
|
||||||
// Initialize hotkey mapper instantly after main window is created because
|
// Initialize hotkey mapper instantly after main window is created because
|
||||||
// it will steal focus from main window which causes window hide
|
// it will steal focus from main window which causes window hide
|
||||||
HotKeyMapper.Initialize();
|
HotKeyMapper.Initialize();
|
||||||
|
|
@ -237,19 +239,43 @@ namespace Flow.Launcher
|
||||||
// Initialize theme for main window
|
// Initialize theme for main window
|
||||||
Ioc.Default.GetRequiredService<Theme>().ChangeTheme();
|
Ioc.Default.GetRequiredService<Theme>().ChangeTheme();
|
||||||
|
|
||||||
DialogJump.InitializeDialogJump(PluginManager.GetDialogJumpExplorers(), PluginManager.GetDialogJumpDialogs());
|
|
||||||
DialogJump.SetupDialogJump(_settings.EnableDialogJump);
|
|
||||||
|
|
||||||
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
||||||
|
|
||||||
RegisterExitEvents();
|
RegisterExitEvents();
|
||||||
|
|
||||||
AutoStartup();
|
AutoStartup();
|
||||||
AutoUpdates();
|
AutoUpdates();
|
||||||
AutoPluginUpdates();
|
|
||||||
|
|
||||||
API.SaveAppAllSettings();
|
API.SaveAppAllSettings();
|
||||||
API.LogInfo(ClassName, "End Flow Launcher startup ----------------------------------------------------");
|
API.LogInfo(ClassName, "End Flow Launcher startup ------------------------------------------------------");
|
||||||
|
|
||||||
|
_ = API.StopwatchLogInfoAsync(ClassName, "Startup cost", async () =>
|
||||||
|
{
|
||||||
|
API.LogInfo(ClassName, "Begin plugin initialization ----------------------------------------------------");
|
||||||
|
|
||||||
|
AbstractPluginEnvironment.PreStartPluginExecutablePathUpdate(_settings);
|
||||||
|
|
||||||
|
PluginManager.LoadPlugins(_settings.PluginSettings);
|
||||||
|
|
||||||
|
await PluginManager.InitializePluginsAsync(_mainVM);
|
||||||
|
|
||||||
|
// Refresh the history results after plugins are initialized so that we can parse the absolute icon paths
|
||||||
|
_mainVM.RefreshLastOpenedHistoryResults();
|
||||||
|
|
||||||
|
// Refresh home page after plugins are initialized because users may open main window during plugin initialization
|
||||||
|
// And home page is created without full plugin list
|
||||||
|
if (_settings.ShowHomePage && _mainVM.QueryResultsSelected() && string.IsNullOrEmpty(_mainVM.QueryText))
|
||||||
|
{
|
||||||
|
_mainVM.QueryResults();
|
||||||
|
}
|
||||||
|
|
||||||
|
AutoPluginUpdates();
|
||||||
|
|
||||||
|
// Save all settings since we possibly update the plugin environment paths
|
||||||
|
API.SaveAppAllSettings();
|
||||||
|
|
||||||
|
API.LogInfo(ClassName, "End plugin initialization ------------------------------------------------------");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -274,7 +300,7 @@ namespace Flow.Launcher
|
||||||
// but if it fails (permissions, etc) then don't keep retrying
|
// but if it fails (permissions, etc) then don't keep retrying
|
||||||
// this also gives the user a visual indication in the Settings widget
|
// this also gives the user a visual indication in the Settings widget
|
||||||
_settings.StartFlowLauncherOnSystemStartup = false;
|
_settings.StartFlowLauncherOnSystemStartup = false;
|
||||||
API.ShowMsgError(API.GetTranslation("setAutoStartFailed"), e.Message);
|
API.ShowMsgError(Localize.setAutoStartFailed(), e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -421,6 +447,7 @@ namespace Flow.Launcher
|
||||||
_mainWindow?.Dispatcher.Invoke(_mainWindow.Dispose);
|
_mainWindow?.Dispatcher.Invoke(_mainWindow.Dispose);
|
||||||
_mainVM?.Dispose();
|
_mainVM?.Dispose();
|
||||||
DialogJump.Dispose();
|
DialogJump.Dispose();
|
||||||
|
_internationalization.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
API.LogInfo(ClassName, "End Flow Launcher dispose ----------------------------------------------------");
|
API.LogInfo(ClassName, "End Flow Launcher dispose ----------------------------------------------------");
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Windows.Input;
|
||||||
|
|
||||||
namespace Flow.Launcher.Converters;
|
namespace Flow.Launcher.Converters;
|
||||||
|
|
||||||
internal class BoolToIMEConversionModeConverter : IValueConverter
|
public class BoolToIMEConversionModeConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
|
|
@ -22,7 +22,7 @@ internal class BoolToIMEConversionModeConverter : IValueConverter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class BoolToIMEStateConverter : IValueConverter
|
public class BoolToIMEStateConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
91
Flow.Launcher/Converters/CornerRadiusFilterConverter.cs
Normal file
91
Flow.Launcher/Converters/CornerRadiusFilterConverter.cs
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Converters;
|
||||||
|
|
||||||
|
public class CornerRadiusFilterConverter : DependencyObject, IValueConverter
|
||||||
|
{
|
||||||
|
public CornerRadiusFilterKind Filter { get; set; }
|
||||||
|
|
||||||
|
public double Scale { get; set; } = 1.0;
|
||||||
|
|
||||||
|
public static CornerRadius Convert(CornerRadius radius, CornerRadiusFilterKind filterKind)
|
||||||
|
{
|
||||||
|
CornerRadius result = radius;
|
||||||
|
|
||||||
|
switch (filterKind)
|
||||||
|
{
|
||||||
|
case CornerRadiusFilterKind.Top:
|
||||||
|
result.BottomLeft = 0;
|
||||||
|
result.BottomRight = 0;
|
||||||
|
break;
|
||||||
|
case CornerRadiusFilterKind.Right:
|
||||||
|
result.TopLeft = 0;
|
||||||
|
result.BottomLeft = 0;
|
||||||
|
break;
|
||||||
|
case CornerRadiusFilterKind.Bottom:
|
||||||
|
result.TopLeft = 0;
|
||||||
|
result.TopRight = 0;
|
||||||
|
break;
|
||||||
|
case CornerRadiusFilterKind.Left:
|
||||||
|
result.TopRight = 0;
|
||||||
|
result.BottomRight = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
var cornerRadius = (CornerRadius)value;
|
||||||
|
|
||||||
|
var scale = Scale;
|
||||||
|
if (!double.IsNaN(scale))
|
||||||
|
{
|
||||||
|
cornerRadius.TopLeft *= scale;
|
||||||
|
cornerRadius.TopRight *= scale;
|
||||||
|
cornerRadius.BottomRight *= scale;
|
||||||
|
cornerRadius.BottomLeft *= scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
var filterType = Filter;
|
||||||
|
if (filterType == CornerRadiusFilterKind.TopLeftValue ||
|
||||||
|
filterType == CornerRadiusFilterKind.BottomRightValue)
|
||||||
|
{
|
||||||
|
return GetDoubleValue(cornerRadius, filterType);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Convert(cornerRadius, filterType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double GetDoubleValue(CornerRadius radius, CornerRadiusFilterKind filterKind)
|
||||||
|
{
|
||||||
|
switch (filterKind)
|
||||||
|
{
|
||||||
|
case CornerRadiusFilterKind.TopLeftValue:
|
||||||
|
return radius.TopLeft;
|
||||||
|
case CornerRadiusFilterKind.BottomRightValue:
|
||||||
|
return radius.BottomRight;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CornerRadiusFilterKind
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Top,
|
||||||
|
Right,
|
||||||
|
Bottom,
|
||||||
|
Left,
|
||||||
|
TopLeftValue,
|
||||||
|
BottomRightValue
|
||||||
|
}
|
||||||
32
Flow.Launcher/Converters/PlacementRectangleConverter.cs
Normal file
32
Flow.Launcher/Converters/PlacementRectangleConverter.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Converters;
|
||||||
|
|
||||||
|
public class PlacementRectangleConverter : IMultiValueConverter
|
||||||
|
{
|
||||||
|
public Thickness Margin { get; set; }
|
||||||
|
|
||||||
|
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if (values.Length == 2 &&
|
||||||
|
values[0] is double width &&
|
||||||
|
values[1] is double height)
|
||||||
|
{
|
||||||
|
var margin = Margin;
|
||||||
|
var topLeft = new Point(margin.Left, margin.Top);
|
||||||
|
var bottomRight = new Point(width - margin.Right, height - margin.Bottom);
|
||||||
|
var rect = new Rect(topLeft, bottomRight);
|
||||||
|
return rect;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Rect.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
19
Flow.Launcher/Converters/SharedSizeGroupConverter.cs
Normal file
19
Flow.Launcher/Converters/SharedSizeGroupConverter.cs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Converters;
|
||||||
|
|
||||||
|
public class SharedSizeGroupConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
return (Visibility)value != Visibility.Collapsed ? (string)parameter : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Windows.Input;
|
||||||
|
|
||||||
namespace Flow.Launcher.Converters;
|
namespace Flow.Launcher.Converters;
|
||||||
|
|
||||||
class StringToKeyBindingConverter : IValueConverter
|
public class StringToKeyBindingConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace Flow.Launcher
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(Hotkey) && string.IsNullOrEmpty(ActionKeyword))
|
if (string.IsNullOrEmpty(Hotkey) && string.IsNullOrEmpty(ActionKeyword))
|
||||||
{
|
{
|
||||||
App.API.ShowMsgBox(App.API.GetTranslation("emptyPluginHotkey"));
|
App.API.ShowMsgBox(Localize.emptyPluginHotkey());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,14 +40,14 @@ namespace Flow.Launcher
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(Key) || string.IsNullOrEmpty(Value))
|
if (string.IsNullOrEmpty(Key) || string.IsNullOrEmpty(Value))
|
||||||
{
|
{
|
||||||
App.API.ShowMsgBox(App.API.GetTranslation("emptyShortcut"));
|
App.API.ShowMsgBox(Localize.emptyShortcut());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if key is modified or adding a new one
|
// Check if key is modified or adding a new one
|
||||||
if (((update && originalKey != Key) || !update) && _hotkeyVm.DoesShortcutExist(Key))
|
if (((update && originalKey != Key) || !update) && _hotkeyVm.DoesShortcutExist(Key))
|
||||||
{
|
{
|
||||||
App.API.ShowMsgBox(App.API.GetTranslation("duplicateShortcut"));
|
App.API.ShowMsgBox(Localize.duplicateShortcut());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<NoWarn>$(NoWarn);FLSG0007</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="RemoveUnnecessaryRuntimesAfterBuild" AfterTargets="Build">
|
<Target Name="RemoveUnnecessaryRuntimesAfterBuild" AfterTargets="Build">
|
||||||
|
|
@ -132,27 +133,26 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ChefKeys" Version="0.1.2" />
|
<PackageReference Include="ChefKeys" Version="0.1.2" />
|
||||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||||
<PackageReference Include="Fody" Version="6.9.2">
|
<PackageReference Include="Flow.Launcher.Localization" Version="0.0.6" />
|
||||||
|
<PackageReference Include="Fody" Version="6.9.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="iNKORE.UI.WPF.Modern" Version="0.10.1" />
|
||||||
<PackageReference Include="MdXaml" Version="1.27.0" />
|
<PackageReference Include="MdXaml" Version="1.27.0" />
|
||||||
<PackageReference Include="MdXaml.AnimatedGif" Version="1.27.0" />
|
<PackageReference Include="MdXaml.AnimatedGif" Version="1.27.0" />
|
||||||
<PackageReference Include="MdXaml.Html" Version="1.27.0" />
|
<PackageReference Include="MdXaml.Html" Version="1.27.0" />
|
||||||
<PackageReference Include="MdXaml.Plugins" Version="1.27.0" />
|
<PackageReference Include="MdXaml.Plugins" Version="1.27.0" />
|
||||||
<PackageReference Include="MdXaml.Svg" Version="1.27.0" />
|
<PackageReference Include="MdXaml.Svg" Version="1.27.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.7" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.9" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.7" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.9" />
|
||||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
|
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
|
||||||
<!-- ModernWpfUI v0.9.5 introduced WinRT changes that causes Notification platform unavailable error on some machines -->
|
|
||||||
<!-- https://github.com/Flow-Launcher/Flow.Launcher/issues/1772#issuecomment-1502440801 -->
|
|
||||||
<PackageReference Include="ModernWpfUI" Version="0.9.4" />
|
|
||||||
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
<PackageReference Include="SemanticVersioning" Version="3.0.0" />
|
||||||
<PackageReference Include="TaskScheduler" Version="2.12.2" />
|
<PackageReference Include="TaskScheduler" Version="2.12.2" />
|
||||||
<PackageReference Include="VirtualizingWrapPanel" Version="2.3.0" />
|
<PackageReference Include="VirtualizingWrapPanel" Version="2.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -161,6 +161,10 @@
|
||||||
<ProjectReference Include="..\Flow.Launcher.Plugin\Flow.Launcher.Plugin.csproj" />
|
<ProjectReference Include="..\Flow.Launcher.Plugin\Flow.Launcher.Plugin.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<FLLUseDependencyInjection>true</FLLUseDependencyInjection>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Resources\open.wav">
|
<Content Include="Resources\open.wav">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
|
@ -181,7 +185,7 @@
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="RemoveDuplicateAnalyzers" BeforeTargets="CoreCompile">
|
<Target Name="RemoveDuplicateAnalyzers" BeforeTargets="CoreCompile">
|
||||||
<!-- Work around https://github.com/dotnet/wpf/issues/6792 -->
|
<!-- Workaround https://github.com/dotnet/wpf/issues/6792 -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<FilteredAnalyzer Include="@(Analyzer->Distinct())" />
|
<FilteredAnalyzer Include="@(Analyzer->Distinct())" />
|
||||||
<Analyzer Remove="@(Analyzer)" />
|
<Analyzer Remove="@(Analyzer)" />
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Infrastructure;
|
||||||
|
|
@ -64,7 +65,9 @@ public class AutoStartup
|
||||||
if (task.Definition.Actions.FirstOrDefault() is Microsoft.Win32.TaskScheduler.Action taskAction)
|
if (task.Definition.Actions.FirstOrDefault() is Microsoft.Win32.TaskScheduler.Action taskAction)
|
||||||
{
|
{
|
||||||
var action = taskAction.ToString().Trim();
|
var action = taskAction.ToString().Trim();
|
||||||
if (!action.Equals(Constant.ExecutablePath, StringComparison.OrdinalIgnoreCase))
|
var needsRecreation = !action.Equals(Constant.ExecutablePath, StringComparison.OrdinalIgnoreCase)
|
||||||
|
|| task.Definition.Settings.Priority != ProcessPriorityClass.Normal;
|
||||||
|
if (needsRecreation)
|
||||||
{
|
{
|
||||||
UnscheduleLogonTask();
|
UnscheduleLogonTask();
|
||||||
ScheduleLogonTask();
|
ScheduleLogonTask();
|
||||||
|
|
@ -184,6 +187,7 @@ public class AutoStartup
|
||||||
td.Settings.StopIfGoingOnBatteries = false;
|
td.Settings.StopIfGoingOnBatteries = false;
|
||||||
td.Settings.DisallowStartIfOnBatteries = false;
|
td.Settings.DisallowStartIfOnBatteries = false;
|
||||||
td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
|
td.Settings.ExecutionTimeLimit = TimeSpan.Zero;
|
||||||
|
td.Settings.Priority = ProcessPriorityClass.Normal;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
||||||
33
Flow.Launcher/Helper/BorderHelper.cs
Normal file
33
Flow.Launcher/Helper/BorderHelper.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Helper;
|
||||||
|
|
||||||
|
public static class BorderHelper
|
||||||
|
{
|
||||||
|
#region Child
|
||||||
|
|
||||||
|
public static readonly DependencyProperty ChildProperty =
|
||||||
|
DependencyProperty.RegisterAttached(
|
||||||
|
"Child",
|
||||||
|
typeof(UIElement),
|
||||||
|
typeof(BorderHelper),
|
||||||
|
new PropertyMetadata(default(UIElement), OnChildChanged));
|
||||||
|
|
||||||
|
public static UIElement GetChild(Border border)
|
||||||
|
{
|
||||||
|
return (UIElement)border.GetValue(ChildProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetChild(Border border, UIElement value)
|
||||||
|
{
|
||||||
|
border.SetValue(ChildProperty, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnChildChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
((Border)d).Child = (UIElement)e.NewValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,15 @@ public static class ErrorReporting
|
||||||
var logger = LogManager.GetLogger(methodName);
|
var logger = LogManager.GetLogger(methodName);
|
||||||
logger.Fatal(ExceptionFormatter.FormatExcpetion(e));
|
logger.Fatal(ExceptionFormatter.FormatExcpetion(e));
|
||||||
if (silent) return;
|
if (silent) return;
|
||||||
|
|
||||||
|
// Workaround for issue https://github.com/Flow-Launcher/Flow.Launcher/issues/4016
|
||||||
|
// The crash occurs in PresentationFramework.dll, not necessarily when the Runner UI is visible, originating from this line:
|
||||||
|
// https://github.com/dotnet/wpf/blob/3439f20fb8c685af6d9247e8fd2978cac42e74ac/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Shell/WindowChromeWorker.cs#L1005
|
||||||
|
// Many bug reports because users see the "Error report UI" after the crash with System.Runtime.InteropServices.COMException 0xD0000701 or 0x80263001.
|
||||||
|
// However, displaying this "Error report UI" during WPF crashes, especially when DWM composition is changing, is not ideal; some users reported it hangs for up to a minute before the it appears.
|
||||||
|
// This change modifies the behavior to log the exception instead of showing the "Error report UI".
|
||||||
|
if (ExceptionHelper.IsRecoverableDwmCompositionException(e)) return;
|
||||||
|
|
||||||
var reportWindow = new ReportWindow(e);
|
var reportWindow = new ReportWindow(e);
|
||||||
reportWindow.Show();
|
reportWindow.Show();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
42
Flow.Launcher/Helper/ExceptionHelper.cs
Normal file
42
Flow.Launcher/Helper/ExceptionHelper.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
// This is a direct copy of the file at https://github.com/microsoft/PowerToys/blob/main/src/modules/launcher/PowerLauncher/Helper/ExceptionHelper.cs and adapted for flow.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Helper;
|
||||||
|
|
||||||
|
internal static class ExceptionHelper
|
||||||
|
{
|
||||||
|
private const string PresentationFrameworkExceptionSource = "PresentationFramework";
|
||||||
|
|
||||||
|
private const int DWM_E_COMPOSITIONDISABLED = unchecked((int)0x80263001);
|
||||||
|
|
||||||
|
// HRESULT for NT STATUS STATUS_MESSAGE_LOST (0xC0000701 | 0x10000000 == 0xD0000701)
|
||||||
|
private const int STATUS_MESSAGE_LOST_HR = unchecked((int)0xD0000701);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if the exception is a recoverable DWM composition exception.
|
||||||
|
/// </summary>
|
||||||
|
internal static bool IsRecoverableDwmCompositionException(Exception exception)
|
||||||
|
{
|
||||||
|
if (exception is not COMException comException)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comException.HResult is DWM_E_COMPOSITIONDISABLED)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (comException.HResult is STATUS_MESSAGE_LOST_HR && comException.Source == PresentationFrameworkExceptionSource)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for common DWM composition changed patterns in the stack trace
|
||||||
|
var stackTrace = comException.StackTrace;
|
||||||
|
return !string.IsNullOrEmpty(stackTrace) &&
|
||||||
|
stackTrace.Contains("DwmCompositionChanged", StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -61,8 +61,8 @@ internal static class HotKeyMapper
|
||||||
string.Format("|HotkeyMapper.SetWithChefKeys|Error registering hotkey: {0} \nStackTrace:{1}",
|
string.Format("|HotkeyMapper.SetWithChefKeys|Error registering hotkey: {0} \nStackTrace:{1}",
|
||||||
e.Message,
|
e.Message,
|
||||||
e.StackTrace));
|
e.StackTrace));
|
||||||
string errorMsg = string.Format(App.API.GetTranslation("registerHotkeyFailed"), hotkeyStr);
|
string errorMsg = Localize.registerHotkeyFailed(hotkeyStr);
|
||||||
string errorMsgTitle = App.API.GetTranslation("MessageBoxTitle");
|
string errorMsgTitle = Localize.MessageBoxTitle();
|
||||||
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -87,8 +87,8 @@ internal static class HotKeyMapper
|
||||||
e.Message,
|
e.Message,
|
||||||
e.StackTrace,
|
e.StackTrace,
|
||||||
hotkeyStr));
|
hotkeyStr));
|
||||||
string errorMsg = string.Format(App.API.GetTranslation("registerHotkeyFailed"), hotkeyStr);
|
string errorMsg = Localize.registerHotkeyFailed(hotkeyStr);
|
||||||
string errorMsgTitle = App.API.GetTranslation("MessageBoxTitle");
|
string errorMsgTitle = Localize.MessageBoxTitle();
|
||||||
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -112,8 +112,8 @@ internal static class HotKeyMapper
|
||||||
string.Format("|HotkeyMapper.RemoveHotkey|Error removing hotkey: {0} \nStackTrace:{1}",
|
string.Format("|HotkeyMapper.RemoveHotkey|Error removing hotkey: {0} \nStackTrace:{1}",
|
||||||
e.Message,
|
e.Message,
|
||||||
e.StackTrace));
|
e.StackTrace));
|
||||||
string errorMsg = string.Format(App.API.GetTranslation("unregisterHotkeyFailed"), hotkeyStr);
|
string errorMsg = Localize.unregisterHotkeyFailed(hotkeyStr);
|
||||||
string errorMsgTitle = App.API.GetTranslation("MessageBoxTitle");
|
string errorMsgTitle = Localize.MessageBoxTitle();
|
||||||
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
App.API.ShowMsgBox(errorMsg, errorMsgTitle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -143,6 +143,8 @@ internal static class HotKeyMapper
|
||||||
return;
|
return;
|
||||||
|
|
||||||
App.API.ShowMainWindow();
|
App.API.ShowMainWindow();
|
||||||
|
// Make sure to go back to the query results page first since it can cause issues if current page is context menu
|
||||||
|
App.API.BackToQueryResults();
|
||||||
App.API.ChangeQuery(hotkey.ActionKeyword, true);
|
App.API.ChangeQuery(hotkey.ActionKeyword, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
45
Flow.Launcher/Helper/ResultHelper.cs
Normal file
45
Flow.Launcher/Helper/ResultHelper.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Flow.Launcher.Core.Plugin;
|
||||||
|
using Flow.Launcher.Plugin;
|
||||||
|
using Flow.Launcher.Storage;
|
||||||
|
|
||||||
|
namespace Flow.Launcher.Helper;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public static class ResultHelper
|
||||||
|
{
|
||||||
|
public static async Task<Result?> PopulateResultsAsync(LastOpenedHistoryResult item)
|
||||||
|
{
|
||||||
|
return await PopulateResultsAsync(item.PluginID, item.Query, item.Title, item.SubTitle, item.RecordKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<Result?> PopulateResultsAsync(string pluginId, string trimmedQuery, string title, string subTitle, string recordKey)
|
||||||
|
{
|
||||||
|
var plugin = PluginManager.GetPluginForId(pluginId);
|
||||||
|
if (plugin == null) return null;
|
||||||
|
var query = QueryBuilder.Build(trimmedQuery, trimmedQuery, PluginManager.GetNonGlobalPlugins());
|
||||||
|
if (query == null) return null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var freshResults = await PluginManager.QueryForPluginAsync(plugin, query, CancellationToken.None);
|
||||||
|
// Try to match by record key first if it is valid, otherwise fall back to title + subtitle match
|
||||||
|
if (string.IsNullOrEmpty(recordKey))
|
||||||
|
{
|
||||||
|
return freshResults?.FirstOrDefault(r => r.Title == title && r.SubTitle == subTitle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return freshResults?.FirstOrDefault(r => r.RecordKey == recordKey) ??
|
||||||
|
freshResults?.FirstOrDefault(r => r.Title == title && r.SubTitle == subTitle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
App.API.LogException(nameof(ResultHelper), $"Failed to query results for {plugin.Metadata.Name}", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
|
@ -16,7 +17,7 @@ public static class WallpaperPathRetrieval
|
||||||
|
|
||||||
private const int MaxCacheSize = 3;
|
private const int MaxCacheSize = 3;
|
||||||
private static readonly Dictionary<(string, DateTime), ImageBrush> WallpaperCache = new();
|
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()
|
public static Brush GetWallpaperBrush()
|
||||||
{
|
{
|
||||||
|
|
@ -31,7 +32,7 @@ public static class WallpaperPathRetrieval
|
||||||
var wallpaperPath = Win32Helper.GetWallpaperPath();
|
var wallpaperPath = Win32Helper.GetWallpaperPath();
|
||||||
if (string.IsNullOrEmpty(wallpaperPath) || !File.Exists(wallpaperPath))
|
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();
|
var wallpaperColor = GetWallpaperColor();
|
||||||
return new SolidColorBrush(wallpaperColor);
|
return new SolidColorBrush(wallpaperColor);
|
||||||
}
|
}
|
||||||
|
|
@ -47,17 +48,22 @@ public static class WallpaperPathRetrieval
|
||||||
return cachedWallpaper;
|
return cachedWallpaper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
using var fileStream = File.OpenRead(wallpaperPath);
|
int originalWidth, originalHeight;
|
||||||
var decoder = BitmapDecoder.Create(fileStream, BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
|
// Use `using ()` instead of `using var` sentence here to ensure the wallpaper file is not locked
|
||||||
var frame = decoder.Frames[0];
|
using (var fileStream = File.OpenRead(wallpaperPath))
|
||||||
var originalWidth = frame.PixelWidth;
|
{
|
||||||
var originalHeight = frame.PixelHeight;
|
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)
|
if (originalWidth == 0 || originalHeight == 0)
|
||||||
{
|
{
|
||||||
App.API.LogInfo(ClassName, $"Failed to load bitmap: Width={originalWidth}, Height={originalHeight}");
|
App.API.LogError(ClassName, $"Failed to load bitmap: Width={originalWidth}, Height={originalHeight}");
|
||||||
return new SolidColorBrush(Colors.Transparent);
|
var wallpaperColor = GetWallpaperColor();
|
||||||
|
return new SolidColorBrush(wallpaperColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate the scaling factor to fit the image within 800x600 while preserving aspect ratio
|
// 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
|
// Set DecodePixelWidth and DecodePixelHeight to resize the image while preserving aspect ratio
|
||||||
var bitmap = new BitmapImage();
|
var bitmap = new BitmapImage();
|
||||||
bitmap.BeginInit();
|
bitmap.BeginInit();
|
||||||
|
bitmap.CacheOption = BitmapCacheOption.OnLoad; // Use OnLoad to ensure the wallpaper file is not locked
|
||||||
bitmap.UriSource = new Uri(wallpaperPath);
|
bitmap.UriSource = new Uri(wallpaperPath);
|
||||||
|
bitmap.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
|
||||||
bitmap.DecodePixelWidth = decodedPixelWidth;
|
bitmap.DecodePixelWidth = decodedPixelWidth;
|
||||||
bitmap.DecodePixelHeight = decodedPixelHeight;
|
bitmap.DecodePixelHeight = decodedPixelHeight;
|
||||||
bitmap.EndInit();
|
bitmap.EndInit();
|
||||||
|
|
@ -104,13 +112,13 @@ public static class WallpaperPathRetrieval
|
||||||
|
|
||||||
private static Color GetWallpaperColor()
|
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);
|
var result = key?.GetValue("Background", null);
|
||||||
if (result is string strResult)
|
if (result is string strResult)
|
||||||
{
|
{
|
||||||
try
|
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]);
|
return Color.FromRgb(parts[0], parts[1], parts[2]);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|
@ -234,7 +234,7 @@ namespace Flow.Launcher
|
||||||
private static bool CheckHotkeyAvailability(HotkeyModel hotkey, bool validateKeyGesture) =>
|
private static bool CheckHotkeyAvailability(HotkeyModel hotkey, bool validateKeyGesture) =>
|
||||||
hotkey.Validate(validateKeyGesture) && HotKeyMapper.CheckAvailability(hotkey);
|
hotkey.Validate(validateKeyGesture) && HotKeyMapper.CheckAvailability(hotkey);
|
||||||
|
|
||||||
public string EmptyHotkey => App.API.GetTranslation("none");
|
public string EmptyHotkey => Localize.none();
|
||||||
|
|
||||||
public ObservableCollection<string> KeysToDisplay { get; set; } = new();
|
public ObservableCollection<string> KeysToDisplay { get; set; } = new();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
x:Class="Flow.Launcher.HotkeyControlDialog"
|
x:Class="Flow.Launcher.HotkeyControlDialog"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:ui="http://schemas.modernwpf.com/2019"
|
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
||||||
Background="{DynamicResource PopuBGColor}"
|
Background="{DynamicResource PopuBGColor}"
|
||||||
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
|
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
|
||||||
BorderThickness="0 1 0 0"
|
BorderThickness="0 1 0 0"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ using Flow.Launcher.Helper;
|
||||||
using Flow.Launcher.Infrastructure.Hotkey;
|
using Flow.Launcher.Infrastructure.Hotkey;
|
||||||
using Flow.Launcher.Infrastructure.UserSettings;
|
using Flow.Launcher.Infrastructure.UserSettings;
|
||||||
using Flow.Launcher.Plugin;
|
using Flow.Launcher.Plugin;
|
||||||
using ModernWpf.Controls;
|
using iNKORE.UI.WPF.Modern.Controls;
|
||||||
|
|
||||||
namespace Flow.Launcher;
|
namespace Flow.Launcher;
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ public partial class HotkeyControlDialog : ContentDialog
|
||||||
|
|
||||||
public EResultType ResultType { get; private set; } = EResultType.Cancel;
|
public EResultType ResultType { get; private set; } = EResultType.Cancel;
|
||||||
public string ResultValue { get; private set; } = string.Empty;
|
public string ResultValue { get; private set; } = string.Empty;
|
||||||
public static string EmptyHotkey => App.API.GetTranslation("none");
|
public static string EmptyHotkey => Localize.none();
|
||||||
|
|
||||||
private static bool isOpenFlowHotkey;
|
private static bool isOpenFlowHotkey;
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ public partial class HotkeyControlDialog : ContentDialog
|
||||||
{
|
{
|
||||||
WindowTitle = windowTitle switch
|
WindowTitle = windowTitle switch
|
||||||
{
|
{
|
||||||
"" or null => App.API.GetTranslation("hotkeyRegTitle"),
|
"" or null => Localize.hotkeyRegTitle(),
|
||||||
_ => windowTitle
|
_ => windowTitle
|
||||||
};
|
};
|
||||||
DefaultHotkey = defaultHotkey;
|
DefaultHotkey = defaultHotkey;
|
||||||
|
|
@ -146,10 +146,7 @@ public partial class HotkeyControlDialog : ContentDialog
|
||||||
Alert.Visibility = Visibility.Visible;
|
Alert.Visibility = Visibility.Visible;
|
||||||
if (registeredHotkeyData.RemoveHotkey is not null)
|
if (registeredHotkeyData.RemoveHotkey is not null)
|
||||||
{
|
{
|
||||||
tbMsg.Text = string.Format(
|
tbMsg.Text = Localize.hotkeyUnavailableEditable(description);
|
||||||
App.API.GetTranslation("hotkeyUnavailableEditable"),
|
|
||||||
description
|
|
||||||
);
|
|
||||||
SaveBtn.IsEnabled = false;
|
SaveBtn.IsEnabled = false;
|
||||||
SaveBtn.Visibility = Visibility.Collapsed;
|
SaveBtn.Visibility = Visibility.Collapsed;
|
||||||
OverwriteBtn.IsEnabled = true;
|
OverwriteBtn.IsEnabled = true;
|
||||||
|
|
@ -158,10 +155,7 @@ public partial class HotkeyControlDialog : ContentDialog
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tbMsg.Text = string.Format(
|
tbMsg.Text = Localize.hotkeyUnavailableUneditable(description);
|
||||||
App.API.GetTranslation("hotkeyUnavailableUneditable"),
|
|
||||||
description
|
|
||||||
);
|
|
||||||
SaveBtn.IsEnabled = false;
|
SaveBtn.IsEnabled = false;
|
||||||
SaveBtn.Visibility = Visibility.Visible;
|
SaveBtn.Visibility = Visibility.Visible;
|
||||||
OverwriteBtn.IsEnabled = false;
|
OverwriteBtn.IsEnabled = false;
|
||||||
|
|
@ -175,7 +169,7 @@ public partial class HotkeyControlDialog : ContentDialog
|
||||||
|
|
||||||
if (!CheckHotkeyAvailability(hotkey.Value, true))
|
if (!CheckHotkeyAvailability(hotkey.Value, true))
|
||||||
{
|
{
|
||||||
tbMsg.Text = App.API.GetTranslation("hotkeyUnavailable");
|
tbMsg.Text = Localize.hotkeyUnavailable();
|
||||||
Alert.Visibility = Visibility.Visible;
|
Alert.Visibility = Visibility.Visible;
|
||||||
SaveBtn.IsEnabled = false;
|
SaveBtn.IsEnabled = false;
|
||||||
SaveBtn.Visibility = Visibility.Visible;
|
SaveBtn.Visibility = Visibility.Visible;
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">إعادة تعيين الموقع</system:String>
|
<system:String x:Key="PositionReset">إعادة تعيين الموقع</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">الإعدادات</system:String>
|
<system:String x:Key="flowlauncher_settings">الإعدادات</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">خطأ في إعداد التشغيل عند بدء التشغيل</system:String>
|
<system:String x:Key="setAutoStartFailed">خطأ في إعداد التشغيل عند بدء التشغيل</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">إخفاء Flow Launcher عند فقدان التركيز</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">إخفاء Flow Launcher عند فقدان التركيز</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">عدم عرض إشعارات الإصدار الجديد</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">عدم عرض إشعارات الإصدار الجديد</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">تذكر آخر موقع</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">تذكر آخر موقع</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">الإصدار</system:String>
|
<system:String x:Key="plugin_query_version">الإصدار</system:String>
|
||||||
<system:String x:Key="plugin_query_web">الموقع الإلكتروني</system:String>
|
<system:String x:Key="plugin_query_web">الموقع الإلكتروني</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">إلغاء التثبيت</system:String>
|
<system:String x:Key="plugin_uninstall">إلغاء التثبيت</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">متجر الإضافات</system:String>
|
<system:String x:Key="pluginStore">متجر الإضافات</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">الأيقونات</system:String>
|
<system:String x:Key="icons">الأيقونات</system:String>
|
||||||
<system:String x:Key="about_activate_times">لقد قمت بتفعيل Flow Launcher {0} مرات</system:String>
|
<system:String x:Key="about_activate_times">لقد قمت بتفعيل Flow Launcher {0} مرات</system:String>
|
||||||
<system:String x:Key="checkUpdates">التحقق من التحديثات</system:String>
|
<system:String x:Key="checkUpdates">التحقق من التحديثات</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">كن راعيا</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">الإصدار الجديد {0} متاح، هل ترغب في إعادة تشغيل Flow Launcher لاستخدام التحديث</system:String>
|
<system:String x:Key="newVersionTips">الإصدار الجديد {0} متاح، هل ترغب في إعادة تشغيل Flow Launcher لاستخدام التحديث</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">فشل التحقق من التحديثات، يرجى التحقق من الاتصال وإعدادات البروكسي لـ api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">فشل التحقق من التحديثات، يرجى التحقق من الاتصال وإعدادات البروكسي لـ api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">فتح المجلد</system:String>
|
<system:String x:Key="userdatapathButton">فتح المجلد</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">خطأ</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">حجة للملف</system:String>
|
<system:String x:Key="fileManager_file_arg">حجة للملف</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">متصفح الويب الافتراضي</system:String>
|
<system:String x:Key="defaultBrowserTitle">متصفح الويب الافتراضي</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">نافذة جديدة</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">نافذة جديدة</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">تبويب جديد</system:String>
|
<system:String x:Key="defaultBrowser_newTab">تبويب جديد</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">الوضع الخاص</system:String>
|
<system:String x:Key="defaultBrowser_parameter">الوضع الخاص</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">تغيير الأولوية</system:String>
|
<system:String x:Key="changePriorityWindow">تغيير الأولوية</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">خطأ</system:String>
|
<system:String x:Key="errorTitle">خطأ</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">يرجى الانتظار...</system:String>
|
<system:String x:Key="pleaseWait">يرجى الانتظار...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Obnovit pozici</system:String>
|
<system:String x:Key="PositionReset">Obnovit pozici</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Nastavení</system:String>
|
<system:String x:Key="flowlauncher_settings">Nastavení</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Při nastavování spouštění došlo k chybě</system:String>
|
<system:String x:Key="setAutoStartFailed">Při nastavování spouštění došlo k chybě</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skrýt Flow Launcher při vykliknutí</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skrýt Flow Launcher při vykliknutí</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Nezobrazovat oznámení o nové verzi</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Nezobrazovat oznámení o nové verzi</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamatovat poslední pozici</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamatovat poslední pozici</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Verze</system:String>
|
<system:String x:Key="plugin_query_version">Verze</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Webová stránka</system:String>
|
<system:String x:Key="plugin_query_web">Webová stránka</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Odinstalovat</system:String>
|
<system:String x:Key="plugin_uninstall">Odinstalovat</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Obchod s pluginy</system:String>
|
<system:String x:Key="pluginStore">Obchod s pluginy</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Ikony</system:String>
|
<system:String x:Key="icons">Ikony</system:String>
|
||||||
<system:String x:Key="about_activate_times">Flow Launcher byl aktivován {0} krát</system:String>
|
<system:String x:Key="about_activate_times">Flow Launcher byl aktivován {0} krát</system:String>
|
||||||
<system:String x:Key="checkUpdates">Zkontrolovat Aktualizace</system:String>
|
<system:String x:Key="checkUpdates">Zkontrolovat Aktualizace</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Staňte se sponzorem</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Je k dispozici nová verze {0}, chcete Flow Launcher restartovat, aby se mohl aktualizovat?</system:String>
|
<system:String x:Key="newVersionTips">Je k dispozici nová verze {0}, chcete Flow Launcher restartovat, aby se mohl aktualizovat?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Hledání aktualizací se nezdařilo, zkontrolujte prosím své internetové připojení a nastavení proxy serveru k api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Hledání aktualizací se nezdařilo, zkontrolujte prosím své internetové připojení a nastavení proxy serveru k api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Chyba</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Argumenty pro Soubor</system:String>
|
<system:String x:Key="fileManager_file_arg">Argumenty pro Soubor</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Výchozí prohlížeč</system:String>
|
<system:String x:Key="defaultBrowserTitle">Výchozí prohlížeč</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nové okno</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nové okno</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nová karta</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nová karta</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Soukromý režim</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Soukromý režim</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Změnit prioritu</system:String>
|
<system:String x:Key="changePriorityWindow">Změnit prioritu</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Pokud před zkratku při zadávání přidáte znak "@", bude odpovíd
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Chyba</system:String>
|
<system:String x:Key="errorTitle">Chyba</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Počkejte prosím...</system:String>
|
<system:String x:Key="pleaseWait">Počkejte prosím...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Indstillinger</system:String>
|
<system:String x:Key="flowlauncher_settings">Indstillinger</system:String>
|
||||||
|
|
@ -75,6 +79,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="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="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skjul Flow Launcher ved mistet fokus</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skjul Flow Launcher ved mistet fokus</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Vis ikke notifikationer om nye versioner</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Vis ikke notifikationer om nye versioner</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Hjemmeside</system:String>
|
<system:String x:Key="plugin_query_web">Hjemmeside</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plugin-butik</system:String>
|
<system:String x:Key="pluginStore">Plugin-butik</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">Du har aktiveret Flow Launcher {0} gange</system:String>
|
<system:String x:Key="about_activate_times">Du har aktiveret Flow Launcher {0} gange</system:String>
|
||||||
<system:String x:Key="checkUpdates">Tjek for opdateringer</system:String>
|
<system:String x:Key="checkUpdates">Tjek for opdateringer</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Ny version {0} er tilgængelig, genstart venligst Flow Launcher</system:String>
|
<system:String x:Key="newVersionTips">Ny version {0} er tilgængelig, genstart venligst Flow Launcher</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg for fil</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg for fil</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Privattilstand</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Privattilstand</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Skift prioritet</system:String>
|
<system:String x:Key="changePriorityWindow">Skift prioritet</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Zurücksetzen der Position</system:String>
|
<system:String x:Key="PositionReset">Zurücksetzen der Position</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Position des Suchfensters zurücksetzen</system:String>
|
<system:String x:Key="PositionResetToolTip">Position des Suchfensters zurücksetzen</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Zum Suchen hier tippen</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Zum Suchen hier tippen</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Einstellungen</system:String>
|
<system:String x:Key="flowlauncher_settings">Einstellungen</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Nach der Deinstallation müssen Sie diese Aufgabe (Flow.Launcher Startup) via Task-Scheduler manuell entfernen</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Nach der Deinstallation müssen Sie diese Aufgabe (Flow.Launcher Startup) via Task-Scheduler manuell entfernen</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Fehler bei Einstellungsstart beim Start</system:String>
|
<system:String x:Key="setAutoStartFailed">Fehler bei Einstellungsstart beim Start</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Flow Launcher ausblenden, wenn Fokus verloren geht</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Flow Launcher ausblenden, wenn Fokus verloren geht</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Versionsbenachrichtigungen nicht zeigen</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Versionsbenachrichtigungen nicht zeigen</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Ort des Suchfensters</system:String>
|
<system:String x:Key="SearchWindowPosition">Ort des Suchfensters</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Letzte Position merken</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Letzte Position merken</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Ergebnisse der Homepage zeigen, wenn Abfragetext leer ist.</system:String>
|
<system:String x:Key="homePageToolTip">Ergebnisse der Homepage zeigen, wenn Abfragetext leer ist.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Historie-Ergebnisse auf Homepage zeigen</system:String>
|
<system:String x:Key="historyResultsForHomePage">Historie-Ergebnisse auf Homepage zeigen</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximal gezeigte Historie-Ergebnisse auf Homepage</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximal gezeigte Historie-Ergebnisse auf Homepage</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Dies kann nur bearbeitet werden, wenn das Plug-in das Home-Feature unterstützt und die Homepage aktiviert ist.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Dies kann nur bearbeitet werden, wenn das Plug-in das Home-Feature unterstützt und die Homepage aktiviert ist.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Suchfenster an vorderster zeigen</system:String>
|
<system:String x:Key="showAtTopmost">Suchfenster an vorderster zeigen</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Setzt die Einstellung 'Immer im Vordergrund' anderer Programme außer Kraft und zeigt Flow in der vordersten Position an.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Setzt die Einstellung 'Immer im Vordergrund' anderer Programme außer Kraft und zeigt Flow in der vordersten Position an.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Deinstallieren</system:String>
|
<system:String x:Key="plugin_uninstall">Deinstallieren</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Plug-in-Einstellungen können nicht entfernt werden</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Plug-in-Einstellungen können nicht entfernt werden</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plug-ins: {0} - Plug-in-Einstellungsdateien können nicht entfernt werden, bitte entfernen Sie diese manuell</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plug-ins: {0} - Plug-in-Einstellungsdateien können nicht entfernt werden, bitte entfernen Sie diese manuell</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Plug-in-Cache kann nicht entfernt werden</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Plug-in-Cache kann nicht entfernt werden</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plug-in-Store</system:String>
|
<system:String x:Key="pluginStore">Plug-in-Store</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">Sie haben Flow Launcher {0} mal aktiviert</system:String>
|
<system:String x:Key="about_activate_times">Sie haben Flow Launcher {0} mal aktiviert</system:String>
|
||||||
<system:String x:Key="checkUpdates">Nach Updates suchen</system:String>
|
<system:String x:Key="checkUpdates">Nach Updates suchen</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Ein Sponsor werden</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Neue Version {0} ist verfügbar. Möchten Sie Flow Launcher neu starten, um das Update zu verwenden?</system:String>
|
<system:String x:Key="newVersionTips">Neue Version {0} ist verfügbar. Möchten Sie Flow Launcher neu starten, um das Update zu verwenden?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Überprüfung der Updates fehlgeschlagen. Bitte überprüfen Sie Ihre Verbindungs- und Proxy-Einstellungen zu api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Überprüfung der Updates fehlgeschlagen. Bitte überprüfen Sie Ihre Verbindungs- und Proxy-Einstellungen zu api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Ordner öffnen</system:String>
|
<system:String x:Key="userdatapathButton">Ordner öffnen</system:String>
|
||||||
<system:String x:Key="advanced">Erweitert</system:String>
|
<system:String x:Key="advanced">Erweitert</system:String>
|
||||||
<system:String x:Key="logLevel">Log-Ebene</system:String>
|
<system:String x:Key="logLevel">Log-Ebene</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Fehler</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Einstellung der Fensterschriftart</system:String>
|
<system:String x:Key="settingWindowFontTitle">Einstellung der Fensterschriftart</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Der Dateimanager '{0}' konnte nicht unter '{1}' gefunden werden. Möchten Sie fortfahren?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Der Dateimanager '{0}' konnte nicht unter '{1}' gefunden werden. Möchten Sie fortfahren?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Pfadfehler bei Dateimanager</system:String>
|
<system:String x:Key="fileManagerPathError">Pfadfehler bei Dateimanager</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Webbrowser per Default</system:String>
|
<system:String x:Key="defaultBrowserTitle">Webbrowser per Default</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Neues Fenster</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Neues Fenster</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Neuer Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Neuer Tab</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Privater Modus</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Privater Modus</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Priorität ändern</system:String>
|
<system:String x:Key="changePriorityWindow">Priorität ändern</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Wenn Sie bei der Eingabe eines Shortcuts ein '@'-Präfix hinzufügen, stimmt die
|
||||||
Der spezifizierte Dateimanager konnte nicht gefunden werden. Bitte überprüfen Sie die Einstellung des benutzerdefinierten Dateimanagers unter Einstellungen > Allgemein.
|
Der spezifizierte Dateimanager konnte nicht gefunden werden. Bitte überprüfen Sie die Einstellung des benutzerdefinierten Dateimanagers unter Einstellungen > Allgemein.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Fehler</system:String>
|
<system:String x:Key="errorTitle">Fehler</system:String>
|
||||||
<system:String x:Key="folderOpenError">Beim Öffnen des Ordners ist ein Fehler aufgetreten. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Beim Öffnen der URL im Browser ist ein Fehler aufgetreten. Bitte überprüfen Sie die Konfiguration Ihres Default-Webbrowsers im Abschnitt „Allgemein“ des Einstellungsfensters</system:String>
|
<system:String x:Key="browserOpenError">Beim Öffnen der URL im Browser ist ein Fehler aufgetreten. Bitte überprüfen Sie die Konfiguration Ihres Default-Webbrowsers im Abschnitt „Allgemein“ des Einstellungsfensters</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Bitte warten Sie ...</system:String>
|
<system:String x:Key="pleaseWait">Bitte warten Sie ...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,10 @@
|
||||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Settings</system:String>
|
<system:String x:Key="flowlauncher_settings">Settings</system:String>
|
||||||
|
|
@ -77,6 +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="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="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="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
|
<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="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||||
|
|
@ -166,6 +172,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -209,6 +219,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -219,6 +231,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
||||||
|
|
@ -438,7 +454,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">You have activated Flow Launcher {0} times</system:String>
|
<system:String x:Key="about_activate_times">You have activated Flow Launcher {0} times</system:String>
|
||||||
<system:String x:Key="checkUpdates">Check for Updates</system:String>
|
<system:String x:Key="checkUpdates">Check for Updates</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">New version {0} is available, would you like to restart Flow Launcher to use the update?</system:String>
|
<system:String x:Key="newVersionTips">New version {0} is available, would you like to restart Flow Launcher to use the update?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -462,8 +478,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -485,6 +503,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
||||||
|
|
@ -495,6 +514,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
||||||
|
|
@ -582,8 +603,9 @@
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Ajustes</system:String>
|
<system:String x:Key="flowlauncher_settings">Ajustes</system:String>
|
||||||
|
|
@ -75,6 +79,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="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="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el enfoque</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el enfoque</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versión</system:String>
|
<system:String x:Key="plugin_query_version">Versión</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Sitio web</system:String>
|
<system:String x:Key="plugin_query_web">Sitio web</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Tienda de Plugins</system:String>
|
<system:String x:Key="pluginStore">Tienda de Plugins</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">Has activado Flow Launcher {0} veces</system:String>
|
<system:String x:Key="about_activate_times">Has activado Flow Launcher {0} veces</system:String>
|
||||||
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
|
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para usar la actualización?</system:String>
|
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para usar la actualización?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Falló la comprobación de actualizaciones, compruebe su conexión y configuración de proxy a api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Falló la comprobación de actualizaciones, compruebe su conexión y configuración de proxy a api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg para Archivo</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg para Archivo</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Navegador Web Predeterminado</system:String>
|
<system:String x:Key="defaultBrowserTitle">Navegador Web Predeterminado</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nueva Ventana</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nueva Ventana</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nueva Pestaña</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nueva Pestaña</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Modo Privado</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Modo Privado</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Cambiar Prioridad</system:String>
|
<system:String x:Key="changePriorityWindow">Cambiar Prioridad</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Por favor espere...</system:String>
|
<system:String x:Key="pleaseWait">Por favor espere...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@
|
||||||
<system:String x:Key="userDataDuplicated">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.</system:String>
|
<system:String x:Key="userDataDuplicated">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.</system:String>
|
||||||
|
|
||||||
<!-- Plugin Loader -->
|
<!-- Plugin Loader -->
|
||||||
<system:String x:Key="pluginHasErrored">El siguiente complemento ha sufrido un error y no puede cargarse:</system:String>
|
<system:String x:Key="pluginHasErrored">El siguiente complemento ha sufrido un fallo y no se puede cargar:</system:String>
|
||||||
<system:String x:Key="pluginsHaveErrored">Los siguientes complementos han sufrido un error y no pueden cargarse:</system:String>
|
<system:String x:Key="pluginsHaveErrored">Los siguientes complementos han sufrido un fallo y no se pueden cargar:</system:String>
|
||||||
<system:String x:Key="referToLogs">Por favor, consulte los registros para más información</system:String>
|
<system:String x:Key="referToLogs">Por favor, consulte los registros para más información</system:String>
|
||||||
|
|
||||||
<!-- Http -->
|
<!-- Http -->
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Restablecer posición</system:String>
|
<system:String x:Key="PositionReset">Restablecer posición</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Restablece la posición de la ventana de búsqueda</system:String>
|
<system:String x:Key="PositionResetToolTip">Restablece la posición de la ventana de búsqueda</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Escribir aquí para buscar</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Escribir aquí para buscar</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Este complemento aún se está inicializando...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Seleccione este resultado para volver a realizar la consulta</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: ¡No se ha recibido respuesta!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Seleccione este resultado para más información</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Configuración</system:String>
|
<system:String x:Key="flowlauncher_settings">Configuración</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Después de la desinstalación, es necesario eliminar manualmente la tarea (Flow.Launcher Startup) mediante el Programador de Tareas</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Después de la desinstalación, es necesario eliminar manualmente la tarea (Flow.Launcher Startup) mediante el Programador de Tareas</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Error de configuración de arranque al iniciar</system:String>
|
<system:String x:Key="setAutoStartFailed">Error de configuración de arranque al iniciar</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el foco</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el foco</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Mostrar la barra de tareas cuando Flow Launcher está abierto</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Muestra temporalmente la barra de tareas cuando Flow Launcher está abierto, útil para barras de tareas que se ocultan automáticamente.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Ubicación de la ventana de búsqueda</system:String>
|
<system:String x:Key="SearchWindowPosition">Ubicación de la ventana de búsqueda</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Recordar última ubicación</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Recordar última ubicación</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Muestra los resultados de la página de inicio cuando el texto de la consulta está vacío.</system:String>
|
<system:String x:Key="homePageToolTip">Muestra los resultados de la página de inicio cuando el texto de la consulta está vacío.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Mostrar historial de resultados en la página de inicio</system:String>
|
<system:String x:Key="historyResultsForHomePage">Mostrar historial de resultados en la página de inicio</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Número máximo de resultados del historial en la página de inicio</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Número máximo de resultados del historial en la página de inicio</system:String>
|
||||||
|
<system:String x:Key="historyStyle">Estilo del historial</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Elija el tipo de historial que desea mostrar en el historial y la página de inicio</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Historial de consultas</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Historial de últimas aperturas</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Esto solo se puede editar si el complemento soporta la función de Inicio y la Página de Inicio está activada.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Esto solo se puede editar si el complemento soporta la función de Inicio y la Página de Inicio está activada.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Mostrar ventana de búsqueda en primer plano</system:String>
|
<system:String x:Key="showAtTopmost">Mostrar ventana de búsqueda en primer plano</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Anula el ajuste «Siempre arriba» de otros programas y muestra Flow en primer plano.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Anula el ajuste «Siempre arriba» de otros programas y muestra Flow en primer plano.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versión</system:String>
|
<system:String x:Key="plugin_query_version">Versión</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Sitio web</system:String>
|
<system:String x:Key="plugin_query_web">Sitio web</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Tiempo de retardo de búsqueda: predeterminado</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Tiempo de retardo de búsqueda: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fallo al eliminar la configuración del complemento</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fallo al eliminar la configuración del complemento</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Complementos: {0} - Fallo al eliminar los archivos de configuración del complemento, por favor elimínelos manualmente</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Complementos: {0} - Fallo al eliminar los archivos de configuración del complemento, por favor elimínelos manualmente</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fallo al eliminar la caché del complemento</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fallo al eliminar la caché del complemento</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fallo al desinstalar {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fallo al desinstalar {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">No se puede encontrar plugin.json en el archivo zip extraído, o esta ruta {0} no existe</system:String>
|
<system:String x:Key="fileNotFoundMessage">No se puede encontrar plugin.json en el archivo zip extraído, o esta ruta {0} no existe</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">Ya existe un complemento con el mismo ID y versión, o la versión es superior a la de este complemento descargado</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">Ya existe un complemento con el mismo ID y versión, o la versión es superior a la de este complemento descargado</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error al crear el panel de configuración para el complemento {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requiere la versión {1} de Flow para ejecutarse</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow no cumple los requisitos mínimos de versión para ejecutar {0}. ¿Desea continuar con la instalación?{1}{1}Recomendamos actualizar Flow a la última versión para garantizar que {0} funcione sin problemas.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">No se pudo instalar el plugin porque plugin.json no es válido o está dañado</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Tienda complementos</system:String>
|
<system:String x:Key="pluginStore">Tienda complementos</system:String>
|
||||||
|
|
@ -332,7 +348,7 @@
|
||||||
<system:String x:Key="PlaceholderTextTip">Cambia el texto del marcador de posición. La entrada vacía utilizará: {0}</system:String>
|
<system:String x:Key="PlaceholderTextTip">Cambia el texto del marcador de posición. La entrada vacía utilizará: {0}</system:String>
|
||||||
<system:String x:Key="KeepMaxResults">Tamaño fijo de la ventana</system:String>
|
<system:String x:Key="KeepMaxResults">Tamaño fijo de la ventana</system:String>
|
||||||
<system:String x:Key="KeepMaxResultsToolTip">El tamaño de la ventana no se puede ajustar mediante arrastre.</system:String>
|
<system:String x:Key="KeepMaxResultsToolTip">El tamaño de la ventana no se puede ajustar mediante arrastre.</system:String>
|
||||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">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</system:String>
|
||||||
|
|
||||||
<!-- Setting Hotkey -->
|
<!-- Setting Hotkey -->
|
||||||
<system:String x:Key="hotkey">Atajo de teclado</system:String>
|
<system:String x:Key="hotkey">Atajo de teclado</system:String>
|
||||||
|
|
@ -395,7 +411,7 @@
|
||||||
<system:String x:Key="showBadges">Mostrar distintivos en resultados</system:String>
|
<system:String x:Key="showBadges">Mostrar distintivos en resultados</system:String>
|
||||||
<system:String x:Key="showBadgesToolTip">Para los complementos compatibles, se muestran distintivos que ayudan a distinguirlos más fácilmente.</system:String>
|
<system:String x:Key="showBadgesToolTip">Para los complementos compatibles, se muestran distintivos que ayudan a distinguirlos más fácilmente.</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnly">Mostrar distintivos en resultados solo para consulta global</system:String>
|
<system:String x:Key="showBadgesGlobalOnly">Mostrar distintivos en resultados solo para consulta global</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Mostrar distintivos solo para los resultados de consultas globales</system:String>
|
<system:String x:Key="showBadgesGlobalOnlyToolTip">Muestra distintivos solo para los resultados de consultas globales</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkey">Salto de diálogo</system:String>
|
<system:String x:Key="dialogJumpHotkey">Salto de diálogo</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkeyToolTip">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.</system:String>
|
<system:String x:Key="dialogJumpHotkeyToolTip">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.</system:String>
|
||||||
<system:String x:Key="dialogJump">Salto de diálogo</system:String>
|
<system:String x:Key="dialogJump">Salto de diálogo</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Iconos</system:String>
|
<system:String x:Key="icons">Iconos</system:String>
|
||||||
<system:String x:Key="about_activate_times">Ha activado Flow Launcher {0} veces</system:String>
|
<system:String x:Key="about_activate_times">Ha activado Flow Launcher {0} veces</system:String>
|
||||||
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
|
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Hágase Patrocinador</system:String>
|
<system:String x:Key="BecomeASponsor">Conviértase en Patrocinador</system:String>
|
||||||
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para actualizar?</system:String>
|
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para actualizar?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Ha fallado la comprobación de las actualizaciones, por favor, compruebe la configuración de su proxy y conexión a api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Ha fallado la comprobación de las actualizaciones, por favor, compruebe la configuración de su proxy y conexión a api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Abrir carpeta</system:String>
|
<system:String x:Key="userdatapathButton">Abrir carpeta</system:String>
|
||||||
<system:String x:Key="advanced">Avanzado</system:String>
|
<system:String x:Key="advanced">Avanzado</system:String>
|
||||||
<system:String x:Key="logLevel">Nivel de registro</system:String>
|
<system:String x:Key="logLevel">Nivel de registro</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Depuración</system:String>
|
<system:String x:Key="LogLevelNONE">Silencioso</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Información</system:String>
|
<system:String x:Key="LogLevelINFO">Información</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Depuración</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Configuración de fuente de la ventana</system:String>
|
<system:String x:Key="settingWindowFontTitle">Configuración de fuente de la ventana</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Argumentos del archivo</system:String>
|
<system:String x:Key="fileManager_file_arg">Argumentos del archivo</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">El administrador de archivos '{0}' no pudo ser localizado en '{1}'. ¿Desea continuar?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">El administrador de archivos '{0}' no pudo ser localizado en '{1}'. ¿Desea continuar?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Error de ruta del administrador de archivos</system:String>
|
<system:String x:Key="fileManagerPathError">Error de ruta del administrador de archivos</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Explorador de archivos</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Navegador web predeterminado</system:String>
|
<system:String x:Key="defaultBrowserTitle">Navegador web predeterminado</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nueva ventana</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nueva ventana</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nueva pestaña</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nueva pestaña</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Predeterminado</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Nuevo perfil</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Cambiar la prioridad</system:String>
|
<system:String x:Key="changePriorityWindow">Cambiar la prioridad</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Si añade un prefijo "@" al introducir un acceso directo, éste coinci
|
||||||
No se ha encontrado el administrador de archivos especificado. Compruebe la configuración del Administrador de archivos personalizado en Configuración > General.
|
No se ha encontrado el administrador de archivos especificado. Compruebe la configuración del Administrador de archivos personalizado en Configuración > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">Se ha producido un error al abrir la carpeta. {0}</system:String>
|
<system:String x:Key="folderOpenError">Se ha producido un error al abrir la carpeta.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Se ha producido un error al abrir la URL en el navegador. Por favor, compruebe la configuración de su navegador web predeterminado en la sección General de la ventana de configuración</system:String>
|
<system:String x:Key="browserOpenError">Se ha producido un error al abrir la URL en el navegador. Por favor, compruebe la configuración de su navegador web predeterminado en la sección General de la ventana de configuración</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">No se encuentra el archivo o directorio: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Por favor espere...</system:String>
|
<system:String x:Key="pleaseWait">Por favor espere...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Réinitialiser la position</system:String>
|
<system:String x:Key="PositionReset">Réinitialiser la position</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Réinitialiser la position de la fenêtre de recherche</system:String>
|
<system:String x:Key="PositionResetToolTip">Réinitialiser la position de la fenêtre de recherche</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Tapez ici pour rechercher</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Tapez ici pour rechercher</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Ce plugin est toujours en cours d'initialisation...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Sélectionner ce résultat pour la requête</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Ne répond pas !</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Sélectionnez ce résultat pour plus d'informations</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Paramètres</system:String>
|
<system:String x:Key="flowlauncher_settings">Paramètres</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Après une désinstallation, vous devez supprimer manuellement cette tâche (Flow.Launcher Startup) via le planificateur de tâches</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Après une désinstallation, vous devez supprimer manuellement cette tâche (Flow.Launcher Startup) via le planificateur de tâches</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Erreur lors de la configuration du lancement au démarrage</system:String>
|
<system:String x:Key="setAutoStartFailed">Erreur lors de la configuration du lancement au démarrage</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Cacher Flow Launcher lors de la perte de focus</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Cacher Flow Launcher lors de la perte de focus</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Afficher la barre des tâches lorsque Flow Launcher est ouvert</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Afficher temporairement la barre des tâches lorsque Flow Launcher est ouvert, utile pour les barres de tâches auto-masquées.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Ne pas afficher le message de mise à jour pour les nouvelles versions</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Ne pas afficher le message de mise à jour pour les nouvelles versions</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Emplacement de la fenêtre de recherche</system:String>
|
<system:String x:Key="SearchWindowPosition">Emplacement de la fenêtre de recherche</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Se souvenir de la dernière position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Se souvenir de la dernière position</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Afficher les résultats de la page d'accueil lorsque le texte de la requête est vide.</system:String>
|
<system:String x:Key="homePageToolTip">Afficher les résultats de la page d'accueil lorsque le texte de la requête est vide.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Afficher les résultats de l'historique sur la page d'accueil</system:String>
|
<system:String x:Key="historyResultsForHomePage">Afficher les résultats de l'historique sur la page d'accueil</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum de résultats de l'historique affichés sur la page d'accueil</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum de résultats de l'historique affichés sur la page d'accueil</system:String>
|
||||||
|
<system:String x:Key="historyStyle">Style d'historique</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choisissez le type d'historique à afficher dans l'historique et la page d'accueil</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Historique des requêtes</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Historique des dernières ouvertures</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Ceci ne peut être édité que si le plugin prend en charge la fonction Accueil et que la page d'accueil est activée.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Ceci ne peut être édité que si le plugin prend en charge la fonction Accueil et que la page d'accueil est activée.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Afficher la fenêtre de recherche en premier plan</system:String>
|
<system:String x:Key="showAtTopmost">Afficher la fenêtre de recherche en premier plan</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Outrepasse le paramètre 'toujours en premier plan' des autres programmes et affiche Flow Launcher en première position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Outrepasse le paramètre 'toujours en premier plan' des autres programmes et affiche Flow Launcher en première position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Site Web</system:String>
|
<system:String x:Key="plugin_query_web">Site Web</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Désinstaller</system:String>
|
<system:String x:Key="plugin_uninstall">Désinstaller</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Délai de recherche : par défaut</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Délai de recherche : {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Échec de la suppression des paramètres du plugin</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Échec de la suppression des paramètres du plugin</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins : {0} - Échec de la suppression des fichiers de configuration des plugins, veuillez les supprimer manuellement</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins : {0} - Échec de la suppression des fichiers de configuration des plugins, veuillez les supprimer manuellement</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Échec de la suppression du cache du plugin</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Échec de la suppression du cache du plugin</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Échec de la désinstallation de {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Échec de la désinstallation de {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Impossible de trouver le fichier plugin.json dans le fichier zip extrait, ou ce chemin {0} n'existe pas</system:String>
|
<system:String x:Key="fileNotFoundMessage">Impossible de trouver le fichier plugin.json dans le fichier zip extrait, ou ce chemin {0} n'existe pas</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">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é</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">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é</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Erreur lors de la création du panneau de configuration pour le plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} nécessite la version {1} de Flow pour fonctionner</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow ne répond pas aux exigences de version minimale pour que {0} puisse fonctionner. Voulez-vous continuer l'installation ?{1}{1}Nous vous recommandons de mettre à jour Flow vers la dernière version pour vous assurer que {0} fonctionne sans problème.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Impossible d'installer le plugin car plugin.json est invalide ou corrompu</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Magasin des Plugins</system:String>
|
<system:String x:Key="pluginStore">Magasin des Plugins</system:String>
|
||||||
|
|
@ -396,24 +412,24 @@
|
||||||
<system:String x:Key="showBadgesToolTip">Pour les plugins pris en charge, des badges sont affichés afin de les distinguer plus facilement.</system:String>
|
<system:String x:Key="showBadgesToolTip">Pour les plugins pris en charge, des badges sont affichés afin de les distinguer plus facilement.</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnly">Afficher les badges de résultats pour la requête globale uniquement</system:String>
|
<system:String x:Key="showBadgesGlobalOnly">Afficher les badges de résultats pour la requête globale uniquement</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Afficher les badges pour les résultats des requêtes globales uniquement</system:String>
|
<system:String x:Key="showBadgesGlobalOnlyToolTip">Afficher les badges pour les résultats des requêtes globales uniquement</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
<system:String x:Key="dialogJumpHotkey">Saut de dialogue</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkeyToolTip">Entrez le raccourci pour naviguer rapidement dans la fenêtre de dialogue Ouvrir/Enregistrer sous, vers le chemin du gestionnaire de fichiers actuel.</system:String>
|
<system:String x:Key="dialogJumpHotkeyToolTip">Entrez le raccourci pour naviguer rapidement dans la fenêtre de dialogue Ouvrir/Enregistrer sous, vers le chemin du gestionnaire de fichiers actuel.</system:String>
|
||||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
<system:String x:Key="dialogJump">Saut de dialogue</system:String>
|
||||||
<system:String x:Key="dialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous s'ouvre, accédez rapidement au chemin d'accès actuel du gestionnaire de fichiers.</system:String>
|
<system:String x:Key="dialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous s'ouvre, accédez rapidement au chemin d'accès actuel du gestionnaire de fichiers.</system:String>
|
||||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
<system:String x:Key="autoDialogJump">Saut de dialogue automatique</system:String>
|
||||||
<system:String x:Key="autoDialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous est affichée, naviguez automatiquement vers le chemin du gestionnaire de fichiers actuel. (Expérimental)</system:String>
|
<system:String x:Key="autoDialogJumpToolTip">Lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous est affichée, naviguez automatiquement vers le chemin du gestionnaire de fichiers actuel. (Expérimental)</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
<system:String x:Key="showDialogJumpWindow">Afficher la fenêtre de saut de dialogue</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
<system:String x:Key="showDialogJumpWindowToolTip">Afficher la fenêtre de recherche de saut de dialogue lorsque la fenêtre de dialogue Ouvrir/Enregistrer sous est affichée pour naviguer rapidement vers les emplacements de fichier/dossier.</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
<system:String x:Key="dialogJumpWindowPosition">Position de la fenêtre de saut de dialogue</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
<system:String x:Key="dialogJumpWindowPositionToolTip">Sélectionnez la position pour la fenêtre de recherche de saut de dialogue</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixé sous la fenêtre de dialogue Ouvrir/Enregistrer sous. Affiché à l'ouverture et reste jusqu'à ce que la fenêtre soit fermée.</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Position de la fenêtre de recherche par défaut. Affiché lorsqu'il est déclenché par le raccourci clavier de la fenêtre de recherche</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpResultBehaviour">Comportement de navigation des résultats du saut de dialogue</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
<system:String x:Key="dialogJumpResultBehaviourToolTip">Comportement pour naviguer dans la fenêtre de dialogue Ouvrir/Enregistrer sous vers le chemin de résultat sélectionné</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Clic gauche ou touche Entrée</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Clique droit</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourRightClick">Clique droit</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviour">Comportement de navigation des résultats du saut de dialogue</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Comportement pour naviguer dans la fenêtre de dialogue Ouvrir/Enregistrer sous lorsque le résultat est un chemin de fichier</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Remplir le chemin complet dans la zone de nom de fichier</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Remplir le chemin complet dans la zone de nom de fichier</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Remplir le chemin complet dans la zone de nom de fichier et ouvrir</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Remplir le chemin complet dans la zone de nom de fichier et ouvrir</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Remplir le répertoire dans la zone de chemin</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Remplir le répertoire dans la zone de chemin</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icônes</system:String>
|
<system:String x:Key="icons">Icônes</system:String>
|
||||||
<system:String x:Key="about_activate_times">Vous avez utilisé Flow Launcher {0} fois</system:String>
|
<system:String x:Key="about_activate_times">Vous avez utilisé Flow Launcher {0} fois</system:String>
|
||||||
<system:String x:Key="checkUpdates">Vérifier les mises à jour</system:String>
|
<system:String x:Key="checkUpdates">Vérifier les mises à jour</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Devenir un Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Devenez un sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Nouvelle version {0} disponible, souhaitez-vous redémarrer Flow Launcher pour l'installer ?</system:String>
|
<system:String x:Key="newVersionTips">Nouvelle version {0} disponible, souhaitez-vous redémarrer Flow Launcher pour l'installer ?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Échec de la vérification de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Échec de la vérification de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -466,8 +482,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Ouvrir le dossier</system:String>
|
<system:String x:Key="userdatapathButton">Ouvrir le dossier</system:String>
|
||||||
<system:String x:Key="advanced">Avancé</system:String>
|
<system:String x:Key="advanced">Avancé</system:String>
|
||||||
<system:String x:Key="logLevel">Niveau de journalisation</system:String>
|
<system:String x:Key="logLevel">Niveau de journalisation</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Débogage</system:String>
|
<system:String x:Key="LogLevelNONE">Silencieux</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Erreur</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Débogage</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Réglage de la police de la fenêtre</system:String>
|
<system:String x:Key="settingWindowFontTitle">Réglage de la police de la fenêtre</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -489,6 +507,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arguments pour le fichier</system:String>
|
<system:String x:Key="fileManager_file_arg">Arguments pour le fichier</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Le gestionnaire de fichiers '{0}' n'a pas pu être situé à '{1}'. Souhaitez-vous continuer ?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Le gestionnaire de fichiers '{0}' n'a pas pu être situé à '{1}'. Souhaitez-vous continuer ?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Erreur de chemin du gestionnaire de fichiers</system:String>
|
<system:String x:Key="fileManagerPathError">Erreur de chemin du gestionnaire de fichiers</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Explorateur de fichiers</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Navigateur web par défaut</system:String>
|
<system:String x:Key="defaultBrowserTitle">Navigateur web par défaut</system:String>
|
||||||
|
|
@ -499,6 +518,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nouvelle fenêtre</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nouvelle fenêtre</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nouvel onglet</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nouvel onglet</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Mode privé</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Mode privé</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Par défaut</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Nouveau profil</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Changer la priorité</system:String>
|
<system:String x:Key="changePriorityWindow">Changer la priorité</system:String>
|
||||||
|
|
@ -588,8 +609,9 @@ Si vous ajoutez un préfixe "@" lors de la saisie d'un raccourci, celu
|
||||||
Le gestionnaire de fichiers spécifié n'a pas été trouvé. Veuillez vérifier le paramètre Gestionnaire de fichiers personnalisé dans Paramètres > Général.
|
Le gestionnaire de fichiers spécifié n'a pas été trouvé. Veuillez vérifier le paramètre Gestionnaire de fichiers personnalisé dans Paramètres > Général.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Erreur</system:String>
|
<system:String x:Key="errorTitle">Erreur</system:String>
|
||||||
<system:String x:Key="folderOpenError">Une erreur s'est produite lors de l'ouverture du dossier. {0}</system:String>
|
<system:String x:Key="folderOpenError">Une erreur s'est produite lors de l'ouverture du dossier.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Une erreur s'est produite lors de l'ouverture de l'URL dans le navigateur. Veuillez vérifier la configuration de votre navigateur Web par défaut dans la section "Général" de la fenêtre des paramètres</system:String>
|
<system:String x:Key="browserOpenError">Une erreur s'est produite lors de l'ouverture de l'URL dans le navigateur. Veuillez vérifier la configuration de votre navigateur Web par défaut dans la section "Général" de la fenêtre des paramètres</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">Fichier ou répertoire introuvable : {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Veuillez patienter...</system:String>
|
<system:String x:Key="pleaseWait">Veuillez patienter...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">אנא בחר את קובץ ההפעלה {0}</system:String>
|
<system:String x:Key="runtimePluginChooseRuntimeExecutable">אנא בחר את קובץ ההפעלה {0}</system:String>
|
||||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||||
Your selected {0} executable is invalid.
|
קובץ ההפעלה {0} שבחרת אינו חוקי.
|
||||||
{2}{2}
|
{2}{2}
|
||||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
לחץ על כן אם ברצונך, בחר את {0} ההפעלה הקודמת. לחץ על לא אם ברצונך להוריד את {1}
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">לא ניתן להגדיר נתיב הפעלה {0}, אנא נסה שוב בהגדרות Flow (גלול עד למטה).</system:String>
|
<system:String x:Key="runtimePluginUnableToSetExecutablePath">לא ניתן להגדיר נתיב הפעלה {0}, אנא נסה שוב בהגדרות Flow (גלול עד למטה).</system:String>
|
||||||
<system:String x:Key="failedToInitializePluginsTitle">נכשל בהפעלת תוספים</system:String>
|
<system:String x:Key="failedToInitializePluginsTitle">נכשל בהפעלת תוספים</system:String>
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">איפוס מיקום</system:String>
|
<system:String x:Key="PositionReset">איפוס מיקום</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">אפס את מיקום חלון החיפוש</system:String>
|
<system:String x:Key="PositionResetToolTip">אפס את מיקום חלון החיפוש</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">הקלד כאן כדי לחפש</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">הקלד כאן כדי לחפש</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">הגדרות</system:String>
|
<system:String x:Key="flowlauncher_settings">הגדרות</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">לאחר הסרת ההתקנה, עליך להסיר ידנית משימה זו (Flow.Launcher Startup) דרך מתזמן המשימות</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">לאחר הסרת ההתקנה, עליך להסיר ידנית משימה זו (Flow.Launcher Startup) דרך מתזמן המשימות</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">שגיאה בהגדרת ההפעלה בעת הפעלת windows</system:String>
|
<system:String x:Key="setAutoStartFailed">שגיאה בהגדרת ההפעלה בעת הפעלת windows</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">הסתר את Flow Launcher כאשר הוא אינו החלון הפעיל</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">הסתר את Flow Launcher כאשר הוא אינו החלון הפעיל</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">אל תציג התראות על גרסה חדשה</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">אל תציג התראות על גרסה חדשה</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">מיקום חלון חיפוש</system:String>
|
<system:String x:Key="SearchWindowPosition">מיקום חלון חיפוש</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">זכור את המיקום האחרון</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">זכור את המיקום האחרון</system:String>
|
||||||
|
|
@ -170,6 +176,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">ניתן לערוך זאת רק אם התוסף תומך בתכונת הבית ודף הבית מופעל.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">ניתן לערוך זאת רק אם התוסף תומך בתכונת הבית ודף הבית מופעל.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">עוקף את הגדרת תמיד עליון של תוכנות אחרות, ומציג את Flow במיקום הגבוה ביותר.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">עוקף את הגדרת תמיד עליון של תוכנות אחרות, ומציג את Flow במיקום הגבוה ביותר.</system:String>
|
||||||
|
|
@ -213,6 +223,8 @@
|
||||||
<system:String x:Key="plugin_query_version">גרסה</system:String>
|
<system:String x:Key="plugin_query_version">גרסה</system:String>
|
||||||
<system:String x:Key="plugin_query_web">אתר</system:String>
|
<system:String x:Key="plugin_query_web">אתר</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">הסר התקנה</system:String>
|
<system:String x:Key="plugin_uninstall">הסר התקנה</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">נכשל בהסרת הגדרות התוסף</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">נכשל בהסרת הגדרות התוסף</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">תוספים: {0} - נכשל בהסרת קבצי הגדרות התוסף, יש להסירם ידנית</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">תוספים: {0} - נכשל בהסרת קבצי הגדרות התוסף, יש להסירם ידנית</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">נכשל בהסרת מטמון התוסף</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">נכשל בהסרת מטמון התוסף</system:String>
|
||||||
|
|
@ -223,6 +235,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">חנות תוספים</system:String>
|
<system:String x:Key="pluginStore">חנות תוספים</system:String>
|
||||||
|
|
@ -442,7 +458,7 @@
|
||||||
<system:String x:Key="icons">סמלים</system:String>
|
<system:String x:Key="icons">סמלים</system:String>
|
||||||
<system:String x:Key="about_activate_times">הפעלת את Flow Launcher {0} פעמים</system:String>
|
<system:String x:Key="about_activate_times">הפעלת את Flow Launcher {0} פעמים</system:String>
|
||||||
<system:String x:Key="checkUpdates">בדוק עדכונים</system:String>
|
<system:String x:Key="checkUpdates">בדוק עדכונים</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">תן חסות</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">גרסה חדשה {0} זמינה, האם ברצונך להפעיל מחדש את Flow Launcher כדי להשתמש בעדכון?</system:String>
|
<system:String x:Key="newVersionTips">גרסה חדשה {0} זמינה, האם ברצונך להפעיל מחדש את Flow Launcher כדי להשתמש בעדכון?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">בדיקת העדכונים נכשלה, אנא בדוק את הגדרות החיבור ואת הגדרות ה-Proxy שלך לכתובת api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">בדיקת העדכונים נכשלה, אנא בדוק את הגדרות החיבור ואת הגדרות ה-Proxy שלך לכתובת api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -466,8 +482,10 @@
|
||||||
<system:String x:Key="userdatapathButton">פתח תיקיה</system:String>
|
<system:String x:Key="userdatapathButton">פתח תיקיה</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">רמת יומן</system:String>
|
<system:String x:Key="logLevel">רמת יומן</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">ניפוי שגיאות</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">שגיאה</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">מידע</system:String>
|
<system:String x:Key="LogLevelINFO">מידע</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">ניפוי שגיאות</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -489,6 +507,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">ארגומנט לקובץ</system:String>
|
<system:String x:Key="fileManager_file_arg">ארגומנט לקובץ</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">לא ניתן היה לאתר את מנהל הקבצים '{0}' ב-'{1}'. האם ברצונך להמשיך?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">לא ניתן היה לאתר את מנהל הקבצים '{0}' ב-'{1}'. האם ברצונך להמשיך?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">שגיאת נתיב למנהל הקבצים</system:String>
|
<system:String x:Key="fileManagerPathError">שגיאת נתיב למנהל הקבצים</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">דפדפן ברירת מחדל</system:String>
|
<system:String x:Key="defaultBrowserTitle">דפדפן ברירת מחדל</system:String>
|
||||||
|
|
@ -499,6 +518,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">חלון חדש</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">חלון חדש</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">כרטיסייה חדשה</system:String>
|
<system:String x:Key="defaultBrowser_newTab">כרטיסייה חדשה</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">מצב פרטיות</system:String>
|
<system:String x:Key="defaultBrowser_parameter">מצב פרטיות</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">שנה עדיפות</system:String>
|
<system:String x:Key="changePriorityWindow">שנה עדיפות</system:String>
|
||||||
|
|
@ -588,8 +609,9 @@
|
||||||
לא ניתן היה למצוא את מנהל הקבצים שצוין. אנא בדוק את ההגדרה של מנהל קבצים מותאם אישית תחת הגדרות > כללי.
|
לא ניתן היה למצוא את מנהל הקבצים שצוין. אנא בדוק את ההגדרה של מנהל קבצים מותאם אישית תחת הגדרות > כללי.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">שגיאה</system:String>
|
<system:String x:Key="errorTitle">שגיאה</system:String>
|
||||||
<system:String x:Key="folderOpenError">אירעה שגיאה בעת פתיחת התיקייה. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">אירעה שגיאה בעת פתיחת כתובת ה-URL בדפדפן. אנא בדוק את תצורת דפדפן האינטרנט המוגדר כברירת מחדל שלך במקטע הכללי של חלון ההגדרות</system:String>
|
<system:String x:Key="browserOpenError">אירעה שגיאה בעת פתיחת כתובת ה-URL בדפדפן. אנא בדוק את תצורת דפדפן האינטרנט המוגדר כברירת מחדל שלך במקטע הכללי של חלון ההגדרות</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">אנא המתן...</system:String>
|
<system:String x:Key="pleaseWait">אנא המתן...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Ripristina Posizione</system:String>
|
<system:String x:Key="PositionReset">Ripristina Posizione</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Impostazioni</system:String>
|
<system:String x:Key="flowlauncher_settings">Impostazioni</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Errore nell'impostazione del lancio all'avvio</system:String>
|
<system:String x:Key="setAutoStartFailed">Errore nell'impostazione del lancio all'avvio</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Nascondi Flow Launcher quando perde il focus</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Nascondi Flow Launcher quando perde il focus</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Non mostrare le notifiche per una nuova versione</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Non mostrare le notifiche per una nuova versione</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Ricorda L'Ultima Posizione</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Ricorda L'Ultima Posizione</system:String>
|
||||||
|
|
@ -143,8 +149,8 @@
|
||||||
<system:String x:Key="searchDelay">Search Delay</system:String>
|
<system:String x:Key="searchDelay">Search Delay</system:String>
|
||||||
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
||||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
||||||
<system:String x:Key="searchDelayTime">Default Search Delay Time</system:String>
|
<system:String x:Key="searchDelayTime">Tempo predefinito ritardo ricerca</system:String>
|
||||||
<system:String x:Key="searchDelayTimeToolTip">Wait time before showing results after typing stops. Higher values wait longer. (ms)</system:String>
|
<system:String x:Key="searchDelayTimeToolTip">Tempo di attesa prima di mostrare i risultati dopo l'interruzione della digitazione. Valori più alti attendono più a lungo. (ms)</system:String>
|
||||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
||||||
<system:String x:Key="KoreanImeGuide">
|
<system:String x:Key="KoreanImeGuide">
|
||||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versione</system:String>
|
<system:String x:Key="plugin_query_version">Versione</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Sito Web</system:String>
|
<system:String x:Key="plugin_query_web">Sito Web</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Disinstalla</system:String>
|
<system:String x:Key="plugin_uninstall">Disinstalla</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Negozio dei Plugin</system:String>
|
<system:String x:Key="pluginStore">Negozio dei Plugin</system:String>
|
||||||
|
|
@ -254,11 +270,11 @@
|
||||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
||||||
<system:String x:Key="UpdatePromptSubtitle">{0} di {1} {2}{2}Vuoi aggiornare questo plugin?</system:String>
|
<system:String x:Key="UpdatePromptSubtitle">{0} di {1} {2}{2}Vuoi aggiornare questo plugin?</system:String>
|
||||||
<system:String x:Key="DownloadingPlugin">Download del plugin</system:String>
|
<system:String x:Key="DownloadingPlugin">Download del plugin</system:String>
|
||||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
<system:String x:Key="AutoRestartAfterChange">Riavvia automaticamente dopo l'installazione/disinstallazione/aggiornamento dei plugin nel Plugin Store</system:String>
|
||||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
<system:String x:Key="ZipFileNotHavePluginJson">Il file zip non contiene una configurazione plugin.json valida</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceTitle">Installazione da una fonte sconosciuta</system:String>
|
<system:String x:Key="InstallFromUnknownSourceTitle">Installazione da una fonte sconosciuta</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is 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 in general section of setting window)</system:String>
|
<system:String x:Key="InstallFromUnknownSourceSubtitle">This plugin is 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 in general section of setting window)</system:String>
|
||||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
<system:String x:Key="ZipFiles">File zip</system:String>
|
||||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
||||||
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
<system:String x:Key="installLocalPluginTooltip">Install plugin from local path</system:String>
|
||||||
<system:String x:Key="updateNoResultTitle">Nessun aggiornamento disponibile</system:String>
|
<system:String x:Key="updateNoResultTitle">Nessun aggiornamento disponibile</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icone</system:String>
|
<system:String x:Key="icons">Icone</system:String>
|
||||||
<system:String x:Key="about_activate_times">Hai usato Flow Launcher {0} volte</system:String>
|
<system:String x:Key="about_activate_times">Hai usato Flow Launcher {0} volte</system:String>
|
||||||
<system:String x:Key="checkUpdates">Cerca aggiornamenti</system:String>
|
<system:String x:Key="checkUpdates">Cerca aggiornamenti</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Diventa un sostenitore</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Una nuova versione {0} è disponibile, riavvia Flow Launcher per favore.</system:String>
|
<system:String x:Key="newVersionTips">Una nuova versione {0} è disponibile, riavvia Flow Launcher per favore.</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Ricerca aggiornamenti fallita, per favore controlla la tua connessione e le eventuali impostazioni proxy per api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Ricerca aggiornamenti fallita, per favore controlla la tua connessione e le eventuali impostazioni proxy per api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -458,7 +474,7 @@
|
||||||
<system:String x:Key="clearlogfolder">Cancella i log</system:String>
|
<system:String x:Key="clearlogfolder">Cancella i log</system:String>
|
||||||
<system:String x:Key="clearlogfolderMessage">Sei sicuro di voler cancellare tutti i log?</system:String>
|
<system:String x:Key="clearlogfolderMessage">Sei sicuro di voler cancellare tutti i log?</system:String>
|
||||||
<system:String x:Key="cachefolder">Cache Folder</system:String>
|
<system:String x:Key="cachefolder">Cache Folder</system:String>
|
||||||
<system:String x:Key="clearcachefolder">Clear Caches</system:String>
|
<system:String x:Key="clearcachefolder">Cancella cache</system:String>
|
||||||
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
|
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
|
||||||
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
|
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
|
||||||
<system:String x:Key="welcomewindow">Wizard</system:String>
|
<system:String x:Key="welcomewindow">Wizard</system:String>
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Apri Cartella</system:String>
|
<system:String x:Key="userdatapathButton">Apri Cartella</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg Per Cartella</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg Per Cartella</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Browser predefinito</system:String>
|
<system:String x:Key="defaultBrowserTitle">Browser predefinito</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nuova Finestra</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nuova Finestra</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nuova Scheda</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nuova Scheda</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Modalità Privata</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Modalità Privata</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Cambia Priorità</system:String>
|
<system:String x:Key="changePriorityWindow">Cambia Priorità</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Se si aggiunge un prefisso '@' mentre si inserisce una scorciatoia, corrisponde
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Attendere prego...</system:String>
|
<system:String x:Key="pleaseWait">Attendere prego...</system:String>
|
||||||
|
|
@ -619,7 +641,7 @@ Se si aggiunge un prefisso '@' mentre si inserisce una scorciatoia, corrisponde
|
||||||
<!-- Plugin Update Window -->
|
<!-- Plugin Update Window -->
|
||||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
||||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
||||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
<system:String x:Key="updatePluginNoSelected">Nessun plugin selezionato</system:String>
|
||||||
|
|
||||||
<!-- Welcome Window -->
|
<!-- Welcome Window -->
|
||||||
<system:String x:Key="Skip">Salta</system:String>
|
<system:String x:Key="Skip">Salta</system:String>
|
||||||
|
|
|
||||||
|
|
@ -2,43 +2,43 @@
|
||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
<!-- Startup -->
|
<!-- Startup -->
|
||||||
<system:String x:Key="runtimePluginInstalledChooseRuntimePrompt">
|
<system:String x:Key="runtimePluginInstalledChooseRuntimePrompt">
|
||||||
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}
|
{2}{2}
|
||||||
Click no if it's already installed, and you will be prompted to select the folder that contains the {1} executable
|
{1}がすでにインストールされている場合は「いいえ」をクリックし、それが入っているフォルダーを選択してください
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Please select the {0} executable</system:String>
|
<system:String x:Key="runtimePluginChooseRuntimeExecutable">{0} の実行ファイルを選択してください</system:String>
|
||||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||||
Your selected {0} executable is invalid.
|
あなたが選択した {0} の実行ファイルが不正です。
|
||||||
{2}{2}
|
{2}{2}
|
||||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
{0} の実行ファイルをもう一度選択する場合は「はい」を、{1} をダウンロードする場合は「いいえ」を選択してください
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Unable to set {0} executable path, please try from Flow's settings (scroll down to the bottom).</system:String>
|
<system:String x:Key="runtimePluginUnableToSetExecutablePath">{0} の実行可能ファイルのパスを設定できません。Flow の設定から試してください(下までスクロールしてください)。</system:String>
|
||||||
<system:String x:Key="failedToInitializePluginsTitle">Fail to Init Plugins</system:String>
|
<system:String x:Key="failedToInitializePluginsTitle">プラグインの起動失敗</system:String>
|
||||||
<system:String x:Key="failedToInitializePluginsMessage">Plugins: {0} - fail to load and would be disabled, please contact plugin creator for help</system:String>
|
<system:String x:Key="failedToInitializePluginsMessage">プラグイン: {0} の読み込みに失敗したため、無効になりました。プラグインの作成者にお問い合わせください</system:String>
|
||||||
|
|
||||||
<!-- Portable -->
|
<!-- Portable -->
|
||||||
<system:String x:Key="restartToDisablePortableMode">Flow Launcherはポータブルモードの無効化のために再起動する必要があります。再起動の後、ポータブルな形式の設定項目は削除され、あなたのパソコンのフォルダに保存されます</system:String>
|
<system:String x:Key="restartToDisablePortableMode">Flow Launcherはポータブルモードの無効化のために再起動する必要があります。再起動の後、ポータブルな形式の設定項目は削除され、あなたのパソコンのフォルダに保存されます</system:String>
|
||||||
<system:String x:Key="restartToEnablePortableMode">Flow Launcherはポータブルモードの有効化のために再起動する必要があります。再起動の後、パソコンに保存された設定項目は削除され、ポータブルな形式で保存されます</system:String>
|
<system:String x:Key="restartToEnablePortableMode">Flow Launcherはポータブルモードの有効化のために再起動する必要があります。再起動の後、パソコンに保存された設定項目は削除され、ポータブルな形式で保存されます</system:String>
|
||||||
<system:String x:Key="moveToDifferentLocation">Flow Launcherはポータブルモードの有効化を検知しました。Flow Launcherを別の場所に移動しますか?</system:String>
|
<system:String x:Key="moveToDifferentLocation">Flow Launcherはポータブルモードの有効化を検知しました。Flow Launcherを別の場所に移動しますか?</system:String>
|
||||||
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcherはポータブルモードの無効化を検知しました。関連するショートカットやアンインストーラーが配置されます</system:String>
|
<system:String x:Key="shortcutsUninstallerCreated">Flow Launcherはポータブルモードの無効化を検知しました。関連するショートカットやアンインストーラーが配置されます</system:String>
|
||||||
<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>
|
<system:String x:Key="userDataDuplicated">Flow Launcherはあなたのユーザーデータが{0} と {1} の両方に存在することを検知しました。{2}{2}続行するには、{1}を削除してください。処理は中断されました。</system:String>
|
||||||
|
|
||||||
<!-- Plugin Loader -->
|
<!-- Plugin Loader -->
|
||||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
<system:String x:Key="pluginHasErrored">以下のプラグインにエラーがあるためロードできません:</system:String>
|
||||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
<system:String x:Key="pluginsHaveErrored">以下のプラグインにエラーがあるためロードできません:</system:String>
|
||||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
<system:String x:Key="referToLogs">詳細はログを参照してください</system:String>
|
||||||
|
|
||||||
<!-- Http -->
|
<!-- Http -->
|
||||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
<system:String x:Key="pleaseTryAgain">もう一度お試しください</system:String>
|
||||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
<system:String x:Key="parseProxyFailed">Http プロキシをパースできません</system:String>
|
||||||
|
|
||||||
<!-- AbstractPluginEnvironment -->
|
<!-- AbstractPluginEnvironment -->
|
||||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
<system:String x:Key="failToInstallTypeScriptEnv">TypeScript環境のインストールに失敗しました。後でもう一度お試しください</system:String>
|
||||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
<system:String x:Key="failToInstallPythonEnv">Python 環境のインストールに失敗しました。後でもう一度お試しください。</system:String>
|
||||||
|
|
||||||
<!-- MainWindow -->
|
<!-- MainWindow -->
|
||||||
<system:String x:Key="registerHotkeyFailed">ホットキー "{0}" の登録に失敗しました。このホットキーは別のプログラムで使用されている可能性があります。別のホットキーに変更するか、このホットキーを使用しているプログラムを終了してください。</system:String>
|
<system:String x:Key="registerHotkeyFailed">ホットキー "{0}" の登録に失敗しました。このホットキーは別のプログラムで使用されている可能性があります。別のホットキーに変更するか、このホットキーを使用しているプログラムを終了してください。</system:String>
|
||||||
<system:String x:Key="unregisterHotkeyFailed">Failed to unregister hotkey "{0}". Please try again or see log for details</system:String>
|
<system:String x:Key="unregisterHotkeyFailed">ホットキー「{0}」の登録解除に失敗しました。もう一度試すか、ログを参照して詳細を確認してください</system:String>
|
||||||
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
|
||||||
<system:String x:Key="couldnotStartCmd">{0}の起動に失敗しました</system:String>
|
<system:String x:Key="couldnotStartCmd">{0}の起動に失敗しました</system:String>
|
||||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Flow Launcherプラグインの形式が正しくありません</system:String>
|
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Flow Launcherプラグインの形式が正しくありません</system:String>
|
||||||
|
|
@ -58,12 +58,16 @@
|
||||||
<system:String x:Key="selectAll">全て選択</system:String>
|
<system:String x:Key="selectAll">全て選択</system:String>
|
||||||
<system:String x:Key="fileTitle">ファイル</system:String>
|
<system:String x:Key="fileTitle">ファイル</system:String>
|
||||||
<system:String x:Key="folderTitle">フォルダー</system:String>
|
<system:String x:Key="folderTitle">フォルダー</system:String>
|
||||||
<system:String x:Key="textTitle">Text</system:String>
|
<system:String x:Key="textTitle">テキスト</system:String>
|
||||||
<system:String x:Key="GameMode">ゲームモード</system:String>
|
<system:String x:Key="GameMode">ゲームモード</system:String>
|
||||||
<system:String x:Key="GameModeToolTip">ホットキーの使用を一時停止します。</system:String>
|
<system:String x:Key="GameModeToolTip">ホットキーの使用を一時停止します。</system:String>
|
||||||
<system:String x:Key="PositionReset">位置のリセット</system:String>
|
<system:String x:Key="PositionReset">位置のリセット</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">検索ウィンドウの位置をリセット</system:String>
|
<system:String x:Key="PositionResetToolTip">検索ウィンドウの位置をリセット</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">ここに入力して検索</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">ここに入力して検索</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: このプラグインはまだ初期化中です…</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">この結果を選択して再検索する</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: 応答に失敗しました!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">詳細については、この結果を選択してください</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">設定</system:String>
|
<system:String x:Key="flowlauncher_settings">設定</system:String>
|
||||||
|
|
@ -73,8 +77,10 @@
|
||||||
<system:String x:Key="startFlowLauncherOnSystemStartup">スタートアップ時にFlow Launcherを起動する</system:String>
|
<system:String x:Key="startFlowLauncherOnSystemStartup">スタートアップ時にFlow Launcherを起動する</system:String>
|
||||||
<system:String x:Key="useLogonTaskForStartup">起動の高速化のためにスタートアップではなくログオンタスクを使用</system:String>
|
<system:String x:Key="useLogonTaskForStartup">起動の高速化のためにスタートアップではなくログオンタスクを使用</system:String>
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">アンインストール後は、「タスク スケジューラ」からこのタスク(Flow.Launcher Startup)を手動で削除する必要があります。</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">アンインストール後は、「タスク スケジューラ」からこのタスク(Flow.Launcher Startup)を手動で削除する必要があります。</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
|
<system:String x:Key="setAutoStartFailed">スタートアップ時に起動の設定失敗</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">フォーカスを失った時にFlow Launcherを隠す</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">フォーカスを失った時にFlow Launcherを隠す</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Flow Launcher を開いたときにタスクバーを表示する</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Flow Launcher を開いたときに一時的にタスクバーを表示します。タスクバーの自動非表示を設定している場合に便利です。</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">最新版が入手可能であっても、アップグレードメッセージを表示しない</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">最新版が入手可能であっても、アップグレードメッセージを表示しない</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">検索ウィンドウの位置</system:String>
|
<system:String x:Key="SearchWindowPosition">検索ウィンドウの位置</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">最後の表示位置を記憶する</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">最後の表示位置を記憶する</system:String>
|
||||||
|
|
@ -111,7 +117,7 @@
|
||||||
<system:String x:Key="typingStartEn">常に英語モードで入力を開始する</system:String>
|
<system:String x:Key="typingStartEn">常に英語モードで入力を開始する</system:String>
|
||||||
<system:String x:Key="typingStartEnTooltip">Flowを起動したとき、一時的に入力方法を英語モードに変更します。</system:String>
|
<system:String x:Key="typingStartEnTooltip">Flowを起動したとき、一時的に入力方法を英語モードに変更します。</system:String>
|
||||||
<system:String x:Key="autoUpdates">自動更新</system:String>
|
<system:String x:Key="autoUpdates">自動更新</system:String>
|
||||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
<system:String x:Key="autoUpdatesTooltip">利用可能な場合、Flow Launcherを自動的に確認して更新します</system:String>
|
||||||
<system:String x:Key="select">選択</system:String>
|
<system:String x:Key="select">選択</system:String>
|
||||||
<system:String x:Key="hideOnStartup">起動時にFlow Launcherを隠す</system:String>
|
<system:String x:Key="hideOnStartup">起動時にFlow Launcherを隠す</system:String>
|
||||||
<system:String x:Key="hideOnStartupToolTip">起動後、Flow Launcher の検索ウィンドウは非表示になり、トレイに格納されます。</system:String>
|
<system:String x:Key="hideOnStartupToolTip">起動後、Flow Launcher の検索ウィンドウは非表示になり、トレイに格納されます。</system:String>
|
||||||
|
|
@ -123,10 +129,10 @@
|
||||||
<system:String x:Key="SearchPrecisionLow">低</system:String>
|
<system:String x:Key="SearchPrecisionLow">低</system:String>
|
||||||
<system:String x:Key="SearchPrecisionRegular">標準</system:String>
|
<system:String x:Key="SearchPrecisionRegular">標準</system:String>
|
||||||
<system:String x:Key="ShouldUsePinyin">ピンインによる検索</system:String>
|
<system:String x:Key="ShouldUsePinyin">ピンインによる検索</system:String>
|
||||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
<system:String x:Key="ShouldUsePinyinToolTip">Pinyinは中国語を翻訳するためのローマ字入力の標準的な方法です。有効にすると、検索時のメモリ使用量が大幅に増加する可能性があります。</system:String>
|
||||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
<system:String x:Key="ShouldUseDoublePinyin">双拼入力を使用</system:String>
|
||||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
<system:String x:Key="ShouldUseDoublePinyinToolTip">検索するときに全拼の代わりに双拼を使用する。</system:String>
|
||||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
<system:String x:Key="DoublePinyinSchema">双拼の入力方式</system:String>
|
||||||
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
<system:String x:Key="DoublePinyinSchemasXiaoHe">Xiao He</system:String>
|
||||||
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
<system:String x:Key="DoublePinyinSchemasZiRanMa">Zi Ran Ma</system:String>
|
||||||
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
<system:String x:Key="DoublePinyinSchemasWeiRuan">Wei Ruan</system:String>
|
||||||
|
|
@ -142,10 +148,10 @@
|
||||||
<system:String x:Key="shadowEffectNotAllowed">現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません</system:String>
|
<system:String x:Key="shadowEffectNotAllowed">現在のテーマでぼかしの効果が有効になっている場合、影の効果を有効にすることはできません</system:String>
|
||||||
<system:String x:Key="searchDelay">検索遅延</system:String>
|
<system:String x:Key="searchDelay">検索遅延</system:String>
|
||||||
<system:String x:Key="searchDelayToolTip">入力中に短い遅延を追加することで、UIのちらつきや結果の読み込みを軽減します。平均的なタイピング速度のユーザーにおすすめです。</system:String>
|
<system:String x:Key="searchDelayToolTip">入力中に短い遅延を追加することで、UIのちらつきや結果の読み込みを軽減します。平均的なタイピング速度のユーザーにおすすめです。</system:String>
|
||||||
<system:String x:Key="searchDelayNumberBoxToolTip">Enter the wait time (in ms) until input is considered complete. This can only be edited if Search Delay is enabled.</system:String>
|
<system:String x:Key="searchDelayNumberBoxToolTip">入力中の結果表示までの待ち時間をミリ秒単位で入力します。これは、検索遅延が有効な場合にのみ編集できます。</system:String>
|
||||||
<system:String x:Key="searchDelayTime">デフォルトの検索遅延時間</system:String>
|
<system:String x:Key="searchDelayTime">デフォルトの検索遅延時間</system:String>
|
||||||
<system:String x:Key="searchDelayTimeToolTip">入力が停止した後に結果が表示されるまでの待ち時間。値が大きいほど長く待機します。(単位 ms)</system:String>
|
<system:String x:Key="searchDelayTimeToolTip">入力が停止した後に結果が表示されるまでの待ち時間。値が大きいほど長く待機します。(単位 ms)</system:String>
|
||||||
<system:String x:Key="KoreanImeTitle">Information for Korean IME user</system:String>
|
<system:String x:Key="KoreanImeTitle">韓国語IMEユーザーへの情報</system:String>
|
||||||
<system:String x:Key="KoreanImeGuide">
|
<system:String x:Key="KoreanImeGuide">
|
||||||
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
The Korean input method used in Windows 11 may cause some issues in Flow Launcher.
|
||||||
|
|
||||||
|
|
@ -160,29 +166,33 @@
|
||||||
|
|
||||||
|
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="KoreanImeOpenLink">Open Language and Region System Settings</system:String>
|
<system:String x:Key="KoreanImeOpenLink">システムの言語と地域設定を開く</system:String>
|
||||||
<system:String x:Key="KoreanImeOpenLinkToolTip">Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility</system:String>
|
<system:String x:Key="KoreanImeOpenLinkToolTip">Opens the Korean IME setting location. Go to Korean > Language Options > Keyboard - Microsoft IME > Compatibility</system:String>
|
||||||
<system:String x:Key="KoreanImeOpenLinkButton">開く</system:String>
|
<system:String x:Key="KoreanImeOpenLinkButton">開く</system:String>
|
||||||
<system:String x:Key="KoreanImeRegistry">Use Previous Korean IME</system:String>
|
<system:String x:Key="KoreanImeRegistry">前の韓国語IMEを使用</system:String>
|
||||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailTitle">韓国語IME設定の変更に失敗しました</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">システムのレジストリへのアクセスが可能か確認するか、サポートにお問い合わせください。</system:String>
|
||||||
<system:String x:Key="homePage">ホームページ</system:String>
|
<system:String x:Key="homePage">ホームページ</system:String>
|
||||||
<system:String x:Key="homePageToolTip">検索文字列が空の場合、ホームページの結果を表示します。</system:String>
|
<system:String x:Key="homePageToolTip">検索文字列が空の場合、ホームページの結果を表示します。</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">クエリの履歴をホームページに表示</system:String>
|
<system:String x:Key="historyResultsForHomePage">クエリの履歴をホームページに表示</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">ホームページに表示される最大の履歴の数</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">ホームページに表示される最大の履歴の数</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="historyStyle">履歴のスタイル</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="historyStyleTooltip">履歴とホームページに表示する履歴の種類を選択します</system:String>
|
||||||
|
<system:String x:Key="queryHistory">クエリの履歴</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
|
<system:String x:Key="homeToggleBoxToolTip">これは、プラグインがホーム機能をサポートし、ホームページが有効な場合にのみ編集することができます。</system:String>
|
||||||
|
<system:String x:Key="showAtTopmost">検索ウィンドウを最前面に表示</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">他のプログラムの 'Always on Top' (最前面に表示)設定を上書きし、常に最前面のウィンドウで Flow を表示します。</system:String>
|
<system:String x:Key="showAtTopmostToolTip">他のプログラムの 'Always on Top' (最前面に表示)設定を上書きし、常に最前面のウィンドウで Flow を表示します。</system:String>
|
||||||
<system:String x:Key="autoRestartAfterChanging">プラグインストアでプラグインを変更した後に再起動します</system:String>
|
<system:String x:Key="autoRestartAfterChanging">プラグインストアでプラグインを変更した後に再起動</system:String>
|
||||||
<system:String x:Key="autoRestartAfterChangingToolTip">プラグインストア経由でプラグインをインストール、アンインストール、または更新した後、Flow Lancherを自動的に再起動します</system:String>
|
<system:String x:Key="autoRestartAfterChangingToolTip">プラグインストア経由でプラグインをインストール、アンインストール、または更新した後、Flow Lancherを自動的に再起動します</system:String>
|
||||||
<system:String x:Key="showUnknownSourceWarning">不明なソースの警告を表示</system:String>
|
<system:String x:Key="showUnknownSourceWarning">不明なソースの警告を表示</system:String>
|
||||||
<system:String x:Key="showUnknownSourceWarningToolTip">不明なソースからプラグインをインストールするときに警告を表示する</system:String>
|
<system:String x:Key="showUnknownSourceWarningToolTip">不明なソースからプラグインをインストールするときに警告を表示する</system:String>
|
||||||
<system:String x:Key="autoUpdatePlugins">Auto update plugins</system:String>
|
<system:String x:Key="autoUpdatePlugins">プラグインの自動アップデート</system:String>
|
||||||
<system:String x:Key="autoUpdatePluginsToolTip">Automatically check plugin updates and notify if there are any updates available</system:String>
|
<system:String x:Key="autoUpdatePluginsToolTip">プラグインの更新を自動的にチェックし、利用可能な更新がある場合に通知します</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin -->
|
<!-- Setting Plugin -->
|
||||||
<system:String x:Key="searchplugin">Search Plugin</system:String>
|
<system:String x:Key="searchplugin">プラグインの検索</system:String>
|
||||||
<system:String x:Key="searchpluginToolTip">Ctrl+F でプラグインを検索します</system:String>
|
<system:String x:Key="searchpluginToolTip">Ctrl+F でプラグインを検索します</system:String>
|
||||||
<system:String x:Key="searchplugin_Noresult_Title">検索結果が見つかりませんでした</system:String>
|
<system:String x:Key="searchplugin_Noresult_Title">検索結果が見つかりませんでした</system:String>
|
||||||
<system:String x:Key="searchplugin_Noresult_Subtitle">別の検索を試してみてください。</system:String>
|
<system:String x:Key="searchplugin_Noresult_Subtitle">別の検索を試してみてください。</system:String>
|
||||||
|
|
@ -191,20 +201,20 @@
|
||||||
<system:String x:Key="browserMorePlugins">プラグインを探す</system:String>
|
<system:String x:Key="browserMorePlugins">プラグインを探す</system:String>
|
||||||
<system:String x:Key="enable">有効</system:String>
|
<system:String x:Key="enable">有効</system:String>
|
||||||
<system:String x:Key="disable">無効</system:String>
|
<system:String x:Key="disable">無効</system:String>
|
||||||
<system:String x:Key="actionKeywordsTitle">Action keyword Setting</system:String>
|
<system:String x:Key="actionKeywordsTitle">アクションキーワードの設定</system:String>
|
||||||
<system:String x:Key="actionKeywords">キーワード</system:String>
|
<system:String x:Key="actionKeywords">キーワード</system:String>
|
||||||
<system:String x:Key="currentActionKeywords">Current action keyword</system:String>
|
<system:String x:Key="currentActionKeywords">現在のアクションキーワード</system:String>
|
||||||
<system:String x:Key="newActionKeyword">New action keyword</system:String>
|
<system:String x:Key="newActionKeyword">新しいアクションキーワード</system:String>
|
||||||
<system:String x:Key="actionKeywordsTooltip">Change Action Keywords</system:String>
|
<system:String x:Key="actionKeywordsTooltip">アクションキーワードの変更</system:String>
|
||||||
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
<system:String x:Key="pluginSearchDelayTime">プラグインの検索遅延時間</system:String>
|
||||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
<system:String x:Key="pluginSearchDelayTimeTooltip">プラグインの検索遅延時間を変更</system:String>
|
||||||
<system:String x:Key="FilterComboboxLabel">詳細設定:</system:String>
|
<system:String x:Key="FilterComboboxLabel">詳細設定:</system:String>
|
||||||
<system:String x:Key="DisplayModeOnOff">有効</system:String>
|
<system:String x:Key="DisplayModeOnOff">有効</system:String>
|
||||||
<system:String x:Key="DisplayModePriority">重要度</system:String>
|
<system:String x:Key="DisplayModePriority">重要度</system:String>
|
||||||
<system:String x:Key="DisplayModeSearchDelay">検索遅延</system:String>
|
<system:String x:Key="DisplayModeSearchDelay">検索遅延</system:String>
|
||||||
<system:String x:Key="DisplayModeHomeOnOff">ホームページ</system:String>
|
<system:String x:Key="DisplayModeHomeOnOff">ホームページ</system:String>
|
||||||
<system:String x:Key="currentPriority">Current Priority</system:String>
|
<system:String x:Key="currentPriority">現在の優先度</system:String>
|
||||||
<system:String x:Key="newPriority">New Priority</system:String>
|
<system:String x:Key="newPriority">新しい優先度</system:String>
|
||||||
<system:String x:Key="priority">重要度</system:String>
|
<system:String x:Key="priority">重要度</system:String>
|
||||||
<system:String x:Key="priorityToolTip">プラグインの結果の優先度を変更します。</system:String>
|
<system:String x:Key="priorityToolTip">プラグインの結果の優先度を変更します。</system:String>
|
||||||
<system:String x:Key="pluginDirectory">プラグイン・ディレクトリ</system:String>
|
<system:String x:Key="pluginDirectory">プラグイン・ディレクトリ</system:String>
|
||||||
|
|
@ -214,59 +224,65 @@
|
||||||
<system:String x:Key="plugin_query_version">バージョン</system:String>
|
<system:String x:Key="plugin_query_version">バージョン</system:String>
|
||||||
<system:String x:Key="plugin_query_web">ウェブサイト</system:String>
|
<system:String x:Key="plugin_query_web">ウェブサイト</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">アンインストール</system:String>
|
<system:String x:Key="plugin_uninstall">アンインストール</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="plugin_default_search_delay_time">検索の遅延時間: デフォルト</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="plugin_search_delay_time">検索の遅延時間: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">プラグイン設定の削除に失敗</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheMessage">Plugins: {0} - Fail to remove plugin cache files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">プラグイン: {0} - プラグイン設定ファイルの削除に失敗しました。手動で削除してください</system:String>
|
||||||
<system:String x:Key="pluginModifiedAlreadyTitle">{0} modified already</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">プラグインキャッシュの削除に失敗</system:String>
|
||||||
<system:String x:Key="pluginModifiedAlreadyMessage">Please restart Flow before making any further changes</system:String>
|
<system:String x:Key="failedToRemovePluginCacheMessage">プラグイン: {0} - プラグインキャッシュファイルの削除に失敗しました。手動で削除してください</system:String>
|
||||||
<system:String x:Key="failedToInstallPluginTitle">Fail to install {0}</system:String>
|
<system:String x:Key="pluginModifiedAlreadyTitle">{0} は既に変更されています</system:String>
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="pluginModifiedAlreadyMessage">これ以上変更を加える前に Flow Launcher を再起動してください</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="failedToInstallPluginTitle">{0} のインストールに失敗</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">{0} のアンインストールに失敗</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundMessage">展開されたzipファイルからplugin.jsonが見つからないか、このパス {0} が存在しません</system:String>
|
||||||
|
<system:String x:Key="pluginExistAlreadyMessage">同じIDとバージョンのプラグインがすでに存在するか、またはこのダウンロードしたプラグインよりもバージョンが大きいです</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">プラグイン {0}の設定パネル作成中にエラーが発生しました:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">プラグインストア</system:String>
|
<system:String x:Key="pluginStore">プラグインストア</system:String>
|
||||||
<system:String x:Key="pluginStore_NewRelease">新規リリース</system:String>
|
<system:String x:Key="pluginStore_NewRelease">新規リリース</system:String>
|
||||||
<system:String x:Key="pluginStore_RecentlyUpdated">最近の更新</system:String>
|
<system:String x:Key="pluginStore_RecentlyUpdated">最近の更新</system:String>
|
||||||
<system:String x:Key="pluginStore_None">プラグイン</system:String>
|
<system:String x:Key="pluginStore_None">プラグイン</system:String>
|
||||||
<system:String x:Key="pluginStore_Installed">Installed</system:String>
|
<system:String x:Key="pluginStore_Installed">インストール済み</system:String>
|
||||||
<system:String x:Key="refresh">更新</system:String>
|
<system:String x:Key="refresh">更新</system:String>
|
||||||
<system:String x:Key="installbtn">インストール</system:String>
|
<system:String x:Key="installbtn">インストール</system:String>
|
||||||
<system:String x:Key="uninstallbtn">アンインストール</system:String>
|
<system:String x:Key="uninstallbtn">アンインストール</system:String>
|
||||||
<system:String x:Key="updatebtn">更新</system:String>
|
<system:String x:Key="updatebtn">更新</system:String>
|
||||||
<system:String x:Key="LabelInstalledToolTip">Plugin already installed</system:String>
|
<system:String x:Key="LabelInstalledToolTip">プラグインは既にインストールされています</system:String>
|
||||||
<system:String x:Key="LabelNew">New Version</system:String>
|
<system:String x:Key="LabelNew">新しいバージョン</system:String>
|
||||||
<system:String x:Key="LabelNewToolTip">This plugin has been updated within the last 7 days</system:String>
|
<system:String x:Key="LabelNewToolTip">このプラグインは過去1週間以内に更新されました</system:String>
|
||||||
<system:String x:Key="LabelUpdateToolTip">新しいアップデートが利用可能です</system:String>
|
<system:String x:Key="LabelUpdateToolTip">新しいアップデートが利用可能です</system:String>
|
||||||
<system:String x:Key="ErrorInstallingPlugin">プラグインのインストール失敗</system:String>
|
<system:String x:Key="ErrorInstallingPlugin">プラグインのインストール失敗</system:String>
|
||||||
<system:String x:Key="ErrorUninstallingPlugin">プラグインのアンインストール失敗</system:String>
|
<system:String x:Key="ErrorUninstallingPlugin">プラグインのアンインストール失敗</system:String>
|
||||||
<system:String x:Key="ErrorUpdatingPlugin">Error updating plugin</system:String>
|
<system:String x:Key="ErrorUpdatingPlugin">プラグインの更新に失敗</system:String>
|
||||||
<system:String x:Key="KeepPluginSettingsTitle">プラグインの設定を維持</system:String>
|
<system:String x:Key="KeepPluginSettingsTitle">プラグインの設定を維持</system:String>
|
||||||
<system:String x:Key="KeepPluginSettingsSubtitle">再びインストールして使用するときのためにプラグインの設定を維持しますか?</system:String>
|
<system:String x:Key="KeepPluginSettingsSubtitle">再びインストールして使用するときのためにプラグインの設定を維持しますか?</system:String>
|
||||||
<system:String x:Key="InstallSuccessNoRestart">Plugin {0} successfully installed. Please restart Flow.</system:String>
|
<system:String x:Key="InstallSuccessNoRestart">プラグイン {0} のインストールに成功しました。Flow を再起動してください。</system:String>
|
||||||
<system:String x:Key="UninstallSuccessNoRestart">Plugin {0} successfully uninstalled. Please restart Flow.</system:String>
|
<system:String x:Key="UninstallSuccessNoRestart">プラグイン {0} のアンインストールに成功しました。Flow を再起動してください。</system:String>
|
||||||
<system:String x:Key="UpdateSuccessNoRestart">Plugin {0} successfully updated. Please restart Flow.</system:String>
|
<system:String x:Key="UpdateSuccessNoRestart">プラグイン {0} が正常に更新されました。Flow を再起動してください。</system:String>
|
||||||
<system:String x:Key="InstallPromptTitle">プラグインのインストール</system:String>
|
<system:String x:Key="InstallPromptTitle">プラグインのインストール</system:String>
|
||||||
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをインストールしますか?</system:String>
|
<system:String x:Key="InstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをインストールしますか?</system:String>
|
||||||
<system:String x:Key="UninstallPromptTitle">プラグインのアンインストール</system:String>
|
<system:String x:Key="UninstallPromptTitle">プラグインのアンインストール</system:String>
|
||||||
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをアンインストールしますか?</system:String>
|
<system:String x:Key="UninstallPromptSubtitle">{0} by {1} {2}{2}このプラグインをアンインストールしますか?</system:String>
|
||||||
<system:String x:Key="UpdatePromptTitle">Plugin update</system:String>
|
<system:String x:Key="UpdatePromptTitle">プラグインの更新</system:String>
|
||||||
<system:String x:Key="UpdatePromptSubtitle">{0} by {1} {2}{2}Would you like to update this plugin?</system:String>
|
<system:String x:Key="UpdatePromptSubtitle">{0} by {1} {2}{2}このプラグインを更新しますか?</system:String>
|
||||||
<system:String x:Key="DownloadingPlugin">Downloading plugin</system:String>
|
<system:String x:Key="DownloadingPlugin">プラグインをダウンロード中</system:String>
|
||||||
<system:String x:Key="AutoRestartAfterChange">Automatically restart after installing/uninstalling/updating plugins in plugin store</system:String>
|
<system:String x:Key="AutoRestartAfterChange">プラグインストア経由でのプラグインのインストール 、アンインストール、または更新後に自動的に再起動します</system:String>
|
||||||
<system:String x:Key="ZipFileNotHavePluginJson">Zip file does not have a valid plugin.json configuration</system:String>
|
<system:String x:Key="ZipFileNotHavePluginJson">Zipファイルに有効なplugin.jsonファイルがありません</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceTitle">不明なソースからのインストール</system:String>
|
<system:String x:Key="InstallFromUnknownSourceTitle">不明なソースからのインストール</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">このプラグインは不明なソースから提供されており、潜在的なリスクを含んでいる可能性があります!{0}{0}このプラグインの開発元をよく調べ、安全であることをご自身で確かめてください。{0}{0}それでもあなたはこのプラグインをインストールしますか?{0}{0}(この警告は設定の「一般」セクションで無効にすることができます)</system:String>
|
<system:String x:Key="InstallFromUnknownSourceSubtitle">このプラグインは不明なソースから提供されており、潜在的なリスクを含んでいる可能性があります!{0}{0}このプラグインの開発元をよく調べ、安全であることをご自身で確かめてください。{0}{0}それでもあなたはこのプラグインをインストールしますか?{0}{0}(この警告は設定の「一般」セクションで無効にすることができます)</system:String>
|
||||||
<system:String x:Key="ZipFiles">Zip files</system:String>
|
<system:String x:Key="ZipFiles">Zip ファイル</system:String>
|
||||||
<system:String x:Key="SelectZipFile">Please select zip file</system:String>
|
<system:String x:Key="SelectZipFile">zipファイルを選択してください</system:String>
|
||||||
<system:String x:Key="installLocalPluginTooltip">ローカルパスからプラグインをインストール</system:String>
|
<system:String x:Key="installLocalPluginTooltip">ローカルパスからプラグインをインストール</system:String>
|
||||||
<system:String x:Key="updateNoResultTitle">No update available</system:String>
|
<system:String x:Key="updateNoResultTitle">利用可能な更新はありません</system:String>
|
||||||
<system:String x:Key="updateNoResultSubtitle">All plugins are up to date</system:String>
|
<system:String x:Key="updateNoResultSubtitle">すべてのプラグインが最新です</system:String>
|
||||||
<system:String x:Key="updateAllPluginsTitle">Plugin updates available</system:String>
|
<system:String x:Key="updateAllPluginsTitle">プラグインの更新が利用可能</system:String>
|
||||||
<system:String x:Key="updateAllPluginsButtonContent">Update plugins</system:String>
|
<system:String x:Key="updateAllPluginsButtonContent">プラグインを更新</system:String>
|
||||||
<system:String x:Key="checkPluginUpdatesTooltip">Check plugin updates</system:String>
|
<system:String x:Key="checkPluginUpdatesTooltip">プラグインの更新を確認</system:String>
|
||||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Plugins are successfully updated. Please restart Flow.</system:String>
|
<system:String x:Key="PluginsUpdateSuccessNoRestart">プラグインが正常に更新されました。Flow を再起動してください。</system:String>
|
||||||
|
|
||||||
<!-- Setting Theme -->
|
<!-- Setting Theme -->
|
||||||
<system:String x:Key="theme">テーマ</system:String>
|
<system:String x:Key="theme">テーマ</system:String>
|
||||||
|
|
@ -285,13 +301,13 @@
|
||||||
<system:String x:Key="SearchBarHeight">検索バーの高さ</system:String>
|
<system:String x:Key="SearchBarHeight">検索バーの高さ</system:String>
|
||||||
<system:String x:Key="ItemHeight">アイテムの高さ</system:String>
|
<system:String x:Key="ItemHeight">アイテムの高さ</system:String>
|
||||||
<system:String x:Key="queryBoxFont">検索ボックスのフォント</system:String>
|
<system:String x:Key="queryBoxFont">検索ボックスのフォント</system:String>
|
||||||
<system:String x:Key="resultItemFont">Result Title Font</system:String>
|
<system:String x:Key="resultItemFont">結果のタイトルのフォント</system:String>
|
||||||
<system:String x:Key="resultSubItemFont">Result Subtitle Font</system:String>
|
<system:String x:Key="resultSubItemFont">結果のサブタイトルのフォント</system:String>
|
||||||
<system:String x:Key="resetCustomize">リセット</system:String>
|
<system:String x:Key="resetCustomize">リセット</system:String>
|
||||||
<system:String x:Key="resetCustomizeToolTip">Reset to the recommended font and size settings.</system:String>
|
<system:String x:Key="resetCustomizeToolTip">推奨されるフォントとサイズの設定にリセットします。</system:String>
|
||||||
<system:String x:Key="ImportThemeSize">Import Theme Size</system:String>
|
<system:String x:Key="ImportThemeSize">テーマ中のサイズをインポート</system:String>
|
||||||
<system:String x:Key="ImportThemeSizeToolTip">If a size value intended by the theme designer is available, it will be retrieved and applied.</system:String>
|
<system:String x:Key="ImportThemeSizeToolTip">テーマのデザイナーによって意図されたサイズ値が利用可能なとき、それを取得して適用します。</system:String>
|
||||||
<system:String x:Key="CustomizeToolTip">Customize</system:String>
|
<system:String x:Key="CustomizeToolTip">カスタマイズ</system:String>
|
||||||
<system:String x:Key="windowMode">ウィンドウモード</system:String>
|
<system:String x:Key="windowMode">ウィンドウモード</system:String>
|
||||||
<system:String x:Key="opacity">透過度</system:String>
|
<system:String x:Key="opacity">透過度</system:String>
|
||||||
<system:String x:Key="theme_load_failure_path_not_exists">テーマ {0} が存在しません、デフォルトのテーマに戻します。</system:String>
|
<system:String x:Key="theme_load_failure_path_not_exists">テーマ {0} が存在しません、デフォルトのテーマに戻します。</system:String>
|
||||||
|
|
@ -306,7 +322,7 @@
|
||||||
<system:String x:Key="SoundEffectTip">検索ウィンドウが開いたとき、小さな音を鳴らします</system:String>
|
<system:String x:Key="SoundEffectTip">検索ウィンドウが開いたとき、小さな音を鳴らします</system:String>
|
||||||
<system:String x:Key="SoundEffectVolume">効果音の音量</system:String>
|
<system:String x:Key="SoundEffectVolume">効果音の音量</system:String>
|
||||||
<system:String x:Key="SoundEffectVolumeTip">効果音の音量を調整します</system:String>
|
<system:String x:Key="SoundEffectVolumeTip">効果音の音量を調整します</system:String>
|
||||||
<system:String x:Key="SoundEffectWarning">Windows Media Player is unavailable and is required for Flow's volume adjustment. Please check your installation if you need to adjust volume.</system:String>
|
<system:String x:Key="SoundEffectWarning">Windows Media Player は Flow を使った音量調整に必要です。ボリュームを調整する必要がある場合は、Windows Media Player がインストールされているかどうか確認してください。</system:String>
|
||||||
<system:String x:Key="Animation">アニメーション</system:String>
|
<system:String x:Key="Animation">アニメーション</system:String>
|
||||||
<system:String x:Key="AnimationTip">UIでアニメーションを使用します</system:String>
|
<system:String x:Key="AnimationTip">UIでアニメーションを使用します</system:String>
|
||||||
<system:String x:Key="AnimationSpeed">アニメーション速度</system:String>
|
<system:String x:Key="AnimationSpeed">アニメーション速度</system:String>
|
||||||
|
|
@ -324,15 +340,15 @@
|
||||||
<system:String x:Key="BackdropTypesAcrylic">アクリル</system:String>
|
<system:String x:Key="BackdropTypesAcrylic">アクリル</system:String>
|
||||||
<system:String x:Key="BackdropTypesMica">マイカ</system:String>
|
<system:String x:Key="BackdropTypesMica">マイカ</system:String>
|
||||||
<system:String x:Key="BackdropTypesMicaAlt">マイカ(代替)</system:String>
|
<system:String x:Key="BackdropTypesMicaAlt">マイカ(代替)</system:String>
|
||||||
<system:String x:Key="TypeIsDarkToolTip">This theme supports two (light/dark) modes.</system:String>
|
<system:String x:Key="TypeIsDarkToolTip">このテーマはライト/ダークの2モードに対応しています。</system:String>
|
||||||
<system:String x:Key="TypeHasBlurToolTip">This theme supports Blur Transparent Background.</system:String>
|
<system:String x:Key="TypeHasBlurToolTip">このテーマは背景をぼかした透明効果をサポートしています。</system:String>
|
||||||
<system:String x:Key="ShowPlaceholder">プレースホルダーを表示</system:String>
|
<system:String x:Key="ShowPlaceholder">プレースホルダーを表示</system:String>
|
||||||
<system:String x:Key="ShowPlaceholderTip">クエリが空の場合にプレースホルダを表示します</system:String>
|
<system:String x:Key="ShowPlaceholderTip">クエリが空の場合にプレースホルダを表示します</system:String>
|
||||||
<system:String x:Key="PlaceholderText">検索欄の案内文</system:String>
|
<system:String x:Key="PlaceholderText">検索欄の案内文</system:String>
|
||||||
<system:String x:Key="PlaceholderTextTip">Change placeholder text. Input empty will use: {0}</system:String>
|
<system:String x:Key="PlaceholderTextTip">プレースホルダのテキストを変更します。空にすると、 {0} が使用されます</system:String>
|
||||||
<system:String x:Key="KeepMaxResults">ウィンドウサイズの固定</system:String>
|
<system:String x:Key="KeepMaxResults">ウィンドウサイズの固定</system:String>
|
||||||
<system:String x:Key="KeepMaxResultsToolTip">ウィンドウのサイズを固定し、ドラッグでの変更を無効にします。</system:String>
|
<system:String x:Key="KeepMaxResultsToolTip">ウィンドウのサイズを固定し、ドラッグでの変更を無効にします。</system:String>
|
||||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">「常にプレビューする」が有効になっているため、プレビューパネルの高さの確保のために「結果の最大表示件数」設定は無視される可能性があります</system:String>
|
||||||
|
|
||||||
<!-- Setting Hotkey -->
|
<!-- Setting Hotkey -->
|
||||||
<system:String x:Key="hotkey">ホットキー</system:String>
|
<system:String x:Key="hotkey">ホットキー</system:String>
|
||||||
|
|
@ -372,51 +388,51 @@
|
||||||
<system:String x:Key="customQueryHotkey">カスタムクエリ ホットキー</system:String>
|
<system:String x:Key="customQueryHotkey">カスタムクエリ ホットキー</system:String>
|
||||||
<system:String x:Key="customQueryShortcut">Custom Query Shortcut</system:String>
|
<system:String x:Key="customQueryShortcut">Custom Query Shortcut</system:String>
|
||||||
<system:String x:Key="builtinShortcuts">組み込みショートカット</system:String>
|
<system:String x:Key="builtinShortcuts">組み込みショートカット</system:String>
|
||||||
<system:String x:Key="customQuery">Query</system:String>
|
<system:String x:Key="customQuery">クエリー</system:String>
|
||||||
<system:String x:Key="customShortcut">ショートカット</system:String>
|
<system:String x:Key="customShortcut">ショートカット</system:String>
|
||||||
<system:String x:Key="customShortcutExpansion">展開</system:String>
|
<system:String x:Key="customShortcutExpansion">展開</system:String>
|
||||||
<system:String x:Key="builtinShortcutDescription">説明</system:String>
|
<system:String x:Key="builtinShortcutDescription">説明</system:String>
|
||||||
<system:String x:Key="delete">削除</system:String>
|
<system:String x:Key="delete">削除</system:String>
|
||||||
<system:String x:Key="edit">編集</system:String>
|
<system:String x:Key="edit">編集</system:String>
|
||||||
<system:String x:Key="add">追加</system:String>
|
<system:String x:Key="add">追加</system:String>
|
||||||
<system:String x:Key="none">None</system:String>
|
<system:String x:Key="none">なし</system:String>
|
||||||
<system:String x:Key="pleaseSelectAnItem">項目を選択してください</system:String>
|
<system:String x:Key="pleaseSelectAnItem">項目を選択してください</system:String>
|
||||||
<system:String x:Key="deleteCustomHotkeyWarning">{0} プラグインのホットキーを本当に削除しますか?</system:String>
|
<system:String x:Key="deleteCustomHotkeyWarning">{0} プラグインのホットキーを本当に削除しますか?</system:String>
|
||||||
<system:String x:Key="deleteCustomShortcutWarning">本当にこのショートカットを削除しますか?: {0} を {1} に展開</system:String>
|
<system:String x:Key="deleteCustomShortcutWarning">本当にこのショートカットを削除しますか?: {0} を {1} に展開</system:String>
|
||||||
<system:String x:Key="shortcut_clipboard_description">Get text from clipboard.</system:String>
|
<system:String x:Key="shortcut_clipboard_description">クリップボードからテキストを取得します。</system:String>
|
||||||
<system:String x:Key="shortcut_active_explorer_path">アクティブなエクスプローラーからパスを取得します。</system:String>
|
<system:String x:Key="shortcut_active_explorer_path">アクティブなエクスプローラーからパスを取得します。</system:String>
|
||||||
<system:String x:Key="queryWindowShadowEffect">検索ウィンドウの落陰効果</system:String>
|
<system:String x:Key="queryWindowShadowEffect">検索ウィンドウの落陰効果</system:String>
|
||||||
<system:String x:Key="shadowEffectCPUUsage">Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited.</system:String>
|
<system:String x:Key="shadowEffectCPUUsage">影の効果は GPU に大きな負荷をかけます。お使いのコンピューターの性能が限定的な場合、無効にすることをおすすめします。</system:String>
|
||||||
<system:String x:Key="windowWidthSize">Window Width Size</system:String>
|
<system:String x:Key="windowWidthSize">ウィンドウ幅のサイズ</system:String>
|
||||||
<system:String x:Key="windowWidthSizeToolTip">You can also quickly adjust this by using Ctrl+[ and Ctrl+].</system:String>
|
<system:String x:Key="windowWidthSizeToolTip">Ctrl+Plus と Ctrl+Minus を使用すれば、簡単に調整することもできます。</system:String>
|
||||||
<system:String x:Key="useGlyphUI">Segoe Fluent アイコンを使用する</system:String>
|
<system:String x:Key="useGlyphUI">Segoe Fluent アイコンを使用する</system:String>
|
||||||
<system:String x:Key="useGlyphUIEffect">サポートされているクエリ結果にSegoe Fluentアイコンを使用する</system:String>
|
<system:String x:Key="useGlyphUIEffect">サポートされているクエリ結果にSegoe Fluentアイコンを使用する</system:String>
|
||||||
<system:String x:Key="flowlauncherPressHotkey">Press Key</system:String>
|
<system:String x:Key="flowlauncherPressHotkey">キーを入力</system:String>
|
||||||
<system:String x:Key="showBadges">Show Result Badges</system:String>
|
<system:String x:Key="showBadges">結果のバッジを表示</system:String>
|
||||||
<system:String x:Key="showBadgesToolTip">サポートされているプラグインでは、バッジが表示され、より簡単に区別できます。</system:String>
|
<system:String x:Key="showBadgesToolTip">サポートされているプラグインでは、バッジが表示され、より簡単に区別できます。</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnly">Show Result Badges for Global Query Only</system:String>
|
<system:String x:Key="showBadgesGlobalOnly">グローバルクエリのみ、結果のバッジを表示</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
<system:String x:Key="showBadgesGlobalOnlyToolTip">グローバルクエリの結果にのみバッジを表示する</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
<system:String x:Key="dialogJumpHotkey">ダイアログジャンプ</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
<system:String x:Key="dialogJumpHotkeyToolTip">ショートカットを入力して、「名前を付けて開く/保存」ダイアログ・ウィンドウを現在のファイルマネージャのパスにすばやくナビゲートします。</system:String>
|
||||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
<system:String x:Key="dialogJump">ダイアログジャンプ</system:String>
|
||||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
<system:String x:Key="dialogJumpToolTip">「名前を付けて開く/保存」ダイアログウィンドウが開いたら、すぐにファイルマネージャの現在のパスに移動します。</system:String>
|
||||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
<system:String x:Key="autoDialogJump">自動ダイアログジャンプ</system:String>
|
||||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
<system:String x:Key="autoDialogJumpToolTip">開く/名前を付けて保存ダイアログが表示されると、自動的に現在のファイルマネージャのパスに移動させます。 (実験的)</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
<system:String x:Key="showDialogJumpWindow">ダイアログジャンプウィンドウを表示</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
<system:String x:Key="showDialogJumpWindowToolTip">「名前をつけて保存/開く」ダイアログウィンドウが表示されたときにダイアログジャンプのウィンドウを開いて、ファイルやフォルダーを素早く開く。</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
<system:String x:Key="dialogJumpWindowPosition">ダイアログジャンプのウィンドウの位置</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
<system:String x:Key="dialogJumpWindowPositionToolTip">ダイアログジャンプ検索ウィンドウの位置を選択します</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
<system:String x:Key="DialogJumpWindowPositionUnderDialog">「名前を付けて開く/保存」ダイアログウィンドウの下に固定。ウィンドウが閉じるまで開いたまま表示されます</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
<system:String x:Key="DialogJumpWindowPositionFollowDefault">デフォルトの検索ウィンドウの位置。検索ウィンドウのホットキーによってトリガーされたときに表示されます</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpResultBehaviour">ダイアログジャンプの検索結果の開き方</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
<system:String x:Key="dialogJumpResultBehaviourToolTip">「開く/名前を付けて保存」ダイアログウィンドウの選択した結果パスに移動する動作</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourLeftClick">左クリックまたはEnter キー</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourRightClick">右クリック</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviour">ダイアログジャンプのファイルに対する動作</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">結果がファイルパスの場合の、「開く/名前を付けて保存」ダイアログウィンドウに対する動作</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">フルパスをファイル名ボックスに入力</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">フルパスをファイル名ボックスに入力して開く</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">パスボックスに含まれるフォルダを入力</system:String>
|
||||||
|
|
||||||
<!-- Setting Proxy -->
|
<!-- Setting Proxy -->
|
||||||
<system:String x:Key="proxy">HTTP プロキシ</system:String>
|
<system:String x:Key="proxy">HTTP プロキシ</system:String>
|
||||||
|
|
@ -467,44 +483,49 @@
|
||||||
<system:String x:Key="userdatapathButton">フォルダーを開く</system:String>
|
<system:String x:Key="userdatapathButton">フォルダーを開く</system:String>
|
||||||
<system:String x:Key="advanced">上級者向け機能</system:String>
|
<system:String x:Key="advanced">上級者向け機能</system:String>
|
||||||
<system:String x:Key="logLevel">ログレベル</system:String>
|
<system:String x:Key="logLevel">ログレベル</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">デバッグ</system:String>
|
<system:String x:Key="LogLevelNONE">サイレント</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">エラー</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">情報</system:String>
|
<system:String x:Key="LogLevelINFO">情報</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">デバッグ</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">設定ウィンドウで使用するフォント</system:String>
|
<system:String x:Key="settingWindowFontTitle">設定ウィンドウで使用するフォント</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
<system:String x:Key="seeMoreReleaseNotes">See more release notes on GitHub</system:String>
|
<system:String x:Key="seeMoreReleaseNotes">GitHub で詳細なリリース ノートを見る</system:String>
|
||||||
<system:String x:Key="checkNetworkConnectionTitle">Failed to fetch release notes</system:String>
|
<system:String x:Key="checkNetworkConnectionTitle">リリースノートの取得に失敗</system:String>
|
||||||
<system:String x:Key="checkNetworkConnectionSubTitle">Please check your network connection or ensure GitHub is accessible</system:String>
|
<system:String x:Key="checkNetworkConnectionSubTitle">ネットワーク接続を確認するか、GitHubにアクセスできることを確認してください</system:String>
|
||||||
<system:String x:Key="appUpdateTitle">Flow Launcher has been updated to {0}</system:String>
|
<system:String x:Key="appUpdateTitle">Flow Launcher が {0}に更新されました</system:String>
|
||||||
<system:String x:Key="appUpdateButtonContent">Click here to view the release notes</system:String>
|
<system:String x:Key="appUpdateButtonContent">ここをクリックしてリリースノートを表示</system:String>
|
||||||
|
|
||||||
<!-- FileManager Setting Dialog -->
|
<!-- FileManager Setting Dialog -->
|
||||||
<system:String x:Key="fileManagerWindow">デフォルトのファイルマネージャー</system:String>
|
<system:String x:Key="fileManagerWindow">デフォルトのファイルマネージャー</system:String>
|
||||||
<system:String x:Key="fileManager_learnMore">Learn more</system:String>
|
<system:String x:Key="fileManager_learnMore">詳細を見る</system:String>
|
||||||
<system:String x:Key="fileManager_tips">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.</system:String>
|
<system:String x:Key="fileManager_tips">使用したいファイルマネージャーのファイルの位置を指定し、コマンドライン引数を入力してください。"%d" は開こうとしているフォルダーのパスを表し、「フォルダー用の引数」の欄で特定のフォルダーを開くために使用されます。"%f" は開こうとしているファイルのパスを表し、「ファイル用の引数」の欄で特定のファイルを開くために使用されます。</system:String>
|
||||||
<system:String x:Key="fileManager_tips2">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.</system:String>
|
<system:String x:Key="fileManager_tips2">例として、ファイルマネージャーが "totalcmd.exe /A c:\windows" というコマンドを c:\windows というフォルダを開くために使用する場合を考えます。この場合、ファイルマネージャーのパスは totalcmd.exe で、フォルダー用の引数は /A "%d" になります。QTTabBarのように、パスのみを要求するファイルマネージャーの場合、”%d” をファイルマネージャーのパスの欄に指定し、残りを空欄にしてください。</system:String>
|
||||||
<system:String x:Key="fileManager_name">File Manager</system:String>
|
<system:String x:Key="fileManager_name">ファイル マネージャー</system:String>
|
||||||
<system:String x:Key="fileManager_profile_name">Profile Name</system:String>
|
<system:String x:Key="fileManager_profile_name">プロファイル名</system:String>
|
||||||
<system:String x:Key="fileManager_path">File Manager Path</system:String>
|
<system:String x:Key="fileManager_path">ファイルマネージャーのパス</system:String>
|
||||||
<system:String x:Key="fileManager_directory_arg">Arg For Folder</system:String>
|
<system:String x:Key="fileManager_directory_arg">フォルダー用の引数</system:String>
|
||||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
<system:String x:Key="fileManager_file_arg">ファイル用の引数</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">ファイルマネージャー '{0}' は、'{1}' に見つかりませんでした。続行しますか?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">ファイルマネージャのパスエラー</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">ファイルエクスプローラー</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">デフォルトのウェブブラウザー</system:String>
|
<system:String x:Key="defaultBrowserTitle">デフォルトのウェブブラウザー</system:String>
|
||||||
<system:String x:Key="defaultBrowser_tips">The default setting follows the OS default browser setting. If specified separately, flow uses that browser.</system:String>
|
<system:String x:Key="defaultBrowser_tips">デフォルトの設定は、OS のデフォルトのブラウザ設定に従います。別々に指定すると、Flow はそのブラウザを使用します。</system:String>
|
||||||
<system:String x:Key="defaultBrowser_name">Browser</system:String>
|
<system:String x:Key="defaultBrowser_name">ブラウザー</system:String>
|
||||||
<system:String x:Key="defaultBrowser_profile_name">Browser Name</system:String>
|
<system:String x:Key="defaultBrowser_profile_name">ブラウザー名</system:String>
|
||||||
<system:String x:Key="defaultBrowser_path">Browser Path</system:String>
|
<system:String x:Key="defaultBrowser_path">ブラウザーのパス</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">新しいウィンドウ</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">新しいタブ</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
<system:String x:Key="defaultBrowser_parameter">プライベートモード</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">デフォルト</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">新しいプロファイル</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
<system:String x:Key="changePriorityWindow">優先度の変更</system:String>
|
||||||
<system:String x:Key="priority_tips">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</system:String>
|
<system:String x:Key="priority_tips">数値が大きいほど、結果の上の方に表示されます。試しに5として設定してみてください。 結果を他のプラグインよりも低くしたい場合は、負の数字を入力してください</system:String>
|
||||||
<system:String x:Key="invalidPriority">Please provide an valid integer for Priority!</system:String>
|
<system:String x:Key="invalidPriority">優先度には有効な整数を入力してください!</system:String>
|
||||||
|
|
||||||
<!-- Action Keyword Setting Dialog -->
|
<!-- Action Keyword Setting Dialog -->
|
||||||
<system:String x:Key="oldActionKeywords">古いアクションキーワード</system:String>
|
<system:String x:Key="oldActionKeywords">古いアクションキーワード</system:String>
|
||||||
|
|
@ -514,33 +535,33 @@
|
||||||
<system:String x:Key="cannotFindSpecifiedPlugin">指定されたプラグインが見つかりません</system:String>
|
<system:String x:Key="cannotFindSpecifiedPlugin">指定されたプラグインが見つかりません</system:String>
|
||||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">新しいアクションキーワードを空にすることはできません</system:String>
|
<system:String x:Key="newActionKeywordsCannotBeEmpty">新しいアクションキーワードを空にすることはできません</system:String>
|
||||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">新しいアクションキーワードは他のプラグインに割り当てられています。他のアクションキーワードを入力してください</system:String>
|
<system:String x:Key="newActionKeywordsHasBeenAssigned">新しいアクションキーワードは他のプラグインに割り当てられています。他のアクションキーワードを入力してください</system:String>
|
||||||
<system:String x:Key="newActionKeywordsSameAsOld">This new Action Keyword is the same as old, please choose a different one</system:String>
|
<system:String x:Key="newActionKeywordsSameAsOld">そのアクションキーワードは以前のものと同じです。他のアクションキーワードを入力してください</system:String>
|
||||||
<system:String x:Key="success">成功しました</system:String>
|
<system:String x:Key="success">成功しました</system:String>
|
||||||
<system:String x:Key="completedSuccessfully">Completed successfully</system:String>
|
<system:String x:Key="completedSuccessfully">正常に完了しました</system:String>
|
||||||
<system:String x:Key="failedToCopy">Failed to copy</system:String>
|
<system:String x:Key="failedToCopy">コピーに失敗</system:String>
|
||||||
<system:String x:Key="actionkeyword_tips">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.</system:String>
|
<system:String x:Key="actionkeyword_tips">プラグインを起動するためのアクションキーワードを、空白区切りで入力してください。特定のキーワードを使用せずにプラグインを使用したい場合、* を入力してください。</system:String>
|
||||||
|
|
||||||
<!-- Search Delay Settings Dialog -->
|
<!-- Search Delay Settings Dialog -->
|
||||||
<system:String x:Key="searchDelayTimeTitle">Search Delay Time Setting</system:String>
|
<system:String x:Key="searchDelayTimeTitle">検索の遅延時間の設定</system:String>
|
||||||
<system:String x:Key="searchDelayTimeTips">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.</system:String>
|
<system:String x:Key="searchDelayTimeTips">プラグインに使用したい検索の遅延時間をミリ秒で入力します。 何も指定したくない場合は空にしておくと、プラグインはデフォルトの検索の遅延時間を使用します。</system:String>
|
||||||
|
|
||||||
<!-- Search Delay Settings Dialog -->
|
<!-- Search Delay Settings Dialog -->
|
||||||
<system:String x:Key="homeTitle">ホームページ</system:String>
|
<system:String x:Key="homeTitle">ホームページ</system:String>
|
||||||
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
<system:String x:Key="homeTips">クエリが空のときにプラグインの結果を表示したい場合は、プラグインのホームページの設定を有効にします。</system:String>
|
||||||
|
|
||||||
<!-- Custom Query Hotkey Dialog -->
|
<!-- Custom Query Hotkey Dialog -->
|
||||||
<system:String x:Key="customeQueryHotkeyTitle">カスタムクエリのホットキー</system:String>
|
<system:String x:Key="customeQueryHotkeyTitle">カスタムクエリのホットキー</system:String>
|
||||||
<system:String x:Key="customeQueryHotkeyTips">Press a custom hotkey to open Flow Launcher and input the specified query automatically.</system:String>
|
<system:String x:Key="customeQueryHotkeyTips">カスタムホットキーを押して Flow Launcher を開き、指定したクエリを自動的に入力します。</system:String>
|
||||||
<system:String x:Key="preview">プレビュー</system:String>
|
<system:String x:Key="preview">プレビュー</system:String>
|
||||||
<system:String x:Key="hotkeyIsNotUnavailable">ホットキーは使用できません。新しいホットキーを選択してください</system:String>
|
<system:String x:Key="hotkeyIsNotUnavailable">ホットキーは使用できません。新しいホットキーを選択してください</system:String>
|
||||||
<system:String x:Key="invalidPluginHotkey">Hotkey is invalid</system:String>
|
<system:String x:Key="invalidPluginHotkey">そのホットキーは無効です</system:String>
|
||||||
<system:String x:Key="update">更新</system:String>
|
<system:String x:Key="update">更新</system:String>
|
||||||
<system:String x:Key="hotkeyRegTitle">Binding Hotkey</system:String>
|
<system:String x:Key="hotkeyRegTitle">ホットキーの設定</system:String>
|
||||||
<system:String x:Key="hotkeyUnavailable">Current hotkey is unavailable.</system:String>
|
<system:String x:Key="hotkeyUnavailable">現在のホットキーは使用できません。</system:String>
|
||||||
<system:String x:Key="hotkeyUnavailableUneditable">This hotkey is reserved for "{0}" and can't be used. Please choose another hotkey.</system:String>
|
<system:String x:Key="hotkeyUnavailableUneditable">このホットキーは "{0}" で予約されており、使用できません。別のホットキーを選択してください。</system:String>
|
||||||
<system:String x:Key="hotkeyUnavailableEditable">This hotkey is already in use by "{0}". If you press "Overwrite", it will be removed from "{0}".</system:String>
|
<system:String x:Key="hotkeyUnavailableEditable">このホットキーは "{0}" によってすでに使用されています。「上書き」を押すと、"{0}"から削除されます。</system:String>
|
||||||
<system:String x:Key="hotkeyRegGuide">Press the keys you want to use for this function.</system:String>
|
<system:String x:Key="hotkeyRegGuide">この機能に使用するキーを押してください。</system:String>
|
||||||
<system:String x:Key="emptyPluginHotkey">Hotkey and action keyword are empty</system:String>
|
<system:String x:Key="emptyPluginHotkey">ホットキーとアクションキーワードが空です</system:String>
|
||||||
|
|
||||||
<!-- Custom Query Shortcut Dialog -->
|
<!-- Custom Query Shortcut Dialog -->
|
||||||
<system:String x:Key="customeQueryShortcutTitle">カスタムクエリのショートカット</system:String>
|
<system:String x:Key="customeQueryShortcutTitle">カスタムクエリのショートカット</system:String>
|
||||||
|
|
@ -551,11 +572,11 @@
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="duplicateShortcut">そのショートカットは既に存在します。新しいショートカットを入力するか、既存のショートカットを編集してください。</system:String>
|
<system:String x:Key="duplicateShortcut">そのショートカットは既に存在します。新しいショートカットを入力するか、既存のショートカットを編集してください。</system:String>
|
||||||
<system:String x:Key="emptyShortcut">ショートカット、展開の少なくとも一方が空です。</system:String>
|
<system:String x:Key="emptyShortcut">ショートカット、展開の少なくとも一方が空です。</system:String>
|
||||||
<system:String x:Key="invalidShortcut">Shortcut is invalid</system:String>
|
<system:String x:Key="invalidShortcut">ショートカットが無効です</system:String>
|
||||||
|
|
||||||
<!-- Common Action -->
|
<!-- Common Action -->
|
||||||
<system:String x:Key="commonSave">保存</system:String>
|
<system:String x:Key="commonSave">保存</system:String>
|
||||||
<system:String x:Key="commonOverwrite">Overwrite</system:String>
|
<system:String x:Key="commonOverwrite">上書き</system:String>
|
||||||
<system:String x:Key="commonCancel">キャンセル</system:String>
|
<system:String x:Key="commonCancel">キャンセル</system:String>
|
||||||
<system:String x:Key="commonReset">リセット</system:String>
|
<system:String x:Key="commonReset">リセット</system:String>
|
||||||
<system:String x:Key="commonDelete">削除</system:String>
|
<system:String x:Key="commonDelete">削除</system:String>
|
||||||
|
|
@ -580,46 +601,47 @@
|
||||||
<system:String x:Key="reportWindow_report_failed">クラッシュレポートの送信に失敗しました</system:String>
|
<system:String x:Key="reportWindow_report_failed">クラッシュレポートの送信に失敗しました</system:String>
|
||||||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcherにエラーが発生しました</system:String>
|
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcherにエラーが発生しました</system:String>
|
||||||
<system:String x:Key="reportWindow_please_open_issue">Please open new issue in</system:String>
|
<system:String x:Key="reportWindow_please_open_issue">Please open new issue in</system:String>
|
||||||
<system:String x:Key="reportWindow_upload_log">1. Upload log file: {0}</system:String>
|
<system:String x:Key="reportWindow_upload_log">1. ログファイルをアップロード: {0}</system:String>
|
||||||
<system:String x:Key="reportWindow_copy_below">2. Copy below exception message</system:String>
|
<system:String x:Key="reportWindow_copy_below">2. 例外メッセージ以下をコピー</system:String>
|
||||||
|
|
||||||
<!-- File Open Error -->
|
<!-- File Open Error -->
|
||||||
<system:String x:Key="fileManagerNotFoundTitle">File Manager Error</system:String>
|
<system:String x:Key="fileManagerNotFoundTitle">ファイルマネージャのエラー</system:String>
|
||||||
<system:String x:Key="fileManagerNotFound">
|
<system:String x:Key="fileManagerNotFound">
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
指定されたファイルマネージャーが見つかりませんでした。設定 > 一般でカスタムファイルマネージャの設定を確認してください。
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">エラー</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">フォルダを開く際にエラーが発生しました。</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">ブラウザでURLを開く際にエラーが発生しました。設定ウィンドウの一般セクションでデフォルトのウェブブラウザ設定を確認してください</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">ファイルまたはフォルダーが見つかりません: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">しばらくお待ちください…</system:String>
|
||||||
|
|
||||||
<!-- Update -->
|
<!-- Update -->
|
||||||
<system:String x:Key="update_flowlauncher_update_check">Checking for new update</system:String>
|
<system:String x:Key="update_flowlauncher_update_check">新しい更新を確認中</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_already_on_latest">Flow Launcherは既に最新です</system:String>
|
<system:String x:Key="update_flowlauncher_already_on_latest">Flow Launcherは既に最新です</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_found">Update found</system:String>
|
<system:String x:Key="update_flowlauncher_update_found">更新が見つかりました</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_updating">Updating...</system:String>
|
<system:String x:Key="update_flowlauncher_updating">更新中…</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
|
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
|
||||||
Flow Launcher was not able to move your user profile data to the new update version.
|
Flow Launcherはユーザープロファイルデータを新しいバージョンに移動できませんでした。
|
||||||
Please manually move your profile data folder from {0} to {1}
|
手動で {0} から {1}にプロフィールデータフォルダを移動してください
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_new_update">New Update</system:String>
|
<system:String x:Key="update_flowlauncher_new_update">新しい更新</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_new_version_available">Flow Launcher の最新バージョン V{0} が入手可能です</system:String>
|
<system:String x:Key="update_flowlauncher_update_new_version_available">Flow Launcher の最新バージョン V{0} が入手可能です</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_error">Flow Launcherのアップデート中にエラーが発生しました</system:String>
|
<system:String x:Key="update_flowlauncher_update_error">Flow Launcherのアップデート中にエラーが発生しました</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update">更新</system:String>
|
<system:String x:Key="update_flowlauncher_update">更新</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_cancel">キャンセル</system:String>
|
<system:String x:Key="update_flowlauncher_update_cancel">キャンセル</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_fail">Update Failed</system:String>
|
<system:String x:Key="update_flowlauncher_fail">アップデート失敗</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_check_connection">Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.</system:String>
|
<system:String x:Key="update_flowlauncher_check_connection">接続を確認し、その後プロキシ設定を github-cloud.s3.amazonaws.com に更新してみてください。</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">このアップデートでは、Flow Launcherの再起動が必要です</system:String>
|
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">このアップデートでは、Flow Launcherの再起動が必要です</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_update_files">次のファイルがアップデートされます</system:String>
|
<system:String x:Key="update_flowlauncher_update_update_files">次のファイルがアップデートされます</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_files">更新ファイル一覧</system:String>
|
<system:String x:Key="update_flowlauncher_update_files">更新ファイル一覧</system:String>
|
||||||
<system:String x:Key="update_flowlauncher_update_update_description">アップデートの詳細</system:String>
|
<system:String x:Key="update_flowlauncher_update_update_description">アップデートの詳細</system:String>
|
||||||
|
|
||||||
<!-- Plugin Update Window -->
|
<!-- Plugin Update Window -->
|
||||||
<system:String x:Key="restartAfterUpdating">Restart Flow Launcher after updating plugins</system:String>
|
<system:String x:Key="restartAfterUpdating">プラグインを更新した後、Flow Launcher を再起動する</system:String>
|
||||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Update from v{1} to v{2}</system:String>
|
<system:String x:Key="updatePluginCheckboxContent">{0}: v{1} から v{2} へ更新</system:String>
|
||||||
<system:String x:Key="updatePluginNoSelected">No plugin selected</system:String>
|
<system:String x:Key="updatePluginNoSelected">プラグインが選択されていません</system:String>
|
||||||
|
|
||||||
<!-- Welcome Window -->
|
<!-- Welcome Window -->
|
||||||
<system:String x:Key="Skip">スキップ</system:String>
|
<system:String x:Key="Skip">スキップ</system:String>
|
||||||
|
|
@ -642,18 +664,18 @@
|
||||||
<system:String x:Key="HotkeyShiftEnterDesc">コンテキストメニューを開く</system:String>
|
<system:String x:Key="HotkeyShiftEnterDesc">コンテキストメニューを開く</system:String>
|
||||||
<system:String x:Key="HotkeyCtrlEnterDesc">ファイルのあるフォルダを開く</system:String>
|
<system:String x:Key="HotkeyCtrlEnterDesc">ファイルのあるフォルダを開く</system:String>
|
||||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">管理者として実行、または、 デフォルトのファイルマネージャでフォルダを開く</system:String>
|
<system:String x:Key="HotkeyCtrlShiftEnterDesc">管理者として実行、または、 デフォルトのファイルマネージャでフォルダを開く</system:String>
|
||||||
<system:String x:Key="HotkeyCtrlHDesc">Query History</system:String>
|
<system:String x:Key="HotkeyCtrlHDesc">クエリの履歴</system:String>
|
||||||
<system:String x:Key="HotkeyESCDesc">コンテキストメニューから検索結果に戻る</system:String>
|
<system:String x:Key="HotkeyESCDesc">コンテキストメニューから検索結果に戻る</system:String>
|
||||||
<system:String x:Key="HotkeyTabDesc">Autocomplete</system:String>
|
<system:String x:Key="HotkeyTabDesc">自動補完</system:String>
|
||||||
<system:String x:Key="HotkeyRunDesc">選択したアイテムを開く、または、実行する</system:String>
|
<system:String x:Key="HotkeyRunDesc">選択したアイテムを開く、または、実行する</system:String>
|
||||||
<system:String x:Key="HotkeyCtrlIDesc">Flow Launcherの設定ウインドウを開く</system:String>
|
<system:String x:Key="HotkeyCtrlIDesc">Flow Launcherの設定ウインドウを開く</system:String>
|
||||||
<system:String x:Key="HotkeyF5Desc">プラグインデータのリロード</system:String>
|
<system:String x:Key="HotkeyF5Desc">プラグインデータのリロード</system:String>
|
||||||
|
|
||||||
<system:String x:Key="HotkeySelectFirstResult">Select first result</system:String>
|
<system:String x:Key="HotkeySelectFirstResult">最初の結果を選択</system:String>
|
||||||
<system:String x:Key="HotkeySelectLastResult">Select last result</system:String>
|
<system:String x:Key="HotkeySelectLastResult">最後の結果を選択</system:String>
|
||||||
<system:String x:Key="HotkeyRequery">Run current query again</system:String>
|
<system:String x:Key="HotkeyRequery">現在のクエリをもう一度実行</system:String>
|
||||||
<system:String x:Key="HotkeyOpenResult">結果を開く</system:String>
|
<system:String x:Key="HotkeyOpenResult">結果を開く</system:String>
|
||||||
<system:String x:Key="HotkeyOpenResultN">Open result #{0}</system:String>
|
<system:String x:Key="HotkeyOpenResultN">#{0} を開く</system:String>
|
||||||
|
|
||||||
<system:String x:Key="RecommendWeather">天気</system:String>
|
<system:String x:Key="RecommendWeather">天気</system:String>
|
||||||
<system:String x:Key="RecommendWeatherDesc">天気についてのGoogle検索</system:String>
|
<system:String x:Key="RecommendWeatherDesc">天気についてのGoogle検索</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">창 위치 초기화</system:String>
|
<system:String x:Key="PositionReset">창 위치 초기화</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">검색창 위치 초기화</system:String>
|
<system:String x:Key="PositionResetToolTip">검색창 위치 초기화</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">검색어 입력</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">검색어 입력</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">설정</system:String>
|
<system:String x:Key="flowlauncher_settings">설정</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Flow Launcher를 제거한 후에는 작업 스케줄러에서 이 작업(Flow.Launcher Startup)을 수동으로 삭제해야 합니다</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Flow Launcher를 제거한 후에는 작업 스케줄러에서 이 작업(Flow.Launcher Startup)을 수동으로 삭제해야 합니다</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
|
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">포커스 잃으면 Flow Launcher 숨김</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">포커스 잃으면 Flow Launcher 숨김</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">새 버전 알림 끄기</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">새 버전 알림 끄기</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">검색 창 위치</system:String>
|
<system:String x:Key="SearchWindowPosition">검색 창 위치</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">마지막 위치 기억</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">마지막 위치 기억</system:String>
|
||||||
|
|
@ -162,6 +168,10 @@
|
||||||
<system:String x:Key="homePageToolTip">쿼리 입력창이 비어있을때, 홈페이지의 결과를 표시합니다.</system:String>
|
<system:String x:Key="homePageToolTip">쿼리 입력창이 비어있을때, 홈페이지의 결과를 표시합니다.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">히스토리를 홈페이지에 표시</system:String>
|
<system:String x:Key="historyResultsForHomePage">히스토리를 홈페이지에 표시</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">홈페이지에 표시할 최대 히스토리 수</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">홈페이지에 표시할 최대 히스토리 수</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -205,6 +215,8 @@
|
||||||
<system:String x:Key="plugin_query_version">버전</system:String>
|
<system:String x:Key="plugin_query_version">버전</system:String>
|
||||||
<system:String x:Key="plugin_query_web">웹사이트</system:String>
|
<system:String x:Key="plugin_query_web">웹사이트</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">제거</system:String>
|
<system:String x:Key="plugin_uninstall">제거</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -215,6 +227,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">플러그인 스토어</system:String>
|
<system:String x:Key="pluginStore">플러그인 스토어</system:String>
|
||||||
|
|
@ -434,7 +450,7 @@
|
||||||
<system:String x:Key="icons">아이콘</system:String>
|
<system:String x:Key="icons">아이콘</system:String>
|
||||||
<system:String x:Key="about_activate_times">Flow Launcher를 {0}번 실행했습니다.</system:String>
|
<system:String x:Key="about_activate_times">Flow Launcher를 {0}번 실행했습니다.</system:String>
|
||||||
<system:String x:Key="checkUpdates">업데이트 확인</system:String>
|
<system:String x:Key="checkUpdates">업데이트 확인</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">후원하기</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">새 버전({0})이 있습니다. Flow Launcher를 재시작하세요.</system:String>
|
<system:String x:Key="newVersionTips">새 버전({0})이 있습니다. Flow Launcher를 재시작하세요.</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">업데이트 확인을 실패했습니다. api.github.com로의 연결 또는 프록시 설정을 확인해주세요.</system:String>
|
<system:String x:Key="checkUpdatesFailed">업데이트 확인을 실패했습니다. api.github.com로의 연결 또는 프록시 설정을 확인해주세요.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -458,8 +474,10 @@
|
||||||
<system:String x:Key="userdatapathButton">폴더 열기</system:String>
|
<system:String x:Key="userdatapathButton">폴더 열기</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">로그 레벨</system:String>
|
<system:String x:Key="logLevel">로그 레벨</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">설정창 글꼴</system:String>
|
<system:String x:Key="settingWindowFontTitle">설정창 글꼴</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -481,6 +499,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">파일경로 인수</system:String>
|
<system:String x:Key="fileManager_file_arg">파일경로 인수</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">기본 웹 브라우저</system:String>
|
<system:String x:Key="defaultBrowserTitle">기본 웹 브라우저</system:String>
|
||||||
|
|
@ -491,6 +510,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">새 창</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">새 창</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">새 탭</system:String>
|
<system:String x:Key="defaultBrowser_newTab">새 탭</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">사생활 보호 모드</system:String>
|
<system:String x:Key="defaultBrowser_parameter">사생활 보호 모드</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">중요도 변경</system:String>
|
<system:String x:Key="changePriorityWindow">중요도 변경</system:String>
|
||||||
|
|
@ -553,7 +574,7 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
<system:String x:Key="commonOK">확인</system:String>
|
<system:String x:Key="commonOK">확인</system:String>
|
||||||
<system:String x:Key="commonYes">예</system:String>
|
<system:String x:Key="commonYes">예</system:String>
|
||||||
<system:String x:Key="commonNo">아니오</system:String>
|
<system:String x:Key="commonNo">아니오</system:String>
|
||||||
<system:String x:Key="commonBackground">배경</system:String>
|
<system:String x:Key="commonBackground">백그라운드</system:String>
|
||||||
|
|
||||||
<!-- Crash Reporter -->
|
<!-- Crash Reporter -->
|
||||||
<system:String x:Key="reportWindow_version">버전</system:String>
|
<system:String x:Key="reportWindow_version">버전</system:String>
|
||||||
|
|
@ -580,8 +601,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">잠시 기다려주세요...</system:String>
|
<system:String x:Key="pleaseWait">잠시 기다려주세요...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Tilbakestilling av posisjon</system:String>
|
<system:String x:Key="PositionReset">Tilbakestilling av posisjon</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Innstillinger</system:String>
|
<system:String x:Key="flowlauncher_settings">Innstillinger</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Feil ved å sette kjør ved oppstart</system:String>
|
<system:String x:Key="setAutoStartFailed">Feil ved å sette kjør ved oppstart</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skjul Flow Launcher når fokus forsvinner</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skjul Flow Launcher når fokus forsvinner</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Ikke vis varsler om nye versjoner</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Ikke vis varsler om nye versjoner</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Husk siste posisjon</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Husk siste posisjon</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versjon</system:String>
|
<system:String x:Key="plugin_query_version">Versjon</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Nettsted</system:String>
|
<system:String x:Key="plugin_query_web">Nettsted</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Avinstaller</system:String>
|
<system:String x:Key="plugin_uninstall">Avinstaller</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Programtillegg butikk</system:String>
|
<system:String x:Key="pluginStore">Programtillegg butikk</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Ikoner</system:String>
|
<system:String x:Key="icons">Ikoner</system:String>
|
||||||
<system:String x:Key="about_activate_times">Du har aktivert Flow Launcher {0} ganger</system:String>
|
<system:String x:Key="about_activate_times">Du har aktivert Flow Launcher {0} ganger</system:String>
|
||||||
<system:String x:Key="checkUpdates">Se etter oppdateringer</system:String>
|
<system:String x:Key="checkUpdates">Se etter oppdateringer</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Bli en sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Ny versjon {0} er tilgjengelig, vil du starte Flow Launcher på nytt for å bruke oppdateringen?</system:String>
|
<system:String x:Key="newVersionTips">Ny versjon {0} er tilgjengelig, vil du starte Flow Launcher på nytt for å bruke oppdateringen?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Sjekk oppdateringer mislyktes, vennligst sjekk tilkoblingen og proxy-innstillingene til api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Sjekk oppdateringer mislyktes, vennligst sjekk tilkoblingen og proxy-innstillingene til api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Åpne mappe</system:String>
|
<system:String x:Key="userdatapathButton">Åpne mappe</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Feil</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg for fil</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg for fil</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Standard nettleser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Standard nettleser</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nytt vindu</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nytt vindu</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Ny fane</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Ny fane</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Privat modus</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Privat modus</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Endre prioritet</system:String>
|
<system:String x:Key="changePriorityWindow">Endre prioritet</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Hvis du legger til et @-prefiks mens du legger inn en snarvei, samsvarer det med
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Feil</system:String>
|
<system:String x:Key="errorTitle">Feil</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Vennligst vent...</system:String>
|
<system:String x:Key="pleaseWait">Vennligst vent...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Positie resetten</system:String>
|
<system:String x:Key="PositionReset">Positie resetten</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type om te zoeken</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type om te zoeken</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Instellingen</system:String>
|
<system:String x:Key="flowlauncher_settings">Instellingen</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Fout bij het instellen van uitvoeren bij opstarten</system:String>
|
<system:String x:Key="setAutoStartFailed">Fout bij het instellen van uitvoeren bij opstarten</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Verberg Flow Launcher als focus verloren is</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Verberg Flow Launcher als focus verloren is</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Laat geen nieuwe versie notificaties zien</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Laat geen nieuwe versie notificaties zien</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Laatste Positie Onthouden</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Laatste Positie Onthouden</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versie</system:String>
|
<system:String x:Key="plugin_query_version">Versie</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Verwijderen</system:String>
|
<system:String x:Key="plugin_uninstall">Verwijderen</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plugin Winkel</system:String>
|
<system:String x:Key="pluginStore">Plugin Winkel</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Pictogrammen</system:String>
|
<system:String x:Key="icons">Pictogrammen</system:String>
|
||||||
<system:String x:Key="about_activate_times">U heeft Flow Launcher {0} keer opgestart</system:String>
|
<system:String x:Key="about_activate_times">U heeft Flow Launcher {0} keer opgestart</system:String>
|
||||||
<system:String x:Key="checkUpdates">Zoek naar Updates</system:String>
|
<system:String x:Key="checkUpdates">Zoek naar Updates</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Sponsor worden</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Nieuwe versie {0} beschikbaar, start Flow Launcher opnieuw op</system:String>
|
<system:String x:Key="newVersionTips">Nieuwe versie {0} beschikbaar, start Flow Launcher opnieuw op</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Controleren op updates mislukt, controleer uw verbinding en proxy-instellingen voor api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Controleren op updates mislukt, controleer uw verbinding en proxy-instellingen voor api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Map openen</system:String>
|
<system:String x:Key="userdatapathButton">Map openen</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg voor bestand</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg voor bestand</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Standaard webbrowser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Standaard webbrowser</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nieuw Venster</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nieuw Venster</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nieuw tabblad</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nieuw tabblad</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Privé modus</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Privé modus</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Prioriteit wijzigen</system:String>
|
<system:String x:Key="changePriorityWindow">Prioriteit wijzigen</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ Als u een '@' voorvoegsel toevoegt tijdens het invoeren van een snelkoppeling, m
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -8,33 +8,33 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Wybierz plik wykonywalny {0}</system:String>
|
<system:String x:Key="runtimePluginChooseRuntimeExecutable">Wybierz plik wykonywalny {0}</system:String>
|
||||||
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
<system:String x:Key="runtimeExecutableInvalidChooseDownload">
|
||||||
Your selected {0} executable is invalid.
|
Wybrany plik wykonywalny {0} jest nieprawidłowy.
|
||||||
{2}{2}
|
{2}{2}
|
||||||
Click yes if you would like select the {0} executable again. Click no if you would like to download {1}
|
Kliknij Tak, jeśli chcesz ponownie wybrać plik wykonywalny {0}. Kliknij Nie, jeśli chcesz pobrać {1}
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Nie można ustawić ścieżki do pliku wykonywalnego {0}. Spróbuj ponownie w ustawieniach Flow (przewiń na sam dół).</system:String>
|
<system:String x:Key="runtimePluginUnableToSetExecutablePath">Nie można ustawić ścieżki do pliku wykonywalnego {0}. Spróbuj ponownie w ustawieniach Flow (przewiń na sam dół).</system:String>
|
||||||
<system:String x:Key="failedToInitializePluginsTitle">Nie udało się zainicjować wtyczek</system:String>
|
<system:String x:Key="failedToInitializePluginsTitle">Nie udało się zainicjować wtyczek</system:String>
|
||||||
<system:String x:Key="failedToInitializePluginsMessage">Wtyczki: {0} – nie udało się ich wczytać i zostaną wyłączone. Skontaktuj się z twórcą wtyczki, aby uzyskać pomoc</system:String>
|
<system:String x:Key="failedToInitializePluginsMessage">Wtyczki: {0} – nie udało się ich wczytać i zostaną wyłączone. Skontaktuj się z twórcą wtyczki, aby uzyskać pomoc</system:String>
|
||||||
|
|
||||||
<!-- Portable -->
|
<!-- Portable -->
|
||||||
<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="restartToDisablePortableMode">Flow Launcher musi zostać ponownie uruchomiony, aby wyłączyć tryb przenośny. Spowoduje to usunięcie profilu przenośnego i zachowanie profilu mobilnego</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="restartToEnablePortableMode">Flow Launcher musi zostać ponownie uruchomiony, aby włączyć tryb przenośny. Spowoduje to usunięcie profilu mobilnego i zachowanie profilu przenośnego</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="moveToDifferentLocation">Flow Launcher wykrył włączenie trybu przenośnego. Czy chcesz przenieść aplikację do innej lokalizacji?</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>
|
<system:String x:Key="shortcutsUninstallerCreated">Wykryto wyłączenie trybu przenośnego. Odpowiednie skróty oraz deinstalator zostały utworzone</system:String>
|
||||||
<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>
|
<system:String x:Key="userDataDuplicated">Flow Launcher wykrył zduplikowane dane użytkownika w dwóch lokalizacjach: {0} oraz {1}.{2}{2}Aby kontynuować, usuń dane znajdujące się w {1}. Nie wprowadzono żadnych zmian.</system:String>
|
||||||
|
|
||||||
<!-- Plugin Loader -->
|
<!-- Plugin Loader -->
|
||||||
<system:String x:Key="pluginHasErrored">The following plugin has errored and cannot be loaded:</system:String>
|
<system:String x:Key="pluginHasErrored">Nie można załadować następującej wtyczki z powodu błędu:</system:String>
|
||||||
<system:String x:Key="pluginsHaveErrored">The following plugins have errored and cannot be loaded:</system:String>
|
<system:String x:Key="pluginsHaveErrored">Nie można załadować następujących wtyczek z powodu błędu:</system:String>
|
||||||
<system:String x:Key="referToLogs">Please refer to the logs for more information</system:String>
|
<system:String x:Key="referToLogs">Aby uzyskać więcej informacji, zapoznaj się z logami</system:String>
|
||||||
|
|
||||||
<!-- Http -->
|
<!-- Http -->
|
||||||
<system:String x:Key="pleaseTryAgain">Please try again</system:String>
|
<system:String x:Key="pleaseTryAgain">Proszę spróbować ponownie</system:String>
|
||||||
<system:String x:Key="parseProxyFailed">Unable to parse Http Proxy</system:String>
|
<system:String x:Key="parseProxyFailed">Nie można przetworzyć adresu serwera proxy HTTP</system:String>
|
||||||
|
|
||||||
<!-- AbstractPluginEnvironment -->
|
<!-- AbstractPluginEnvironment -->
|
||||||
<system:String x:Key="failToInstallTypeScriptEnv">Failed to install TypeScript environment. Please try again later</system:String>
|
<system:String x:Key="failToInstallTypeScriptEnv">Instalacja środowiska TypeScript nie powiodła się. Spróbuj ponownie później.</system:String>
|
||||||
<system:String x:Key="failToInstallPythonEnv">Failed to install Python environment. Please try again later.</system:String>
|
<system:String x:Key="failToInstallPythonEnv">Instalacja środowiska Python nie powiodła się. Spróbuj ponownie później.</system:String>
|
||||||
|
|
||||||
<!-- MainWindow -->
|
<!-- MainWindow -->
|
||||||
<system:String x:Key="registerHotkeyFailed">Nie udało się zarejestrować skrótu klawiszowego „{0}”. Skrót może być używany przez inny program. Zmień skrót na inny lub zamknij program, który go używa.</system:String>
|
<system:String x:Key="registerHotkeyFailed">Nie udało się zarejestrować skrótu klawiszowego „{0}”. Skrót może być używany przez inny program. Zmień skrót na inny lub zamknij program, który go używa.</system:String>
|
||||||
|
|
@ -64,6 +64,10 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="PositionReset">Resetowanie pozycji</system:String>
|
<system:String x:Key="PositionReset">Resetowanie pozycji</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Zresetuj pozycję okna wyszukiwania</system:String>
|
<system:String x:Key="PositionResetToolTip">Zresetuj pozycję okna wyszukiwania</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Wpisz tutaj, aby wyszukać</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Wpisz tutaj, aby wyszukać</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Ustawienia</system:String>
|
<system:String x:Key="flowlauncher_settings">Ustawienia</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Po odinstalowaniu musisz ręcznie usunąć to zadanie (Flow.Launcher Startup) za pomocą Harmonogramu zadań</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Po odinstalowaniu musisz ręcznie usunąć to zadanie (Flow.Launcher Startup) za pomocą Harmonogramu zadań</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Błąd uruchamiania ustawień przy starcie</system:String>
|
<system:String x:Key="setAutoStartFailed">Błąd uruchamiania ustawień przy starcie</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ukryj okno Flow Launcher kiedy przestanie ono być aktywne</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ukryj okno Flow Launcher kiedy przestanie ono być aktywne</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Nie pokazuj powiadomienia o nowej wersji</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Nie pokazuj powiadomienia o nowej wersji</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Pozycja okna wyszukiwania</system:String>
|
<system:String x:Key="SearchWindowPosition">Pozycja okna wyszukiwania</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamiętaj Ostatnią Pozycję</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamiętaj Ostatnią Pozycję</system:String>
|
||||||
|
|
@ -111,7 +117,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="typingStartEn">Zawsze rozpoczynaj wpisywanie w trybie angielskim</system:String>
|
<system:String x:Key="typingStartEn">Zawsze rozpoczynaj wpisywanie w trybie angielskim</system:String>
|
||||||
<system:String x:Key="typingStartEnTooltip">Tymczasowo zmień metodę wprowadzania na tryb angielski podczas aktywacji Flow.</system:String>
|
<system:String x:Key="typingStartEnTooltip">Tymczasowo zmień metodę wprowadzania na tryb angielski podczas aktywacji Flow.</system:String>
|
||||||
<system:String x:Key="autoUpdates">Automatyczne aktualizacje</system:String>
|
<system:String x:Key="autoUpdates">Automatyczne aktualizacje</system:String>
|
||||||
<system:String x:Key="autoUpdatesTooltip">Automatically check and update the app when available</system:String>
|
<system:String x:Key="autoUpdatesTooltip">Automatycznie sprawdzaj i instaluj aktualizacje, gdy będą dostępne</system:String>
|
||||||
<system:String x:Key="select">Wybierz</system:String>
|
<system:String x:Key="select">Wybierz</system:String>
|
||||||
<system:String x:Key="hideOnStartup">Uruchamiaj Flow Launcher zminimalizowany</system:String>
|
<system:String x:Key="hideOnStartup">Uruchamiaj Flow Launcher zminimalizowany</system:String>
|
||||||
<system:String x:Key="hideOnStartupToolTip">Okno wyszukiwania Flow Launcher jest ukryte w zasobniku systemowym po uruchomieniu.</system:String>
|
<system:String x:Key="hideOnStartupToolTip">Okno wyszukiwania Flow Launcher jest ukryte w zasobniku systemowym po uruchomieniu.</system:String>
|
||||||
|
|
@ -123,7 +129,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="SearchPrecisionLow">Niska</system:String>
|
<system:String x:Key="SearchPrecisionLow">Niska</system:String>
|
||||||
<system:String x:Key="SearchPrecisionRegular">Standardowa</system:String>
|
<system:String x:Key="SearchPrecisionRegular">Standardowa</system:String>
|
||||||
<system:String x:Key="ShouldUsePinyin">Szukaj z Pinyin</system:String>
|
<system:String x:Key="ShouldUsePinyin">Szukaj z Pinyin</system:String>
|
||||||
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin is the standard system of romanized spelling for translating Chinese. Please note, enabling this can significantly increase memory usage during search.</system:String>
|
<system:String x:Key="ShouldUsePinyinToolTip">Pinyin to standardowy system zapisu języka chińskiego za pomocą alfabetu łacińskiego. Należy pamiętać, że włączenie tej opcji może znacznie zwiększyć zużycie pamięci podczas wyszukiwania.</system:String>
|
||||||
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
<system:String x:Key="ShouldUseDoublePinyin">Use Double Pinyin</system:String>
|
||||||
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
<system:String x:Key="ShouldUseDoublePinyinToolTip">Use Double Pinyin instead of Full Pinyin to search.</system:String>
|
||||||
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
<system:String x:Key="DoublePinyinSchema">Double Pinyin Schema</system:String>
|
||||||
|
|
@ -170,6 +176,10 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="homePageToolTip">Wyświetl wyniki strony głównej, gdy pole wyszukiwania jest puste.</system:String>
|
<system:String x:Key="homePageToolTip">Wyświetl wyniki strony głównej, gdy pole wyszukiwania jest puste.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Pokaż wyniki historii na stronie głównej</system:String>
|
<system:String x:Key="historyResultsForHomePage">Pokaż wyniki historii na stronie głównej</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maksymalna liczba wyników historii wyświetlanych na stronie głównej</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maksymalna liczba wyników historii wyświetlanych na stronie głównej</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Można edytować tylko wtedy, gdy wtyczka obsługuje funkcję Strona główna i jest ona włączona.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Można edytować tylko wtedy, gdy wtyczka obsługuje funkcję Strona główna i jest ona włączona.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Wyświetl okno wyszukiwania na wierzchu</system:String>
|
<system:String x:Key="showAtTopmost">Wyświetl okno wyszukiwania na wierzchu</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Wyświetl okno wyszukiwania ponad innymi oknami</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Wyświetl okno wyszukiwania ponad innymi oknami</system:String>
|
||||||
|
|
@ -213,6 +223,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="plugin_query_version">Wersja</system:String>
|
<system:String x:Key="plugin_query_version">Wersja</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Strona</system:String>
|
<system:String x:Key="plugin_query_web">Strona</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Odinstalowywanie</system:String>
|
<system:String x:Key="plugin_uninstall">Odinstalowywanie</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Nie udało się usunąć ustawień wtyczki</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Nie udało się usunąć ustawień wtyczki</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Wtyczki: {0} – nie udało się usunąć plików ustawień wtyczek, usuń je ręcznie</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Wtyczki: {0} – nie udało się usunąć plików ustawień wtyczek, usuń je ręcznie</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Nie udało się usunąć cache wtyczki</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Nie udało się usunąć cache wtyczki</system:String>
|
||||||
|
|
@ -223,6 +235,10 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Sklep z wtyczkami</system:String>
|
<system:String x:Key="pluginStore">Sklep z wtyczkami</system:String>
|
||||||
|
|
@ -442,7 +458,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="icons">Ikony</system:String>
|
<system:String x:Key="icons">Ikony</system:String>
|
||||||
<system:String x:Key="about_activate_times">Uaktywniłeś Flow Launcher {0} razy</system:String>
|
<system:String x:Key="about_activate_times">Uaktywniłeś Flow Launcher {0} razy</system:String>
|
||||||
<system:String x:Key="checkUpdates">Szukaj aktualizacji</system:String>
|
<system:String x:Key="checkUpdates">Szukaj aktualizacji</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Zostań sponsorem</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Nowa wersja {0} jest dostępna, uruchom ponownie Flow Launcher</system:String>
|
<system:String x:Key="newVersionTips">Nowa wersja {0} jest dostępna, uruchom ponownie Flow Launcher</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Sprawdzenie aktualizacji nie powiodło się. Sprawdź swoje połączenie i ustawienia proxy dla api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Sprawdzenie aktualizacji nie powiodło się. Sprawdź swoje połączenie i ustawienia proxy dla api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -466,8 +482,10 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="userdatapathButton">Otwórz folder</system:String>
|
<system:String x:Key="userdatapathButton">Otwórz folder</system:String>
|
||||||
<system:String x:Key="advanced">Zaawansowane</system:String>
|
<system:String x:Key="advanced">Zaawansowane</system:String>
|
||||||
<system:String x:Key="logLevel">Poziom logowania</system:String>
|
<system:String x:Key="logLevel">Poziom logowania</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Błąd</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Ustawienia czcionki okna</system:String>
|
<system:String x:Key="settingWindowFontTitle">Ustawienia czcionki okna</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -489,6 +507,7 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="fileManager_file_arg">Arg dla pliku</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg dla pliku</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Menedżer plików „{0}” nie został znaleziony w lokalizacji „{1}”. Czy chcesz kontynuować?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Menedżer plików „{0}” nie został znaleziony w lokalizacji „{1}”. Czy chcesz kontynuować?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Błąd ścieżki do menedżera plików</system:String>
|
<system:String x:Key="fileManagerPathError">Błąd ścieżki do menedżera plików</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Domyślna przeglądarka</system:String>
|
<system:String x:Key="defaultBrowserTitle">Domyślna przeglądarka</system:String>
|
||||||
|
|
@ -499,6 +518,8 @@ Kliknij "nie", jeśli jest już zainstalowany. Zostaniesz wtedy popros
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nowe okno</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nowe okno</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nowa zakładka</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nowa zakładka</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Tryb prywatny</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Tryb prywatny</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Zmień priorytet</system:String>
|
<system:String x:Key="changePriorityWindow">Zmień priorytet</system:String>
|
||||||
|
|
@ -588,8 +609,9 @@ Jeśli dodasz prefiks '@' podczas wprowadzania skrótu, będzie on pasował do d
|
||||||
Nie można znaleźć określonego menedżera plików. Sprawdź ustawienie Niestandardowy menedżer plików w Ustawienia > Ogólne.
|
Nie można znaleźć określonego menedżera plików. Sprawdź ustawienie Niestandardowy menedżer plików w Ustawienia > Ogólne.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Błąd</system:String>
|
<system:String x:Key="errorTitle">Błąd</system:String>
|
||||||
<system:String x:Key="folderOpenError">Wystąpił błąd podczas otwierania folderu. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Wystąpił błąd podczas otwierania adresu URL w przeglądarce. Sprawdź konfigurację domyślnej przeglądarki internetowej w sekcji Ogólne okna ustawień</system:String>
|
<system:String x:Key="browserOpenError">Wystąpił błąd podczas otwierania adresu URL w przeglądarce. Sprawdź konfigurację domyślnej przeglądarki internetowej w sekcji Ogólne okna ustawień</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Proszę czekać...</system:String>
|
<system:String x:Key="pleaseWait">Proszę czekać...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Redefinição de Posição</system:String>
|
<system:String x:Key="PositionReset">Redefinição de Posição</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Configurações</system:String>
|
<system:String x:Key="flowlauncher_settings">Configurações</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Erro ao ativar início com o sistema</system:String>
|
<system:String x:Key="setAutoStartFailed">Erro ao ativar início com o sistema</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Esconder Flow Launcher quando foco for perdido</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Esconder Flow Launcher quando foco for perdido</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Não mostrar notificações de novas versões</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Não mostrar notificações de novas versões</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Lembrar Última Posição</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Lembrar Última Posição</system:String>
|
||||||
|
|
@ -90,7 +96,7 @@
|
||||||
<system:String x:Key="SearchWindowAlignCustom">Posição Personalizada</system:String>
|
<system:String x:Key="SearchWindowAlignCustom">Posição Personalizada</system:String>
|
||||||
<system:String x:Key="language">Idioma</system:String>
|
<system:String x:Key="language">Idioma</system:String>
|
||||||
<system:String x:Key="lastQueryMode">Estilo da Última Consulta</system:String>
|
<system:String x:Key="lastQueryMode">Estilo da Última Consulta</system:String>
|
||||||
<system:String x:Key="lastQueryModeToolTip">Mostrar/ocultar resultados anteriores quando o Lançador de Fluxos é reativado.</system:String>
|
<system:String x:Key="lastQueryModeToolTip">Mostrar/ocultar resultados anteriores quando o Flow Launcher for reativado.</system:String>
|
||||||
<system:String x:Key="LastQueryPreserved">Preservar Última Consulta</system:String>
|
<system:String x:Key="LastQueryPreserved">Preservar Última Consulta</system:String>
|
||||||
<system:String x:Key="LastQuerySelected">Selecionar última consulta</system:String>
|
<system:String x:Key="LastQuerySelected">Selecionar última consulta</system:String>
|
||||||
<system:String x:Key="LastQueryEmpty">Limpar última consulta</system:String>
|
<system:String x:Key="LastQueryEmpty">Limpar última consulta</system:String>
|
||||||
|
|
@ -138,7 +144,7 @@
|
||||||
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
<system:String x:Key="DoublePinyinSchemasXiaoLang">Xiao Lang</system:String>
|
||||||
|
|
||||||
<system:String x:Key="AlwaysPreview">Sempre Pré-visualizar</system:String>
|
<system:String x:Key="AlwaysPreview">Sempre Pré-visualizar</system:String>
|
||||||
<system:String x:Key="AlwaysPreviewToolTip">Sempre abrir o painel de pré-visualização quando o Flow é ativado. Pressione {0} para ativar ou desativar a pré-visualização.</system:String>
|
<system:String x:Key="AlwaysPreviewToolTip">Sempre abrir o painel de pré-visualização quando o Flow for ativado. Pressione {0} para alternar a pré-visualização.</system:String>
|
||||||
<system:String x:Key="shadowEffectNotAllowed">O efeito de sombra não é permitido enquanto o tema atual tem o efeito de desfoque ativado</system:String>
|
<system:String x:Key="shadowEffectNotAllowed">O efeito de sombra não é permitido enquanto o tema atual tem o efeito de desfoque ativado</system:String>
|
||||||
<system:String x:Key="searchDelay">Search Delay</system:String>
|
<system:String x:Key="searchDelay">Search Delay</system:String>
|
||||||
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
<system:String x:Key="searchDelayToolTip">Adds a short delay while typing to reduce UI flicker and result load. Recommended if your typing speed is average.</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versão</system:String>
|
<system:String x:Key="plugin_query_version">Versão</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Site</system:String>
|
<system:String x:Key="plugin_query_web">Site</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Loja de Plugins</system:String>
|
<system:String x:Key="pluginStore">Loja de Plugins</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Ícones</system:String>
|
<system:String x:Key="icons">Ícones</system:String>
|
||||||
<system:String x:Key="about_activate_times">Você ativou o Flow Launcher {0} vezes</system:String>
|
<system:String x:Key="about_activate_times">Você ativou o Flow Launcher {0} vezes</system:String>
|
||||||
<system:String x:Key="checkUpdates">Procurar atualizações</system:String>
|
<system:String x:Key="checkUpdates">Procurar atualizações</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Torne-se um Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">A nova versão {0} está disponível, por favor reinicie o Flow Launcher.</system:String>
|
<system:String x:Key="newVersionTips">A nova versão {0} está disponível, por favor reinicie o Flow Launcher.</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Falha ao procurar atualizações, confira sua conexão e configuração de proxy para api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Falha ao procurar atualizações, confira sua conexão e configuração de proxy para api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg para Arquivo</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg para Arquivo</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Navegador da Web Padrão</system:String>
|
<system:String x:Key="defaultBrowserTitle">Navegador da Web Padrão</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nova Janela</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nova Janela</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nova Aba</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nova Aba</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Modo Privado</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Modo Privado</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Alterar Prioridade</system:String>
|
<system:String x:Key="changePriorityWindow">Alterar Prioridade</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Por favor, aguarde...</system:String>
|
<system:String x:Key="pleaseWait">Por favor, aguarde...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Repor posição</system:String>
|
<system:String x:Key="PositionReset">Repor posição</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Repor posição da janela de pesquisa</system:String>
|
<system:String x:Key="PositionResetToolTip">Repor posição da janela de pesquisa</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Escreva aqui para pesquisar</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Escreva aqui para pesquisar</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Este plugin está a ser iniciado...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Selecione este resultado para pesquisar novamente</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Falha na resposta!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Selecione este resultado para mais informação</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Definições</system:String>
|
<system:String x:Key="flowlauncher_settings">Definições</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Se desinstalar a aplicação, tem que remover manualmente a tarefa (Flow.Launcher Startup) no agendamento de tarefas</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Se desinstalar a aplicação, tem que remover manualmente a tarefa (Flow.Launcher Startup) no agendamento de tarefas</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Erro ao definir para iniciar ao arrancar</system:String>
|
<system:String x:Key="setAutoStartFailed">Erro ao definir para iniciar ao arrancar</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher ao perder o foco</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher ao perder o foco</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Mostrar barra de tarefas ao abrir Flow Launcher</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Mostrar, temporariamente, a barra de tarefas ao abrir Flow launcher. Útil para barra de tarefas oculta automaticamente.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Não notificar acerca de novas versões</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Não notificar acerca de novas versões</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Posição da janela de pesquisa</system:String>
|
<system:String x:Key="SearchWindowPosition">Posição da janela de pesquisa</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Memorizar última posição</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Memorizar última posição</system:String>
|
||||||
|
|
@ -170,6 +176,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Mostrar resultados da página inicial se o termo de pesquisa estiver vazio.</system:String>
|
<system:String x:Key="homePageToolTip">Mostrar resultados da página inicial se o termo de pesquisa estiver vazio.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Mostrar histórico na página inicial</system:String>
|
<system:String x:Key="historyResultsForHomePage">Mostrar histórico na página inicial</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Máximo de resultados a mostrar na Página inicial</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Máximo de resultados a mostrar na Página inicial</system:String>
|
||||||
|
<system:String x:Key="historyStyle">Estilo do histórico</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Escolha o tipo de histórico a ser mostrado no Histórico e na Página inicial</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Histórico de pesquisas</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Último histórico aberto</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Esta opção apenas pode ser editada se o plugin tiver suporte a Página inicial e se estiver ativo.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Esta opção apenas pode ser editada se o plugin tiver suporte a Página inicial e se estiver ativo.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Janela de pesquisa à frente</system:String>
|
<system:String x:Key="showAtTopmost">Janela de pesquisa à frente</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Sobrepõe a definição 'Sempre na frente' das outras aplicações e mostra Flow Launcher à frente de qualquer janela.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Sobrepõe a definição 'Sempre na frente' das outras aplicações e mostra Flow Launcher à frente de qualquer janela.</system:String>
|
||||||
|
|
@ -213,6 +223,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Versão</system:String>
|
<system:String x:Key="plugin_query_version">Versão</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Site</system:String>
|
<system:String x:Key="plugin_query_web">Site</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
<system:String x:Key="plugin_uninstall">Desinstalar</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Tempo de atraso para pesquisa: padrão</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Tempo de atraso para pesquisa: {0} ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Falha ao remover as definições do plugin</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Falha ao remover as definições do plugin</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugin: {0} - Falha ao remover o ficheiro de definições do plugin. Experimente remover manualmente.</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugin: {0} - Falha ao remover o ficheiro de definições do plugin. Experimente remover manualmente.</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Falha ao limpar a cache do plugin</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Falha ao limpar a cache do plugin</system:String>
|
||||||
|
|
@ -223,6 +235,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Falha ao desinstalar {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Falha ao desinstalar {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Não foi possível encontrar plugin.json no ficheiro zip ou, então, o caminho {0} não existe.</system:String>
|
<system:String x:Key="fileNotFoundMessage">Não foi possível encontrar plugin.json no ficheiro zip ou, então, o caminho {0} não existe.</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">Já existe um plugin com a mesma ID e versão ou, então, a versão instalada é superior à do plugin descarregado.</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">Já existe um plugin com a mesma ID e versão ou, então, a versão instalada é superior à do plugin descarregado.</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Erro ao criar o painel de definição para o plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requer Flow Launcher v {1} para ser executado</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">A sua versão Flow Launcher não cumpre os reuisitos mínimos para executar {0}. Pretende continuar com a instalação?{1}{1}Deve atualizar Flow Launcher para a versão mais recente para poder usufruir de {0} sem quaisquer problemas.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Não foi possível instalar o plugin uma vez que plugin.json parece estar danificado.</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Loja de plugins</system:String>
|
<system:String x:Key="pluginStore">Loja de plugins</system:String>
|
||||||
|
|
@ -331,7 +347,7 @@
|
||||||
<system:String x:Key="PlaceholderTextTip">O texto do marcador de posição. Se vazio, será utilizado: {0}</system:String>
|
<system:String x:Key="PlaceholderTextTip">O texto do marcador de posição. Se vazio, será utilizado: {0}</system:String>
|
||||||
<system:String x:Key="KeepMaxResults">Janela com tamanho fixo</system:String>
|
<system:String x:Key="KeepMaxResults">Janela com tamanho fixo</system:String>
|
||||||
<system:String x:Key="KeepMaxResultsToolTip">Não pode ajustar o tamanho da janela por arrasto.</system:String>
|
<system:String x:Key="KeepMaxResultsToolTip">Não pode ajustar o tamanho da janela por arrasto.</system:String>
|
||||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">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</system:String>
|
||||||
|
|
||||||
<!-- Setting Hotkey -->
|
<!-- Setting Hotkey -->
|
||||||
<system:String x:Key="hotkey">Tecla de atalho</system:String>
|
<system:String x:Key="hotkey">Tecla de atalho</system:String>
|
||||||
|
|
@ -409,13 +425,13 @@
|
||||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Clique esquerdo ou tecla Enter</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourRightClick">Clique direito</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Preencher caminho total na caixa Nome do ficheiro</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Preencher caminho total na caixa Nome do ficheiro e abrir</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Preencher diretório na caixa Caminho</system:String>
|
||||||
|
|
||||||
<!-- Setting Proxy -->
|
<!-- Setting Proxy -->
|
||||||
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
<system:String x:Key="proxy">Proxy HTTP</system:String>
|
||||||
|
|
@ -442,7 +458,7 @@
|
||||||
<system:String x:Key="icons">Ícones</system:String>
|
<system:String x:Key="icons">Ícones</system:String>
|
||||||
<system:String x:Key="about_activate_times">Ativou o Flow Launcher {0} vezes</system:String>
|
<system:String x:Key="about_activate_times">Ativou o Flow Launcher {0} vezes</system:String>
|
||||||
<system:String x:Key="checkUpdates">Procurar atualizações</system:String>
|
<system:String x:Key="checkUpdates">Procurar atualizações</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Tornar-se patrocinador</system:String>
|
<system:String x:Key="BecomeASponsor">Torne-se um Patrocinador</system:String>
|
||||||
<system:String x:Key="newVersionTips">Está disponível a versão {0}. Gostaria de reiniciar Flow Launcher para atualizar a sua versão?</system:String>
|
<system:String x:Key="newVersionTips">Está disponível a versão {0}. Gostaria de reiniciar Flow Launcher para atualizar a sua versão?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Erro ao procurar atualizações. Verifique a sua ligação e as definições do proxy estabelecidas para api.github.com</system:String>
|
<system:String x:Key="checkUpdatesFailed">Erro ao procurar atualizações. Verifique a sua ligação e as definições do proxy estabelecidas para api.github.com</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -465,8 +481,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Abrir pasta</system:String>
|
<system:String x:Key="userdatapathButton">Abrir pasta</system:String>
|
||||||
<system:String x:Key="advanced">Avançado</system:String>
|
<system:String x:Key="advanced">Avançado</system:String>
|
||||||
<system:String x:Key="logLevel">Nível de registo</system:String>
|
<system:String x:Key="logLevel">Nível de registo</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Depuração</system:String>
|
<system:String x:Key="LogLevelNONE">Silencioso</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Erro</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Informação</system:String>
|
<system:String x:Key="LogLevelINFO">Informação</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Depuração</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Tipo de letra da aplicação</system:String>
|
<system:String x:Key="settingWindowFontTitle">Tipo de letra da aplicação</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -488,6 +506,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Argumento para ficheiro</system:String>
|
<system:String x:Key="fileManager_file_arg">Argumento para ficheiro</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Não foi possível encontrar o gestor de ficheiros '{0}' em '{1}'. Deseja continuar?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Não foi possível encontrar o gestor de ficheiros '{0}' em '{1}'. Deseja continuar?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Erro no caminho do gestor de ficheiros</system:String>
|
<system:String x:Key="fileManagerPathError">Erro no caminho do gestor de ficheiros</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Gestor de ficheiros</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Navegador web padrão</system:String>
|
<system:String x:Key="defaultBrowserTitle">Navegador web padrão</system:String>
|
||||||
|
|
@ -498,6 +517,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nova janela</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nova janela</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Novo separador</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Novo separador</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Padrão</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Novo perfil</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Alterar prioridade</system:String>
|
<system:String x:Key="changePriorityWindow">Alterar prioridade</system:String>
|
||||||
|
|
@ -587,8 +608,9 @@ Se adicionar o prefixo '@' durante a introdução do atalho, será utilizada qua
|
||||||
Não foi possível encontrar o gestor de ficheiros. Verifique a definição 'Gestor de ficheiros personalizado' em Definições -> Geral.
|
Não foi possível encontrar o gestor de ficheiros. Verifique a definição 'Gestor de ficheiros personalizado' em Definições -> Geral.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Erro</system:String>
|
<system:String x:Key="errorTitle">Erro</system:String>
|
||||||
<system:String x:Key="folderOpenError">Ocorreu um erro ao abrir a pasta: {0}</system:String>
|
<system:String x:Key="folderOpenError">Ocorreu um erro ao abrir a pasta.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Ocorreu um erro ao abrir o URL no navegador. Verifique a configuração Navegador web padrão na secção Geral das definições.</system:String>
|
<system:String x:Key="browserOpenError">Ocorreu um erro ao abrir o URL no navegador. Verifique a configuração Navegador web padrão na secção Geral das definições.</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">Ficheiro ou diretório não encontrado: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Por favor aguarde...</system:String>
|
<system:String x:Key="pleaseWait">Por favor aguarde...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Сброс положения</system:String>
|
<system:String x:Key="PositionReset">Сброс положения</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Настройки</system:String>
|
<system:String x:Key="flowlauncher_settings">Настройки</system:String>
|
||||||
|
|
@ -75,6 +79,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="useLogonTaskForStartupTooltip">After uninstallation, you need to manually remove this task (Flow.Launcher Startup) via Task Scheduler</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Ошибка настройки запуска при запуске</system:String>
|
<system:String x:Key="setAutoStartFailed">Ошибка настройки запуска при запуске</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Скрывать Flow Launcher, если потерян фокуc</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Скрывать Flow Launcher, если потерян фокуc</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Не отображать сообщение об обновлении, когда доступна новая версия</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Не отображать сообщение об обновлении, когда доступна новая версия</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Запомнить последнее положение</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Запомнить последнее положение</system:String>
|
||||||
|
|
@ -167,10 +173,14 @@
|
||||||
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
<system:String x:Key="KoreanImeRegistryTooltip">You can change the Previous Korean IME settings directly from here</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailTitle">Failed to change Korean IME setting</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Please check your system registry access or contact support.</system:String>
|
||||||
<system:String x:Key="homePage">Home Page</system:String>
|
<system:String x:Key="homePage">Главная страница</system:String>
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -199,10 +209,10 @@
|
||||||
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
<system:String x:Key="pluginSearchDelayTime">Plugin search delay time</system:String>
|
||||||
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
<system:String x:Key="pluginSearchDelayTimeTooltip">Change Plugin Search Delay Time</system:String>
|
||||||
<system:String x:Key="FilterComboboxLabel">Advanced Settings:</system:String>
|
<system:String x:Key="FilterComboboxLabel">Advanced Settings:</system:String>
|
||||||
<system:String x:Key="DisplayModeOnOff">Enabled</system:String>
|
<system:String x:Key="DisplayModeOnOff">Включено</system:String>
|
||||||
<system:String x:Key="DisplayModePriority">Приоритет</system:String>
|
<system:String x:Key="DisplayModePriority">Приоритет</system:String>
|
||||||
<system:String x:Key="DisplayModeSearchDelay">Search Delay</system:String>
|
<system:String x:Key="DisplayModeSearchDelay">Search Delay</system:String>
|
||||||
<system:String x:Key="DisplayModeHomeOnOff">Home Page</system:String>
|
<system:String x:Key="DisplayModeHomeOnOff">Главная страница</system:String>
|
||||||
<system:String x:Key="currentPriority">Текущий приоритет</system:String>
|
<system:String x:Key="currentPriority">Текущий приоритет</system:String>
|
||||||
<system:String x:Key="newPriority">Новый приоритет</system:String>
|
<system:String x:Key="newPriority">Новый приоритет</system:String>
|
||||||
<system:String x:Key="priority">Приоритет</system:String>
|
<system:String x:Key="priority">Приоритет</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Версия</system:String>
|
<system:String x:Key="plugin_query_version">Версия</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Веб-сайт</system:String>
|
<system:String x:Key="plugin_query_web">Веб-сайт</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Удалить</system:String>
|
<system:String x:Key="plugin_uninstall">Удалить</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Магазин плагинов</system:String>
|
<system:String x:Key="pluginStore">Магазин плагинов</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Значки</system:String>
|
<system:String x:Key="icons">Значки</system:String>
|
||||||
<system:String x:Key="about_activate_times">Вы воспользовались Flow Launcher уже {0} раз</system:String>
|
<system:String x:Key="about_activate_times">Вы воспользовались Flow Launcher уже {0} раз</system:String>
|
||||||
<system:String x:Key="checkUpdates">Проверить наличие обновлений</system:String>
|
<system:String x:Key="checkUpdates">Проверить наличие обновлений</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Стать спонсором</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Доступна новая версия {0}. Вы хотите перезапустить Flow Launcher, чтобы использовать обновление?</system:String>
|
<system:String x:Key="newVersionTips">Доступна новая версия {0}. Вы хотите перезапустить Flow Launcher, чтобы использовать обновление?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Проверка обновлений не удалась, пожалуйста, проверьте настройки подключения и прокси-сервера к api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Проверка обновлений не удалась, пожалуйста, проверьте настройки подключения и прокси-сервера к api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Ошибка</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Аргумент для файла</system:String>
|
<system:String x:Key="fileManager_file_arg">Аргумент для файла</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Браузер по умолчанию</system:String>
|
<system:String x:Key="defaultBrowserTitle">Браузер по умолчанию</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Новое окно</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Новое окно</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Новая вкладка</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Новая вкладка</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Приватный режим</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Приватный режим</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Изменить приоритет</system:String>
|
<system:String x:Key="changePriorityWindow">Изменить приоритет</system:String>
|
||||||
|
|
@ -525,7 +546,7 @@
|
||||||
<system:String x:Key="searchDelayTimeTips">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.</system:String>
|
<system:String x:Key="searchDelayTimeTips">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.</system:String>
|
||||||
|
|
||||||
<!-- Search Delay Settings Dialog -->
|
<!-- Search Delay Settings Dialog -->
|
||||||
<system:String x:Key="homeTitle">Home Page</system:String>
|
<system:String x:Key="homeTitle">Главная страница</system:String>
|
||||||
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
<system:String x:Key="homeTips">Enable the plugin home page state if you like to show the plugin results when query is empty.</system:String>
|
||||||
|
|
||||||
<!-- Custom Query Hotkey Dialog -->
|
<!-- Custom Query Hotkey Dialog -->
|
||||||
|
|
@ -589,8 +610,9 @@
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Ошибка</system:String>
|
<system:String x:Key="errorTitle">Ошибка</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Пожалуйста, подождите...</system:String>
|
<system:String x:Key="pleaseWait">Пожалуйста, подождите...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,10 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="PositionReset">Resetovať pozíciu</system:String>
|
<system:String x:Key="PositionReset">Resetovať pozíciu</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Resetovať pozíciu vyhľadávacieho okna</system:String>
|
<system:String x:Key="PositionResetToolTip">Resetovať pozíciu vyhľadávacieho okna</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Zadajte text na vyhľadávanie</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Zadajte text na vyhľadávanie</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Tento plugin sa stále inicializuje…</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Vyberte tento výsledok na opätovné vyhľadávanie</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Nepodarilo sa odpovedať!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Vyberte tento výsledok pre viac informácií</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Nastavenia</system:String>
|
<system:String x:Key="flowlauncher_settings">Nastavenia</system:String>
|
||||||
|
|
@ -76,6 +80,8 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Po odinštalovaní musíte úlohu manuálne odstrániť (Flow.Launcher Startup) cez Plánovač úloh</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Po odinštalovaní musíte úlohu manuálne odstrániť (Flow.Launcher Startup) cez Plánovač úloh</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Chybné nastavenie spustenia pri spustení</system:String>
|
<system:String x:Key="setAutoStartFailed">Chybné nastavenie spustenia pri spustení</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Schovať Flow Launcher po strate fokusu</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Schovať Flow Launcher po strate fokusu</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Zobraziť panel úloh, keď je Flow Launcher otvorený</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Dočasne zobraziť panel úloh pri otvorení Flow Launchera, užitočné pri automatickom skrývaní panela úloh.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Nezobrazovať upozornenia na novú verziu</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Nezobrazovať upozornenia na novú verziu</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Poloha vyhľadávacieho okna</system:String>
|
<system:String x:Key="SearchWindowPosition">Poloha vyhľadávacieho okna</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamätať si poslednú pozíciu</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Zapamätať si poslednú pozíciu</system:String>
|
||||||
|
|
@ -169,14 +175,18 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailTitle">Nepodarilo sa zmeniť nastavenie kórejského IME</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailTitle">Nepodarilo sa zmeniť nastavenie kórejského IME</system:String>
|
||||||
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Skontrolujte prístup do systémového registra alebo kontaktujte podporu.</system:String>
|
<system:String x:Key="KoreanImeSettingChangeFailSubTitle">Skontrolujte prístup do systémového registra alebo kontaktujte podporu.</system:String>
|
||||||
<system:String x:Key="homePage">Domovská stránka</system:String>
|
<system:String x:Key="homePage">Domovská stránka</system:String>
|
||||||
<system:String x:Key="homePageToolTip">Zobraziť výsledky Domovskej stránky, keď je text dopytu prázdny.</system:String>
|
<system:String x:Key="homePageToolTip">Zobraziť výsledky domovskej stránky, keď je text dopytu prázdny.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Zobraziť výsledky histórie na Domovskej stránke</system:String>
|
<system:String x:Key="historyResultsForHomePage">Zobraziť výsledky histórie na domovskej stránke</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximálny počet zobrazených výsledkov histórie na Domovskej stránke</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximálny počet histórie výsledkov zobrazenej na domovskej stránke</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Úprava je možná len vtedy, ak plugin podporuje funkciu Domovská stránka a Domovská stránka je povolená.</system:String>
|
<system:String x:Key="historyStyle">Štýl histórie</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Vyberte, ktorý typ histórie sa má zobraziť v histórii a na domovskej stránke</system:String>
|
||||||
|
<system:String x:Key="queryHistory">História dopytov</system:String>
|
||||||
|
<system:String x:Key="executedHistory">História naposledy otvorených</system:String>
|
||||||
|
<system:String x:Key="homeToggleBoxToolTip">Úprava je možná len vtedy, ak plugin podporuje funkciu domovská stránka a zároveň je povolená.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Zobraziť vyhľadávacie okno v popredí</system:String>
|
<system:String x:Key="showAtTopmost">Zobraziť vyhľadávacie okno v popredí</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Prepíše nastavenie "Vždy na vrchu" ostatných programov a zobrazí navrchu Flow.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Prepíše nastavenie "Vždy na vrchu" ostatných programov a zobrazí navrchu Flow.</system:String>
|
||||||
<system:String x:Key="autoRestartAfterChanging">Reštartovať po úprave pluginu cez Repozitár pluginov</system:String>
|
<system:String x:Key="autoRestartAfterChanging">Reštartovať po úprave pluginu cez Repozitár pluginov</system:String>
|
||||||
<system:String x:Key="autoRestartAfterChangingToolTip">Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizáciu pluginu cez Repozitár pluginov</system:String>
|
<system:String x:Key="autoRestartAfterChangingToolTip">Automaticky reštartovať Flow Launcher po inštalácii/odinštalácii/aktualizácii pluginu cez Repozitár pluginov</system:String>
|
||||||
<system:String x:Key="showUnknownSourceWarning">Zobraziť upozornenie na neznámy zdroj</system:String>
|
<system:String x:Key="showUnknownSourceWarning">Zobraziť upozornenie na neznámy zdroj</system:String>
|
||||||
<system:String x:Key="showUnknownSourceWarningToolTip">Zobraziť upozornenie pri inštalácii z neznámych zdrojov</system:String>
|
<system:String x:Key="showUnknownSourceWarningToolTip">Zobraziť upozornenie pri inštalácii z neznámych zdrojov</system:String>
|
||||||
<system:String x:Key="autoUpdatePlugins">Automaticky aktualizovať pluginy</system:String>
|
<system:String x:Key="autoUpdatePlugins">Automaticky aktualizovať pluginy</system:String>
|
||||||
|
|
@ -215,6 +225,8 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="plugin_query_version">Verzia</system:String>
|
<system:String x:Key="plugin_query_version">Verzia</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Webstránka</system:String>
|
<system:String x:Key="plugin_query_web">Webstránka</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Odinštalovať</system:String>
|
<system:String x:Key="plugin_uninstall">Odinštalovať</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Oneskorenie vyhľadávania: predvolené</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Oneskorenie vyhľadávania: {0} ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Nepodarilo sa odstrániť nastavenia pluginu</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Nepodarilo sa odstrániť nastavenia pluginu</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Pluginy: {0} – Nepodarilo sa odstrániť súbory s nastaveniami pluginu, odstráňte ich manuálne</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Pluginy: {0} – Nepodarilo sa odstrániť súbory s nastaveniami pluginu, odstráňte ich manuálne</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Nepodarilo sa odstrániť vyrovnávaciu pamäť pluginu</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Nepodarilo sa odstrániť vyrovnávaciu pamäť pluginu</system:String>
|
||||||
|
|
@ -225,6 +237,10 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Nepodarilo sa odinštalovať {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Nepodarilo sa odinštalovať {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Súbor plugin.json sa nenašiel v rozbalenom zip súbore, alebo táto cesta {0} neexistuje</system:String>
|
<system:String x:Key="fileNotFoundMessage">Súbor plugin.json sa nenašiel v rozbalenom zip súbore, alebo táto cesta {0} neexistuje</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">Plugin s rovnakým ID už existuje, alebo ide o vyššiu verziu ako stiahnutý plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">Plugin s rovnakým ID už existuje, alebo ide o vyššiu verziu ako stiahnutý plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Chyba pri vytváraní panelu nastavení pre plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">Plugin {0} vyžaduje na spustenie minimálnu verziu Flow Launcheru {1}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow Launcher nespĺňa minimálne požiadavky na verziu na spustenie {0}. Chcete pokračovať v inštalácii?{1}{1}Odporúčame aktualizovať Flow Launcher na najnovšiu verziu, aby {0} fungoval bez problémov.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Inštalácia pluginu zlyhala z dôvodu neplatného alebo poškodeného súboru plugin.json</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Repozitár pluginov</system:String>
|
<system:String x:Key="pluginStore">Repozitár pluginov</system:String>
|
||||||
|
|
@ -255,7 +271,7 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="UpdatePromptTitle">Aktualizácia pluginu</system:String>
|
<system:String x:Key="UpdatePromptTitle">Aktualizácia pluginu</system:String>
|
||||||
<system:String x:Key="UpdatePromptSubtitle">{0} od {1} {2}{2}Chcete aktualizovať tento plugin?</system:String>
|
<system:String x:Key="UpdatePromptSubtitle">{0} od {1} {2}{2}Chcete aktualizovať tento plugin?</system:String>
|
||||||
<system:String x:Key="DownloadingPlugin">Sťahovanie pluginu</system:String>
|
<system:String x:Key="DownloadingPlugin">Sťahovanie pluginu</system:String>
|
||||||
<system:String x:Key="AutoRestartAfterChange">Automaticky reštartovať po inštalácii/odinštalácii/aktualizáciu pluginov cez Repozitár pluginov</system:String>
|
<system:String x:Key="AutoRestartAfterChange">Automaticky reštartovať po inštalácii/odinštalácii/aktualizácii pluginov cez Repozitár pluginov</system:String>
|
||||||
<system:String x:Key="ZipFileNotHavePluginJson">V zipe sa nenachádza platná konfigurácia plugin.json</system:String>
|
<system:String x:Key="ZipFileNotHavePluginJson">V zipe sa nenachádza platná konfigurácia plugin.json</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceTitle">Inštalácia z neznámeho zdroja</system:String>
|
<system:String x:Key="InstallFromUnknownSourceTitle">Inštalácia z neznámeho zdroja</system:String>
|
||||||
<system:String x:Key="InstallFromUnknownSourceSubtitle">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)</system:String>
|
<system:String x:Key="InstallFromUnknownSourceSubtitle">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)</system:String>
|
||||||
|
|
@ -267,7 +283,7 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="updateAllPluginsTitle">Dostupná aktualizácia pluginu</system:String>
|
<system:String x:Key="updateAllPluginsTitle">Dostupná aktualizácia pluginu</system:String>
|
||||||
<system:String x:Key="updateAllPluginsButtonContent">Aktualizovať pluginy</system:String>
|
<system:String x:Key="updateAllPluginsButtonContent">Aktualizovať pluginy</system:String>
|
||||||
<system:String x:Key="checkPluginUpdatesTooltip">Skontrolovať dostupnosť aktualizácií</system:String>
|
<system:String x:Key="checkPluginUpdatesTooltip">Skontrolovať dostupnosť aktualizácií</system:String>
|
||||||
<system:String x:Key="PluginsUpdateSuccessNoRestart">Pluginy {0} boli úspešne aktualizované. Prosím, reštartuje Flow.</system:String>
|
<system:String x:Key="PluginsUpdateSuccessNoRestart">Pluginy boli úspešne aktualizované. Prosím, reštartuje Flow.</system:String>
|
||||||
|
|
||||||
<!-- Setting Theme -->
|
<!-- Setting Theme -->
|
||||||
<system:String x:Key="theme">Motív</system:String>
|
<system:String x:Key="theme">Motív</system:String>
|
||||||
|
|
@ -396,28 +412,28 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="showBadges">Zobraziť výsledok v odznaku</system:String>
|
<system:String x:Key="showBadges">Zobraziť výsledok v odznaku</system:String>
|
||||||
<system:String x:Key="showBadgesToolTip">Ak to plugin podporuje, zobrazí sa jeho ikona v odznaku na jednoduchšie odlíšenie.</system:String>
|
<system:String x:Key="showBadgesToolTip">Ak to plugin podporuje, zobrazí sa jeho ikona v odznaku na jednoduchšie odlíšenie.</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnly">Zobraziť výsledok v odznaku len pre globálne vyhľadávanie</system:String>
|
<system:String x:Key="showBadgesGlobalOnly">Zobraziť výsledok v odznaku len pre globálne vyhľadávanie</system:String>
|
||||||
<system:String x:Key="showBadgesGlobalOnlyToolTip">Show badges for global query results only</system:String>
|
<system:String x:Key="showBadgesGlobalOnlyToolTip">Zobrazí výsledok v odznaku len pre výsledky globálneho vyhľadávania</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkey">Dialog Jump</system:String>
|
<system:String x:Key="dialogJumpHotkey">Rýchly prechod</system:String>
|
||||||
<system:String x:Key="dialogJumpHotkeyToolTip">Enter shortcut to quickly navigate the Open/Save As dialog window to the path of the current file manager.</system:String>
|
<system:String x:Key="dialogJumpHotkeyToolTip">Zadajte skratku na rýchly prechod na aktuálnu cestu správcu súborov v dialógovom okne Otvoriť/Uložiť.</system:String>
|
||||||
<system:String x:Key="dialogJump">Dialog Jump</system:String>
|
<system:String x:Key="dialogJump">Rýchly prechod</system:String>
|
||||||
<system:String x:Key="dialogJumpToolTip">When Open/Save As dialog window opens, quickly navigate to the current path of the file manager.</system:String>
|
<system:String x:Key="dialogJumpToolTip">Keď sa otvorí dialógové okno Otvoriť/Uložiť, rýchlo prejdete na aktuálnu cestu správcu súborov.</system:String>
|
||||||
<system:String x:Key="autoDialogJump">Dialog Jump Automatically</system:String>
|
<system:String x:Key="autoDialogJump">Automatický rýchly prechod</system:String>
|
||||||
<system:String x:Key="autoDialogJumpToolTip">When Open/Save As dialog window is displayed, automatically navigate to the path of the current file manager. (Experimental)</system:String>
|
<system:String x:Key="autoDialogJumpToolTip">Keď je otvorené dialógové okno Otvoriť/Uložiť, automaticky prejsť na cestu v aktuálnom správcovi súborov (Experimentálne)</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindow">Show Dialog Jump Window</system:String>
|
<system:String x:Key="showDialogJumpWindow">Zobraziť okno na rýchly prechod</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindowToolTip">Display Dialog Jump search window when the open/save dialog window is shown to quickly navigate to file/folder locations.</system:String>
|
<system:String x:Key="showDialogJumpWindowToolTip">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.</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPosition">Dialog Jump Window Position</system:String>
|
<system:String x:Key="dialogJumpWindowPosition">Umiestnenie okna "rýchly prechod"</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
<system:String x:Key="dialogJumpWindowPositionToolTip">Vyberte umiestnenie vyhľadávacieho okna pre "rýchly prechod"</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixed under the Open/Save As dialog window. Displayed on open and stays until the window is closed</system:String>
|
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Fixné pod oknom Otvoriť/Uložiť. Zostane zobrazené po otvorení až do uzavretia okna</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Default search window position. Displayed when triggered by search window hotkey</system:String>
|
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Predvolená pozícia vyhľadávacieho okna. Zobrazí sa po zadaní skratky na otvorenie vyhľadávacieho okna</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpResultBehaviour">Akcia na prechod k výsledku rýchleho prechodu</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window to the selected result path</system:String>
|
<system:String x:Key="dialogJumpResultBehaviourToolTip">Ako prejsť na vybranú cestu v otvorenom dialógovom okne Otvoriť/Uložiť</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Left click or Enter key</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Kliknutie ľavým tlačidlom myši alebo klávesom Enter</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Right click</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourRightClick">Kliknutie pravým tlačidlom myši</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviour">Akcia na prechod k súboru rýchleho prechodu</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Behaviour to navigate Open/Save As dialog window when the result is a file path</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Akcia, ktorá sa vykoná na navigáciu v dialógovom okne Otvoriť/Uložiť, ak výsledkom je súbor</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Fill full path in file name box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Vložiť celú cestu k súboru do poľa názvu súboru</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Fill full path in file name box and open</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Vložiť celú cestu k súboru do poľa názvu súboru a otvoriť</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Fill directory in path box</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourDirectory">Vložiť priečinok do poľa s cestou</system:String>
|
||||||
|
|
||||||
<!-- Setting Proxy -->
|
<!-- Setting Proxy -->
|
||||||
<system:String x:Key="proxy">HTTP proxy</system:String>
|
<system:String x:Key="proxy">HTTP proxy</system:String>
|
||||||
|
|
@ -468,8 +484,10 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="userdatapathButton">Otvoriť priečinok</system:String>
|
<system:String x:Key="userdatapathButton">Otvoriť priečinok</system:String>
|
||||||
<system:String x:Key="advanced">Rozšírené</system:String>
|
<system:String x:Key="advanced">Rozšírené</system:String>
|
||||||
<system:String x:Key="logLevel">Úroveň logovania</system:String>
|
<system:String x:Key="logLevel">Úroveň logovania</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Žiadne</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Chyba</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Nastavenie písma okna</system:String>
|
<system:String x:Key="settingWindowFontTitle">Nastavenie písma okna</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -482,8 +500,8 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<!-- FileManager Setting Dialog -->
|
<!-- FileManager Setting Dialog -->
|
||||||
<system:String x:Key="fileManagerWindow">Vyberte správcu súborov</system:String>
|
<system:String x:Key="fileManagerWindow">Vyberte správcu súborov</system:String>
|
||||||
<system:String x:Key="fileManager_learnMore">Viac informácií</system:String>
|
<system:String x:Key="fileManager_learnMore">Viac informácií</system:String>
|
||||||
<system:String x:Key="fileManager_tips">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.</system:String>
|
<system:String x:Key="fileManager_tips">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.</system:String>
|
||||||
<system:String x:Key="fileManager_tips2">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.</system:String>
|
<system:String x:Key="fileManager_tips2">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.</system:String>
|
||||||
<system:String x:Key="fileManager_name">Správca súborov</system:String>
|
<system:String x:Key="fileManager_name">Správca súborov</system:String>
|
||||||
<system:String x:Key="fileManager_profile_name">Názov profilu</system:String>
|
<system:String x:Key="fileManager_profile_name">Názov profilu</system:String>
|
||||||
<system:String x:Key="fileManager_path">Cesta k správcovi súborov</system:String>
|
<system:String x:Key="fileManager_path">Cesta k správcovi súborov</system:String>
|
||||||
|
|
@ -491,6 +509,7 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="fileManager_file_arg">Arg. pre súbor</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg. pre súbor</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Správca súborov '{0}' sa nenachádza na '{1}'. Chcete pokračovať?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Správca súborov '{0}' sa nenachádza na '{1}'. Chcete pokračovať?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Chyba v ceste k správcovi súborov</system:String>
|
<system:String x:Key="fileManagerPathError">Chyba v ceste k správcovi súborov</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Prieskumník</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Predvolený webový prehliadač</system:String>
|
<system:String x:Key="defaultBrowserTitle">Predvolený webový prehliadač</system:String>
|
||||||
|
|
@ -501,6 +520,8 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Nové okno</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Nové okno</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Nová karta</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Nová karta</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Privátny režim</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Privátny režim</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Predvolené</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Nový profil</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Zmena priority</system:String>
|
<system:String x:Key="changePriorityWindow">Zmena priority</system:String>
|
||||||
|
|
@ -527,7 +548,7 @@ Nevykonali sa žiadne zmeny.</system:String>
|
||||||
|
|
||||||
<!-- Search Delay Settings Dialog -->
|
<!-- Search Delay Settings Dialog -->
|
||||||
<system:String x:Key="homeTitle">Domovská stránka</system:String>
|
<system:String x:Key="homeTitle">Domovská stránka</system:String>
|
||||||
<system:String x:Key="homeTips">Ak chcete zobrazovať výsledky pluginu, keď je dopyt prázdny, povoľte funkciu Domovská stránka.</system:String>
|
<system:String x:Key="homeTips">Ak chcete zobrazovať výsledky pluginu, keď je dopyt prázdny, povoľte funkciu domovská stránka.</system:String>
|
||||||
|
|
||||||
<!-- Custom Query Hotkey Dialog -->
|
<!-- Custom Query Hotkey Dialog -->
|
||||||
<system:String x:Key="customeQueryHotkeyTitle">Klávesová skratka vlastného vyhľadávania</system:String>
|
<system:String x:Key="customeQueryHotkeyTitle">Klávesová skratka vlastného vyhľadávania</system:String>
|
||||||
|
|
@ -590,8 +611,9 @@ Ak pri zadávaní skratky pred ňu pridáte "@", bude sa zhodovať s
|
||||||
Zadaný správca súborov sa nenašiel. Skontrolujte nastavenie vlastného správcu súborov v Nastavenia > Všeobecné.
|
Zadaný správca súborov sa nenašiel. Skontrolujte nastavenie vlastného správcu súborov v Nastavenia > Všeobecné.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Chyba</system:String>
|
<system:String x:Key="errorTitle">Chyba</system:String>
|
||||||
<system:String x:Key="folderOpenError">Počas otvárania priečinka sa vyskytla chyba. {0}</system:String>
|
<system:String x:Key="folderOpenError">Pri otváraní priečinka došlo k chybe.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Pri otváraní adresy URL v prehliadači došlo k chybe. Skontrolujte konfiguráciu predvoleného webového prehliadača v nastaveniach Všeobecné</system:String>
|
<system:String x:Key="browserOpenError">Pri otváraní adresy URL v prehliadači došlo k chybe. Skontrolujte konfiguráciu predvoleného webového prehliadača v nastaveniach Všeobecné</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">Súbor alebo priečinok sa nenašiel: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Čakajte, prosím...</system:String>
|
<system:String x:Key="pleaseWait">Čakajte, prosím...</system:String>
|
||||||
|
|
@ -619,7 +641,7 @@ Ak pri zadávaní skratky pred ňu pridáte "@", bude sa zhodovať s
|
||||||
|
|
||||||
<!-- Plugin Update Window -->
|
<!-- Plugin Update Window -->
|
||||||
<system:String x:Key="restartAfterUpdating">Po aktualizácii pluginov reštartovať Flow Launcher</system:String>
|
<system:String x:Key="restartAfterUpdating">Po aktualizácii pluginov reštartovať Flow Launcher</system:String>
|
||||||
<system:String x:Key="updatePluginCheckboxContent">{0}: Aktualizované z v{1} na v{2}</system:String>
|
<system:String x:Key="updatePluginCheckboxContent">{0}: Aktualizácia z v{1} na v{2}</system:String>
|
||||||
<system:String x:Key="updatePluginNoSelected">Nie je vybraný žiaden plugin</system:String>
|
<system:String x:Key="updatePluginNoSelected">Nie je vybraný žiaden plugin</system:String>
|
||||||
|
|
||||||
<!-- Welcome Window -->
|
<!-- Welcome Window -->
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Settings</system:String>
|
<system:String x:Key="flowlauncher_settings">Settings</system:String>
|
||||||
|
|
@ -75,6 +79,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="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="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="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
|
<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="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Version</system:String>
|
<system:String x:Key="plugin_query_version">Version</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">You have activated Flow Launcher {0} times</system:String>
|
<system:String x:Key="about_activate_times">You have activated Flow Launcher {0} times</system:String>
|
||||||
<system:String x:Key="checkUpdates">Check for Updates</system:String>
|
<system:String x:Key="checkUpdates">Check for Updates</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">New version {0} is available, would you like to restart Flow Launcher to use the update?</system:String>
|
<system:String x:Key="newVersionTips">New version {0} is available, would you like to restart Flow Launcher to use the update?</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Check updates failed, please check your connection and proxy settings to api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Position Reset</system:String>
|
<system:String x:Key="PositionReset">Position Reset</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Select this result to requery</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Failed to respond!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Select this result for more info</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Podešavanja</system:String>
|
<system:String x:Key="flowlauncher_settings">Podešavanja</system:String>
|
||||||
|
|
@ -75,6 +79,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="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="setAutoStartFailed">Error setting launch on startup</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Sakri Flow Launcher kada se izgubi fokus</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Sakri Flow Launcher kada se izgubi fokus</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Show taskbar when Flow Launcher is opened</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Temporarily show the taskbar when Flow Launcher is opened, useful for auto-hidden taskbars.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Ne prikazuj obaveštenje o novoj verziji</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Ne prikazuj obaveštenje o novoj verziji</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
<system:String x:Key="SearchWindowPosition">Search Window Location</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Remember Last Position</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
<system:String x:Key="homePageToolTip">Show home page results when query text is empty.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
<system:String x:Key="historyResultsForHomePage">Show History Results in Home Page</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Maximum History Results Shown in Home Page</system:String>
|
||||||
|
<system:String x:Key="historyStyle">History Style</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Choose the type of history to show in the History and Home Page</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Query history</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Last opened history</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">This can only be edited if plugin supports Home feature and Home Page is enabled.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
<system:String x:Key="showAtTopmost">Show Search Window at Foremost</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Overrides other programs' 'Always on Top' setting and displays Flow in the foremost position.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Verzija</system:String>
|
<system:String x:Key="plugin_query_version">Verzija</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Website</system:String>
|
<system:String x:Key="plugin_query_web">Website</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
<system:String x:Key="plugin_uninstall">Uninstall</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Search delay time: default</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Search delay time: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Fail to remove plugin settings</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Plugins: {0} - Fail to remove plugin settings files, please remove them manually</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Fail to remove plugin cache</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Fail to uninstall {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
<system:String x:Key="fileNotFoundMessage">Unable to find plugin.json from the extracted zip file, or this path {0} does not exist</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">A plugin with the same ID and version already exists, or the version is greater than this downloaded plugin</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Error creating setting panel for plugin {0}:{1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
<system:String x:Key="pluginStore">Plugin Store</system:String>
|
||||||
|
|
@ -443,7 +459,7 @@
|
||||||
<system:String x:Key="icons">Icons</system:String>
|
<system:String x:Key="icons">Icons</system:String>
|
||||||
<system:String x:Key="about_activate_times">Aktivirali ste Flow Launcher {0} puta</system:String>
|
<system:String x:Key="about_activate_times">Aktivirali ste Flow Launcher {0} puta</system:String>
|
||||||
<system:String x:Key="checkUpdates">Proveri ažuriranja</system:String>
|
<system:String x:Key="checkUpdates">Proveri ažuriranja</system:String>
|
||||||
<system:String x:Key="BecomeASponsor">Become A Sponsor</system:String>
|
<system:String x:Key="BecomeASponsor">Become a Sponsor</system:String>
|
||||||
<system:String x:Key="newVersionTips">Nove verzija {0} je dostupna, molim Vas ponovo pokrenite Flow Launcher.</system:String>
|
<system:String x:Key="newVersionTips">Nove verzija {0} je dostupna, molim Vas ponovo pokrenite Flow Launcher.</system:String>
|
||||||
<system:String x:Key="checkUpdatesFailed">Neuspešna provera ažuriranja, molim Vas proverite vašu vezu i podešavanja za proksi prema api.github.com.</system:String>
|
<system:String x:Key="checkUpdatesFailed">Neuspešna provera ažuriranja, molim Vas proverite vašu vezu i podešavanja za proksi prema api.github.com.</system:String>
|
||||||
<system:String x:Key="downloadUpdatesFailed">
|
<system:String x:Key="downloadUpdatesFailed">
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
<system:String x:Key="userdatapathButton">Open Folder</system:String>
|
||||||
<system:String x:Key="advanced">Advanced</system:String>
|
<system:String x:Key="advanced">Advanced</system:String>
|
||||||
<system:String x:Key="logLevel">Log Level</system:String>
|
<system:String x:Key="logLevel">Log Level</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
<system:String x:Key="LogLevelNONE">Silent</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Error</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Info</system:String>
|
<system:String x:Key="LogLevelINFO">Info</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Debug</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
<system:String x:Key="settingWindowFontTitle">Setting Window Font</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">The file manager '{0}' could not be located at '{1}'. Would you like to continue?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
<system:String x:Key="fileManagerPathError">File Manager Path Error</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">File Explorer</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Default</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
<system:String x:Key="changePriorityWindow">Change Priority</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@ If you add an '@' prefix while inputting a shortcut, it matches any position in
|
||||||
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
The specified file manager could not be found. Please check the Custom File Manager setting under Settings > General.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Error</system:String>
|
<system:String x:Key="errorTitle">Error</system:String>
|
||||||
<system:String x:Key="folderOpenError">An error occurred while opening the folder. {0}</system:String>
|
<system:String x:Key="folderOpenError">An error occurred while opening the folder.</system:String>
|
||||||
<system:String x:Key="browserOpenError">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</system:String>
|
<system:String x:Key="browserOpenError">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</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">File or directory not found: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
<system:String x:Key="pleaseWait">Please wait...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Pencere Konumunu Sıfırla</system:String>
|
<system:String x:Key="PositionReset">Pencere Konumunu Sıfırla</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Arama penceresinin konumunu sıfırla</system:String>
|
<system:String x:Key="PositionResetToolTip">Arama penceresinin konumunu sıfırla</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Aramak için buraya yazın</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Aramak için buraya yazın</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Bu eklenti hala başlatılıyor...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Yeniden sorgulamak için bu sonucu seçin</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Yanıt veremedi!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Daha fazla bilgi için bu sonucu seçin</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Ayarlar</system:String>
|
<system:String x:Key="flowlauncher_settings">Ayarlar</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Kaldırma işleminden sonra, bu görevi (Flow.Launcher Startup) Görev Zamanlayıcı üzerinden elle kaldırmanız gerekmektedir</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Kaldırma işleminden sonra, bu görevi (Flow.Launcher Startup) Görev Zamanlayıcı üzerinden elle kaldırmanız gerekmektedir</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Sistemle başlatma ayarı başarısız oldu</system:String>
|
<system:String x:Key="setAutoStartFailed">Sistemle başlatma ayarı başarısız oldu</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Odak Pencereden Ayrıldığında Gizle</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Odak Pencereden Ayrıldığında Gizle</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Flow Launcher açıldığında görev çubuğunu göster</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Flow Launcher açıldığında geçici olarak görev çubuğunu gösterir, otomatik gizlenen görev çubukları için kullanışlıdır.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Güncelleme bildirimlerini gösterme</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Güncelleme bildirimlerini gösterme</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Pencere Konumu</system:String>
|
<system:String x:Key="SearchWindowPosition">Pencere Konumu</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Son Konumu Hatırla</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Son Konumu Hatırla</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Sorgu metni boş olduğunda ana sayfa sonuçlarını gösterin.</system:String>
|
<system:String x:Key="homePageToolTip">Sorgu metni boş olduğunda ana sayfa sonuçlarını gösterin.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Geçmiş Sonuçlarını Ana Sayfada Göster</system:String>
|
<system:String x:Key="historyResultsForHomePage">Geçmiş Sonuçlarını Ana Sayfada Göster</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Ana Sayfada Gösterilen Maksimum Geçmiş Sonuçları</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Ana Sayfada Gösterilen Maksimum Geçmiş Sonuçları</system:String>
|
||||||
|
<system:String x:Key="historyStyle">Geçmiş Stili</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Geçmiş ve Ana Sayfada gösterilecek geçmiş türünü seçin</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Sorgu geçmişi</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Son açılan geçmiş</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Bu sadece eklenti Ana Sayfa özelliğini destekliyorsa ve Ana Sayfa etkinleştirilmiş ise düzenlenebilir.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Bu sadece eklenti Ana Sayfa özelliğini destekliyorsa ve Ana Sayfa etkinleştirilmiş ise düzenlenebilir.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Arama Penceresini En Üstte Göster</system:String>
|
<system:String x:Key="showAtTopmost">Arama Penceresini En Üstte Göster</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Diğer programların 'Her Zaman Üstte' ayarını geçersiz kılar ve Flow’u en önde gösterir.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Diğer programların 'Her Zaman Üstte' ayarını geçersiz kılar ve Flow’u en önde gösterir.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Sürüm</system:String>
|
<system:String x:Key="plugin_query_version">Sürüm</system:String>
|
||||||
<system:String x:Key="plugin_query_web">İnternet Sitesi</system:String>
|
<system:String x:Key="plugin_query_web">İnternet Sitesi</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Kaldır</system:String>
|
<system:String x:Key="plugin_uninstall">Kaldır</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Arama gecikme süresi: varsayılan</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Arama gecikme süresi: {0}ms</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Eklenti ayarları kaldırılamıyor</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Eklenti ayarları kaldırılamıyor</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Eklentiler: {0} - Ayar dosyaları kaldırılamadı, lütfen elle silin</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Eklentiler: {0} - Ayar dosyaları kaldırılamadı, lütfen elle silin</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Eklenti ön belleği kaldırılamıyor</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Eklenti ön belleği kaldırılamıyor</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">{0} kaldırılamıyor</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">{0} kaldırılamıyor</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">plugin.json dosyası çıkarılan zip dosyasında bulunamadı veya {0} yolu mevcut değil</system:String>
|
<system:String x:Key="fileNotFoundMessage">plugin.json dosyası çıkarılan zip dosyasında bulunamadı veya {0} yolu mevcut değil</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">Bu eklentiyle aynı ID ve sürüme sahip bir eklenti zaten var, ya da mevcut sürüm daha yüksek</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">Bu eklentiyle aynı ID ve sürüme sahip bir eklenti zaten var, ya da mevcut sürüm daha yüksek</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Eklenti {0} için ayar paneli oluşturulurken hata oluştu: {1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">{0} requires Flow version {1} to run</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow does not meet the minimum version requirements for {0} to run. Do you want to continue installing it?{1}{1}We recommend updating Flow to the latest version to ensure that {0} works without issues.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Failed to install plugin because plugin.json is invalid or corrupted</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Eklenti Mağazası</system:String>
|
<system:String x:Key="pluginStore">Eklenti Mağazası</system:String>
|
||||||
|
|
@ -332,7 +348,7 @@
|
||||||
<system:String x:Key="PlaceholderTextTip">Yer tutucu metnini değiştirin. Boş bırakılırsa şu kullanılacak: {0}</system:String>
|
<system:String x:Key="PlaceholderTextTip">Yer tutucu metnini değiştirin. Boş bırakılırsa şu kullanılacak: {0}</system:String>
|
||||||
<system:String x:Key="KeepMaxResults">Sabit Pencere Boyutu</system:String>
|
<system:String x:Key="KeepMaxResults">Sabit Pencere Boyutu</system:String>
|
||||||
<system:String x:Key="KeepMaxResultsToolTip">Pencere boyutu sürüklenerek ayarlanamaz.</system:String>
|
<system:String x:Key="KeepMaxResultsToolTip">Pencere boyutu sürüklenerek ayarlanamaz.</system:String>
|
||||||
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Since Always Preview is on, maximum results shown may not take effect because preview panel requires a certain minimum height</system:String>
|
<system:String x:Key="MaxShowResultsCannotWorkWithAlwaysPreview">Always Preview (Her Zaman Önizleme) açık olduğundan, önizleme paneli belirli bir minimum yükseklik gerektirdiğinden, gösterilen maksimum sonuçlar etkili olmayabilir</system:String>
|
||||||
|
|
||||||
<!-- Setting Hotkey -->
|
<!-- Setting Hotkey -->
|
||||||
<system:String x:Key="hotkey">Kısayol Tuşu</system:String>
|
<system:String x:Key="hotkey">Kısayol Tuşu</system:String>
|
||||||
|
|
@ -405,14 +421,14 @@
|
||||||
<system:String x:Key="showDialogJumpWindow">Diyalog Atlama Penceresini Göster</system:String>
|
<system:String x:Key="showDialogJumpWindow">Diyalog Atlama Penceresini Göster</system:String>
|
||||||
<system:String x:Key="showDialogJumpWindowToolTip">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.</system:String>
|
<system:String x:Key="showDialogJumpWindowToolTip">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.</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPosition">Diyalog Atlama Penceresi Konumu</system:String>
|
<system:String x:Key="dialogJumpWindowPosition">Diyalog Atlama Penceresi Konumu</system:String>
|
||||||
<system:String x:Key="dialogJumpWindowPositionToolTip">Select position for the Dialog Jump search window</system:String>
|
<system:String x:Key="dialogJumpWindowPositionToolTip">Diyalog Atlama arama penceresi için konum seçin</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Farklı Aç/Kaydet iletişim penceresinin altında düzeltildi. Açıldığında görüntülenir ve pencere kapatılana kadar kalır</system:String>
|
<system:String x:Key="DialogJumpWindowPositionUnderDialog">Farklı Aç/Kaydet iletişim penceresinin altında düzeltildi. Açıldığında görüntülenir ve pencere kapatılana kadar kalır</system:String>
|
||||||
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Varsayılan arama penceresi konumu. Arama penceresi kısayol tuşu tarafından tetiklendiğinde görüntülenir</system:String>
|
<system:String x:Key="DialogJumpWindowPositionFollowDefault">Varsayılan arama penceresi konumu. Arama penceresi kısayol tuşu tarafından tetiklendiğinde görüntülenir</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviour">Dialog Jump Result Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpResultBehaviour">Diyalog Atlama Sonucu Gezinme Davranışı</system:String>
|
||||||
<system:String x:Key="dialogJumpResultBehaviourToolTip">Farklı Aç/Kaydet iletişim penceresini seçilen sonuç yoluna yönlendirmek için davranış</system:String>
|
<system:String x:Key="dialogJumpResultBehaviourToolTip">Farklı Aç/Kaydet iletişim penceresini seçilen sonuç yoluna yönlendirmek için davranış</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Sol tık veya Enter tuşu</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourLeftClick">Sol tık veya Enter tuşu</system:String>
|
||||||
<system:String x:Key="DialogJumpResultBehaviourRightClick">Sağ tık</system:String>
|
<system:String x:Key="DialogJumpResultBehaviourRightClick">Sağ tık</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump File Navigation Behaviour</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviour">Dialog Jump Dosya Gezinme Davranışı</system:String>
|
||||||
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Sonuç bir dosya yolu olduğunda Farklı Aç/Kaydet iletişim penceresinde gezinme davranışı</system:String>
|
<system:String x:Key="dialogJumpFileResultBehaviourToolTip">Sonuç bir dosya yolu olduğunda Farklı Aç/Kaydet iletişim penceresinde gezinme davranışı</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Dosya adı kutusuna tam yolu girin</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPath">Dosya adı kutusuna tam yolu girin</system:String>
|
||||||
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Dosya adı kutusuna tam yolu girin ve açın</system:String>
|
<system:String x:Key="DialogJumpFileResultBehaviourFullPathOpen">Dosya adı kutusuna tam yolu girin ve açın</system:String>
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Klasörü Aç</system:String>
|
<system:String x:Key="userdatapathButton">Klasörü Aç</system:String>
|
||||||
<system:String x:Key="advanced">Gelişmiş</system:String>
|
<system:String x:Key="advanced">Gelişmiş</system:String>
|
||||||
<system:String x:Key="logLevel">Günlük Düzeyi</system:String>
|
<system:String x:Key="logLevel">Günlük Düzeyi</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Hata ayıklama</system:String>
|
<system:String x:Key="LogLevelNONE">Sessiz</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Hata</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Bilgi</system:String>
|
<system:String x:Key="LogLevelINFO">Bilgi</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Hata ayıklama</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Pencere Yazı Tipini Ayarla</system:String>
|
<system:String x:Key="settingWindowFontTitle">Pencere Yazı Tipini Ayarla</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Dosya Açarken</system:String>
|
<system:String x:Key="fileManager_file_arg">Dosya Açarken</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">'{0}' dosya yöneticisi '{1}' konumunda bulunamadı. Devam etmek ister misiniz?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">'{0}' dosya yöneticisi '{1}' konumunda bulunamadı. Devam etmek ister misiniz?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Dosya Yöneticisi Yol Hatası</system:String>
|
<system:String x:Key="fileManagerPathError">Dosya Yöneticisi Yol Hatası</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Dosya Gezgini</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">İnternet Tarayıcı Seçenekleri</system:String>
|
<system:String x:Key="defaultBrowserTitle">İnternet Tarayıcı Seçenekleri</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Yeni Pencere</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Yeni Pencere</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Yeni Sekme</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Yeni Sekme</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Gizli Mod için Bağımsız Değişken</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Gizli Mod için Bağımsız Değişken</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Varsayılan</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Yeni Profil</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Önceliği Ayarla</system:String>
|
<system:String x:Key="changePriorityWindow">Önceliği Ayarla</system:String>
|
||||||
|
|
@ -587,8 +608,9 @@
|
||||||
Belirtilen dosya yöneticisi bulunamadı. Lütfen Ayarlar > Genel bölümündeki Özel Dosya Yöneticisi ayarını kontrol edin.
|
Belirtilen dosya yöneticisi bulunamadı. Lütfen Ayarlar > Genel bölümündeki Özel Dosya Yöneticisi ayarını kontrol edin.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Hata</system:String>
|
<system:String x:Key="errorTitle">Hata</system:String>
|
||||||
<system:String x:Key="folderOpenError">Klasör açılırken bir hata oluştu. {0}</system:String>
|
<system:String x:Key="folderOpenError">Klasör açılırken bir hata oluştu.</system:String>
|
||||||
<system:String x:Key="browserOpenError">URL tarayıcıda açılırken bir hata oluştu. Lütfen ayarlar penceresindeki Genel bölümden Varsayılan Web Tarayıcısı ayarını kontrol edin</system:String>
|
<system:String x:Key="browserOpenError">URL tarayıcıda açılırken bir hata oluştu. Lütfen ayarlar penceresindeki Genel bölümden Varsayılan Web Tarayıcısı ayarını kontrol edin</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">Dosya veya dizin bulunamadı: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Lütfen bekleyin...</system:String>
|
<system:String x:Key="pleaseWait">Lütfen bekleyin...</system:String>
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,10 @@
|
||||||
<system:String x:Key="PositionReset">Скидання позиції</system:String>
|
<system:String x:Key="PositionReset">Скидання позиції</system:String>
|
||||||
<system:String x:Key="PositionResetToolTip">Скинути положення вікна пошуку</system:String>
|
<system:String x:Key="PositionResetToolTip">Скинути положення вікна пошуку</system:String>
|
||||||
<system:String x:Key="queryTextBoxPlaceholder">Напишіть тут, аби знайти</system:String>
|
<system:String x:Key="queryTextBoxPlaceholder">Напишіть тут, аби знайти</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializing">{0}: Цей плагін все ще ініціалізується...</system:String>
|
||||||
|
<system:String x:Key="pluginStillInitializingSubtitle">Виберіть цей результат, щоб повторити запит</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespond">{0}: Не вдалося відповісти!</system:String>
|
||||||
|
<system:String x:Key="pluginFailedToRespondSubtitle">Виберіть цей результат, щоб отримати додаткову інформацію</system:String>
|
||||||
|
|
||||||
<!-- Setting General -->
|
<!-- Setting General -->
|
||||||
<system:String x:Key="flowlauncher_settings">Налаштування</system:String>
|
<system:String x:Key="flowlauncher_settings">Налаштування</system:String>
|
||||||
|
|
@ -75,6 +79,8 @@
|
||||||
<system:String x:Key="useLogonTaskForStartupTooltip">Після видалення, вам необхідно вручну видалити це завдання (Flow.Launcher Startup) через планувальник завдань</system:String>
|
<system:String x:Key="useLogonTaskForStartupTooltip">Після видалення, вам необхідно вручну видалити це завдання (Flow.Launcher Startup) через планувальник завдань</system:String>
|
||||||
<system:String x:Key="setAutoStartFailed">Помилка запуску налаштування під час запуску</system:String>
|
<system:String x:Key="setAutoStartFailed">Помилка запуску налаштування під час запуску</system:String>
|
||||||
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Сховати Flow Launcher, якщо втрачено фокус</system:String>
|
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Сховати Flow Launcher, якщо втрачено фокус</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpened">Показувати панель завдань, коли Flow Launcher відкрито</system:String>
|
||||||
|
<system:String x:Key="showTaskbarWhenOpenedToolTip">Тимчасово показувати панель завдань при відкритті Flow Launcher, корисно для автоматично прихованих панелей завдань.</system:String>
|
||||||
<system:String x:Key="dontPromptUpdateMsg">Не повідомляти про доступні нові версії</system:String>
|
<system:String x:Key="dontPromptUpdateMsg">Не повідомляти про доступні нові версії</system:String>
|
||||||
<system:String x:Key="SearchWindowPosition">Розташування вікна пошуку</system:String>
|
<system:String x:Key="SearchWindowPosition">Розташування вікна пошуку</system:String>
|
||||||
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Пам'ятати останню позицію</system:String>
|
<system:String x:Key="SearchWindowScreenRememberLastLaunchLocation">Пам'ятати останню позицію</system:String>
|
||||||
|
|
@ -171,6 +177,10 @@
|
||||||
<system:String x:Key="homePageToolTip">Показувати результати на головній сторінці, коли текст запиту порожній.</system:String>
|
<system:String x:Key="homePageToolTip">Показувати результати на головній сторінці, коли текст запиту порожній.</system:String>
|
||||||
<system:String x:Key="historyResultsForHomePage">Показати результати історії на головній</system:String>
|
<system:String x:Key="historyResultsForHomePage">Показати результати історії на головній</system:String>
|
||||||
<system:String x:Key="historyResultsCountForHomePage">Максимальна кількість результатів історії, що показуються на головній</system:String>
|
<system:String x:Key="historyResultsCountForHomePage">Максимальна кількість результатів історії, що показуються на головній</system:String>
|
||||||
|
<system:String x:Key="historyStyle">Стиль історії</system:String>
|
||||||
|
<system:String x:Key="historyStyleTooltip">Виберіть тип історії, який буде показуватися на сторінці «Історія» та «Головна».</system:String>
|
||||||
|
<system:String x:Key="queryHistory">Історія запитів</system:String>
|
||||||
|
<system:String x:Key="executedHistory">Остання відкрита історія</system:String>
|
||||||
<system:String x:Key="homeToggleBoxToolTip">Це можна редагувати тільки в тому випадку, якщо плагін підтримує функцію «Головна сторінка» і вона ввімкнена.</system:String>
|
<system:String x:Key="homeToggleBoxToolTip">Це можна редагувати тільки в тому випадку, якщо плагін підтримує функцію «Головна сторінка» і вона ввімкнена.</system:String>
|
||||||
<system:String x:Key="showAtTopmost">Показувати вікно пошуку на передньому плані</system:String>
|
<system:String x:Key="showAtTopmost">Показувати вікно пошуку на передньому плані</system:String>
|
||||||
<system:String x:Key="showAtTopmostToolTip">Перекриває налаштування «Завжди зверху» інших програм і виводить Flow на передній план.</system:String>
|
<system:String x:Key="showAtTopmostToolTip">Перекриває налаштування «Завжди зверху» інших програм і виводить Flow на передній план.</system:String>
|
||||||
|
|
@ -214,6 +224,8 @@
|
||||||
<system:String x:Key="plugin_query_version">Версія</system:String>
|
<system:String x:Key="plugin_query_version">Версія</system:String>
|
||||||
<system:String x:Key="plugin_query_web">Сайт</system:String>
|
<system:String x:Key="plugin_query_web">Сайт</system:String>
|
||||||
<system:String x:Key="plugin_uninstall">Видалити</system:String>
|
<system:String x:Key="plugin_uninstall">Видалити</system:String>
|
||||||
|
<system:String x:Key="plugin_default_search_delay_time">Час затримки пошуку: типово</system:String>
|
||||||
|
<system:String x:Key="plugin_search_delay_time">Час затримки пошуку: {0} мс</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsTitle">Не вдалося видалити налаштування плагіну</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsTitle">Не вдалося видалити налаштування плагіну</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginSettingsMessage">Плагіни: {0} — Не вдалося видалити файли налаштувань плагінів, видаліть їх вручну.</system:String>
|
<system:String x:Key="failedToRemovePluginSettingsMessage">Плагіни: {0} — Не вдалося видалити файли налаштувань плагінів, видаліть їх вручну.</system:String>
|
||||||
<system:String x:Key="failedToRemovePluginCacheTitle">Не вдалося видалити кеш плагіну</system:String>
|
<system:String x:Key="failedToRemovePluginCacheTitle">Не вдалося видалити кеш плагіну</system:String>
|
||||||
|
|
@ -224,6 +236,10 @@
|
||||||
<system:String x:Key="failedToUninstallPluginTitle">Не вдалося видалити {0}</system:String>
|
<system:String x:Key="failedToUninstallPluginTitle">Не вдалося видалити {0}</system:String>
|
||||||
<system:String x:Key="fileNotFoundMessage">Не вдалося знайти файл plugin.json у розпакованому zip-файлі або цей шлях {0} не існує.</system:String>
|
<system:String x:Key="fileNotFoundMessage">Не вдалося знайти файл plugin.json у розпакованому zip-файлі або цей шлях {0} не існує.</system:String>
|
||||||
<system:String x:Key="pluginExistAlreadyMessage">Вже існує плагін з таким самим ідентифікатором та версією, або версія цього плагіну вища за версію завантаженого.</system:String>
|
<system:String x:Key="pluginExistAlreadyMessage">Вже існує плагін з таким самим ідентифікатором та версією, або версія цього плагіну вища за версію завантаженого.</system:String>
|
||||||
|
<system:String x:Key="errorCreatingSettingPanel">Помилка створення панелі налаштувань для плагіну {0}: {1}{2}</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedTitle">Для роботи {0} необхідна {1} версія Flow</system:String>
|
||||||
|
<system:String x:Key="pluginMinimumAppVersionUnsatisfiedMessage">Flow не відповідає мінімальним вимогам версії для запуску {0}. Чи хочете ви продовжити його встановлення?{1}{1}Ми рекомендуємо оновити Flow до останньої версії, аби забезпечити безперебійну роботу {0}.</system:String>
|
||||||
|
<system:String x:Key="pluginJsonInvalidOrCorrupted">Не вдалося встановити плагін, оскільки файл plugin.json є недійсним або пошкодженим</system:String>
|
||||||
|
|
||||||
<!-- Setting Plugin Store -->
|
<!-- Setting Plugin Store -->
|
||||||
<system:String x:Key="pluginStore">Магазин плагінів</system:String>
|
<system:String x:Key="pluginStore">Магазин плагінів</system:String>
|
||||||
|
|
@ -467,8 +483,10 @@
|
||||||
<system:String x:Key="userdatapathButton">Відкрити теку</system:String>
|
<system:String x:Key="userdatapathButton">Відкрити теку</system:String>
|
||||||
<system:String x:Key="advanced">Розширені</system:String>
|
<system:String x:Key="advanced">Розширені</system:String>
|
||||||
<system:String x:Key="logLevel">Рівень журналювання</system:String>
|
<system:String x:Key="logLevel">Рівень журналювання</system:String>
|
||||||
<system:String x:Key="LogLevelDEBUG">Налагодження</system:String>
|
<system:String x:Key="LogLevelNONE">Без звуку</system:String>
|
||||||
|
<system:String x:Key="LogLevelERROR">Помилка</system:String>
|
||||||
<system:String x:Key="LogLevelINFO">Інформація</system:String>
|
<system:String x:Key="LogLevelINFO">Інформація</system:String>
|
||||||
|
<system:String x:Key="LogLevelDEBUG">Налагодження</system:String>
|
||||||
<system:String x:Key="settingWindowFontTitle">Встановлення шрифту вікна</system:String>
|
<system:String x:Key="settingWindowFontTitle">Встановлення шрифту вікна</system:String>
|
||||||
|
|
||||||
<!-- Release Notes Window -->
|
<!-- Release Notes Window -->
|
||||||
|
|
@ -490,6 +508,7 @@
|
||||||
<system:String x:Key="fileManager_file_arg">Аргумент для файлу</system:String>
|
<system:String x:Key="fileManager_file_arg">Аргумент для файлу</system:String>
|
||||||
<system:String x:Key="fileManagerPathNotFound">Не вдалося знайти файловий менеджер «{0}» за адресою «{1}». Чи бажаєте продовжити?</system:String>
|
<system:String x:Key="fileManagerPathNotFound">Не вдалося знайти файловий менеджер «{0}» за адресою «{1}». Чи бажаєте продовжити?</system:String>
|
||||||
<system:String x:Key="fileManagerPathError">Помилка шляху до файлового менеджера</system:String>
|
<system:String x:Key="fileManagerPathError">Помилка шляху до файлового менеджера</system:String>
|
||||||
|
<system:String x:Key="fileManagerExplorer">Файловий провідник</system:String>
|
||||||
|
|
||||||
<!-- DefaultBrowser Setting Dialog -->
|
<!-- DefaultBrowser Setting Dialog -->
|
||||||
<system:String x:Key="defaultBrowserTitle">Типовий веббраузер</system:String>
|
<system:String x:Key="defaultBrowserTitle">Типовий веббраузер</system:String>
|
||||||
|
|
@ -500,6 +519,8 @@
|
||||||
<system:String x:Key="defaultBrowser_newWindow">Нове вікно</system:String>
|
<system:String x:Key="defaultBrowser_newWindow">Нове вікно</system:String>
|
||||||
<system:String x:Key="defaultBrowser_newTab">Нова вкладка</system:String>
|
<system:String x:Key="defaultBrowser_newTab">Нова вкладка</system:String>
|
||||||
<system:String x:Key="defaultBrowser_parameter">Приватний режим</system:String>
|
<system:String x:Key="defaultBrowser_parameter">Приватний режим</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_default">Типово</system:String>
|
||||||
|
<system:String x:Key="defaultBrowser_new_profile">Новий профіль</system:String>
|
||||||
|
|
||||||
<!-- Priority Setting Dialog -->
|
<!-- Priority Setting Dialog -->
|
||||||
<system:String x:Key="changePriorityWindow">Змінити пріоритет</system:String>
|
<system:String x:Key="changePriorityWindow">Змінити пріоритет</system:String>
|
||||||
|
|
@ -589,8 +610,9 @@
|
||||||
Вказаний файловий менеджер не знайдено. Перевірте налаштування вашого файлового менеджера в розділі Налаштування > Загальні.
|
Вказаний файловий менеджер не знайдено. Перевірте налаштування вашого файлового менеджера в розділі Налаштування > Загальні.
|
||||||
</system:String>
|
</system:String>
|
||||||
<system:String x:Key="errorTitle">Помилка</system:String>
|
<system:String x:Key="errorTitle">Помилка</system:String>
|
||||||
<system:String x:Key="folderOpenError">Під час відкриття теки сталася помилка. {0}</system:String>
|
<system:String x:Key="folderOpenError">Під час відкриття теки сталася помилка.</system:String>
|
||||||
<system:String x:Key="browserOpenError">Під час відкриття URL-адреси в браузері сталася помилка. Перевірте налаштування типового веббраузера у розділі «Загальні» вікна налаштувань.</system:String>
|
<system:String x:Key="browserOpenError">Під час відкриття URL-адреси в браузері сталася помилка. Перевірте налаштування типового веббраузера у розділі «Загальні» вікна налаштувань.</system:String>
|
||||||
|
<system:String x:Key="fileNotFoundError">Файл або каталог не знайдено: {0}</system:String>
|
||||||
|
|
||||||
<!-- General Notice -->
|
<!-- General Notice -->
|
||||||
<system:String x:Key="pleaseWait">Будь ласка, зачекайте...</system:String>
|
<system:String x:Key="pleaseWait">Будь ласка, зачекайте...</system:String>
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue